/* Minification failed. Returning unminified contents.
(33955,17,33964,18): run-time error JS1314: Implicit property name must be identifier: onUploadError(id, xhr, status, errorThrown) {
                    var fieldId = $(this).data('id');
                    swal({
                        title: window.translation.error,
                        type: "error",
                        text: window.translation.file_was_not_uploaded,
                        confirmButtonText: "Ok"
                    });
                    ui_fail_file(id, fieldId);
                }
 */
$(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();
});


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';
}

function set_llamapi_environment() {
    window.alert_missing_changes = true;
    window.is_llamapi = false;
    window.instance_prefix = "HOC__";
    if ($('body').hasClass('llamapi-system')) {
        window.is_llamapi = true;
        window.instance_prefix = "LlamaPi__";
        //validate urls
        var valuePath = getUrlParameterforLlamaPi("pathParam");
        if (valuePath != null && valuePath != undefined && valuePath.trim() != '') {
            window.history.pushState("", "", valuePath);
        }
    }
}


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_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({
                                title: "",
                                type: "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 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;
}


$.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 || "";
}

;
/* 
 * 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;

$(document).ready(function () {

    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();

});

function methods_with_resources_backend() {
    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();

        //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()
    }
}

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);
            sufix++;
            $('input[name="cond_sufix"]').val(sufix);
            $('#' + 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();
            $('.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 {
                $('#' + 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();

                $.ajax({
                    method: "POST",
                    url: urlSite + "ARS/GetRuleInfo",
                    data: { ruleId: ruleId, arsType: arsType },
                    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') {
                            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();

                            $.ajax({
                                method: "POST",
                                url: urlSite + "ARS/GetSelectedFields",
                                data: { conditions: JSON.stringify(jsonResult.condition), pageId: jsonResult.pageId, formType: formType, arsType: arsType },
                            }).done(function (dataInner) {
                                var jsonInnerResult = JSON.parse(dataInner);
                                var sufix = 1;
                                var formId = parseInt($('input[name="formId"]').val());
                                jsonInnerResult.forEach(function (item) {
                                    ars_display_branch_rules_conditions(jsonResult.fields, item.field, item.op, item.data, item.dataOptions, item.type, sufix, formId);
                                    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();
                    }
                    $('#' + 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({
                    title: window.translation.discard,
                    text: window.translation.discard_changes,
                    type: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true
                }, function () {
                    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) {

    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';
        }
        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 + '</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);
    }
}

function ars_display_branch_rules_conditions(jsonFields, def_field, def_op, def_data, dataOptions, dataType, sufix, formId) {
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
    var classSelect = (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 classInput = (dataType === 7 || def_field === 'date_of_birth' || dataType === 10) ? '' : 'is-hidden';
    var classInputText = (dataType === 0 || def_field === 'wrs_code' || def_field === instancePrefix + 'Profile_Name__c' || def_field ==='contact_email_contains') ? '' : 'is-hidden';
    var hpClass = (dataType === 7 || def_field === 'date_of_birth') ? '' : 'is-hidden';

    /*if (!dataType && def_field !== 'date_of_birth' && def_field !== 'wrs_code' && def_field !== 'contact_email_contains' && def_field !== instancePrefix + 'Profile_Name__c' && def_field !== instancePrefix + 'Profile_Name__c' && def_field !== 'Contact.' + instancePrefix + 'Profile_Name__c') {
        classSelect = '';
        classInput = 'is-hidden';
    }*/


    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 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" 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 {

            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') {
        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>';
    }

    item += '</select>'
        + '</div>'
        + '</div>'
        + '<div class="columns small-4">'
        + '<div class="row">'
        + '<select name="rule_data_' + sufix + '" data-sufix="' + sufix + '" data-required="true" class="inline rule_data ' + classSelect + '" aria-invalid="false">'
        + '<option value="">' + translation.select_one + '</option>';
    if (dataOptions !== null) {
        dataOptions.forEach(function (entry) {
            item += '<option value="' + entry.key + '">' + entry.value + '</option>';
        });
    }
    item += '</select>'
        + '<input type="number" id="rule_data_number_' + sufix + '" data-required="true" class="rule_data ' + classInput + '" min=1 name="rule_data_number_' + sufix + '" />'
        + '<p class="rule_data_help_text help-text ' + hpClass + '">' + translation.number_of_years + '</p>'
        + '<input type="text" id="rule_data_text_' + sufix + '" data-required="true" class="rule_data ' + classInputText + '"  name="rule_data_text_' + sufix + '" />'
        + '</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  && def_field !== 'date_of_birth' && dataType !== 10 && def_field !== 'wrs_code' && def_field !== 'contact_email_contains' && def_field !== (instancePrefix + "Profile_Name__c")) {
        $('select[name="rule_data_' + sufix + '"]').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 ||  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);
        
    }


}

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');

        } 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 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;
            
            }
                


            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 {
                $('select[name="rule_data_' + 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 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 booleanField = false;
    var emailfield = false;
    var isOpenInput = false;
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';

    if (value === 'contact_email_contains' || 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[type="text"]').val('');
    th.closest('.condition').find('input.rule_data[type="number"]').addClass('is-hidden');
    th.closest('.condition').find('.help-text').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 === '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) {
            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 sMData = th.closest('.condition').find('select.rule_operator');

        fData.removeClass('is-hidden');
        fData.prop('disabled', 'disabled');
        fData.empty().append('<option value="">' + translation.select_one + '</option>');

        th.closest('.condition').find('input.rule_data[type="number"]').addClass('is-hidden');
        th.closest('.condition').find('.help-text').addClass('is-hidden');

        fData.append('<option value="true">True</option>');
        fData.append('<option value="false">False</option>');

        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>');


    } 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>');


    }
    else {

            $.ajax({
                method: "POST",
                url: urlSite + "ARS/GetFieldValues",
                data: { field: value, formId: formId, formType: formType, pullValuesFromSF: pullValuesFromSF, sfObject: sfObject, sfField: sfField },
                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 sMData = th.closest('.condition').find('select.rule_operator');

                fData.removeClass('is-hidden');
                fData.prop('disabled', 'disabled');
                fData.empty().append('<option value="">' + translation.select_one + '</option>');

                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('');

                jsonResult.forEach(function (item) {
                    fData.append('<option value="' + item.key + '">' + item.value + '</option>');
                });

                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>');

                }
            });

    }
}

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
    };
    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
    };
    var closeGroup = false;

    var cad = ' <option value = \"\" >' + translation.select_one + ' </option >';

    jsonFields.forEach(function (item) {
        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 + '\"' : '';

        cad += ' <option ' + dataFieldId + ' ' + dataType + ' ' + pullValuesFromSF + ' ' + sfObject + ' ' + sfField + ' 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.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({
                                title: window.translation.are_you_sure,
                                text: message,
                                type: "warning",
                                showCancelButton: true,
                                confirmButtonColor: "#ff0000",
                                confirmButtonText: window.translation.ok,
                                cancelButtonText: window.translation.cancel,
                                closeOnConfirm: true
                            }, function (isConfirm) {
                                if (isConfirm) {
                                    //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({
                                title: window.translation.are_you_sure,
                                text: message,
                                type: "warning",
                                showCancelButton: true,
                                confirmButtonColor: "#ff0000",
                                confirmButtonText: window.translation.ok,
                                cancelButtonText: window.translation.cancel,
                                closeOnConfirm: true
                            }, function (isConfirm) {
                                if (isConfirm) {
                                    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);
                                    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');

                //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');
            }

            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({
                title: window.translation.warning,
                text: 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) {
            $('.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 .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 >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);
                    }

                    // 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({
                        title: window.translation.error,
                        text: jsonResult.message,
                        type: "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({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_page_ars,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false
        }, function (isConfirm) {
            if (isConfirm) {
                $.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({
                            title: window.translation.success,
                            text: window.translation.page_removed_successfully,
                            type: "success",
                            closeOnConfirm: true
                        });
                    }
                    else if (jsonResult.status == '500') {
                        swal({
                            title: window.translation.error,
                            text: jsonResult.message,
                            type: "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({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_rule,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false
        }, function (isConfirm) {
            if (isConfirm) {
                $.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({
                            title: window.translation.success,
                            text: window.translation.rule_removed_successfully,
                            type: "success",
                            closeOnConfirm: true
                        });
                    }
                    else if (jsonResult.status == '500') {
                        swal({
                            title: window.translation.error,
                            text: jsonResult.message,
                            type: "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({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_condition,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false
        }, function (isConfirm) {
            if (isConfirm) {
                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;
        var jsonPages = new Object();
        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', '#ars-page-conf .save-page', function () {
            if ($('#ars-page-conf-form').valid()) {
                var formData = $("#ars-page-conf-form").serializeObject();
                var type = $(this).data('type');
                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);
                                        }
                                    });
                                }

                                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);
                                        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({
                                    title: window.translation.success,
                                    text: window.translation.page_saved_successfully,
                                    type: "success",
                                    closeOnConfirm: true
                                });
                            }

                        } else {
                            swal({
                                title: window.translation.error,
                                text: jsonResult.message,
                                type: "error",
                                closeOnConfirm: true
                            });
                        }

                        //Hide processing screen
                        $('#ars-page-conf').find('.processing_screen').hide();
                        $('#ars-vol-reg-workflow').find('.processing_screen').hide();
                    });
                } else {
                    swal({
                        title: window.translation.warning,
                        text: window.translation.add_atleast_one_block,
                        type: "warning",
                        closeOnConfirm: true
                    });
                }
            }
        });
    }
}

function showExportSwal(message) {
    swal({
        title: "",
        type: "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;

                        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);

                            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({
                    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({
                title: window.translation.are_you_sure,
                text: window.translation.delete_signup_workflow,
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.ok,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    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({
                                        title: window.translation.success,
                                        text: window.translation.workflow_deleted_successfully,
                                        type: "success",
                                        closeOnConfirm: true
                                    }, function () {
                                        $('#ars-vol-reg-workflow').foundation('close');

                                        $('img.spinner').hide();
                                        $("#vol-workflow-form").find('.submit-button').find('.button').removeAttr('disabled');
                                        location.reload();
                                    });
                                } else {
                                    swal({
                                        title: window.translation.error,
                                        text: jsonResultInner.message,
                                        type: "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({
                                title: window.translation.error,
                                text: jsonResult.message,
                                type: "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({
                                    title: "Error",
                                    type: "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({
                                        title: "Error",
                                        type: "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');
            }
            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");

}

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'
    });
    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({
                title: window.translation.warning,
                text: error_message,
                type: "warning",
                closeOnConfirm: true,
                html: 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({
                title: window.translation.warning,
                text: error_message,
                type: "warning",
                closeOnConfirm: true,
                html: 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({
                title: window.translation.warning,
                text: window.translation.add_content_atleast_tab,
                type: "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({
                title: window.translation.warning,
                text: "Please Fill the data to default language",
                type: "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({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_block,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false
        }, function (isConfirm) {
            if (isConfirm) {
                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({
                title: window.translation.discard,
                text: window.translation.discard_changes,
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: false
            }, function (isConfirm) {
                if (isConfirm) {
                    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').prop('checked', jsonResult.showTitleToUser);
                    }

                    $('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);
            $('#exception_url_container_bsearch').addClass('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();
            });


        }

    });
}

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').prop('checked', jsonResult.showTitleToUser);
                    }
                    $('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-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);

                    $(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);
                    $(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').addClass('is-hidden');
            $(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('');
            //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();
        }
    });
}

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.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);
                    }
                }

                //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();
        });
    });

    $(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({
                    title: window.translation.success,
                    type: "success",
                    text: jsonResult.message,
                    confirmButtonText: "Ok",
                });

                modal.foundation('close');
                location.reload();
            }
            else if (jsonResult.status.toString() === "error") {
                swal({
                    title: window.translation.error,
                    type: "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);
                        }
                    });

                    // 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);
                    }

                    // 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').addClass('is-hidden');
            $('#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);

        }
    });
}

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();

        // 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);
                    $(formSelector + ' #image_show_title').prop('checked', jsonResult.blockInfo.ShowTitle);
                    $(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) {
                    jsonResult.images.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);

                        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);
                        }

                        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);
                        }
                    });
                }

                //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 + ' input[name="image_visible_to"]').prop('checked', false);
            $(formSelector + ' #image_visibility_0').prop('checked', true);
            $(formSelector + ' #image_exception_urls').val('');
            $(formSelector + ' input[name="image_system_name"]').val('');
            $(formSelector + ' input[name="css_class"]').val('');

            $("#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();
            });

            $('#image_exception_url_container').addClass('is-hidden');
            $(formSelector + ' textarea[name="image_exception_urls"]').val('');

            //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;
                });
            });


        }

    });
}

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);
                }
                $('#' + elementReveal).find('select[name="options_login_button_style"]').val(jsonResult.loginButtonStyle);
                $("#" + elementReveal).find('input.default-color-picker').attr('style', "");
                $("#" + elementReveal).find('input.default-color-picker').each(function () {
                    createColorPickerField($(this), null);
                });
                option_hidden();
            } else {
                swal({
                    title: window.translation.error,
                    type: "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").addClass("is-hidden");
            $(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;
                });
            });


        }

    });
}

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);
                    $(formSelector + ' #show_title_video').prop('checked', jsonResult.blockInfo.ShowTitle);
                    $(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);
                        }

                        //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").addClass("is-hidden");
            $(formSelector + ' #video_exception_urls').val('');
            $(formSelector + ' #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);
                }

                //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);
        }
    });
}

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();

        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);
                    $(formSelector + ' input[name="show_title"]').prop('checked', jsonResult.blockInfo.ShowTitle);
                    $(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 + ' 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"]').prop('checked', true);
            $(formSelector).find('#social-network-enabled').prop('checked', true);
            $(formSelector + ' select[name="title_display"]').val(0);
            $(formSelector + " #social_network_exception_url_container").addClass("is-hidden");
            $(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);

    });
}


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 () {
        $('#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');

        //Remove label errors
        $("#page-conf-form").find("label.error").remove();
        $(".title-field").prop('disabled', false);
        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('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 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') {
                    var bolDashboard = json.dashboardPP;
                    if (bolDashboard) {
                        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");
                });

                if (jsonResult.length > 0) {
                    $("#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 iso = jsonResult[i].iso;
                        var system_page = jsonResult[0].IsSystemPage;

                        if (languajeList.indexOf(lang_id) == -1) {
                            languajeList.push(lang_id);
                        }

                        if (system_page === true) {
                            $('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].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 (jsonResult[0].DisplayPageTitle) {
                                $("#page-conf-form").find("input[name=display-page-title]").prop('checked', true);
                                $("#page-conf-form").find("select[name=align_title]").removeClass('hide-custom');
                            } else {
                                $("#page-conf-form").find("input[name=display-page-title]").prop('checked', false);
                                $("#page-conf-form").find("select[name=align_title]").addClass('hide-custom');
                            }

                            //loading body.
                            $("#page-conf-form #language-page-" + lang_id).find("#body-" + lang_id).text(jsonResult[i].Body);
                            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 (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');

                            }

                            // 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[name=align_title]").val(align);


                            $("#page-conf-form").find("input[name=display-print-button]").prop('checked', false);
                            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("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');
                                        setTimeout(function () {


                                            $(selectorSelect).multiselect({
                                                'selectAll': true,
                                                '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
                                                }
                                            });
                                            $(selectorSelect).val(arrayValues);
                                            $(selectorSelect).multiselect('reload');

                                        }, 1000);

                                    }
                                } else {
                                    $('.visibility-per-role').addClass('hide');
                                }

                            }

                        }
                    }
                    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());
                            });
                        }
                    }

                    self.find('input[name="display-page-title"]').on('change', function () {
                        if ($(this).is(':checked')) {
                            self.find('select[name="align_title"]').removeClass('hide-custom');
                        } else {
                            self.find('select[name="align_title"]').addClass('hide-custom');
                        }
                    });
                    add_event_for_fields_in_modal('#page-conf');
                }


            }).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);

                    }
                }
            });
        }
        
        $('#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) {
            $('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');
                }
            });

        }
    });

    //Create new page
    $(document).on('click', 'a[data-element-reveal="page-conf"]', function () {
        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);
        $('.visibility-per-role').addClass('hide');
        $("#page-conf-form input[name=display-page-title]").prop('checked', false);

        //$("#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("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');
            }
        });
             
        $("#page-conf-form").find("input[name=display-page-title]").prop('checked', false);
        $("#page-conf-form").find("select[name=align_title]").addClass('hide-custom');
       
        self.find('input[name="display-page-title"]').on('change', function () {
            if ($(this).is(':checked')) {
                self.find('select[name="align_title"]').removeClass('hide-custom');
            } else {
                self.find('select[name="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[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;

                    //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({
                        title: window.translation.error,
                        text: jsonResult.error,
                        type: "error",
                        closeOnConfirm: true
                    });
                }
            }

            $('#page-conf-form').find('.friendly-url-row').find('.icon-div').hide();
        });
    });
   
}

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({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_block,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false
        }, function (isConfirm) {
            if (isConfirm) {
                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({
                                title: window.translation.success,
                                text: jsonResult.message,
                                type: "success",
                                closeOnConfirm: true
                            }, function () {
                                $('#' + datareveal).foundation('close');
                                window.location.reload();
                            });
                        } else {
                            swal({
                                title: window.translation.error,
                                text: jsonResult.message,
                                type: "error",
                                closeOnConfirm: true
                            }, function () {
                                $('#' + 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({
            title: window.translation.restore_item,
            text: window.translation.do_you_want_restore,
            type: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#ff0000',
            confirmButtonText: window.translation.yes,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false
        }, function () {
            //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(window.translation.restored, window.translation.your_item_restored, '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() + '"]');

            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 hasClass = $(parentReveal + ' ' + toggle).hasClass('is-hidden');
                if (!hasClass) {
                    $(parentReveal + ' ' + toggle).addClass('is-hidden');
                    $(this).html('Show Advanced Settings');
                }
            });
        }
        if ($('.metatag-item').length > 0) {
            $('.metatag-item').remove();
        }
    });
}

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({
                title: window.translation.are_you_sure,
                text: window.translation.warning_version_revert,
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#DD6B55',
                confirmButtonText: window.translation.yes_revert_it,
                closeOnConfirm: true
            },
                function () {
                    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);
        $(formSelector + ' input[name="show_title_bsearch"]').prop('checked', jsonResult.blockData.ShowTitle);
        $(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[name=display-page-title]").prop('checked', true);
            } else {
                modal.find("input[name=display-page-title]").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);
        $(formSelector + ' #slider_show-title').prop('checked', jsonResult.blockData.ShowTitle);
        $(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);
        $('#video-form input[name="show_title_video"]').prop('checked', jsonResult.blockData.ShowTitle);
        $('#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 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);
        $('#sponsor-form input[name="sponsor_show_title"]').prop('checked', jsonResult.blockData.ShowTitle);

        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);
        });
    }
}
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);
        $('#advanced-search-management input[name="show_title_asearch"]').prop('checked', jsonResult.blockData.ShowTitle);
        $('#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,
                    type: "success",
                    showCancelButton: false,
                    confirmButtonText: "Ok"
                };
                var callback = function (isConfirm) {
                    $("#profiles-management").foundation('close');
                }
                if (jsonResult.status != 200) {
                    swal_settings.type = "error";
                    callback = null;
                }
                swal(swal_settings, 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 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();
        }
    });
}
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({
                    title: window.translation.property_already_added,
                    type: "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({
                    title: window.translation.empty_fields,
                    type: "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({
                    title: window.translation.property_already_added,
                    type: "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({
                    title: window.translation.empty_fields,
                    type: "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 + '" 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({
                        title: "",
                        type: "error",
                        text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok"
                    });
                }

                if (errors.maxSize) {
                    swal({
                        title: "",
                        type: "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 + '" 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({
                        title: "",
                        type: "error",
                        text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok"
                    });
                }

                if (errors.maxSize) {
                    swal({
                        title: "",
                        type: "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({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_sponsor,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: true
        }, function () {
            $(".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()) {

                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/AddOrUpdateMenuItem",
                    data: $("#menu-item-conf-form").serializeObject(),
                    beforeSend: function () {
                        revealParent.find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult.status.toString() === "200") {
                        swal({
                            title: window.translation.success,
                            type: "success",
                            text: jsonResult.message,
                            confirmButtonText: "Ok",
                        });
                    }
                    else if (jsonResult.status.toString() === "500") {
                        swal({
                            title: "Error",
                            type: "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({
                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
            }, function () {

                $.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({
                            title: "Error",
                            type: "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();

        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');
                        }

                    }

                    $('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);
                    }

                    // 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('');
            $('#exception_url_container').addClass('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({
                        title: window.translation.are_you_sure,
                        text: message,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.ok,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true
                    }, function (isConfirm) {
                        if (isConfirm) {
                            //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({
                        title: window.translation.are_you_sure,
                        text: message,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.ok,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true
                    }, function (isConfirm) {
                        if (isConfirm) {
                            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');
                }
            });
        }

    });

    $(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);
            if (visibleToValue === '1' || visibleToValue === 1) {
                $('#' + elementReveal).find('.visible-per-role').removeClass('hide');
                if (itemInfo.visibilityRole !== null) {
                    $('#menu-item-configuration-backend').find('select[name="select-rol-menu"]').val(itemInfo.visibilityRole);
                } else {
                    $('#menu-item-configuration-backend').find('select[name="select-rol-menu"]').val("0");
                }
            } else {
                $('#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("");
        }

        // 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('');
        }

        //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');
            } else {
                $('#' + elementReveal).find('.visible-per-role').addClass('hide');
            }
        });





        $(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');
    });
}

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);
                        $(formSelector + ' #slider_show-title').prop('checked', jsonResult.blockInfo.ShowTitle);
                        $(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').addClass('is-hidden');
            $(formSelector + ' textarea[name="slider_exception_urls"]').val('');

            // 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);
        }
    });

    //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({
                title: "",
                type: "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;
        }
    });
}


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);
                    $(formSelector + ' #sponsor_show_title').prop('checked', jsonResult.blockInfo.ShowTitle);
                    $(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").addClass("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);
        }
    });
}

//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) {
                        $('#' + 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 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({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_slide,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: true
        }, function () {
            $("." + 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">' +
                            '<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>' +
                            '<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>' +
                            '</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) {
                            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) {
                            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 (markup['BASICSEARCH'] != '') {
                    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)) {
                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 Form 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 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="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>';
                }
                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) {
                    markupULWork = markupULWork + '<li><a data-element-reveal="ars-workflow-link" data-from="login" title="" class="edit-component menu" 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')
                        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')
                                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>';
                        });
                    }

                }

                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>';
                }
                htmlMarkup += '<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>';

            }


            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;

            $('#' + idParent + ' #' + elementToggle).toggleClass('is-hidden');

            hasClass = ($('#' + idParent + ' #' + elementToggle).hasClass('is-hidden')) ? true : false;

            if (!hasClass) {
                $(this).html(translation.hide_advanced_settings);
            }
            else {
                $(this).html(translation.show_advanced_settings);
            }
        });
    }
}

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);
            initiate_jquery_validate_reveal($('#page-conf-form'), 'page-conf-form');
            if ($('#page-conf-form').valid()) {

                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({
                        title: "Error",
                        type: "error",
                        text: message,
                        confirmButtonText: "Ok",
                    });

                    return false;

                }

                var formData = $("#page-conf-form").serializeObject();
                $.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({
                            title: "",
                            html: true,
                            text: jsonResult.message,
                            type: "success",
                            showCancelButton: false,
                            confirmButtonText: "Ok",
                            cancelButtonText: "No, Thanks",
                            closeOnConfirm: true,
                            closeOnCancel: true,
                        },
                            function (isConfirm) {
                                if (isConfirm) {
                                    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();
                                        });
                                        console.log('end of sentence');

                                    } 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({
                            title: "",
                            type: "error",
                            text: jsonResult.message,
                            confirmButtonText: "Ok",
                        });
                    }

                    //Hide processing screen
                    $('#page-conf').find('.processing_screen').hide();
                    return false;
                });
                return false;
            } else {
                swal({
                    title: "",
                    type: "warning",
                    text: "Please enter all required fields.",
                    confirmButtonText: "Ok",
                });
                //$.growl.error({ message: "Please enter all required fields." });
                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({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_page,
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true
            }, function () {

                $.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({
                            title: "Error",
                            type: "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({
                        title: window.translation.ilegal_move_detected,
                        type: "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({
        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",
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#ff0000",
        confirmButtonText: window.translation.yes_delete_it,
        cancelButtonText: window.translation.cancel,
        closeOnConfirm: true
    },
        function () {
            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({
                        title: "",
                        type: "success",
                        text: "Delete file Successful.",
                        confirmButtonText: "Ok",
                    });
                    //$.growl.notice({ duration: 5000, message: "Delete file Successful." });
                }
                else {
                    //$.growl.error({ duration: 5000, message: "Error when delete file." });
                    swal({
                        title: "",
                        type: "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({
                        title: "Error",
                        type: "error",
                        text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok",
                    });
                }


                if (errors.maxSize) {
                    swal({
                        title: "Error",
                        type: "error",
                        text: translation.max_size,
                        confirmButtonText: "Ok",
                    });
                }
            }
        });


    });
}

function initiate_jquery_validate_reveal(formToValidate, idForm) {


    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 + '" 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 + '" 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 + '" 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 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 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 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 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({
                                title: "",
                                type: "success",
                                text: jsonResult.message,
                                confirmButtonText: "Ok",
                            }, function (isConfirm) {
                                location.reload();
                            });
                        }
                        else if (jsonResult.status.toString() === "500") {
                            swal({
                                title: "",
                                type: "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({
                            title: "Error",
                            type: "error",
                            text: obj.message,
                            confirmButtonText: "Ok",
                        });
                        //$.growl.error({ duration: 5000, message: obj.message });
                    }
                }
            }
        }
        else {
            swal({
                title: "Error",
                type: "error",
                text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                confirmButtonText: "Ok",
            });
            //$.growl.error({ duration: 5000, message: translation.file_extension_not_accepted + ': ' + mimeTypes });
        }
    }
}

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({
                        title: "",
                        type: "error",
                        text: window.translation.message_main_phone_type,
                        confirmButtonText: "Ok",
                    });
                    return;
                } else {

                    foundError = false;
                    var errorMessage = '';
                    valuesArray.forEach(function (item) {
                        item = item.toLowerCase();

                        if (item == 'home') {
                            var active = $('#yes-no-visible--phone').is(':checked');
                            if (active == false) {
                                foundError = true;
                                errorMessage = window.translate.message_home_phone;
                            }
                        }
                        if (item == 'business') {
                            var active = $('#yes-no-visible--work_phone').is(':checked');
                            if (active == false) {
                                foundError = true;
                                errorMessage = window.translate.message_work_phone;
                            }
                        }
                        if (item == 'mobile') {
                            var active = $('#yes-no-visible--mobile_phone').is(':checked');
                            if (active == false) {
                                foundError = true;
                                errorMessage = window.translate.message_mobile_phone;
                            }
                        }
                        if (item == 'other') {
                            var active = $('#yes-no-visible--other_phone').is(':checked');
                            if (active == false) {
                                foundError = true;
                                errorMessage = window.translate.message_other_phone;
                            }
                        }

                    });
                    if (foundError == true) {
                        swal({
                            title: "",
                            type: "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({
                        title: "",
                        type: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    }, function (isConfirm) {
                        //Close modal and update page list
                        $('#volunteer-form-settings-edit-backend').foundation('close');
                        var referrerURL = jsonResult.referrerURL.toString();
                        window.location.href = referrerURL;
                    });
                }
                else if (jsonResult.status.toString() === "500") {
                    swal({
                        title: "",
                        type: "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) {
                        $('#' + 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 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({
                        title: "",
                        type: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    }, function (isConfirm) {
                        $('#personal-information-form-settings-edit-backend').foundation('close');
                        var referrerURL = jsonResult.referrerURL.toString();
                        window.location.href = referrerURL;
                    });
                }
                else if (jsonResult.status.toString() === "500") {
                    swal({
                        title: "",
                        type: "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);
        self.find('input[name="show_title"]').prop('checked', blockInfo.ShowTitle);
        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);

                        });
                    }

                    //Get info of settings saved in database
                    /*$.ajax({
                        method: "POST",
                        url: urlSite + "form-setting/OrganizationSignUp"
                    }).done(function (data) {
                        var dataResult = JSON.parse(data);
                        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);
                                }
                            });
                        }
                        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);

                            });
                        }

                        $("#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({
                        title: "",
                        type: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    }, function (isConfirm) {
                        //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({
                        title: "",
                        type: "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) {
    $(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');

    //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 != "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();
                        }
                    });


                    //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': true,
                    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': true,
                    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({
                        title: "",
                        type: "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({
                        title: "",
                        type: "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({
                                title: "",
                                type: "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({
                        title: "",
                        type: "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({
                    title: "",
                    type: "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({
                        title: "",
                        type: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    }, function (isConfirm) {
                        $('#fisrt-pag-vol-opp-form-settings-edit-backend').foundation('close');
                        location.reload();
                    });

                }
                else if (jsonResult.status.toString() === "500") {
                    swal({
                        title: "",
                        type: "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({
                            title: "",
                            type: "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({
                            title: "",
                            type: "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({
                title: "",
                type: "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({
                title: "",
                type: "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({
                title: "",
                type: "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 currentProp = checkboxElement.prop('checked');

        //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');
            }
            else {
                //Remove disable to all checkboxes
                ulparent.find('input[type="checkbox"]').removeAttr('disabled');
                ulparent.find('label').removeClass('checkbox_disabled');
            }
        }

        //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);
        }
    });
}

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({
            title: "",
            text: window.translation.copa_warning,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            cancelButtonText: window.translation.cancel,
            confirmButtonText: window.translation.yes,
            closeOnConfirm: true
        },
            function (isConfirm) {

                if (isConfirm) {
                    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) {
            $("#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({
                            title: "",
                            type: "success",
                            text: "The settings were saved correctly",
                            confirmButtonText: "Ok",
                        });
                    }
                    else if (jsonResult.status.toString() === "500") {
                        swal({
                            title: "",
                            type: "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);
                            }
                        });

                        if ($('body.new-template-system').length > 0) {
                            if (dataResult.Templates !== null && dataResult.Templates !== undefined) {
                                var options = '';
                                var selected = 0;
                                dataResult.Templates.forEach(function (item) {
                                    if (item.InUse === true)
                                        selected = item.ID;
                                    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(selected);
                            }

                            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 (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.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);
                            }

                            $('#opp-setting-template-name').on('change', function () {
                                $('#' + 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);
                                        }
                                    } else {
                                        swal({
                                            title: "",
                                            type: "error",
                                            text: dataResult.Message,
                                            confirmButtonText: "Ok",
                                        });

                                    }
                                    $('#' + elementReveal).find('.processing_screen').hide();
                                });
                            });


                        }
                        var selectorSelect = 'select[name="social_network_multiple"]';
                        $(selectorSelect).multiselect('unload');
                        if (dataResult.SocialNetworkMultiple !== undefined && dataResult.SocialNetworkMultiple !== null && dataResult.SocialNetworkMultiple !== '') {
                            var avalues = dataResult.SocialNetworkMultiple.split(',');
                            $(selectorSelect).val(avalues);
                            //$(selectorSelect).multiselect('reload');
                        }
                        setTimeout(function () {
                        

                            $(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
                                }
                            });
                            
                            
                        }, 1000);

                    } else if (dataResult.Status == "500") {
                        swal({
                            title: "",
                            type: "error",
                            text: jsonResult.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({
                        title: "",
                        type: "error",
                        text: jsonResult.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({
                        title: "",
                        type: "success",
                        text: "The settings were saved correctly",
                        confirmButtonText: "Ok",
                    });
                }
                else if (jsonResult.status.toString() === "500") {
                    swal({
                        title: "",
                        type: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    });
                }

                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();

                return false;
            });

            return false;
        });
    }
}

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({
                        title: "",
                        type: "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({
                            title: "",
                            type: "success",
                            text: "The settings were saved correctly",
                            confirmButtonText: "Ok",
                        });

                    }
                    else if (jsonResult.status.toString() === "500") {
                        swal({
                            title: "",
                            type: "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-3 columns"><span class="' + disabled + ' ' + disabled_class + '">' + title + '</span></div>';
    html_text += '<div class="small-3 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-3 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({
                                    title: "",
                                    type: "success",
                                    text: "The settings were saved correctly",
                                    confirmButtonText: "Ok",
                                });
                            }
                            else if (jsonResult.status.toString() === "500") {
                                swal({
                                    title: "",
                                    type: "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({
                        title: "",
                        type: "error",
                        text: jsonResult.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('.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 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({
                        title: "",
                        type: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    }, function (isConfirm) {
                        $('#columns-list-settings-edit-backend').foundation('close');
                        location.reload();
                    });

                }
                else if (jsonResult.status.toString() === "500") {
                    swal({
                        title: "",
                        type: "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({
                        title: "",
                        type: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    }, function (isConfirm) {
                        $('#standard-form-settings-edit-backend').foundation('close');
                        location.reload();
                    });

                }
                else if (jsonResult.status.toString() === "500") {
                    swal({
                        title: "",
                        type: "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.occNameActive == true) {
                        $("#yes-no-visible--occ-name").prop("checked", true);
                    } else {
                        $("#yes-no-visible--occ-name").prop("checked", false);
                    }
                } else {
                    $("#yes-no-visible--feedback").prop("checked", true);
                    $("#yes-no-visible--report-hours").prop("checked", true);
                    $("#yes-no-visible--occ-name").prop("checked", false);
                    $(".add-url-feedback").removeClass("is-hidden");
                    $("#urlFeedback").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({
                    title: "",
                    type: "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({
                    title: "",
                    type: "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({
                    title: "",
                    type: "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);
                    });
                }
            } else {
                swal({
                    title: "",
                    type: "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({
                        title: "",
                        type: "error",
                        text: data.message,
                        confirmButtonText: "Ok",
                    });
                }
            } else {
                swal({
                    title: "",
                    type: "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({
                    title: window.translation.are_you_sure,
                    text: window.translation.add_block_confirmation_message,
                    type: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true
                }, function (confirm) {
                    if (confirm === true) {
                        $("#" + 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({
                                    title: "",
                                    type: "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';
                            }
                            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;
                            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>';
                            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';
                            }

                            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;
                            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>';
                            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({
                    title: "",
                    type: "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;
            }

            if (workflowType == '4') {
                arsLogin = true;
                localStorage.removeItem("json-conditions-ars-login");
            }

            // Validation for custom success page
            if (($("#vol-workflow-form .custom-pages ul li").length > 0 && stepsDefaultMinimal) || arsLogin == 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({
                            title: window.translation.success,
                            text: window.translation.workflow_saved_successfully,
                            type: "success",
                            closeOnConfirm: true
                        }, function () {
                            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({
                            title: window.translation.error,
                            text: jsonResultInner.message,
                            type: "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({
                    title: window.translation.warning,
                    text: messageError,
                    type: "warning",
                    closeOnConfirm: true
                });

                $('img.spinner').hide();
                $("#vol-workflow-form").find('.submit-button').find('.button').removeAttr('disabled');
            }
        }
        else {
            labelErrorWorkflow.show();
            swal({
                title: window.translation.error,
                text: jsonResult.message,
                type: "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') {
                swal({
                    title: window.translation.are_you_sure,
                    text: window.translation.add_workflow_from_gallery,
                    type: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true
                }, function (confirm) {
                    if (confirm === true) {
                        $("#" + elementReveal).find('.processing_screen').show();
                        openModalToGetInformation(elementReveal, itemName, "ars-workflow", itemID, sourceGallery);
                    }
                });

            }
        } else if (typeItem == "block") {
            swal({
                title: window.translation.are_you_sure,
                text: window.translation.add_block_confirmation_message,
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: true
            }, function (confirm) {
                if (confirm == true) {
                    $("#" + 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').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'];
        }

        $('#clone-select-configuration').foundation('close');
        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);
                if (response.code == "200") {
                    swal({
                        title: "",
                        type: "success",
                        text: response.message,
                        confirmButtonText: "Ok",
                    });
                    location.reload();
                } else {
                    swal({
                        title: "",
                        type: "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);
                if (response.code == "200") {
                    swal({
                        title: "",
                        type: "success",
                        text: response.message,
                        confirmButtonText: "Ok",
                    });
                    location.reload();
                } else {
                    swal({
                        title: "",
                        type: "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({
                            title: "",
                            html: true,
                            text: jsonResult.message,
                            type: "success",
                            showCancelButton: false,
                            confirmButtonText: "Ok",
                            closeOnConfirm: true,
                            closeOnCancel: true,
                        }, function (isConfirm) {
                            window.location.reload();
                        });
                    }
                    else if (jsonResult.status.toString() === "500") {
                        swal({
                            title: "",
                            type: "error",
                            text: jsonResult.message,
                            confirmButtonText: "Ok",
                        });
                    }

                    //Hide processing screen
                    $('#create-email-contact-template-form').find('.processing_screen').hide();

                    return false;
                });
                return false;
            } else {
                swal({
                    title: "",
                    type: "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>';
                            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>';
                            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({
                                                    title: "",
                                                    type: "error",
                                                    text: dataResult.message,
                                                    confirmButtonText: "Ok",
                                                });
                                                $("#" + reveal).find('.processing_screen').hide();

                                            }
                                        });
                                    } else {
                                        swal({
                                            title: "",
                                            type: "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({
                        title: "",
                        type: "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({
                                    title: "",
                                    type: "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({
                    title: "",
                    type: "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({
                    title: "",
                    type: "success",
                    text: "The settings were saved correctly",
                    confirmButtonText: "Ok",
                });
                location.reload();
            }
            else if (jsonResult.status.toString() === "500") {
                swal({
                    title: "",
                    type: "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({
                        title: "",
                        type: "error",
                        text: jsonResult.Message,
                        confirmButtonText: "Ok",
                    });
                }
            }
            $('#' + elementReveal).find('.processing_screen').hide();
        });


    });
}

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 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 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 generateClearLink(nameElement, idTag) {
    var tag = "<a href='#' id='" + idTag + "' class='color-picker-clear' data-element-name='" + nameElement + "'>" + window.translation.clear + "</a>";
    return tag;
}

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) {
    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
    $('body').find('.reveal.cms-modal-special-functionality').each(function () {
        var modal = $(this);
        var button = modal.find('button.close-button.special-close-button');
        if (button != null && button != undefined) {
            button.on('click', function (e) {
                var pendingChanges = modal.find('form input[name="pending-changes"]').val();
                if (pendingChanges == "true") {
                    e.stopImmediatePropagation();
                    swal({
                        title: window.translation.discard,
                        text: window.translation.discard_changes,
                        type: 'warning',
                        showCancelButton: true,
                        confirmButtonColor: '#ff0000',
                        confirmButtonText: window.translation.true_text,
                        cancelButtonText: window.translation.false_text,
                        closeOnConfirm: true
                    }, function (value) {

                        if (value === "true" || value === true) {
                            modal.foundation('close');
                        }
                    });

                }

            });
        }
    });
}

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({
                title: "",
                text: "This procedure will erase all the data related to this Public Site. Please be completely sure before proceed. Are you sure?",
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: true
            }, function (value) {
                if (value === "true" || value === true) {
                    $('#' + 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({
                    title: "",
                    type: "error",
                    text: "You should to select a Theme",
                    confirmButtonText: "Ok",
                });
                e.preventDefault();
                return false;
            } else {
                e.preventDefault();
                e.stopImmediatePropagation();
                swal({
                    title: "",
                    text: "This procedure will erase all the data related to this Public Site. Please be completely sure before proceed. Are you sure?",
                    type: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true
                }, function (value) {
                    if (value === "true" || value === true) {
                        $('#' + 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 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

            $('ul.custom-time-configuration li').remove();

            var itemToAdd =
                '<li>' +
                    '<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>' +
                        '<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 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">' +
                                        '<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({
                title: "",
                type: "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({
                        title: "",
                        type: "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({
                title: "",
                text: "Are you sure to remove this URL?",
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    $.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({
                                title: "",
                                type: "success",
                                text: jsonResult.status,
                                confirmButtonText: "Ok",
                            });
                        } else {
                            swal({
                                title: "",
                                type: "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({
                    title: "Error",
                    type: "error",
                    text: "The From URL field can't be empty",
                    confirmButtonText: "Ok"
                });
                return;
            }
            if (!(toURL !== undefined && toURL !== null && toURL.trim() !== '')) {

                swal({
                    title: "Error",
                    type: "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({
                        title: "Success",
                        type: "success",
                        text: "URL Redirect saved successfully",
                        confirmButtonText: "Ok",
                    }, function () {
                        $('#' + elementReveal).find('.processing_screen').hide();
                        $('#' + elementReveal).foundation('close');
                        url_redirect_list_load();

                    });
                } else {
                    swal({
                        title: "Error",
                        type: "error",
                        text: jsonResult.status,
                        confirmButtonText: "Ok",
                    }, function () {
                        $('#' + 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({
                title: "Error",
                type: "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]").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');
        }
    });

    $("#page-conf-form").find("input[name=display-page-title]").prop('checked', false);
    $("#page-conf-form").find("select[name=align_title]").addClass('hide-custom');

    $('#' + elementReveal).find('input[name="display-page-title"]').on('change', function () {
        if ($(this).is(':checked')) {
            self.find('select[name="align_title"]').removeClass('hide-custom');
        } else {
            self.find('select[name="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 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");
        }
    });
    
};
/*
	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);

            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({
                            title: window.translation.are_you_sure,
                            text: message,
                            type: "warning",
                            showCancelButton: true,
                            confirmButtonColor: "#ff0000",
                            confirmButtonText: window.translation.ok,
                            cancelButtonText: window.translation.cancel,
                            closeOnConfirm: true
                        }, function (isConfirm) {
                            if (isConfirm) {
                                //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({
                            title: window.translation.are_you_sure,
                            text: message,
                            type: "warning",
                            showCancelButton: true,
                            confirmButtonColor: "#ff0000",
                            confirmButtonText: window.translation.ok,
                            cancelButtonText: window.translation.cancel,
                            closeOnConfirm: true
                        }, function (isConfirm) {
                            if (isConfirm) {
                                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);

                                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');

            //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');
        }

        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')
        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();


    //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();
}

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) {
    if (type == 'success')
        swal({ title: title, text: message, html: true, type:"success" });
    if (type == 'error')
        swal({ title: title, text: message, html: true, type: "error" });
    if (type == 'warning')
        swal({ title: title, text: message, html: true, type: "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,
        type: "warning",
        showCancelButton: false,
        confirmButtonClass: 'btn-danger',
        closeOnConfirm: true,
        showLoaderOnConfirm: false,
        text: message,
        html: true
    };

    swal(options, function (isConfirm) {
        if (isConfirm && url != "") {
            window.location = urlSite + url;
        }
    });
}

function process_login_request() {

    if ($('.login-block a.login_button').length > 0) {
        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) {
        //console.log("Enter login BTN");
        localStorage.setItem('ars-contact-email-contains', JSON.stringify($('#login-form 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#login-form input[name="user_response_login_time"]').val();
            var currentTime = new Date().getTime();

            var diff = currentTime - initialTime;

            if (diff > 90000)
                recalculateToken = true;

        }

        if (recalculateToken === true) {
            $('input.login-button').show();
            $('form#login-form img.spinner').hide();

            var actionName = 'Login';

            grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {
                if ($('form#login-form input[name="user_response_login"]').length > 0) {
                    var currentTime = new Date().getTime();
                    currentTime = currentTime + (24 * 60 * 60 * 1000);
                    $('form#login-form input[name="user_response_login"]').val(token);
                    $('form#login-form input[name="user_response_login_time"]').val(currentTime);
                }
                ajax_login_submit(urlSite, securityKey);
            });
        } else {

            ajax_login_submit(urlSite, securityKey);
        }
        
    });
}

function ajax_login_submit(urlSite, securityKey) {

    try {
        if ($('form#login-form #NickName').is(":-webkit-autofill") === true) {
            var valuefield = $('form#login-form #NickName').val();
            if (valuefield.length > 0) {
                $('form#login-form #NickName').val('');
            }
        }

    } catch (e) {
        window.console && console.error(e)
    }
    var values = $('form#login-form').serializeObject();
    var urlRedirect = $('form#login-form').attr('action');
    var urlPage = $('form#login-form').find('input[name="returnurl"]').val();
    $.ajax({
        method: "POST",
        url: urlRedirect + "?_=" + guid(),
        data: values,
        cache: false,
        beforeSend: function () {
            $('input.login-button').hide();
            $('form#login-form img.spinner').show();
        }
    }).done(function (data) {
        var currentUrl = window.location.href;
        data = JSON.parse(data);
        var currentPath = window.location.pathname;
        if (data.status === "ok") {
            if (data.contactId !== undefined) {
                sessionStorage.setItem('Salesforce Contact ID', data.contactId);
                sessionStorage.setItem('User Profile', data.role);
            }
            if (!!data.parentalConsentNotLogin) {
                sweetAlert("", window.translation.parental_consent_login_message, "warning");
                $('input.login-button').show();
                $('form#login-form img.spinner').hide();
                return false;
            }
            var urlToRedirect = '';
            if (($('body').hasClass('volunteer-opportunity-detail-page') || $('body').hasClass('volunteer-opportunity-detail-page-v3') || $('body').hasClass('volunteer-opportunity-detail-page-v2')) && $('.occurrenceSelectedBeforeLogin').length > 0) {
                
                if (currentPath != '') {
                    var valuesPath = currentPath.split('/');
                    if (valuesPath.length > 1) {
                        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;



                        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 = 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;
                }
                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 (values.returnurl != "") {
                window.location.href = values.returnurl;
            }
            else if (data.role == "System Administrator" || data.role == "Staff") {
                window.location.href = urlSite;
            } 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";
        }
        else {

            if (securityKey !== undefined) {
                if (data.renew != undefined && data.renew === true) {
                    regenerateKeyLogin('form#login-form', "Login");
                }
            }

            if (data.status == "changepassword") {
                $('#login-modal').foundation('close');
                sweetAlert("", data.message, "info");
            }
            else
                sweetAlert("", data.message, "error");
            $('input.login-button').show();
            $('form#login-form 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 
                {
                    sweetAlert("", response.message, "error");
                    $('.processing_screen').hide();
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                $('.processing_screen').hide();
                sweetAlert(textStatus, errorThrown, "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) // 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";
                            if (row[4] == "False") {
                                return '<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 {
                                return '<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] + '"  />';
                            }
                        },
                    }
                ], 
                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({
                                    title: "",
                                    text: window.translation.new_registration_is_closed,
                                    type: "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)
                        sweetAlert("", window.translation.error_loading_members, "error");
                    else
                        sweetAlert("",  window.translation.error_loading_members+": " + message, "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({
                        title: "",
                        text: window.translation.any_volunteer_selected +". " + 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
                    },
                        function (isConfirm) {
                            if (isConfirm) {
                                $("#bMoreParticipantsCaptain").hide();
                                $('.processing_screen').show();
                                window.location.href = urlSite + "RemoveTeam/" + volOppId + "/" + occu + "/" + TeamId + '/' + RedirectTo;
                            }
                        });
                }
                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)
                sweetAlert("", window.translation.error_loading_upcoming_opportunities, "error");
            else
                sweetAlert("", window.translation.error_loading_upcoming_opportunities + ": " + message, "error");
        });
    }
}

function RemoveTeam(volOppId, occu, TeamId) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    swal({
        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
    },
    function (isConfirm) {
        if (isConfirm) {
            $('.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({
            title: "",
            text: $("#grouped-occurrences-alert").html(),
            html: true,
            type: "warning",
            showConfirmButton: false,
            closeOnConfirm: true
        },
        function (isConfirm) {
            if (isConfirm) {
                $('.processing_screen').show();
            }
        });
    } else {
        swal({
            title: "",
            text: window.translation.you_sure_remove_yourself_opportunity,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            cancelButtonText: window.translation.cancel,
            confirmButtonText: window.translation.yes_remove_it,
            closeOnConfirm: true
        },
       function (isConfirm) {
           if (isConfirm) {
               $('.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({
        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
    },
   function (isConfirm) {
       if (isConfirm) {
           $('.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)
                sweetAlert("", window.translation.error_loading_history_volunteers_opp, "error");
            else
                sweetAlert("", window.translation.error_loading_history_volunteers_opp+": " + message, "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)
                sweetAlert("", window.translation.error_loading_history_volunteers_opp, "error");
            else
                sweetAlert("", window.translation.error_loading_history_volunteers_opp+": " + message, "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)
                sweetAlert("", window.translation.error_loading_self_report_opp, "error");
            else
                sweetAlert("",  window.translation.error_loading_self_report_opp+": " + message, "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)
                sweetAlert("", window.translation.error_loading_history_volunteers_opp, "error");
            else
                sweetAlert("", window.translation.error_loading_history_volunteers_opp + ": " + message, "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({
        title: "",
        text: window.translation.you_sure_remove_saved_searches,
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        cancelButtonText: window.translation.cancel,
        confirmButtonText: window.translation.yes_remove_it,
        closeOnConfirm: true
    },
   function (isConfirm) {
       if (isConfirm) {
           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({
        title: "",
        text: window.translation.you_sure_delete_skill_documentation,        
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        cancelButtonText: window.translation.cancel,
        confirmButtonText: window.translation.yes_delete_it,
        closeOnConfirm: true
    },
   function (isConfirm) {
       if (isConfirm) {
           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({
            title: "",
            text: window.translation.enter_all_required,
            type: "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;
                sweetAlert("", window.translation.fatal_error_loading_information, "error");
            }
            if (data["data"] != null && data["data"] != "0") {
                bol = false;
                sweetAlert("", window.translation.no_two_volunteers_same_email, "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 == "") {
        sweetAlert("", window.translation.last_name_is_required_row + " " + c + ".", "error");
        return false;
    }
    if ((name != "" || email != "" || phone != "" || age != "" || capitan) && name == "") {
        sweetAlert("", window.translation.first_name_is_required_in_the_row + " " + c + ".", "error");
        return false;
    }
    if (email != "" && !validateEmail(email)) {
        sweetAlert("", window.translation.please_valid_email_row + " " + c + ".", "error");
        return false;
    }
    if (last != "" && capitan && email == "") {
        sweetAlert("", window.translation.designate_team_captain_without_email_row + " " + c + ".", "error");
        return false;
    }
    if ((hasCustomRulesForFields === false || hasCustomRulesForFields === "False") && last != "" && email == "" && phone == "" && company == "") {
        sweetAlert("", window.translation.please_email_phone_all_members, "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) {
                sweetAlert("", window.translation.no_two_volunteers_same_email, "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({
        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,
    },
  function (isConfirm) {
      if (isConfirm) {
          $('.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({
                            title: "",
                            text: viewsData.error,
                            type: "error"
                        });
                    }
                }
            };
            $("#wait-message").show();
            $("#multiple-views").multipleViews(options);
        }
    }
}

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)
            sweetAlert("", window.translation.use_button_remove_member, "warning");
        if (opcion == 2)
            sweetAlert("", window.translation.use_button_captain_member, "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) {
                sweetAlert("", window.translation.least_one_team_captain_remain_team, "error");
                bol = false;
            }
            if (bol) {
                bol = false;
                swal({
                    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
                }, function (isConfirm) {
                    if (isConfirm) {
                        $('.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) {
                sweetAlert("", window.translation.email_required_member_promoted_captain, "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") {
                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;
                }
            }
        });
    }

    //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 == "")
        sweetAlert("", window.translation.to_send_email_select_on_team_member, "warning");
    else {        
        $('#email-reveal').click();
    }
}

function removemefromteam(id) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    swal({
        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
    },
    function (isConfirm) {
        if (isConfirm) {
            $('.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({
        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
    },
    function (isConfirm) {
        if (isConfirm) {
            $('.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();
        });
    }
}

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("", 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("", 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({
                        title: "",
                        text: warningMessage,
                        type: "info",
                        showCancelButton: true,
                        cancelButtonText: window.translation.cancel,
                        confirmButtonText: window.translation.continue_text,
                        closeOnConfirm: true,
                        html: true
                    },
                        function (isConfirm) {
                            if (isConfirm) {
                                $('.processing_screen').show();
                                $("#opp-signup-team-members").submit();
                            }
                        });
                }
                else {
                    swal({
                        title: "",
                        type: "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[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_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'
            }).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'
            });
        }
       //
    }//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();
}

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") {
                    swal({
                        title: window.translation.success,
                        text: "Saved Successfully",
                        type: "success",
                        showCancelButton: false,
                        confirmButtonText: "Ok",
                        closeOnConfirm: true,
                        html: true
                    },
                    function (isConfirm) {
                        if (isConfirm) {
                            location.reload();
                        }
                    });

                } else {
                    swal({
                        title: window.translation.error,
                        type: "error",
                        text: data.message,
                        confirmButtonText: "Ok",
                    },
                    function (isConfirm) {
                        if (isConfirm) {
                            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)
                sweetAlert("", window.translation.error_loading_self_report_opp, "error");
            else
                sweetAlert("", window.translation.error_loading_self_report_opp + ": " + message, "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({
                    title: "",
                    text: window.translation.confirm_delete_item,
                    type: "warning",
                    showCancelButton: true,
                    confirmButtonText: "Ok",
                    closeOnConfirm: true,
                    html: true
                },
                    function (isConfirm) {
                        if (isConfirm) {
                            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({
                    title: window.translation.success,
                    text: "Saved Successfully",
                    type: "success",
                    showCancelButton: false,
                    confirmButtonText: "Ok",
                    closeOnConfirm: true,
                    html: true
                },
                    function (isConfirm) {
                        if (isConfirm) {
                            var table = $('#datatable-custom-referal-history').DataTable();
                            table.ajax.reload(null, false);
                        }
                    });

            } else {
                swal({
                    title: window.translation.error,
                    type: "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();

        if (countryHome == "United States") {
            $("#div-state").show();
            $("#div-state-australia").hide();
            $("#div-state-text").hide();
        } else if (countryHome == "Australia" && usedpfac == "true") {
            $("#div-state").hide();
            $("#div-state-australia").show();
            $("#div-state-text").hide();
        } else {
            $("#div-state").hide();
            $("#div-state-australia").hide();
            $("#div-state-text").show();
        }

        if (workCountry == "United States") {
            $("#div-work-state").show();
            $("#div-work-state-australia").hide();
            $("#div-work-state-text").hide();
        } else if (workCountry == "Australia" && usedpfac == "true") {
            $("#div-work-state").hide();
            $("#div-work-state-australia").show();
            $("#div-work-state-text").hide();
        } else {
            $("#div-work-state").hide();
            $("#div-work-state-australia").hide();
            $("#div-work-state-text").show();
        }


        $('#HomeLocation_Country').on('change', function () {
            var value = $(this).val();
            if (value == "United States") {
                $("#div-state").show();
                $("#div-state-australia").hide();
                $("#div-state-text").hide();
            } else if (value == "Australia" && usedpfac == "true") {
                $("#div-state").hide();
                $("#div-state-australia").show();
                $("#div-state-text").hide();
            } else {
                $("#div-state").hide();
                $("#div-state-australia").hide();
                $("#div-state-text").show();
            }

        });


        $('#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();
            } else if (value == "Australia" && usedpfac == "true") {
                $("#div-work-state").hide();
                $("#div-work-state-australia").show();
                $("#div-work-state-text").hide();
            } else {
                $("#div-work-state").hide();
                $("#div-work-state-australia").hide();
                $("#div-work-state-text").show();
            }

        });


    }
}

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 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;

    }

    var calendar = generate_calendar_widget(searchResultBlockId, lastDate, isCorporateBlock);
    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);
}
;
/** 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) {
    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) {


        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');
            }
        });

        //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({
                    title: window.translation.warning,
                    text: window.translation.label_amount_required,
                    type: "warning",
                    closeOnConfirm: true,
                    html: true,
                });
                return false;
            } else {
                if ($.isNumeric(amount_donation) === false) {
                    swal({
                        title: window.translation.warning,
                        text: window.translation.amount_numeric,
                        type: "warning",
                        closeOnConfirm: true,
                        html: true,
                    });
                    return false;
                }
            }

            var cant = parseInt(paymentComp.find('input[name="number_amounts"]').val());
            cant = cant + 1;

            buildRowTable(cant, label_donation, amount_donation, statusChecked, paymentComp);

            paymentComp.find('input[name="number_amounts"]').val(cant);
            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({
            title: window.translation.error,
            text: 'Sorry! Can not process this component please contact with the Administrator',
            type: '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 cantItems = parseInt(paymentComp.find('input[name="number_amounts"]').val());
        if (cantItems > 0)
            cantItems = cantItems - 1;
        if (cantItems === 0)
            paymentComp.find('input[name="donation-amounts-list"]').val('');
        parseInt(paymentComp.find('input[name="number_amounts"]').val(cantItems));
        process_donation_amounts(paymentComp);
        return false;
    });


}


function process_donation_amounts(paymentComponent) {
    var cant = parseInt(paymentComponent.find('input[name="number_amounts"]').val());
    var jsonValue = '';
    if (cant === 0)
        jsonValue = '';
    else {
        jsonValue = '';
        var fieldAmount = [];
        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);
    }
    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);
}

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();

        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 === '') {
            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();

            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')) {
                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');

                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({
            title: window.translation.error,
            text: errorMessage,
            type: '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="pc-payment-btn-label"]').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-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('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('');
            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-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 '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-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 '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-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;

            }

            
            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);
    }
}

/** 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);
            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 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="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 + " ( "+donate_pay_text+" with " + selected + " )";

                        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 + " ( "+donate_pay_text+" with " + selected + " )";
                            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');
                        }

                    });
                }


                //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);
                    }
                });


                $.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"]', 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);


                });


            }
        });
    }
}


;
//Set all foundation functionalities
$(document).foundation();
/*
	Custom events and methods to implement on project
*/
$(document).ready(function () {
    console.log('HOC3v10.35.1 West');

    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 = 8;

    print_version_behaviors();

    timer_for_custom_control_page();

    load_social_network_colors();

    
});

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();

    //Event to block form, check checkbox with click of content
    //form_block_events();

    // Verifiy if itime input have defult value
    set_default_datetime_form_blocks();

    //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();
}


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;
};

function add_confirmation_event_to_external_opportunities()
{
    $('body').on("click", "a.external-opportunity-information", function (e) {
        var url = $(this).attr('href');
        e.preventDefault();
        swal({
            title: window.translation.warning_go_outside_title,
            text: window.translation.warning_go_outside_msg,
            type: "warning",
            showCancelButton: true,
            confirmButtonText: "Ok",
            closeOnConfirm: false
        }, function (isConfirm) {
            if (isConfirm) {
                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({
                            title: window.translation.success,
                            text: window.translation.parental_consent_approved,
                            type: "success",
                            showCancelButton: false,
                            confirmButtonText: "Ok",
                            closeOnConfirm: false
                        }, function (isConfirm) {
                            if (isConfirm) {
                                //remove_form_restriction($('#' + form_id));
                                window.location.href = urlSite;
                                swal.close();
                                $("body .parental-consent-terms button").prop("disabled", true);
                            }
                        });

                    } else {
                        swal({
                            title: "",
                            type: "error",
                            text: data.message,
                            confirmButtonText: "Ok",
                        });
                    }

                },
                complete: function (jqXHR, textStatus) {
                    $('.processing_screen').hide();
                }
            });
        }
        if (cID != "" && approve == false) {
            swal({
                title: window.translation.warning,
                text: window.translation.are_you_sure,
                type: "warning",
                showCancelButton: true,
                confirmButtonText: "Ok",
                closeOnConfirm: false,
            }, function (isConfirm) {
                if (isConfirm) {
                    $.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({
                                    title: window.translation.success,
                                    text: window.translation.parental_consent_rejected,
                                    type: "success",
                                    showCancelButton: false,
                                    confirmButtonText: "Ok",
                                    closeOnConfirm: false
                                }, function (isConfirm) {
                                    if (isConfirm) {
                                        //remove_form_restriction($('#' + form_id));
                                        window.location.href = urlSite;
                                        swal.close();
                                        $("body .parental-consent-terms button").prop("disabled", true);
                                    }
                                });
                            } else {
                                swal({
                                    title: "",
                                    type: "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 = {
            title: window.translation.social_login_confirm,
            type: "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,
            text: text,
            html: true
        };

        swal(options,
          function (isConfirm) {
             
              if (isConfirm) {
                  $("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,
            type: "warning",
            showCancelButton: canContinue,
            confirmButtonClass: 'btn-danger',
            confirmButtonText: confirmTextButton,
            cancelButtonText: window.translation.social_login_link_cancel,
            closeOnConfirm: true,
            showLoaderOnConfirm: false,
            closeOnCancel: true,
            text: text,
            html: true
        };

        swal(options,
          function (isConfirm) {

              if (isConfirm && 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');
    }
}

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");
        }
    });
}

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({
                        title: "",
                        type: "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) {
        $('.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>" + oBillingCity + "</td>";
                        var billingState = "<td>" + oBillingState + "</td>";
                        var impactArea = "<td>" + 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 upload_profile_image() {
    //$("#profile_photo_file").ezdz('destroy');
    var type = $("#logo").attr('data-filetype');
    //Creating an XMLHttpRequest and sending
    var xhr = new XMLHttpRequest();
    var formdata = new FormData(); //FormData object
    var fileInput = document.getElementById('logo');
    //Iterating through each files selected in fileInput
    if (fileInput != null && fileInput.value != "") {
        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="Image for spinner" title="Image for spinner" 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({
                            title: "",
                            type: "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
    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({
                title: textStatus,
                type: "error",
                text: errorThrown,
                confirmButtonText: "Ok",
                html: true,
            });
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);
        if (jsonData.status == "ok") {
            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();
                        sweetAlert(textStatus, errorThrown, "error");
                    }
                }).done(function (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({
                                        title: '',
                                        type: '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);

                                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") {
                                    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" : 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" : 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;
                                    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.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,
                            type: typeError,
                            text: custommessage,
                            confirmButtonText: "Ok",
                            html: true,

                        };

                        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";
                        }

                        // The message is shown regardless if is specialError or not
                        swal(messageProperties
                            , function (isConfirm) {
                                if (isConfirm == true) {
                                    $('.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
                                    if (dataSerialized != null && ('occId' in dataSerialized))
                                        window.location.href = urlSite + '/opportunity/' + dataSerialized['occId'];
                                    if ($('body').hasClass('one-step-signup')) {
                                        $('.processing_screen').show();
                                        location.reload();
                                    }
                                }
                            }
                        );


                        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({
                    title: "",
                    type: "error",
                    text: jsonData.message,
                    confirmButtonText: "Ok",
                    html: true,
                }, function () {
                });
            }

            if (jsonData.status == "warning") {
                swal({
                    title: "",
                    type: "warning",
                    text: jsonData.message,
                    confirmButtonText: "Ok",
                    html: true,
                }, function () {
                });
            }
        }
        
        return false;
    });
}

//Method to make submit of form volunteer via AJAX
function ajax_submit_event(form, dataSerialized) {
    //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) {
                    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.OneStepSignUpResponse != null)
                                    {
                                        if(signUpVolunteerResponse.OneStepSignUpResponse.status == "ok")
                                        {
                                            window.location.href = urlSite + signUpVolunteerResponse.OneStepSignUpConfirmationUrl;
                                        }
                                        else
                                        {
                                            swal({
                                                title: "",
                                                type: "error",
                                                text: signUpVolunteerResponse.OneStepSignUpResponse.message,
                                                confirmButtonText: "Ok",
                                                html: true,
                                            }, function(){
                                                 window.location.href = urlSite + "/opportunity/" + signUpVolunteerResponse.occSelectedBeforeLogin;
                                            });
                                        }
                                    }
                                    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
                                    {
                                        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({
                        title: '',
                        type: 'error',
                        text: data.message,
                        confirmButtonText: 'Ok',
                        html:true
                    }, function () {
                        
                        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) {
                            window.location.href = urlSite + '/volunteer-sign-up';
                        }
                    });
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                swal({
                    title: "",
                    type: "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({
            title: titleMessage,
            type: typeMessage,
            text: message,
            confirmButtonText: 'Ok',
            closeOnConfirm: true
        },
        function (isConfirm) {
            if (isARS === "False" && reloadPage === true) {
                location.reload();
            }
        });
        $('form[name="donation-form"] input.submit-button').prop("disabled", false);
    });
}

function translate_datatable_grid() {
    $('.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");
                }
            }
        });
    }
    
    if ($(".menu-block-wrapper").length > 0 && pathname != "/") {
        // verifiying if not exits item active in main menu
        if ($(".menu-block-wrapper ul li.active").length == 0) {

            var last_page = getCookie("last-page-menu");
            if (last_page != null || last_page != "") {
                $('.menu-block-wrapper ul a').each(function () {
                    var pathlink = $(this).attr('href').toLowerCase();
                    if (last_page.match('^' + pathlink + '$') != null) {
                        $(this).parents("li").addClass("active");
                    }
                });
            } 
            
        } else {
            var infoCookie = "";
            // validating if page have menu active
            if ($(".menu-block-wrapper ul li.active a").length > 0) {
                infoCookie = document.location.pathname;
            }
            
            setCookie('last-page-menu', infoCookie, 0.5);
        }
        
    }
}


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("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("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("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;
            }
        });

        

        $('form.validate').each(function () {

            var formObject = $(this);
            var formID = formObject.prop('id');

            var objValidate = {
                ignore: ':hidden:not(.jqmsLoaded, .rich_text, .custom-file-multiple)',
                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();
                    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();
                        }
                    });
                }
            };

            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);

                    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);
                    }

                    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 {
                                            //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);
                                    });
                                } else {
                                  
                                    ajax_submit_event($("form#organization-register-form"), 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') {
                                    $.ajax({
                                        type: 'GET',
                                        url: urlSite + '/ARS/getSiteId',
                                        beforeSend: function() {
                                            $('.processing_screen').first().show();
                                        },
                                        success: function (data) {
                                            var siteId = data;
                                            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 {
                                    ajax_submit_sign_up(formData, null);
                                }
                            }

                            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;
                        }
                        else if (formObject.find('label.error:visible').length > 0) {
                            topLabelError = formObject.find('label.error:visible').first().offset().top;
                        }

                        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');
                
                rules = {};
                messages = {};
                rules['required'] = {
                    depends: function() {
                        if($(this).attr("data-required") === "true") {
                            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;
                                }
                            }

                            $(this).rules('add', {
                                required: isRequiredField,
                                messages: {
                                    required: messageRequired
                                },
                                normalizer: function(value) { return $.trim(value); }
                            });
                            return true
                        }
                        return false;
                    }
                }

                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 === 'url') {
                        rules["url"] = true;
                        messages["url"] = window.translation.please_enter_valid_url;
                    }
                }
                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 (equalTo) {
                    var labelFieldEqual = $("#" + equalTo).parent().parent().find('label').first().text();
                    rules["equalTo"] = "#" + 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"] = "The field must be of " + length + " characters";
                    messages["maxlength"] = "The field must be of " + length + " characters";
                }
                if(minlength) {
                    rules["minlength"] = parseInt(minlength);
                    messages["minlength"] = "The field must be minimim of " + minlength + " characters"
                }
                if(maxlength) {
                    rules["maxlength"] = parseInt(maxlength);
                    messages["maxlength"] = "The field must be maximum of " + maxlength + " characters"
                }
                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 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();
                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);
                }

                $(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) {
                       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');
                       }
                    }
                }
            }
        });

        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');
                }
            }
        });
    }
}

function partial_validate_custom(formObject, formID) {
    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 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();
        }
    });

    //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);
            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;
        }
        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_full_calendar_widget(recreate) {
    if ($('.full-calendar-widget:not(.full-calendar-widget-listing-block)').length > 0) {
        //Get if site is sharingPortalPlus
        
        var searchResultBlockId = 0;
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);
        var calendarBlock = $('.full-calendar-widget');
        var url = $('.full-calendar-widget').data('url');
        var parameters = $('.full-calendar-widget').data('parameters');

       
        var parametersAPI = {};
        var hasFilters = false;

        parameters.forEach(function (parameter) {
            var parameterKey = parameter;
            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;');

            parametersAPI[parameterKey] = parameterValue;
            
            if(parameterKey != "searchvo_zip" && parameterValue != null && parameterValue != "")
                hasFilters = true;
        });

        if ($('div.opportunity-calendar-content form#search_calendar input[name="searchvo_include_location_name"]').length > 0) {
            parametersAPI['searchvo_include_location_name'] = 'true';
        }

        if (calendarBlock.hasClass('calendar-from-search-result')) {
            searchResultBlockId = calendarBlock.find("input[name='calendar-search-block-id']").val();
            parametersAPI["searchResultBlockId"] = searchResultBlockId;
            parametersAPI['isRecreateAction'] = recreate;
        }

        var isCorporateBlock = calendarBlock.parents('.searchresultblock').hasClass('search-block-as-corporate');

        var self = calendarBlock.parents('.searchresultblock');

        if (recreate) {
            //Remove all events
            $('.full-calendar-widget').fullCalendar('removeEvents');

            var startDateView = moment.unix($('.full-calendar-widget').fullCalendar('getView').start.unix()).format('YYYY-MM-DD');
            var endDateView = moment.unix($('.full-calendar-widget').fullCalendar('getView').end.unix()).format('YYYY-MM-DD');

            parametersAPI['searchvo_startfrom'] = startDateView;
            parametersAPI['searchvo_endfrom'] = endDateView;
            parametersAPI['IsFromShareUrl'] = "false";
            $.ajax({
                method: "POST",
                url: urlSite + url,
                data: parametersAPI,
                dataType: 'JSON',
                beforeSend: function (data) {
                    $('.processing_screen').removeClass('hide-custom');
                    translate_full_calendar_widget('0');
                },
                statusCode: {
                    500: function () {
                        $('.processing_screen').addClass('hide-custom');
                    }
                }

            }).done(function (data) {

                var events = [];
                var newQueryString = "";
                newQueryString = $("#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;

                //Iterate all the days
                data.items.forEach(function (item) {
                    var day = item.dayDate;

                    //Iterate all ocurrences
                    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 time = occurence.startTime + ' - ' + occurence.endTime;
                        var spotRemaining = parseInt(occurence.volunteersStillNeeded);
                        var managedBy = occurence.managingOrganization;
                        var opportunityId = occurence.occurrenceId;
                        var miniSitePath = occurence.miniSitePath;
                        var timezone = occurence.timezone;
                        if (miniSitePath !== undefined && miniSitePath !== null) {
                            if (miniSitePath.indexOf('/', miniSitePath.length - 1) === -1) {
                                miniSitePath = miniSitePath + "/";
                            }
                        }


                        var startDate = occurence.startDateTimeISO;
                        var endDate = occurence.endDateTimeISO;

                        var className = 'blue-key';

                        if (spotRemaining <= 0) {
                            className = 'gray-key';
                            countFilled++;
                        }
                        else if (occurence.opportunityType == "Activity" || occurence.opportunityType == "Spreadsheets_AllForGood_Ad") {
                            className = 'black-key';
                            countTraining++;
                        }

                        if (moment(getFormattedDate(timezone)).isAfter(moment(startDate))) {
                            className += ' fc-past';
                        }

                        if (className === 'blue-key') {
                            countRegular++;
                        }

                        //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
                        });
                    });

                    //Iterate all events
                    item.events.forEach(function (eventInfo) {
                        var titleOpp = eventInfo.name;
                        var description = eventInfo.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) + '...';
                        }

                        events.push({
                            title: titleOpp,
                            className: className,
                            eventId: eventId,
                            start: startDate,
                            end: endDate,
                            startDay: day,
                            description: description,
                            type: "Event",
                            allDay: true
                        });
                    });
                });


                if (calendarBlock.hasClass('calendar-from-search-result')) {
                    populate_multiselect('.advanced-search-section-for-calendar select[name="organization-serve"]', "organization-serve", data.organizationsServed.join('---'), false, true);
                    populate_multiselect('.advanced-search-section-for-calendar select[name="population"]', "population", data.populationsServed.join('---'), true, true);
                    populate_multiselect('.advanced-search-section-for-calendar select[name="issue-areas"]', "issue-areas", data.impactAreas.join('---'), true, true);
                    populate_multiselect('.advanced-search-section-for-calendar select[name="activity-type"]', "activity-type", data.activityTypes.join('---'), true, true);
                    populate_multiselect('.advanced-search-section-for-calendar select[name="participate-event"]', "participate-event", data.participateInEvents.join('---'), true, true);
                    populate_multiselect('.advanced-search-section-for-calendar select[name="skills-use"]', "skills-use", data.skilltoServes.join('---'), true, true);
                    populate_select('.basic-search-filter-section select[name="causes"]', "causes", data.causes.join('---'), true, true);

                    //update quantities

                    calendarBlock.find('input[name="countRegular"]').val(countRegular);
                    calendarBlock.find('input[name="countTraining"]').val(countTraining);
                    calendarBlock.find('input[name="countFilled"]').val(countFilled);
                    calendarBlock.find('input[name="countEvents"]').val(countEvents);
                    calendarBlock.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] !== '')
                                    $('.basic-search-filter-section').find('input[name="location"]').val(text[1]);
                            } else if (text[0] == 'searchvo_distance') {
                                if (text[1] != null && text[1] !== undefined && text[1] !== '')
                                    $('.basic-search-filter-section').find('select[name="distance"]').val(text[1]);
                            } else if (text[0] == 'searchvo_keyword') {
                                if (text[1] != null && text[1] !== undefined && text[1] !== '')
                                    $('.basic-search-filter-section').find('input[name="keyword"]').val(text[1]);
                            } else if (text[0] == 'searchvo_location_type') {
                                if (text[1] != null && text[1] !== undefined && text[1] !== '')
                                    $('.basic-search-filter-section').find('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')
                                    $('.basic-search-filter-section').find('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') {
                                    $('.appropiate-for-section.fieldset-filter-calendar').find('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') {
                                    $('.appropiate-for-section.fieldset-filter-calendar').find('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) {
                                            $('.availability-section.fieldset-filter-calendar').find('input[id="' + value + '"]').prop('checked', true);
                                        });
                                    } else {
                                        $('.availability-section.fieldset-filter-calendar').find('input[id="' + text[1] + '"]').prop('checked', true);
                                    }
                                }
                            }
                            else if (text[0] == 'searchvo_age_volunteer') {
                                if (text[1] != null && text[1] !== undefined && text[1] !== '') {
                                    $('.appropiate-for-section.fieldset-filter-calendar').find('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 text = text[1].replaceAll('+', ' ');
                                    text = text.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) {
                        $('.advanced-search-section-for-calendar .view-identifier.regular').parents('li').removeClass('hide');
                    } else {
                        $('.advanced-search-section-for-calendar .view-identifier.regular').parents('li').addClass('hide');
                    }

                    if (countTraining > 0) {
                        $('.advanced-search-section-for-calendar .view-identifier.training').parents('li').removeClass('hide');
                    } else {
                        $('.advanced-search-section-for-calendar .view-identifier.training').parents('li').addClass('hide');
                    }

                    if (countFilled > 0) {
                        $('.advanced-search-section-for-calendar .view-identifier.filled').parents('li').removeClass('hide');
                    } else {
                        $('.advanced-search-section-for-calendar .view-identifier.filled').parents('li').addClass('hide');
                    }

                    if (countEvents > 0) {
                        $('.advanced-search-section-for-calendar .view-identifier.special').parents('li').removeClass('hide');
                    } else {
                        $('.advanced-search-section-for-calendar .view-identifier.special').parents('li').addClass('hide');
                    }

                    if (countOpp55 > 0) {
                        $('.advanced-search-section-for-calendar .view-identifier.major-55').parents('li').removeClass('hide');
                    } else {
                        $('.advanced-search-section-for-calendar .view-identifier.major-55').parents('li').addClass('hide');
                    }



                } else {
                    //Populate multiselects with values returned by API
                    populate_multiselect('#search_calendar select[name="searchvo_serve_this_organization"]', "searchvo_serve_this_organization", data.organizationsServed.join('---'), false, false);
                    populate_multiselect('#search_calendar select[name="searchvo_population_served"]', "searchvo_population_served", data.populationsServed.join('---'), true, false);
                    populate_multiselect('#search_calendar select[name="searchvo_issue_area"]', "searchvo_issue_area", data.impactAreas.join('---'), true, false);
                    populate_multiselect('#search_calendar select[name="searchvo_location_names"]', "searchvo_location_names", data.locationNames.join('---'), false, false);
                    populate_multiselect('#search_calendar select[name="searchvo_opportunity_type"]', "searchvo_opportunity_type", data.opportunityType.join('---'), true, false);
                    populate_field_search_form('', '');

                }


                $('.processing_screen').addClass('hide-custom');

                //Update datatable event
                $('.full-calendar-widget').fullCalendar('addEventSource', events);
            });
        }
        else {
            //validating other options for load

            var queryStringFormCalendar = $("#query-string-form-calendar").val();
            var foundValue = true;
            if (queryStringFormCalendar != 'undefined' && queryStringFormCalendar != null && queryStringFormCalendar != '') {
                var qYear = get_parameter_from_query_string("year", $("#query-string-form-calendar").val())
                var qMonth = get_parameter_from_query_string("month", $("#query-string-form-calendar").val())
                var qDay = get_parameter_from_query_string("day", $("#query-string-form-calendar").val())
                if (qYear == null && qMonth == null && qDay == null) {
                    foundValue = false;
                }
                var lastDate = null;
                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 = getCalendarSearchLastDateSessionStorage();

                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;
                }
            }

            

            var currentLanguage = window.translation['language_iso'];
            var timeFormat = 'hh:mm a'; //default value for most sites

            if(currentLanguage == 'nl-NL'){
                moment.locale(currentLanguage);
                if(moment.localeData()._config.longDateFormat.LT !== undefined){
                    timeFormat = moment.localeData()._config.longDateFormat.LT;
                }
                timeFormat += ' uur'; //HOC3-6291
            }

            $('.full-calendar-widget').fullCalendar({
                lang: 'en',
                eventLimit: 6, // If you set a number it will hide the items
                timeFormat: timeFormat,
                height: "auto",
                defaultDate: lastDate,
                header: {
                    left: 'title',
                    center: 'month,basicWeek,agendaDay',
                    right: 'prev,next today'
                },
                views: {
                    agenda: {
                        slotEventOverlap: false
                    }
                },
                events: function (start, end, timezone, callback) {


                    var parameters = $('.full-calendar-widget').data('parameters');

                    //var parametersAPI = {};
                    var hasFilters = false;

                    parameters.forEach(function (parameter) {
                        var parameterKey = parameter;
                        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;');

                        parametersAPI[parameterKey] = parameterValue;

                        if (parameterKey != "searchvo_zip" && parameterValue != null && parameterValue != "")
                            hasFilters = true;
                    });

                    var startDateView = moment.unix(start.unix()).format('YYYY-MM-DD');
                    var endDateView = moment.unix(end.unix()).format('YYYY-MM-DD');
                    parametersAPI['searchvo_startfrom'] = startDateView;
                    parametersAPI['searchvo_endfrom'] = endDateView;
                    parametersAPI['IsFromShareUrl'] = calendarBlock.parents('.searchresultblock').find('input[name="IsFromShareUrl"]').val();
                    //fix for corporate partner
                    if ($('#section-opportunities-for-corporate-partner').length > 0) {
                        var valueCode = $('#section-opportunities-for-corporate-partner').attr('data-invitation-code');
                        if (valueCode != null && valueCode != undefined) {
                            parametersAPI['searchvo_invitation_code'] = valueCode;
                        }
                    }

                    $.ajax({
                        method: "POST",
                        url: urlSite + url,
                        data: parametersAPI,
                        dataType: 'JSON',
                        beforeSend: function (data) {
                            $('.processing_screen').removeClass('hide-custom');
                            translate_full_calendar_widget('0');
                        },
                        statusCode: {
                            500: function () {
                                $('.processing_screen').addClass('hide-custom');
                            }
                        }
                    }).done(function (data) {
                        var events = [];
                        var newQueryString = "";
                        newQueryString = $("#query-string-form-calendar").val();

                        update_input_query_string_local_storage(newQueryString, "2", isCorporateBlock);
                        var currentLanguage = window.translation['language_iso'];
                        var timeFormatSuffix = '';
                        if(currentLanguage == 'nl-NL'){
                            timeFormatSuffix = ' uur'; //HOC3-6291
                        }

                        var countRegular = 0;
                        var countTraining = 0;
                        var countFilled = 0;
                        var countEvents = 0;
                        var countOpp55 = 0;

                        //Iterate all the days
                        data.items.forEach(function (item) {
                            var day = item.dayDate;

                            //Iterate all ocurrences
                            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 time = occurence.startTime + timeFormatSuffix + ' - ' + occurence.endTime + timeFormatSuffix;
                                var spotRemaining = parseInt(occurence.volunteersStillNeeded);
                                var managedBy = occurence.managingOrganization;
                                var opportunityId = occurence.occurrenceId;
                                var miniSitePath = occurence.miniSitePath;
                                var timezone = occurence.timezone;
                                if (miniSitePath !== undefined && miniSitePath !== null) {
                                    if (miniSitePath.indexOf('/', miniSitePath.length - 1) === -1) {
                                        miniSitePath = miniSitePath + "/";
                                    }
                                }


                                var startDate = occurence.startDateTimeISO;
                                var endDate = occurence.endDateTimeISO;

                                var className = 'blue-key';

                                if (spotRemaining <= 0) {
                                    className = 'gray-key';
                                    countFilled++;
                                }
                                else if (occurence.opportunityType == "Activity" || occurence.opportunityType == "Spreadsheets_AllForGood_Ad") {
                                    className = 'black-key';
                                    countTraining++;
                                }

                                if (className === 'blue-key') {
                                    countRegular++;
                                }

                                if (moment(getFormattedDate(timezone)).isAfter(moment(startDate))) {
                                    className += ' fc-past';
                                }

  
                                //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
                                });
                            });

                            //Iterate all 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
                                });
                            });
                        });

                        if (calendarBlock.hasClass('calendar-from-search-result')) {

                            populate_multiselect('.advanced-search-section-for-calendar select[name="organization-serve"]', "organization-serve", data.organizationsServed.join('---'), false, true);
                            populate_multiselect('.advanced-search-section-for-calendar select[name="population"]', "population", data.populationsServed.join('---'), true, true);
                            populate_multiselect('.advanced-search-section-for-calendar select[name="issue-areas"]', "issue-areas", data.impactAreas.join('---'), true, true);
                            populate_multiselect('.advanced-search-section-for-calendar select[name="activity-type"]', "activity-type", data.activityTypes.join('---'), true, true);
                            populate_multiselect('.advanced-search-section-for-calendar select[name="participate-event"]', "participate-event", data.participateInEvents.join('---'), true, true);
                            populate_multiselect('.advanced-search-section-for-calendar select[name="skills-use"]', "skills-use", data.skilltoServes.join('---'), true, true);
                            populate_select('.basic-search-filter-section select[name="causes"]', "causes", data.causes.join('---'), true, true);

                            var criteriaIssueAreasElement = calendarBlock.parents('div.search-block-default-calendar.blockContainer').find('input[name="CriteriaIssueArea"]');
                            if (criteriaIssueAreasElement !== undefined) {
                                var criteriaIssueAreas = criteriaIssueAreasElement.val();
                                if (criteriaIssueAreas !== undefined && criteriaIssueAreas !== '' && criteriaIssueAreas !== null) {
                                    $('.advanced-search-section-for-calendar select[name="issue-areas"]').val(criteriaIssueAreas.split(';'));
                                    $('.advanced-search-section-for-calendar select[name="issue-areas"]').multiselect('reload');
                                }
                            }
                            //update quantities

                            calendarBlock.find('input[name="countRegular"]').val(countRegular);
                            calendarBlock.find('input[name="countTraining"]').val(countTraining);
                            calendarBlock.find('input[name="countFilled"]').val(countFilled);
                            calendarBlock.find('input[name="countEvents"]').val(countEvents);
                            calendarBlock.find('input[name="countOpp55"]').val(countOpp55);

                            if (countRegular > 0) {
                                $('.advanced-search-section-for-calendar .view-identifier.regular').parents('li').removeClass('hide');
                            } else {
                                $('.advanced-search-section-for-calendar .view-identifier.regular').parents('li').addClass('hide');
                            }

                            if (countTraining > 0) {
                                $('.advanced-search-section-for-calendar .view-identifier.training').parents('li').removeClass('hide');
                            } else {
                                $('.advanced-search-section-for-calendar .view-identifier.training').parents('li').addClass('hide');
                            }

                            if (countFilled > 0) {
                                $('.advanced-search-section-for-calendar .view-identifier.filled').parents('li').removeClass('hide');
                            } else {
                                $('.advanced-search-section-for-calendar .view-identifier.filled').parents('li').addClass('hide');
                            }

                            if (countEvents > 0) {
                                $('.advanced-search-section-for-calendar .view-identifier.special').parents('li').removeClass('hide');
                            } else {
                                $('.advanced-search-section-for-calendar .view-identifier.special').parents('li').addClass('hide');
                            }

                            if (countOpp55 > 0) {
                                $('.advanced-search-section-for-calendar .view-identifier.major-55').parents('li').removeClass('hide');
                            } else {
                                $('.advanced-search-section-for-calendar .view-identifier.major-55').parents('li').addClass('hide');
                            }

                            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] !== '')
                                            $('.basic-search-filter-section').find('input[name="location"]').val(text[1]);
                                    } else if (text[0] == 'searchvo_distance') {
                                        if (text[1] != null && text[1] !== undefined && text[1] !== '')
                                            $('.basic-search-filter-section').find('select[name="distance"]').val(text[1]);
                                    } else if (text[0] == 'searchvo_keyword') {
                                        if (text[1] != null && text[1] !== undefined && text[1] !== '')
                                            $('.basic-search-filter-section').find('input[name="keyword"]').val(text[1]);
                                    } else if (text[0] == 'searchvo_location_type') {
                                        if (text[1] != null && text[1] !== undefined && text[1] !== '')
                                            $('.basic-search-filter-section').find('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') {
                                            $('.appropiate-for-section.fieldset-filter-calendar').find('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') {
                                            $('.appropiate-for-section.fieldset-filter-calendar').find('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') {
                                            $('.appropiate-for-section.fieldset-filter-calendar').find('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) {
                                                    $('.availability-section.fieldset-filter-calendar').find('input[id="' + value + '"]').prop('checked', true);
                                                });
                                            } else {
                                                $('.availability-section.fieldset-filter-calendar').find('input[id="' + text[1] + '"]').prop('checked', true);
                                            }
                                        }
                                    }
                                    else if (text[0] == 'searchvo_age_volunteer') {
                                        if (text[1] != null && text[1] !== undefined && text[1] !== '') {
                                            $('.appropiate-for-section.fieldset-filter-calendar').find('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 text = text[1].replaceAll('+', ' ');
                                            text = text.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);
                                            });
                                        }
                                    }



                                }
                            });

                            var pathPage = window.location.pathname;
                            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
                            });

                            setTimeout(function () {

                                    self.find('select[multiple="multiple"]').each(function (index, el) {
                                        $(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
                                            }
                                        });
                                    });

                            }, 2000);


                        } else {
                            populate_multiselect('#search_calendar select[name="searchvo_serve_this_organization"]', "searchvo_serve_this_organization", data.organizationsServed.join('---'), false, false);
                            populate_multiselect('#search_calendar select[name="searchvo_population_served"]', "searchvo_population_served", data.populationsServed.join('---'), true, false);
                            populate_multiselect('#search_calendar select[name="searchvo_issue_area"]', "searchvo_issue_area", data.impactAreas.join('---'), true, false);
                            if (data.locationNames != null && data.locationNames != undefined)
                                populate_multiselect('#search_calendar select[name="searchvo_location_names"]', "searchvo_location_names", data.locationNames.join('---'), false, false);

                            populate_multiselect('#search_calendar select[name="searchvo_opportunity_type"]', "searchvo_opportunity_type", data.opportunityType.join('---'), true, false);

                            populate_field_search_form('', '', false);

                        }

                        //Populate multiselects with values returned by API

                        callback(events);

                        $('.processing_screen').addClass('hide-custom');

                        if ($("#search-total-occurrences").length > 0) {
                            $("#search-total-occurrences span").html(data.items.length);
                        }
                        saveSearchLastDate(getCurrentViewMode());

                    });
                },
                eventClick: function (event) {
                    if (event.opportunityId) {
                        if (event.miniSitePath !== undefined && event.miniSitePath != null && event.miniSitePath != '') {
                            window.location.assign(event.miniSitePath + 'opportunity/' + event.opportunityId);
                        }
                        else
                            window.location.assign('/opportunity/' + event.opportunityId);
                    }
                    if (event.eventId) {
                        window.location.assign('/special-event/' + event.eventId);
                    }
                },
                eventRender: function (event, element) {
                    if (event.spotRemaining > 0 || event.type === "Event") {
                        var description = '';
                        var startDay = parseInt(new Date(event.startDay).getDay());
                        var myPosition = 'right center';
                        var atPosition = 'center left';
                        var translation = window.translation;
                        var titleOrganization = (event.type !== "Event") ? '<span class="organization">' + event.organizationName + '</span>' : '';
                        var event_description = (event.description) ? event.description : '';

                        if (startDay === 6) startDay = 0;
                        else startDay = startDay + 1;

                        if (startDay <= 2) {
                            myPosition = 'left center';
                            atPosition = 'center right';
                        }

                        if (event.type === "Event") {
                            description = description + '<p class="minimal-space">' + event_description + '</p>';
                        }
                        else {
                            description = description + '<p class="minimal-space">' + event_description + '</p>';
                            description = description + '<p class="time">' + event.time + '</p>';
                            description = description + '<p class="last-section"><span>' + translation['spots_remaining'] + ': ' + event.spotRemaining + '</span>';
                            if (event.managedBy !== null) {
                                description = description + '<span>' + translation['managed_by'] + ': ' + event.managedBy + '</span>';
                            }
                            description = description + '</p>';
                        }

                        if ($(window).width() >= 639) {
                            $(element).qtip({
                                content: {
                                    title: '<span>' + event.title + '</span>' + titleOrganization,
                                    text: description
                                },
                                position: {
                                    my: myPosition,
                                    at: atPosition,
                                }
                            });
                        }
                    }
                },
                eventAfterAllRender: function (view) {
                    if ($(window).width() < 980) {
                        $(".qtip").qtip('disable', true);
                    }
                    else {
                        $(".qtip").qtip('disable', false);
                    }

                    translate_full_calendar_widget('1');

                    $('.fc-scroller').css({
                        'overflow': 'visible', 'overflow-y': 'visible', 'overflow-x': 'visible'
                    });
                    $('.fc-day-grid').css({ 'overflow': 'visible' });

                    this.el.find('.fc-body .fc-row .fc-content-skeleton table tbody tr').each(function () {
                        var maxHeight = -1;
                        $(this).find('td').each(function () {
                            if ($(this).find('a.fc-event').length > 0) {
                                maxHeight = maxHeight > $(this).find('a.fc-event').height() ?
                                    maxHeight :
                                            $(this).find('a.fc-event').height();
                            }
                        });
                        $(this).find('a.fc-event').height(maxHeight);
                    });


                    //HOC3-2005
                    $(".fc-month-view .fc-content-skeleton > table").find('tbody td.fc-limited > a.fc-past').each(function (index, el) {
                        $(this).parents('td.fc-limited').next('td.fc-more-cell').find('a').addClass('fc-past')
                    });

                    //HOC3-3184
                    $(".fc-basicWeek-view .fc-content-skeleton > table").find('tbody td.fc-limited > a.fc-past').each(function (index, el) {
                        $(this).parents('td.fc-limited').next('td.fc-more-cell').find('a').addClass('fc-past')
                    });

                    if(hasFilters && !$('body').hasClass('corporate-partners-page'))
                    {
                        if($('.full-calendar-widget .filtered-results-text').length == 0)
                        {
                            $('.full-calendar-widget').prepend('\
                                <p class="text-left legend filtered-results-text" id="filtered-results-text">\
                                    ' + window.translation.filtered_search_notice + '\
                                    <a href="#" class="see_all">' + window.translation.click_see_all_opportunities + '</a>\
                                </p>'
                            );
                            $('.full-calendar-widget .filtered-results-text .see_all').on('click', function (e) {

                                var searchBlock = $(this).parents('.searchresultblock');
                                if (searchBlock === null || searchBlock == undefined || (searchBlock !== undefined && searchBlock !== null && !searchBlock.hasClass('searchresultblock'))) {
                                    $('#search_calendar > .section.first .clear').click();
                                    $('#search_calendar').submit();
                                    return false;

                                }
                                else {
                                    var blockID = searchBlock.attr("data-block-id");
                                    searchBlock.find('form#opportunities-search-block')[0].reset();
                                    var titleLocalStorage = 'searchresultblock-' + blockID;
                                    //localStorage.removeItem(titleLocalStorage);
                                    var currUrl = window.location.href;
                                    localStorage.setItem(titleLocalStorage, "");

                                    //calendar default view
                                    if (searchBlock.hasClass('search-block-default-calendar')) {
                                        searchBlock.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;

                                }

                            });
                        }
                    }
                },
                viewRender: function () {
                    //translate_full_calendar_widget('2');
                },
                windowResize: function (view) {
                    $('.fc-scroller').css({
                        'overflow': 'visible', 'overflow-y': 'visible', 'overflow-x': 'visible'
                    });
                    $('.fc-day-grid').css({ 'overflow': 'visible' });

                    $(this).find('a.fc-event').css('height', '');
                    $(this).find('.fc-body .fc-row .fc-content-skeleton table tbody tr').each(function () {
                        var maxHeight = -1;
                        $(this).find('td').each(function () {
                            if ($(this).find('a.fc-event').length > 0) {
                                maxHeight = maxHeight > $(this).find('a.fc-event').height() ?
                                    maxHeight :
                                            $(this).find('a.fc-event').height();
                            }
                        });
                        $(this).find('a.fc-event').height(maxHeight);
                    });

                    //HOC3-2005
                    $(".fc-month-view .fc-content-skeleton > table").find('tbody td.fc-limited > a.fc-past').each(function (index, el) {
                        $(this).parents('td.fc-limited').next('td.fc-more-cell').find('a').addClass('fc-past')
                    });

                    //HOC3-3184
                    $(".fc-basicWeek-view .fc-content-skeleton > table").find('tbody td.fc-limited > a.fc-past').each(function (index, el) {
                        $(this).parents('td.fc-limited').next('td.fc-more-cell').find('a').addClass('fc-past')
                    });
                }
            });

            var calendar_search_last_date = sessionStorage.getItem('calendar-search-last-date');
            if (get_parameter_from_query_string("day", $("#query-string-form-calendar").val()) != undefined ||
                get_parameter_from_query_string("week", $("#query-string-form-calendar").val()) == "true" ||
                get_parameter_from_query_string("month", $("#query-string-form-calendar").val()) != undefined ||
                get_parameter_from_query_string("year", $("#query-string-form-calendar").val()) != undefined) {

                if (get_parameter_from_query_string("week", $("#query-string-form-calendar").val()) == "true") {
                    $('button.fc-basicWeek-button').trigger('click');
                }
                else if (get_parameter_from_query_string("day", $("#query-string-form-calendar").val()) != undefined) {
                    $('button.fc-agendaDay-button').trigger('click');
                }
                else {
                    $('button.fc-month-button').trigger('click');
                }
                $('button.fc-month-button').show();
                $('button.fc-basicWeek-button').show();
                $('button.fc-agendaDay-button').show();
            }
            else {
                var calendarSearchSessionStorage = getCalendarSearchLastDateSessionStorage();

                if (calendarSearchSessionStorage != null && calendarSearchSessionStorage.view_mode != null) {
                    var view_mode = calendarSearchSessionStorage.view_mode;                    
                    if (view_mode == 'basicWeek') {
                        $('button.fc-basicWeek-button').trigger('click');
                    }
                    else if (view_mode == 'agendaDay') {
                        $('button.fc-agendaDay-button').trigger('click');
                    }
                    else {
                        $('button.fc-month-button').trigger('click');

                    }
                }
            }
        }

        if ($('button.fc-basicWeek-button').length > 0) {
            $('button.fc-basicWeek-button').click(function () {
                saveSearchLastDate(getCurrentViewMode());
            });
        }

        if ($('button.fc-agendaDay-button').length > 0) {
            $('button.fc-agendaDay-button').click(function () {
                saveSearchLastDate(getCurrentViewMode());
            });
        }

        if ($('button.fc-month-button').length > 0) {
            $('button.fc-month-button').click(function () {
                saveSearchLastDate(getCurrentViewMode());
            });
        }

        if ($('button.fc-prev-button').length > 0) {
            $('button.fc-prev-button').click(function () {
                saveSearchLastDate(getCurrentViewMode());
            });
        }

        if ($('button.fc-next-button').length > 0) {
            $('button.fc-next-button').click(function () {
                saveSearchLastDate(getCurrentViewMode());
            });
        }

        if ($('button.fc-today-button').length > 0) {
            $('button.fc-today-button').click(function () {
                saveSearchLastDate(getCurrentViewMode());
            });
        }        
    }
}*/


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({
                title: window.translation.invitation_code,
                text: '<p>' + window.translation.invitation_code_popup_message_1 + '</p><p>' + window.translation.invitation_code_popup_message_2 + '</p>',
                html: true,
            });
        });
    }
}

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({
                title: title,
                text: '<p>' + content + '</p>',
                type: typeM,
                html: true,
            });
        });
    }
}

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 open_close_fieldset_section() {

    if ($('body.volunteer-sign-up-page').length > 0 || $('body.organization-sign-up-page').length > 0 || $('body.volunteer-opportunity-detail-page').length > 0)
        return;

    if ($('fieldset.fieldset-step .fieldset-title button').length !== 0) {
        $(document).on('click', 'fieldset.fieldset-step .fieldset-title button', 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 () {
                    fix_label_middle_in_forms();
                    fix_label_button_calendar_page();
                    autocompleted_city_state_field();
                });
            }

            return false;
        });
    }

    //Open - Close fieldset section in opportunity calendar page
    if ($(".opportunity-calendar-content").length !== 0) {
        if ($(".basic-filters input,.basic-filters select, .basic-filters textarea").length == 0) {
            $('.additional-filters').show('fast', function () {
                fix_label_middle_in_forms();
            });
        }
        $(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;
        });
    }

    fix_opportunity_detail_list();
}

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 AddDaysToday(days) {
    var nowTemp = new Date();
    var date = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
    date.setDate(date.getDate() + parseInt(days));
    return date;
}

function AddDays(date, days) {
    var result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
}

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 msgStartDate = null;
    var msgSEndDate = null;
    var msgSTargetDate = null;

    if ($("input[name='" + FieldId + "[validatorDateField]']").length > 0 && $("input[name='" + FieldId + "[ruleToValidate]']").length > 0 &&
        $("input[name='" + FieldId + "[validatorDateField]']").val() != '' && $("input[name='" + FieldId + "[ruleToValidate]']").val() != '') {
        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 s = $('input[name="' + fieldRelatedValidator + '[value]"]').fdatepicker().data('datepicker');
            dateValue = s.date;
            switch (ruleToValidate) {
                case "GREATER_THAN":
                    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":
                    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":
                    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":
                    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 = 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";
    if (starDatePicker==null && $("input[name='" + FieldId + "[onlyFuture]']").length > 0 && $("input[name='" + FieldId + "[onlyFuture]']").val() === "true") {
        if (allowCurrentDate) {
            starDatePicker = AddDaysToday(-1);
            msgStartDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_greater_than_or_equal + " " + castFormatDate(starDatePicker);
        } else {
            starDatePicker = AddDaysToday(0);
            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") {
        if (allowCurrentDate) {
            endDatePicker = AddDaysToday(0);
            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 && targetDatePicker != null) {
        $('input[name="' + FieldId + '[value]"]').attr('data-target-date-msg', msgSTargetDate);
        $('input[name="' + FieldId + '[value]"]').attr('data-target-date', targetDatePicker.valueOf());
    }

    
    $('input[name="' + FieldId + '[value]"]').fdatepicker({
        format: dateFormat,
        language: date_language,
        disableDblClickSelection: true,
        //startDate: starDatePicker,
        //endDate: endDatePicker,
        onRender: function (date) {
            var styleDisplay = (starDatePicker != null && starDatePicker != undefined && date.valueOf() < starDatePicker)
                ? 'disabled'
                : (endDatePicker != null && endDatePicker != undefined && date.valueOf() > endDatePicker)
                    ? 'disabled'
                    : (targetDatePicker != null && targetDatePicker != undefined && !equalDates(date, targetDatePicker))
                        ? 'disabled'
                        : '';
            return styleDisplay;
        }
    }).on('changeDate', function (ev) {
        
        var 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 && cEndDatePicker < valDateCurrent)
            {
                doRemove = false;
            }
            if (cStarDatePicker != null && cStarDatePicker > valDateCurrent)
            {
                doRemove = false;
            }
            if (cTargetDatePicker != 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 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) {
                displayError = $('input[name="' + fieldDateId + '[value]"]').val() != '';
            }
            //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();
                }
                $('input[name="' + fieldDateId + '[value]"]').parent().append('<label class="error error-datefield error-custom">' + msgError + '</label>')
            }
        })
            
    });
    
}

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', m).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', m).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() {
    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-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");

        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',

            });
        }
        if (InputName == "searchvo_date_from") {
            normalDatepicker = false;
            now.setDate(now.getDate()-1);
            now.setHours(0);
            now.setMinutes(0);
            now.setSeconds(0);
            var checkin = $(this).fdatepicker({
                format: 'mm/dd/yyyy',
                language: date_language,
                initialDate: today,
                onRender: function (date) {
                    date.setHours(23);
                    date.setMinutes(59);
                    date.setSeconds(59);
                    return date.valueOf() < now.valueOf() ? 'disabled' : '';
                }
            }).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,
                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) {
            $(this).fdatepicker({
                format: dateFormat,
                language: date_language,
                disableDblClickSelection: true,
            });
        }

    });

    $('.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,
            onRender: function (date) {
                return date.valueOf() < now.valueOf() ? 'disabled' : '';
            }
        });
    });
}

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 save_load_search_parameters_local(rowPerPage, languageText) {
    if ($('#advanced-search-filters-form').length !== 0 || $('#search_calendar').length !== 0 || $('#form-basic-search-filters-options').length !== 0) {
        var widget = ($('#advanced-search-filters-form').length !== 0) ? "1" : "2";
        var searchSaved = false;

        $(document).on('click', 'a#save-search', function () {
            var titleSearch = $('input[name="save_search_as"]').val();
            var parameters = ($('#advanced-search-filters-form').length !== 0) ? $('#query-string-form').val() : $('#query-string-form-calendar').val();
            parameters = ($('#form-basic-search-filters-options').length !== 0) ? $('#query-string-form').val() : parameters;
            var dateNow = new Date();
            var dateText = dateNow.toLocaleString().replaceAll('/', '-');

            if (titleSearch === '') {
                swal({
                    title: translation.search_name_required,
                    text: '<p>' + translation.search_name_required_description + '</p>',
                    html: true
                });

                return false;
            }
            else {
                searchSaved = setSavedSearches(titleSearch, parameters, dateText, widget);

                if (searchSaved) {
                    //Update message of saved search and display alert
                    $('input[name="save_search_as"]').val("");
                    $('.message-saved').fadeIn();



                    setTimeout(function () {
                        $('.message-saved').fadeOut();
                    }, 2000);

                    return false;
                }
                else {
                    sweetAlert("An error happen!", "An unexpected error happened! Please try again later.", "error");
                }
            }
        });

        $(document).on('click', 'a#load-search', function () {
            var listingSearch = getSavedSearches('', widget);

            //Remove all items of table saved-searches before load new data
            $('table.saved-searches').DataTable().destroy();
            $("table.saved-searches tbody").empty();

            listingSearch.forEach(function (item) {
                if (item) {
                    var titleItem = item.name;
                    var parameterItem = item.parameters;
                    var dateItem = item.date;

                    var linkItem = '<a href="#" class="item-saved-shared" data-title="' + titleItem + '">' + titleItem + '</a>';

                    $('table.saved-searches tbody').append('<tr><td>' + linkItem + '</td><td>' + dateItem + '</td></tr>');
                }
            });

            $('table.saved-searches').DataTable({
                'bFilter': false,
                'bLengthChange': false,
                'pageLength': parseInt(rowPerPage),
                'language': languageText,
            });
        });

        $(document).on('click', 'a.item-saved-shared', function () {
            var itemTitle = $(this).data("title");
            var contentLocalStorage = getSavedSearches(itemTitle, widget);

            switch (widget) {
                case "1":
                    //Load info of localStorage in hidden of queryString
                    $("#query-string-form").val(contentLocalStorage.parameters);

                    $('.close-button').trigger("click");

                    //Reload datatable
                    var rowPerPage = 10;
                    datatable_widget(null, rowPerPage, true, languageText);
                    break;
                case "2":
                    //Load info of localStorage in hidden of queryString
                    $("#query-string-form-calendar").val(contentLocalStorage.parameters);
                    $('.close-button').trigger("click");

                    //Reload calendar
                    reload_Calendars(true);
                    break;
            }

            return false;
        });
    }
}*/

/*function reload_Calendars(recreate) {
    if (window.IsCustomCalendar === false) {
        initiate_full_calendar_widget(recreate);
    }
}*/

function retrieve_opportuniy_detail() {
    if ($('.opportunity-detail-content').length !== 0) {
        
        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();

        //Share button

        //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'];
                //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");
                        }
                        moment.locale(currentLocale);// to set the time to the site locale
                        var hourStart = toTimeZone(startDate, timezoneUser, MomentTimeFormat + " - ");
                        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';
                        //traditional chinese format
                        var titleInChinesse = traditional_chinese_format(dayOpportunity, hourStart, hourEnd, startDate);
                        if (titleInChinesse != '') {
                            titleToDisplay = titleInChinesse;
                        }
                        
                            $(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>');

                            }
                        
                        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);
                        }
                    }

                }
            });
        }

        if ($('.sign-up-container').length !== 0) {           
            $('.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
                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");
                    }                   
                    moment.locale(currentLocale);// to set the time to the site locale
                    var hourStart = toTimeZone(startDate, timezoneUser, MomentTimeFormat + " - ");
                    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';
                    //traditional chinese format
                    var titleInChinesse = traditional_chinese_format(dayOpportunity, hourStart, hourEnd, startDate);
                    if (titleInChinesse != '') {
                        titleToDisplay = titleInChinesse;
                    }
                    $(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>');

                    }
                    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);
                    }

                }
            });
        }

        //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({
                    title: "",
                    text: success_message,
                    type: "success"
                }, function(){
                    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();
        }

        validate_view_in_dropdown();
    }
}

function add_multi_select_widget() {
    //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
        }
    });
}

function apply_drag_image_option() {

    $('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);
        }
    });

    //$('body form input[type="file"].custom-file-multiple').each(function () {
    //    var translation = window.translation;
    //    var self = this;

    //    if (!translation) {
    //        $.get('/translation', function (data) {
    //            window.translation = data;
    //            input_file_constructor_form_builder(self, true, window.translation);
    //        });
    //    }
    //    else {
    //        input_file_constructor_form_builder(self, true, translation);
    //    }
    //});

    init_multi_file_form_builder();


    $('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({
                    title: "",
                    type: "error",
                    text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                    confirmButtonText: "Ok",
                });
            }
        });
    });
}

$.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);
    $('body form .multi-file-drag-drop').each(
        
        function () {
            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
                    };
                },
                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(id, xhr, status, errorThrown) {
                    var fieldId = $(this).data('id');
                    swal({
                        title: window.translation.error,
                        type: "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({
                            title: window.translation.error,
                            type: "error",
                            text: window.translation.file_was_not_uploaded,
                            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({
                        title: "",
                        type: "error",
                        text: file.name + ": " + translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok",
                    });
                },
                onFileSizeError: function (file) {

                    swal({
                        title: "",
                        type: "error",
                        text: translation.max_size_x.replaceAll("{0}", window.maxFileLengthMBForm),
                        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({
                        title: "",
                        type: "error",
                        text: message,
                        confirmButtonText: "Ok",
                    });
                    //$.growl.error({ duration: 10000, message: translation.file_extension_not_accepted + ': ' + mimeTypes });
                }


                if (errors.maxSize) {
                    swal({
                        title: "",
                        type: "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({
                        title: "",
                        type: "error",
                        text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok",
                    });
                }


                if (errors.maxSize) {
                    swal({
                        title: "",
                        type: "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) {
            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
                $.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)
            });
        } 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 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 countryValue = $('#home_country').val();
        if (countryValue == 'United States') {
            $("#div-state-text").hide();
            $("#div-state-australia").hide();
            $("#div-state").show();
        } else if (countryValue == "Australia" && usedpfac == "true") {
            $("#div-state-text").hide();
            $("#div-state-australia").show();
            $("#div-state").hide();

        } else {
            $("#div-state-text").show();
            $("#div-state-australia").hide();
            $("#div-state").hide();
        }

        var workCountry = $('#work_country').val();
        if (workCountry == 'United States') {
            $("#div-work-state-text").hide();
            $("#div-work-state-australia").hide();
            $("#div-work-state").show();
        } else if (workCountry == "Australia" && usedpfac == "true") {
            $("#div-work-state-text").hide();
            $("#div-work-state-australia").show();
            $("#div-work-state").hide();

        } else {
            $("#div-work-state-text").show();
            $("#div-work-state-australia").hide();
            $("#div-work-state").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();
            } else if ($(this).val() == 'Australia' && usedpfac == "true") {
                $("#div-state-text").hide();
                $("#div-state-australia").show();
                $("#div-state").hide();

            } else {
                $("#div-state-text").show();
                $("#div-state-australia").hide();
                $("#div-state").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();
            } else if ($(this).val() == 'Australia' && usedpfac == "true") {
                $("#div-work-state-text").hide();
                $("#div-work-state-australia").show();
                $("#div-work-state").hide();

            } else {
                $("#div-work-state-text").show();
                $("#div-work-state-australia").hide();
                $("#div-work-state").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();
        //  Hide State input text 
        if (countryValue == 'United States') {
            $('#div-state').show();
            $('#div-state-text').hide();
            $('#div-state-australia').hide();
        } else if (countryValue == 'Australia' && usedpfac == "true") {
            $('#div-state').hide();
            $('#div-state-text').hide();
            $('#div-state-australia').show();

        } else {
            $('#div-state').hide();
            $('#div-state-text').show();
            $('#div-state-australia').hide();
        }


        //  Home Country dropdown
        $('#country').on('change', function () {
            if ($(this).val() == 'United States') {
                $('#div-state').show();
                $('#div-state-text').hide();
                $('#div-state-australia').hide();
            } else if ($(this).val() == 'Australia' && usedpfac == "true") {
                $('#div-state').hide();
                $('#div-state-text').hide();
                $('#div-state-australia').show();
            
            } else {
                $('#div-state').hide();
                $('#div-state-text').show();
                $('#div-state-australia').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')) {

        //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();

        //  Display Custom questions if questions > 0
        $('a.signup-individual').removeAttr('data-open');
        var verifyAnswerGO = true;

        $('a.signup-individual').on('click', function () {

            $('.processing_screen').show();
            var button = $(this);
            var occId = $(this).closest('.row').find('.occurrence-id');
            var waitlistAllowed = $(this).closest('.row').find('.waitlistAllowed');
            var oppdate = $(this).closest('.row').find('legend.title-block');
            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({
                                    title: "",
                                    type: "",
                                    text: custommessage,
                                    confirmButtonText: "Ok",
                                    html: true,
                                    imageUrl: imageUrlForAlert,
                                    customClass: 'server-full'
                                },
                                    function (isConfirm) {
                                        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.025, 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({
                    title: "",
                    text: message,
                    type: "warning",
                    html: true,
                    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
                },
                    function (isConfirm) {
                        if (isConfirm) {
                            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();
                }
            }).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({
                        title: "",
                        text: message,
                        html: true,
                        type: "warning",
                        showCancelButton: false,
                        confirmButtonClass: 'btn-danger',
                        confirmButtonText: "Ok",
                        closeOnConfirm: true,
                    });

                    return false;
                }

                    if(!check_opportunity_prerequisite(this, 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.text());

                    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();
            });
            return false;
        });

        $('a.signup-team').on('click', function () {
            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({
                    title: "",
                    text: message,
                    html: true,
                    type: "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
                },
                    function (isConfirm) {
                        if (isConfirm) {
                            verifyAnswerGO = false;
                            button.click();
                        }
                    }
                );
                return false;
            }
            if(!check_opportunity_prerequisite(this, occId, true)){
                return false;
            }
            setCookie("occitem" + occId.val(), occBasicData, 0.025, true);
            $('.processing_screen').show();
            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').append('<input type="hidden" name="isTeamAction" id="isTeamAction" value="1" />')
            $('#signup-questions-form').submit();
        });

        $('a.signup-iso').on('click', function () {
            if ($("#iso-form").valid()) {
                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();
                    }
                }).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({
                            title: "",
                            text: message,
                            html: true,
                            type: "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 () {

                    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()) {
                var day = $("select[name='dayOfWeek']").val().split(";")[0];

                var startTime = $("input[name='rrsStartTime']").val();

                var endTime = $("input[name='rrsEndTime']").val();

                var row = { "DayOfWeek": day, "StartTime": startTime, "EndTime": endTime };

                var markup = '<div class="row dynamic-row"><div class="small-3 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-3 column"><span>' + startTime + '</span></div><div class="small-3 column"><span>' + endTime + '</span></div></div>';
                $("#added-days-table .body").append(markup);

                addedDaysAndTimes.push(row);
            }
        });

        $("body").on('click', "a[name='addedDaysRemove']", function () {
            $(this).parents("div.dynamic-row").remove();
            addedDaysAndTimes.splice($(this).attr('data-id'), 1);
        });
    }
    else if ($('#signup-questions-form').length > 0 && !$('body').hasClass('logged'))
    {
        $('.signup-individual, .signup-team2').on('click', function (e) {
            $('.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();
            setCookie("occitem" + occId.val(), occBasicData, 0.025, 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("Error", jsonData.message, "error");
            swal({
                title: "Error",
                type: "error",
                text: jsonData.message,
                confirmButtonText: "Ok",
                html: true,
            },
                function () {
                    var redirectTo = urlSite + "/opportunity/" + dataForm.occurrenceId;
                    if(window.location.pathname !== redirectTo) {
                        window.location.href = redirectTo;
                    }
                }
            );

        } else {
            swal({
                title: "",
                text: jsonData.message,
                type: "success"
            },
                function () {
                    if (valueUrl !== undefined && valueUrl !== null && valueUrl !== '')
                        window.location.href = urlSite + valueUrl + "?occId=" + dataForm.occurrenceId;
                    else 
                        window.location.href = urlSite + "/express-interest-confirmation?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 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')) {
                            layoutContentPage = regionContentPage;
                        }
                        else {
                            layoutContentPage = regionContentPage.first().parents('div[data-region-id]').first();
                        }

                        layoutContentPage.append(divContainer);
                    }
                }
                else {
                    $('#main-content').append(divContainer);
                }

                //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') ? window.translation.finish : window.translation.next;

                        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">' + 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') ? window.translation.finish : window.translation.next;
                        }
                        else if (type === 'PARTNER_REGISTRATION') {
                            formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));
                            var textButton = (redirectTo === '/organization-confirmation-registration') ? window.translation.finish : window.translation.next;

                        } 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') ? window.translation.finish : window.translation.next;
                        } else {
                            formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                            var textButton = (redirectTo === '/individual-signup-confirmation' || redirectTo === '/express-interest-confirmation' || isSuccessPage === 'True') ? 'Finish' : 'Next';
                        }

                        buttonNextHTML =    '<div class="next_option">'
                                            +   '<a href="#" class="button primary-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(buttonNextHTML);
                        }
                    }
                    else {
                        $('#main-content').find('.actions_branch_logic').append(buttonNextHTML);
                    }
                }
                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 = window.translation.back;
                        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


                    swal({
                        title: window.translation.success,
                        text: window.translation.donation_success_paypal,
                        type: "success",
                        confirmButtonText: 'Ok',
                        closeOnConfirm: true
                    }, function () {

                        $('.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();
        });
    }

    //Events of next and back
    $(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;
        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
                partial_validate_custom($('#volunteer-register-form'), 'volunteer-register-form');

                if (isSubmit === true && $('#volunteer-register-form').valid() === 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 currentForm = $('body').find('.formBlock.llamapi-registration-form form').first();
                if (currentForm !== undefined && currentForm !== null) {
                    if (currentForm.valid()) {
                        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');
                            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) === 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 {
                // Validating basic honeypot security 
                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');

                    }
                    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();
                        }
                    }

                } else {
                    if ($('body #main-content .formBlock.arsBlock').length > 0)
                        formBlock = $('body #main-content .formBlock.arsBlock');
                    else if ($('body #main-content .donationBlock').length > 0)
                        formBlock = $('body #main-content .donationBlock');

                }
                
                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({
                                title: '',
                                type: 'error',
                                text: 'You should select a Payment processor or Sorry, I cannot donate at this time',
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            });
                            return false;
                        }

                        hasPaymentComponent = false;
                        if (paymentComponent.find('input[name="prefer_not_donate"]').is(':checked') === false) {
                            hasPaymentComponent = true;
                        }

                    } else {
                        if (paymentComponent.find('.payment-executed').length > 0) {
                            hasPaymentComponent = false;
                        } else {
                            hasPaymentComponent = true;
                        }
                        
                    }

                }



                if (validate_honeypot_security(form_id)) {
                    $.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 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');

                                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 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) {
                                        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 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');
                                                remove_form_restriction(formBlockToPRocess, '7');
                                                formBlock.find('form').submit();
                                            }

                                        } else {
                                            swal({
                                                title: '',
                                                type: '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;
                                    } 

                                    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') {
                                        //Submit of form

                                        //remove class
                                        var formBlockArs = $('body form.form-ars');
                                        remove_form_restriction(formBlockArs, '5');

                                        ajax_submit_event(null, formData);
                                    }
                                    else if (typeBranchLogic === 'SIGNUP' && (valueHref === '/individual-signup-confirmation' || valueHref === '/express-interest-confirmation' || 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 {
                                            ajax_submit_sign_up(formData, valueHref);    
                                        }
                                    }
                                    else if (typeBranchLogic === 'PARTNER_REGISTRATION' && valueHref === '/organization-confirmation-registration') {
                                        //Submit of form
                                        ajax_submit_partner_registration(formData, valueHref, siteId);

                                    } else if (typeBranchLogic === 'PARTNER_REGISTRATION' && valueHref !== '/organization-confirmation-registration') {
                                        if (isSuccessPage) {
                                            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');
        }
    }
}

function partner_page_branch_logic() {
    //Events of next and back
    $(document).on('click', '.actions_partner_branch_logic a.next_option', function () {
        partial_validate_custom($('#organization-register-form'), 'organization-register-form');
        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 && $('label.error-custom').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').length > 0) {
                    topLabelError = $('label.error-custom').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 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('');
    branchLogicRules.each(function () {
        if (meetConditions === false) {
            var self = $(this);
            var conditions = self.val();

            var redirectTo = self.attr('data-redirectTo');
            var isDefault = self.attr('data-isDefault');
            var isSuccessPage = self.attr('data-issuccess');
            var isArsLogin = self.attr('data-page-rule-type') && self.attr('data-page-rule-type')==="4";
            //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('>=') != -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;
                        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();
                        var valueFormMultiSelect = $('form#' + formId).find('select[name="' + inputName + '[]"]').val();
                        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 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) {
                            var valueFromSF = $('input[name="' + inputName + '"]:not([type=radio],[type=checkbox])').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') {
                                } 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 (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 ((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 ((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 (value !== valueFormInput && value !== valueFormSelect && value !== valueFormRC && value !== valueFormCheckbox) {
                                    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.indexOf('-') != -1;

                                if (isDateValue) {
                                    //Parse value of date to int years
                                    var yearsAgo = moment().diff(moment(valueFormInput, 'YYYY-M-D', true), "years");
                                    var valCompare = parseInt(yearsAgo);
                                } else {
                                    var valCompare = parseInt(valueFormInput);
                                }


                                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'){
                                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 || isRelatedToSSO === 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);
                                        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);
                                        }

                                        //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);
                                    }
                                }
                            });
                        }
                    }
                    
                    $('.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]);
                        }
                        
                        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({
                title: '',
                type: 'error',
                text: jsonData.results,
                confirmButtonText: 'Ok',
                closeOnConfirm: true
            },
            function () {
                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

                if ($('.occurrenceSelectedBeforeLogin').length > 0) {

                    var occurrenceSelectedBeforeLogin = $('.occurrenceSelectedBeforeLogin').closest('.row.fieldset-step').find('.occurrence-id').val();
                    var hasQuestions = $('#signup-questions').find('.question').length > 0 ? true : false;
                    var hasPrerequisite = $('#prerequisite-opportunity').length > 0 ? true : false;
                    var isISO = $('#iso-selector').length > 0 ? true : false;
                    var hasARS = false;
                    if ($('.opportunity-detail-content input.branch-logic-info').length > 1) {
                        hasARS = true;
                    }
                    var hasGroupedOccurrences = $('.occurrenceSelectedBeforeLogin').closest('.row').find('p.grouped-occurrence-message').length > 0;
                    var returnOccSelectedBeforeLogin = hasQuestions || hasPrerequisite || hasARS || hasGroupedOccurrences || isISO;
                    var isSignUpWithTeam = $('.occurrenceSelectedBeforeLogin').hasClass('signup-team2');
                    var waitlistAllowed = $('.occurrenceSelectedBeforeLogin').closest('.row').find('.waitlistAllowed').val();

                    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";
                    }
                    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 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;

                    $("form.social-networks-login").find('.oneStepSignUpInfo').val(encodeURIComponent(options));
                    if ($(".SSO_login").length > 0) {
                        var currentHref = $('a.SSO_login_button').prop("href");
                        if (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 () {
                if($('.occurrenceSelectedBeforeLogin').length > 0){
                    var occurrenceSelectedBeforeLogin = $('.occurrenceSelectedBeforeLogin').closest('.row.fieldset-step').find('.occurrence-id').val();
                    var hasQuestions = $('#signup-questions').find('.question').length > 0 ? true : false;
                    var hasPrerequisite = $('#prerequisite-opportunity').length > 0 ? true : false;
                    var isISO = $('#iso-selector').length > 0 ? true : false;
                    var 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;
                        }
                    }
                    var hasGroupedOccurrences = $('.occurrenceSelectedBeforeLogin').closest('.row').find('p.grouped-occurrence-message').length > 0;
                    var returnOccSelectedBeforeLogin = hasQuestions || hasPrerequisite || hasARS || hasGroupedOccurrences || isISO;
                    var isSignUpWithTeam = $('.occurrenceSelectedBeforeLogin').hasClass('signup-team2');
                    var waitlistAllowed = $('.occurrenceSelectedBeforeLogin').closest('.row').find('.waitlistAllowed').val();

                    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";
                    }
                    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;

                    console.log('is adding onestepurl')
                    // 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) 
                        url += "&signUpBeforeLoginWTeam=true";
                    if(!returnOccSelectedBeforeLogin)
                        url += "&waitlistAllowed=" + waitlistAllowed;
                    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({
                                title: window.translation.missing_values,
                                type: 'warning',
                                text: window.translation.please_complete_valid_amount,
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            }, function(){
                                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({
                                                title: window.translation.success,
                                                text: messageSuccess,
                                                type: "success",
                                                confirmButtonText: 'Ok',
                                                closeOnConfirm: true
                                            }, function () {
                                                return validDonation; 
                                            });
                                        }
                                    }
                                    else {
                                        self.find('processing_donation_form').hide();
                                        validDonation = false;

                                        swal({
                                            title: 'Error',
                                            type: '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';
        } 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 radioGroups = self.find('.input-group-radiobutton');
            var textareaRichText = self.find('textarea.rich_text');
            var workflowId = $('input.branch-logic-info').first().attr('data-workflow');

            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 content = $(this).closest('div.content');
                    var validation = content.find('label.validation-message');
                    validation.css('display', 'block');
                    if(topPage === 0) topPage = content.offset().top;
                    validForm = false;
                }
            });

            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;
                }
            });

            //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);
                                    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["__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();
    }
    if (value == 'RRS') {
        $("#iso-specific-date-time").hide();
        $("#iso-regular-recurring-schedule").show();
    }
}

function onChangeDayOfWeek(value) {
    var splitted = value.split(";");
    $("input[name='rrsStartTime']").val(splitted[1]);
    $("input[name='rrsEndTime']").val(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 getQueryString() {
    var query_string = {};
    var query = window.location.search.substring(1);
    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]));
        }
    }
    return query_string;
}

function datatable_add_cells_data_for_mobile_headers(element) {
    var table = $(element);
    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 () {
        $(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
        };

        $(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){
    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;
        if (prerequisiteConnections.length > 0)
        {
            var occStartDateTime = $(button).closest(selector).data('occStartDateTime');
            occStartDateTime = moment(occStartDateTime);
            prerequisiteCompleted = prerequisiteConnections.some(function (item, index) {
                var connection_end_date = moment(item);
                return occStartDateTime.isAfter(connection_end_date);
            });
        }
        if(prerequisiteCompleted)
        {
            return true;
        }
        else if (!prerequisiteOppHasUpcomingOcc)
        {
            $('#prerequisite-opportunity form').hide();
            $('#prerequisite-opportunity .no-upcoming-occ').show();
        }
        else
        {
            $('#prerequisite-opportunity').find('input[name="occWithPrerequisite"]').val(occId.val());
            $('#prerequisite-opportunity').find('input[name="registeringWithTeam"]').val(team);
            $('#prerequisite-opportunity form').show();
            $('#prerequisite-opportunity .no-upcoming-occ').hide();
        }    
        $('#prerequisite-opportunity').foundation('open');
        return false;
    }
    if($('#prerequisite-notice').length > 0)
    {
        var occEndDateTime = $(button).closest(selector).data('occEndDateTime');
        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({
                title: "",
                text: error,
                type: "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');
        }
        $("#atcb-list-" + id + "").css(
            {
                top:$(this).offset().top + $(this).height() - 2,
                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="Image for spinner" title="Image for spinner" 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({
                            title: "",
                            type: "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, " "));
}

function set_default_datetime_form_blocks() {
    $(".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)
        }

        });
    });
}

//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({
                title: textStatus,
                type: "error",
                text: errorThrown,
                confirmButtonText: "Ok",
                html: true,
            });
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);
        if (jsonData.status == "ok") {
            localStorage.removeItem('partner-branch-logic-form-data-' + siteId);
            window.location.href = urlSite + urlRedirect;
        } else {
            $('.processing_screen').hide();
            if (jsonData.status == "error") {
                swal({
                    title: "",
                    type: "error",
                    text: jsonData.message,
                    confirmButtonText: "Ok",
                    html: true,
                }, function (isConfirm) {
                    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);
    }

    //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,
                type: "input",
                inputType: "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(options,
              function (inputValue) {
                  if (inputValue === false) return false;

                  if (inputValue === "") {
                      swal.showInputError(window.translation.elevation_code_enter_code);
                      return false
                  }
                  VerificateElevationCode(inputValue);
                 
              });
        });
    }
}

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({
                    title: window.translation.success,
                    text: window.translation.elevation_code_success,
                    type: "success",
                    showCancelButton: false,
                    confirmButtonText: "Ok",
                    closeOnConfirm: false,
                    html: true
                }, function (isConfirm) {
                    if (isConfirm) {
                        window.location.href = data.url;
                        swal.close();
                    }
                });

            } else {
                swal({
                    title: window.translation.error,
                    type: "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 modal = $('#common-messages');
            var usersInfoHTML = $(this).parent().find('input.signed-up-users').val();
            var usersInfoJSON = (usersInfoHTML) ? JSON.parse(usersInfoHTML) : {};
            var opportunityName = $(this).parents('.opportunity-detail-content').first().find('h2.title-opportunity').text();
            var 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"><span>'+ window.translation.volunteer_opportunity +': </span> '+ opportunityName +'</div>' +
                                            '<div class="line"><span>'+ window.translation.date +': </span> '+ occurrenceDate +'</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('h3').after(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 liUser = '<li>'+ name +'</li>';

                        if (contactIdUserLogged === user.ContactId) {
                            var customName = name + ' (' + window.translation.you_only + ')';
                            liUser = '<li class="bold">' + customName + '</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(htmlContainer);
                modal.find('.container-modal').find('ul').css('max-height', maxHeightCalculatedModal);
            }

            //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({
                                        title: window.translation.error_editing_field,
                                        text: window.translation.invalid_email_value,
                                        type: "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({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.email_is_required_row,
                                            type: "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({
                                        title: window.translation.error_editing_field,
                                        text: window.translation.invalid_email_value,
                                        type: "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({
                                                title: window.translation.error_editing_field,
                                                text: window.translation.email_can_not_empty_because_the_phone_is_empty,
                                                type: "error",
                                                confirmButtonText: "Ok",
                                                closeOnConfirm: true
                                            });
                                            $("input[name='" + inputSelector + "']").val(originalValue);
                                            $(labelSelector).text(originalValue);
                                        }
                                    } else if (isRequiredEmail) {
                                        swal({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.email_is_required_row,
                                            type: "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({
                                    title: window.translation.error_editing_field,
                                    text: window.translation.fullname_can_not_empty,
                                    type: "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({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.phone_is_required_row,
                                            type: "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({
                                                title: window.translation.error_editing_field,
                                                text: window.translation.phone_can_not_empty_because_the_email_is_empty,
                                                type: "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({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.phone_is_required_row,
                                            type: "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({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.age_is_required_row,
                                            type: "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({
                                        title: window.translation.error_editing_field,
                                        text: window.translation.age_is_invalid,
                                        type: "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({
                                        title: window.translation.error_editing_field,
                                        text: window.translation.age_is_required_row,
                                        type: "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(){
            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();
                }
            }
        });
    }
    
}

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');
                userProfile = window.sessionStorage.getItem('User Profile');

                if (contactId == null || contactId === undefined || contactId === ''
                    || userProfile == null || userProfile === undefined || userProfile === '') { // invoke service to detect 
                    $.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);
                            }

                            if (data.profile !== undefined && data.profile != null && data.profile !== '') {
                                sessionStorage.setItem('User Profile', data.profile);
                            }
                        }

                    });
                }
            }


        } 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');
            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');
                    }
                }
            }

        }
    });

}

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;
                        }
                        var percentage = 'width: ' + (response.score * 20 + 20) + '%';

                        $('div.password-meter').removeClass('alert warning secondary success urgent');
                        $('div.password-meter').addClass(classCss);
                        $('div.password-meter div.progress-meter').attr("style", percentage);
                        $('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 = {};
    var query = 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]));
            }
        }

        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_', '"');

        }
    }
    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=AIzaSyCNaJrFOenroOu3-nTDCYS6Jiom8z9TMH8";
            $('.map-section').find('iframe.neighborhoodzone').attr('src', src);
        }
        
    }
}


function init_datatable_editable(datatable, afterEdit) {
    
    if (!$(datatable).hasClass('datatable-editable')) {

        var doAfterEdit = true;

        $(datatable).on('dblclick', '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);
        });
        $(datatable).on('click', '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) {
            var element_to_edit;
            if ($(e.target).hasClass('cell-edit-btn')) {
                element_to_edit = $(e.target).closest('td').find('input.input-cell-value')[0];
            }
            
            if (!$(e.target).closest('form').hasClass('temporal-form')) {
                
                $(datatable).find('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)').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)').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)').remove();

                            td.removeClass('datatable-cell-editing');
                            td.addClass('datatable-cell-edited');
                            td.parent('tr').addClass('datatable-row-edited');
                            td.find('form').remove();

                        }
                    }
                });
            }

            $(datatable).find('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)').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)').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)').remove();

                        td.removeClass('datatable-cell-editing');
                        td.addClass('datatable-cell-edited');
                        td.parent('tr').addClass('datatable-row-edited');
                        td.find('select').remove();

                    }
                }
            });

            $(datatable).find('td.datatable-cell-editing input.input-cell-value').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')) {
                        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)').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)').remove();

                        td.removeClass('datatable-cell-editing');
                        td.addClass('datatable-cell-edited');
                        td.parent('tr').addClass('datatable-row-edited');

                    }
                }
            });

            $(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)').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)').remove();

                        td.removeClass('datatable-cell-editing');
                        td.addClass('datatable-cell-edited');
                        td.parent('tr').addClass('datatable-row-edited');

                    }
                }
            });
            
            if ($.isFunction(afterEdit) && doAfterEdit) afterEdit();
        });
        $(datatable).on('click', 'td.datatable-cell-edited span.reset-btn', function (e) {
            var td = $(this).closest('td');
            td.find('span.cell-value').html(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();
        });
        $(datatable).on('focusin', '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')) {
        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="^[0-9]+([.][0-9]{1,2})?$"'
            + ' />');
    }
    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 pickListDetail = JSON.parse(settingsPicklist);
            if (pickListDetail && pickListDetail.length > 0) {
                for (var i = 0; i < pickListDetail.length; i++) {

                    if (pickListDetail[i].name == th.data('field-name')) {
                        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) {
                for (var i = 0; i < pickListDetail.length; i++) {

                    if (pickListDetail[i].name == th.data('field-name')) {
                        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')) {
        td.append('<input type="checkbox" class="checkbox-cell-value" />');

        td.find('input[type="checkbox"].checkbox-cell-value').prop('checked', currentValue.toLowerCase()==="true");
    }
    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-403').length > 0) {
        $(document).foundation();
        $('body.page-403').find('a.button').each(function () {
            if (!$(this).hasClass('custom-button')) {
                $(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(window.location.href);
                        $('#login-modal').find('input[name="returnURLFacebook"]').val(window.location.href);
                        var currentURL = $('#login-modal').find('a.SSO_login_button').attr('href');
                        currentURL = currentURL + '?retUrl=' + encodeURIComponent(window.location.href);
                        $('#login-modal').find('a.SSO_login_button').attr('href', currentURL);
                        $('#login-modal').foundation('open');
                    }
                });
            }
        });
    }
}

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
        }).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 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) newStartDateTime = endDate.subtract(1, 'hours');
                        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

        }).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) {
            if (currentPathName.indexOf('/express-interest-confirmation') > -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 (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');
                        }
                    }
                }
               
            }
        }
    } 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({
                title: textStatus,
                type: "error",
                text: errorThrown,
                confirmButtonText: "Ok",
                html: true,
            });
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);
        if (jsonData.status == "ok") {
            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');
                if (itemOneStep.finalUrl !== '/') {
                    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({
                    title: "",
                    type: "error",
                    text: jsonData.message,
                    confirmButtonText: "Ok",
                    html: true,
                }, 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 cms_privileges_process() {

    $('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({
                title: window.translation.discard,
                text: window.translation.discard_changes,
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: true
            }, function (value) {
                if (value === "true" || value === true) {
                    close_actions_privileges_modal();
                    modal.foundation('close');
                }
            });
        }
        else {
            close_actions_privileges_modal();
        }
    });

    $('body').on("click", "a.configure-cms-access", function (e) {

        remove_session_storage_privileges();
        var email = $(this).data('contact-email');
        var name = $(this).data('contact-name');
        var portalAccess = $(this).data('contact-portal-access');
        var userId = $(this).data('user-id');

        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');
                    }
                    
                }
            }
        ];


        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 = $(this).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();
                }
            });


    });


    $('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({
                            title: window.translation.success,
                            text: 'Changes applied',
                            type: "success",
                            showCancelButton: false,
                            confirmButtonText: "Ok",
                            closeOnConfirm: true
                        });
                        close_actions_privileges_modal();
                        var modal = $('#cms-privileges-modal');
                        modal.foundation('close');

                    } else {
                        swal({
                            title: "",
                            type: "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');
            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')) {
                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 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 currentIndex = td.index();
                    var currentSettingName = td.closest('table').find('thead th').eq(currentIndex).text();


                    var thisTable = $(td).closest('table');

                    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.find('.change-in-line').remove();
                        td.find('.setting-value').removeClass('hide');

                   }
                    if (edited) {

                        update_cell_boolean_edited_privileges(td, newValueCheck);
                        store_privileges_local($('#selectedUser').val(), privilegeId, newValueCheck, td);

                    }
                }
            });

            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');        

    }
}

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 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 = '<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");
    }

    td.find('input.input-cell-value').val(currentValue);
    td.find('input.input-cell-value').focus();

}

function update_cell_boolean_edited_privileges(td, newValueCheck) {
    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) {

    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;
                        indexToRemove = j;
                    }
                    else {
                        settingNew.id = pendingChanges.changes[i].privileges[j].id;
                        settingNew.value = pendingChanges.changes[i].privileges[j].value;
                    }
                    newChanegSet.privileges.push(settingNew);
                }

                if (pendingChanges.changes[i].userId == userId && !previousIncludedPrivilege) {
                    var settingNew = new Object();
                    settingNew.id = privilegeId;
                    settingNew.value = value;
                    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;

        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();
                }
            });
        $("#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">' + 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">' + 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(){
    $('button.dropbtn-custom').on('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';

        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 () {
            if (facebook === false) {
                $(selector).find('a.at-svc-facebook').css('display', 'none');
            }

            if (twitter === false) {
                $(selector).find('a.at-svc-twitter').css('display', 'none');
            }

            if (email === false) {
                $(selector).find('a.at-svc-email').css('display', 'none');
            }

            if (linkedin === false) {
                $(selector).find('a.at-svc-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");
                        }
                        moment.locale(currentLocale);// to set the time to the site locale
                        var hourStart = toTimeZone(startDate, timezoneUser, MomentTimeFormat + " - ");
                        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';
                        $(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");
                    }
                    moment.locale(currentLocale);// to set the time to the site locale
                    var hourStart = toTimeZone(startDate, timezoneUser, MomentTimeFormat + " - ");
                    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';
                    //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({
                    title: "",
                    text: success_message,
                    type: "success"
                }, function () {
                    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', '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('label.info-email-code').hide();
            else if (emailOriginalValue !== currentInputValue && isErrorValue === false) {
                $(this).closest(formSelector).find('label.info-email-code').show();
            } else
                $(this).closest(formSelector).find('label.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) {
                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({
                title: window.translation.warning,
                text: jsonResult.message,
                type: "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();

        $.ajax({
            type: 'GET',
            url: urlSite + '/ARS/getSiteId',
            success: function (data) {
                var siteId = data;

                $.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;
                        ajax_submit_event(null, postData);
                    });
                } else {
                    ajax_submit_event(null, postData);
                }


            }
        });
    }
}


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 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 };
    }

    var hideProcessingScreens = true;

    if (isresendAction === undefined)
        isresendAction = false;

    $(formSelector + ' input.email-field').addClass('custom-disabled-opacity');
    

    $.ajax({
        method: "POST",
        url: urlSite + pathService,
        data: postData,
        beforeSend: function () {
            var emailOriginalValue = $(formSelector + ' #' + emailIdField).data("original-value");
            if (emailOriginalValue !== undefined && emailOriginalValue !== '' && emailOriginalValue !=  emailToRegister)
                $(formSelector + ' label.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) {

                $(formSelector + ' #verificationtoken').val(jsonResult.token);
                $(formSelector + ' #verificationCode').val('');

                if (isresendAction === false) {
                    $(formSelector + ' .input-group-button.submit-button').hide();
                    $(formSelector + ' .verification-code-section').show();
                    $(formSelector + ' label.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 + ' label.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({
                title: window.translation.warning,
                text: jsonResult.message,
                type: "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') {


                localStorage.removeItem('vol-branch-logic-form-data-' + siteId);
                if (self.find('form').length > 0) {
                    remove_form_restriction(self.find('form').first(), '0');
                }
                window.location.href = urlToRedirect;
            } else {
                swal({
                    title: '',
                    type: 'error',
                    text: jsonResult.message,
                    confirmButtonText: 'Ok',
                    closeOnConfirm: true,
                    html: true
                });
            }
        });

}

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 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({
                        title: '',
                        type: 'error',
                        text: jsonResult.message,
                        confirmButtonText: 'Ok',
                        closeOnConfirm: true,
                        html: 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;}';
                    styles += rule;
                }

                if (colorHover !== null && colorHover !== undefined && colorHover !== '') {
                    var rule = baseRule + ':hover:before{ color:' + 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;
};
/*
    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;
$(document).ready(function () {
});


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();
}




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();
    SaveAndEditFieldType();
    EventsAddTimeToPreview();
    EventsValidateRequiredField();
    EventsValidateIfHideLabel();
    LoadSalesForceFields();
    SetSalesforceFieldObject();
    DetectFormChange();
    DeleteFieldtype();
    DisplayLogicConfig();
    AddDisplayCondition();
    SaveOrEditFormBuilder();
    DisplayFieldChange();
    SaveDisplayLogic();
    SelectClearExtensions();
    EventsResetModal();
    EventsPopulateFieldsFormBuilder();
    ShowSfListviewObjects();
    ShowSfFieldPullValues();
    ShowDisplayAsCheckBoxesValues();
    ShowDisplayAsRadioButtonsValues();
    ShowSalesforceFilesValues();
    HandleEventRemoveFiles();
    AllowSFEncryptedFields();
    OnlySFRichTextFields();
    //EventPopulateDefaultValueFields();
    AddEventToDisplayFilename();
    EventsToManageUpdateRecordFeature();
    PopulateFromBlockWithDataFromSF();
    SharingPortalSettings();

    validateOnlyImage();
    EventAlertHandleDateTimeAsDate();
    EventsValidateColumnsNumber();
    EventActiveBorder();

    if (!is_backend_page()) return;

    $(document).on('click', 'a[data-element-reveal="form-builder-block"]', function () {
        var formSelector = '#form-builder-block';
        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');

        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);

        if (parseInt(blockId) == 0) {
            //For new
            initialize_form_builder_for_new(formTokenStore, ars, formSelector, 'cms');
        } else {

            if (!ars) {
                dataworkflow = 'cms';
            }

            initialize_for_edit_form(ars, formSelector, dataworkflow);

            if (!ars) {
                $(formSelector).find('.delete_block').show();
                $(formSelector).find('.required_login_row').removeClass('hidden');
                $(formSelector).find('.update_record_row').removeClass('hidden');
                $(formSelector).find('.populate_from_salesforce_row').removeClass('hidden');
                $(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('.update_record_row').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('.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 () {
                    $('.form_builder_block').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                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
                $(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('input[name="disable_confirm_modal_after_submit"]').prop("checked", jsonResult.disable_confirm_modal);
                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="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);
                $(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);
                $(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.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');
                }
                else if (jsonResult.salesforce_object && jsonResult.update_record) {
                    $(formSelector).find('.message_sid_querystring').removeClass('hidden');
                }

                if (jsonResult.salesforce_object) {
                    //Field update record
                    $(formSelector).find('.update_record_row').removeClass('hidden');
                    if (!ars) {
                        $(formSelector).find('.populate_from_salesforce_row').removeClass('hidden');
                    }
                    //Populate update record field
                    $(formSelector).find('input[name="update_record"]').prop("checked", jsonResult.update_record);
                }
                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 && isGlobalAdmin == true) {
                    $(formSelector).find('.save_complete_later').removeClass('hidden');
                } else {
                    $(formSelector).find('.save_complete_later').addClass('hidden');
                }

                //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);
                    LoadSalesForceObjects(jsonResult.salesforce_object, true, isPartnerRegistration, false, isKioskForm);
                    AjaxPreLoadSalesForceFields(jsonResult.salesforce_object);
                    hideProcessingScreen = false;
                    $(formSelector).find('.salesforce-mapping-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');

                    }
                }
                else {
                    $(formSelector).find('.salesforce-mapping-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('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('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);
                    $(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);
                    if (jsonResult.sp_form_type === 1) {
                        LoadSalesForceObjects('Contact', true);
                        $(formSelector).find('form#form-builder select[name="salesforce_object"]').val('Contact');
                    } else if (jsonResult.sp_form_type === 2) {
                        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) {
                        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) {
                        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) {
                        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) {
                        LoadSalesForceObjects(instancePrefix + 'Volunteer_Team__c', true);
                        $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Volunteer_Team__c');
                    }
                    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');
                }

                $(formSelector).find('.form-preview .row-fields .field-row').remove();
                loadFieldsFromLocalStorage();
                $(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
                }

                //Hide processing screen
                if(hideProcessingScreen) {
                    $(formSelector).find('.processing_screen').hide();
                }

                if (sourceInvoked != null && sourceInvoked != undefined && sourceInvoked == 'gallery') {
                    $(formSelector + " .settings-builder-form-clone").hide();
                    $(formSelector + " .region").hide();
                } else {
                    $(formSelector + " .settings-builder-form-clone").show();
                    if (!isArs && $('body.new-template-system').length > 0) {
                        $(formSelector + " .region").show();
                    }
                }
            });
        }

        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();
        return false;
    });
}

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');
                    var accept = target !== document.getElementById('fields-list');
                    if (isSectionField && isSectionRegion) {
                        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', 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) {
                    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) {
                                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);

                    weight = weight + 1;
                });
            }).on('dragend', function (el) {
            });
    }
}

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 loadFieldsFromLocalStorage() {
    var border_option_status = '';
    if (!is_backend_page()) return;
    var numElement = 0;
    var form_preview = $('.form_builder_block .form-preview');
    var jsonData = GetLocalFormBuilderStorage();
    if (jsonData != "" && jsonData != null) {
        var json = JSON.parse(jsonData);
        var band = false;

        json.forEach(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 = "";
            var is_validate = false, allow_time = false, default_datetime = false;
            var is_required = false;
            var time_format = -1;
            var weight = parseInt(item.weight);
            var sectionId = item.sectionId;
            var options = [];
            var default_values = [];
            var checkbox_option = "";
            var default_value = "";
            var specialClass = "";
            var topminimumlabel = "";
            var topmaximumlabel = "";
            var alignselected = "";
            var columnsSection = 1;
            if (item.specialClass !== undefined && item.specialClass !== null && item.specialClass !== '') {
                specialClass = item.specialClass;
            }
            item.properties.forEach(function (p) {
                if (p.name == "label-" + langId) {
                    label = 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 == "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 == "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 == "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 == "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);
                    }
                }
                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_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 == '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);
                        columnsSection = 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 == "helptext_field-" + langId) {
                    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 == '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 == 'sf_listview_label_field') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  select[name='sf_listview_label_field']").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);
                    }
                }
                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_operator') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  select[name='sf_listview_filter_operator']").val(p.value);
                    }
                }

            });
            if (label == "") {
                label = GetLabelField(typeField);
            }
            
            if (typeField != "submit") {
                var additionalClass = '';
                if (fieldRuleInPage != 0) {
                    additionalClass = 'has-page-rule-related';
                }
                var rowfield = '<div data-element-id="' + elementId + '" class="field-row active ' + specialClass + '" data-type-field="' + typeField + '" data-order="' + item.weight + '" data-block-name="' + typeField + '">'
                                + '<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>'
                                    + '<a title="Delete Field" class="delete-field ' + additionalClass + '" data-page-rule="' + fieldRuleInPage+ '" data-element-id="' + elementId + '"></a>'
                                    + '<span class="move" data-element-id="' + elementId + '"></span>'
                                + '</div>'
                            + '</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-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-id="' + elementId + '" class="field-row active" data-type-field="' + typeField + '" data-order="' + item.weight + '" data-block-name="' + typeField + '">'
                                + '<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>'
                                    + '<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 == 'section') {
                    var classColumns = '';
                    if(columnsSection !== 1) {
                        classColumns = 'columns' + columnsSection;
                    }
                    rowfield = '<div data-element-id="' + elementId + '" data-field-id="' + fieldId + '" class="field-row active" data-type-field="' + typeField + '" data-order="'+ item.weight +'" data-block-name="' + typeField + '">'
                            + '<div class="content content-section">'
                                + FieldContentPreview(typeField, label)
                            + '</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 (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();
                    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 .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 submit_field = '<div data-element-id="0" class="submit-row" data-type-field="submit" data-field-id="'+numElement+'">'
                    +'<div class="content full">'
                        +'<div class="right-full">'
                            + '<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>'
                    + '</div>'
                 + '</div>';
                form_preview.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
            AddOptionToPreviewUpdate(typeField, options, checkbox_option, default_values, elementId);
        });
    }
}

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 == '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', 'default_datetime', 'list_view_values', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', 'related_field_object',
            'record_to_relate', 'label-textarea', 'read_only', 
            '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'
        ];
        $('.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 .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', 'default_datetime', 'list_view_values', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', 'related_field_object', 'display_inline_inputs',
            'record_to_relate', 'title_field', 'payment_component_section', 'option_currentAccountID',
            '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'
        ];
        $('.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', 'default_datetime', 'list_view_values', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', 'related_field_object', 'display_inline_inputs', 'encrypted',
            'record_to_relate', 'title_field', 'payment_component_section', 'option_currentAccountID', 'help-text-for-default-value',
            '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'
        ];
        $('.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', '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', 'list_view_values', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', 'related_field_object', 'display_inline_inputs',
            'record_to_relate', 'title_field', 'payment_component_section', 'option_currentAccountID', 'read_only', 
            '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'
        ];
        $('.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 == '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', 'list_view_values', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', 'related_field_object', 'option_currentAccountID',
            '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',
            'is_required', 'read_only', 'encrypted', 'minimum_characters', 'maximum_characters', 'placeholder_field', 'default_value_field','calculate_items'
        ];
        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', 'default_datetime', 'list_view_values', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', 'rich_text', 'read_only', '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', 'related_field_object', 
            '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'
        ];
        $('.form_builder_block select[name="type_field"]').val("hidden");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.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', 'default_datetime', 'list_view_values', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', 'related_field_object', 'option_currentAccountID',
            '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'
        ];
        $('.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', 'default_datetime', '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',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'related_field_object', 
            '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', 'file_image', 'file_image_width', 'file_image_height','calculate_items'
        ];
        $('.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', 'default_datetime', 'list_view_options',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf_help', 'rich_text', 'display_inline_inputs', 'dropdown-options-labels', 'position-label-section',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'related_field_object', 
            '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', 'file_image', 'file_image_width', 'file_image_height','calculate_items'
        ];
        $('.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', 'default_datetime', 'list_view_values',
            'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', 'related_field_object', 
            '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'
        ];
        $('.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', 'default_datetime', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', 'related_field_object', 
            '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'
        ];
        $('.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_field', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'maximum_characters', 'checkbox_option', 'default_datetime', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', 'related_field_object', 
            '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'
        ];
        $('.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', 'placeholder_field', 'time_format', 'list_view_values',
            'option_opptype', 'option_userId', 'option_currentAccountID', 'auto_suggest', 'is_label_diferent_section', 'decimal_mark', 'currency', 'private_file', 'display_inline_inputs',
            'pull_values_from_sf', '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', 'related_field_object', 
            'record_to_relate', 'title_field', 'payment_component_section',
            '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'
        ];
        $('.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', 'default_datetime', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'decimal_mark', 'currency',
            'pull_values_from_sf', 'rich_text', 'read_only', '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',
            'related_files', 'salesforce_library', 'related_field_object', 'display_inline_inputs',
            '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_width', 'file_image_height','calculate_items'
        ];

        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', 'default_datetime', 'list_view_values',
                    'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'decimal_mark', 'currency',
                    'pull_values_from_sf', 'rich_text', 'read_only', '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', 'related_field_object', 'display_inline_inputs',
                    'record_to_relate', 'title_field',
                    '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'
                ];
            }
            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', 'default_datetime', 'list_view_values',
                    'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'decimal_mark', 'currency',
                    'pull_values_from_sf', 'rich_text', 'read_only', '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', 'related_field_object', 'display_inline_inputs',
                    '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_width', 'file_image_height','calculate_items'
                ];
            }            
        }

        $('.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");

        //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', 'default_datetime', 'list_view_values',
            'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', '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', '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',
            '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'
        ];
        $('.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', 'default_datetime', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', 'rich_text', 'read_only', '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', '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'
        ];
        $('.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', 'type_field', 'default_datetime', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', 'rich_text', 'salesforce-mapping-section', 'read_only', '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', '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'
        ];
        $('.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', 'default_datetime', 'list_view_options', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', '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',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'related_field_object', 
            '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', 'file_image', 'file_image_width', 'file_image_height','calculate_items'
        ];
        $('.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', 'list_view_options', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', 'rich_text', 'max_number_options', 'min_number_options', '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', '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'
        ];
        $('.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', 'default_datetime', 'list_view_values',
            'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'decimal_places', 'private_file',
            'pull_values_from_sf', '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', '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'
        ];
        $('.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', 'default_datetime', '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',
            'pull_values_from_sf', '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', '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'
        ];
        $('.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', 'type_field', 'default_datetime', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf', 'rich_text', 'salesforce-mapping-section', 'read_only', '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',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'related_field_object', 
            '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'
        ];
        $('.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"]', function () {
        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({
            title: window.translation.delete,
            text: message,
            type: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#ff0000',
            confirmButtonText: window.translation.true_text,
            cancelButtonText: window.translation.false_text,
            closeOnConfirm: true
        }, function (isConfirm) {
            if (isConfirm) {
                // 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') {
                        $('.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");
                    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({
                                    title: "",
                                    type: "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');
    }
}

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 = "";
    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);
        
    }

    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>'
                        + '<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-id="' + numElement + '" class="field-row active" data-type-field="' + typeField + '" data-order="' + dataOrder + '" data-block-name="' + typeField + '">'
            + '<div class="content">'
            + '<div class="left">'
            + '</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>';

    }
    //  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);
        
        $('.form_builder_block .form-preview').animate({
            scrollTop: 600
        }, 2000);
    }

    // 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();
    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 = '';
    $(".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 (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) {
            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));
    }
}

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');
            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);
                    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);
                                        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);

        if(varJson != null && varJson != ''){
            var fields = JSON.parse(varJson);
            var sufix = parseInt($('input[name="cond_sufix"]').val());
            DisplayLogicConditions(fields, null, null, null, sufix, null);
            sufix++;
            $('input[name="cond_sufix"]').val(sufix);
        }
    });
}

function DisplayLogicConditions(jsonFields, def_field, def_op, def_data, sufix, elementId) {
    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) {
        $('select[name="display_fields_' + sufix + '"]').last().val(def_field);
        $('select[name="display_fields_' + sufix + '"]').first().focus();

        var elementId = $('select[name="display_fields_' + sufix + '"] option[value="' + def_field + '"]').data('element-id');
        var type = GetTypeFieldById(jsonFields, elementId);

        DisplayDataFields($('select[name="display_fields_' + sufix + '"]').last(), type, elementId, def_data);
    }
    else{
        $('select[name="display_fields_' + sufix + '"]').last().focus();
    }
    if(def_op != null){
        $('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 = '#ars-display-logic select[name="display_data_' + sufix + '"]';
            } else if (type === 'number') {
                selector = '#ars-display-logic input[name="display_data_' + sufix + '"]';
            } else if (type === 'multiselect') {
                selector = '#ars-display-logic select[name="display_data_' + sufix + '"]';
            }
            if (selector !== '') {
                $(selector).hide();
            }

        }
    }
    if(def_data != null){
        $('[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 == '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 options = '';
    if (varJson != null && varJson != '') {
        var jsonFields = JSON.parse(varJson);
        jsonFields.forEach(function (item) {
            var label = '';
            if (item.typeField == 'number' && item.delete == false) {

                item.properties.forEach(function (property) {
                    if (property.name == 'label-1') {
                        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 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();
            }

        }
    });
}


function DisplayDataFields(self, type, elementId, defval){
    $('.ars-display-logic').find('.processing_screen').show();
    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 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();
        if(type != 'number'){
            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(function (item) {

                    if (item.elementId == elementId) {
                        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

                        var valuesFromField = item.properties.find(function(obj) {
                            return obj.name == 'pull_values_from_sf';
                        });
                        var valuesFromView = item.properties.find(function(obj) {
                            return obj.name == 'from_sf_list_views';
                        });
                        
                        if(valuesFromField != undefined && (valuesFromField.value == "on" || valuesFromField.value)) {
                            var _sfObject = item.properties.find(function(obj) {
                                return obj.name == 'salesforce_object';
                            });
                            var _sfField = item.properties.find(function(obj) {
                                return obj.name == 'salesforce_field';
                            });

                            $.ajax({
                                method: "POST",
                                url: urlSite + "Admin/GetValuesFromSFField",
                                data: { sfObject: (_sfObject) ? _sfObject.value : '', sfField : (_sfField) ? _sfField.value : ''},
                                beforeSend: function() {
                                    $('#ars-display-logic').find('.processing_screen').show();
                                }
                            }).done(function (data) {
                                var jsonData = (data) ? JSON.parse(data) : '';

                                if(jsonData && jsonData['status'] == "ok") {
                                    $.each(jsonData['values'], function( i, option ) {
                                        fData.append('<option value="' + option['value'] + '">' + option['label'] + '</option>');
                                    });

                                    if(defval) {
                                        fData.val(defval);
                                    }
                                } else {
                                    console.error('Error trying to get values from SF.')
                                }

                                $('#ars-display-logic').find('.processing_screen').hide();
                            });

                        } else if(valuesFromView != undefined && (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 _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';
                            });

                            $.ajax({
                                method: "POST",
                                url: urlSite + "Admin/GetValuesFromSFView",
                                data: { sfViewObject: (_sfViewObject) ? _sfViewObject.value : '', sfViewId: (_sfViewId) ? _sfViewId.value : '', sfForLabel: (_sfFieldLabel) ? _sfFieldLabel.value : '', sfForValue: (_sfFieldValue) ? _sfFieldValue.value : ''  },
                                beforeSend: function() {
                                    $('#ars-display-logic').find('.processing_screen').show();
                                }
                            }).done(function (data) {
                                fData.empty().append(data);

                                if(defval) {
                                    fData.val(defval);
                                }

                                $('#ars-display-logic').find('.processing_screen').hide();
                            });
                        } else {
                            var tmp = item.properties.find(function(obj) {
                                return obj.name == 'options-' + window.translation.language;
                            });

                            options = (tmp) ? JSON.parse(tmp.value) : "";

                            if(options != null && options != ''){
                                $.each(options, function( i, option ) {
                                    fData.append('<option value="' + option + '">' + option + '</option>');
                                });
                            }
                        }
                        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>');
        }
    }

    $('.ars-display-logic').find('.processing_screen').hide();
}

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({
                    title: "",
                    type: "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 '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;
        default: content = "";
            break;
    }
    return content;
}

function FieldContentPreview(typeField, defaultValue) {
    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 (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 '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" readonly 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  readonly 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 + '">';
            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");
            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);
            }
            content = '<button type="button" class="button">' + label_preview + '</button>';
            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">'+ 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 '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 != '' && 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'
        });
        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 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
    });
    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');
            }
        });
    }
}

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', function () {
        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({
                title: window.translation.warning,
                text: 'The payment component should be reviewed, Please review its settings and click on Save field button before to add new fields',
                type: "warning",
                closeOnConfirm: true,
                html: true,
            });
            return false;
        } else {
            AddFieldsToPreviewWorkflow($(this), null, $('#row-fields'));
            return false;
        }
    });
}

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({
                title: window.translation.error,
                text: 'You can add only a payment component per form',
                type: "error",
                closeOnConfirm: true,
                html: 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('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);
    }
    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);
    }
    if (el.hasClass('textarea')) {
        HideFormBuilderFields('textarea');
        $(formSelector).find('.label_field input').val(GetLabelField('textarea'));
        AddFieldsToPreview('textarea', dragdrop, el, target);
    }
    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();
    }
    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('select[name="display_as"]').val('0');
        $(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('.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 ($('.form_builder_block input[name="save_data_salesforce"]:checked').length > 0) {
        if (el.hasClass('paymentcomponent')) {
            $(formSelector).find('.salesforce-mapping-section').addClass('hidden');
        } else {
            $(formSelector).find('.salesforce-mapping-section').removeClass('hidden');
        }
        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');
    }
}

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({
                title: window.translation.discard,
                text: window.translation.discard_changes,
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    $('.form_builder_block .field-configuration').addClass("hidden");
                    $('.form_builder_block .field-list').removeClass('hidden');
                } else {
                    swal.close();

                }

            });
        }
    });
}

function HideSpecificFieldsFormBuilder(fields) {
    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");
                    break;
                case 'hide_label':
                    $(".form_builder_block .hide_label").addClass("hidden");
                    break;
                case 'read_only':
                    $(".form_builder_block .read_only").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 '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 '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 'dropdown-options':
                    $(".form_builder_block .field-configuration .dropdown-options").addClass("hidden");
                    break;
                case 'minimum_characters':
                    $('.form_builder_block .minimum_characters').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 '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_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 'list_view_values':
                    $('.form_builder_block .listview').addClass("hidden");
                    break;
                case 'list_view_options':
                    $('.form_builder_block .list_view_options').addClass("hidden");
                    break;
                case 'auto_suggest':
                    $('.form_builder_block .auto_suggest').addClass("hidden");
                    break;
                case 'is_label_diferent_section':
                    $('.form_builder_block .is_label_diferent_section').addClass("hidden");
                    break;
                case 'pull_values_from_sf':
                    $('.form_builder_block .pull_values_from_sf').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-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 '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;
                default:
                    break;
            }
        }
    }
}

function ShowAllFieldsFormBuilder() {
    if (!is_backend_page()) return;
    $('.form_builder_block .field-configuration .hidden').removeClass("hidden");

    $('.form_builder_block .field-configuration .dropdown-options-reloaded.hidden').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 .salesforce-mapping-section-notrf').addClass("hidden");
        $('.form_builder_block .pull_values_from_sf').addClass("hidden");
        $('.form_builder_block .listview').addClass("hidden");
        $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
    } else {
        $('.form_builder_block .salesforce-mapping-section').removeClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').removeClass("hidden");
    }


}

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 EventShowTimeFormatField() {
    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block input[name="field_allow_time"]', function () {
        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 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('');
        } 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('');
        } 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({
                    title: window.translation.warning,
                    text: window.translation.there_is_not_another_date_field,
                    type: '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);
        }
    });
}

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 .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') {
                LoadSalesForceObjects('Contact');
            }
            else{
                LoadSalesForceObjects();
            }
        }
    } else {
        $('.form_builder_block .salesforce-mapping-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 .salesforce-mapping-section-notrf').addClass("hidden");
    }
}

function ValidationDisplayOrHideFieldsSFDropdown() {
    if (!is_backend_page()) return;
    //Hide "Load values from Salesforce Field" if "Load picklist options from salesforce listview" is enabled
    if ($('.form_builder_block input[name="from_sf_list_views"]:checked').length === 1 ) {
        $('#form-builder-block .pull_values_from_sf').addClass('hidden');

        $('#form-builder-block .pull_values_from_sf_help').addClass('hidden');
        $('#form-builder-block input[name="pull_values_from_sf"]').prop('checked', false);
        $("#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');

        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');

        }
        
    }

    //Hide "Load picklist options from salesforce listview" if "Load values from Salesforce Field" is enabled
    if ($('.form_builder_block input[name="pull_values_from_sf"]:checked').length === 1) {
        $('#form-builder-block .listview').addClass('hidden');
        $('#form-builder-block .list_view_options').addClass('hidden');
        $('#form-builder-block input[name="from_sf_list_views"]').prop('checked', false);
        $('#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');
        
    }
}

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 .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 .salesforce-mapping-section-notrf').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 .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('.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('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);

            $(formSelector).find('input[name="save_data_salesforce"]').prop('checked', true);
            $(formSelector).find('input[name="save_data_salesforce"]').trigger('change');
        }
        else {
            $(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');
            if (isGlobalAdmin == true)
                $(formSelector).find('.save_complete_later').removeClass('hidden');

        }
    });

    $(document).on('change', '.form_builder_block input[name="save_data_salesforce"]', 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('.salesforce-mapping-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('');
                    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');
                    LoadSalesForceObjects('Contact');
                }
                else if (workflowName === 'login') {
                    $(formSelector).find('.salesforce_object_msg').removeClass('hidden');
                    $(formSelector).find('.salesforce_object').addClass('hidden');
                    LoadSalesForceObjects('Contact');
                    $(formSelector).find('.populate_from_salesforce_row').addClass("hidden");
                    $(formSelector).find('.populate_from_salesforce_row').removeClass('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');
                    LoadSalesForceObjects();
                }


                if (isCompliance == "true") {
                    $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                    $(formSelector).find('.salesforce_object').removeClass('hidden');
                    LoadSalesForceObjects();
                    //Display require and update row
                    $(formSelector).find('.update_record_row').removeClass('hidden');
                }
            } else {
                
                if ($(formSelector).find('input[name="kiosk_form"]:checked').length > 0) {
                    LoadSalesForceObjects(undefined, undefined, false, false, true);

                } else {
                    LoadSalesForceObjects();

                }
                $(formSelector).find('.salesforce_object').removeClass("hidden");
                $(formSelector).find('.form_builder_block .salesforce_object_msg').addClass('hidden');
            }
            $(formSelector).find('.salesforce-mapping-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' || property.name === 'pull_values_from_sf') && !existDropdownWithSF) {
                                if (property.value === true) {
                                    existDropdownWithSF = true;
                                }
                            }
                        });
                    }
                });

                if (existDropdownWithSF) {
                    swal({
                        title: window.translation.warning,
                        text: window.translation.please_disable_options_pull_sf,
                        type: '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");
            $(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);
            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");
            $(formSelector).find('.salesforce-mapping-section-notrf').addClass("hidden");
            $(formSelector).find(".encrypted").addClass("hidden");
        }
    });
}

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;
    }

    $.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 () {
            $('#form-builder-block').find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status == "ok") {
            var object = jsonResult.salesforceObjects;
            var arrayItems = [];

            //Empty select of objects
            $('.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;
            });

            //Defaault Option
            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>';
                }
                $('.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 (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(!NoHideProcessing) {
                $('#form-builder-block').find('.processing_screen').hide();
            }
        } else {
            swal({
                title: window.translation.warning,
                text: jsonResult.message,
                type: "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"]', 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();

        var sfobject = $(this).val();
        if (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
            AjaxLoadSalesForceFields('0', 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');

                }

            } 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 .populate_from_salesforce_row').addClass("hidden");
            $('.form_builder_block input[name="populate_from_salesforce"]').prop('checked', false);
        }
    });
}
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"]', function () {
        var sfField = $(this);
        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') {
            add_default_values_for_picklist_from_salesforce(null);
            checkDependentPicklistMessage()
        }
    });
}

function acceptedSalesforceFields(typeField, SalesforceType, extratypeinfo, updatable, calculated) {
    var content = false;

    if(typeField == 'hidden'){ //Allowed all types
        content = true;
    }
    if (typeField == 'textbox' && (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 == 'textbox_encrypted' && SalesforceType == "encryptedstring"){
        content = true;
    }
    if (typeField == 'textarea' && SalesforceType == "textarea" && extratypeinfo != "richtextarea" && calculated == false) {
        content = true;
    }
    if (typeField == 'rich_text' && SalesforceType == "textarea" && extratypeinfo == "richtextarea" && calculated == false) {
        content = true;
    }
    if (typeField == 'dropdown' && (SalesforceType == "picklist" || SalesforceType == "reference") && 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" && 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 == 'formula' && calculated == true) {
        content = true;
    }
    return content;
}

function AjaxLoadSalesForceFields(elementId, skipCache) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var sfObj = $('#form-builder-block select[name="salesforce_object"]').val();
    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 (isRichText == false) {
        isRichText = isFieldRichText(elementId);
    }

    if (isEncrypted == false) {
        isEncrypted = isEncriptedField(elementId);
    } else {
        if (elementId !== '0') {
            var isEnc = isEncriptedField(elementId);
            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 (sfObj !== null && sfObj !== "") {
        if (jsonData != "" && jsonData != null) {
            var JsonFields = JSON.parse(jsonData);
            if (JsonFields.salesforceObject !== sfObj) {
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetSalesforceFields",
                    data: { sfObject: sfObj, typeField: typeField, skipCache: skipCache},
                    beforeSend: function () {
                        $('#form-builder-block').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    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 = [];
                        $('.form_builder_block select[name="salesforce_field"] option').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-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) == true) {
                                arrayItems.push({object:item.object, apiName:item.apiName, label:item.label});
                            }
                            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 });
                            }
                        });



                        //Sort array
                        arrayItems.sort(function(a, b){
                            if(a.label < b.label) return -1;
                            if(a.label > b.label) return 1;
                            return 0;
                        });
                        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 Salesforce Mapping > Salesforce Field
                        $.each(arrayItems, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="salesforce_field"]').append(option);
                        });

                        $.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);
                        });

                        $.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);
                        });


                        if (elementId != '0') {
                            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 button.save_field').trigger('click');
                                active_from_registration = false;
                                active_from_update_user_information = false;

                            }
                        }

                        
                    } else {

                        swal({
                            title: window.translation.warning,
                            text: jsonResult.message,
                            type: "error",
                            closeOnConfirm: true
                        });
                    }
                    $('#form-builder-block').find('.processing_screen').hide();
                });
                return true;
            } else {
                var JsonFields = JSON.parse(jsonData);

                var object = JsonFields.fields;
                var arrayItems = [];
                var datetTimeItems = [];
                var paymentLabel = [];
                var paymentAmount = [];
                var paymentTransaction = [];

                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="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-transtaction-id"] option').remove();
                $('.form_builder_block select[name="sf-transtaction-id"]').append(option);
                $('.form_builder_block select[name="salesforce_field"]').append(option);

                $('#form-builder-block').find('.processing_screen').show();

                $.each(object, function (index, item) {
                    if (acceptedSalesforceFields(typeField, item.type, item.extraTypeInfo, item.updatable, item.calculated) === true) {
                        arrayItems.push({object:item.object, apiName:item.apiName, label:item.label});
                    }
                    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 });
                    }


                });

                //Sort array
                arrayItems.sort(function(a, b){
                    if(a.label < b.label) return -1;
                    if(a.label > b.label) return 1;
                    return 0;
                });
                //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(arrayItems, function (index, item) {

                    var classDateTime = '';
                    if (datetTimeItems.indexOf(item.apiName) != -1) {
                        classDateTime = 'class="datetime-option"';
                    }

                    var option = '<option data-object="' + item.object + '" value="' + item.apiName + '" ' + classDateTime + '>' + item.label + '</option>';
                    $('.form_builder_block select[name="salesforce_field"]').append(option);
                });

                //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);
                });

                $.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);
                });


                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 button.save_field').trigger('click');
                    active_from_registration = false;
                    active_from_update_user_information = false;

                }


                $('#form-builder-block').find('.processing_screen').hide();
            }
        }
        else {
            if (typeField != 'description' && typeField != "submit" && typeField != "") {
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetSalesforceFields",
                    data: { sfObject: sfObj, typeField: typeField, skipCache: skipCache },
                    beforeSend: function () {
                        $('#form-builder-block').find('.processing_screen').show();
                    }
                }).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"]').append(option);

                        $.each(object, function (index, item) {
                            if (acceptedSalesforceFields(typeField, item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                                arrayItems.push({object:item.object, apiName:item.apiName, label:item.label});
                            }
                            if ((typeField == 'datetime' || typeField == 'datetime_time') &&
                                acceptedSalesforceFields('datetime_time', item.type, item.extraTypeInfo, item.updatable, item.calculated) === true) {
                                datetTimeItems.push(item.apiName);
                            }
                        });

                        //Sort array
                        arrayItems.sort(function(a, b){
                            if(a.label < b.label) return -1;
                            if(a.label > b.label) return 1;
                            return 0;
                        });

                        $.each(arrayItems, function (index, item) {

                            var classDateTime = '';
                            if (datetTimeItems.indexOf(item.apiName) != -1) {
                                classDateTime = 'class="datetime-option"';
                            }

                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '" ' + classDateTime+'>' + item.label + '</option>';
                            $('.form_builder_block select[name="salesforce_field"]').append(option);
                        });
                        if (elementId != '0') {
                            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 button.save_field').trigger('click');
                                active_from_registration = false;
                                active_from_update_user_information = false;
                            }

                        }

                    } else {


                        swal({
                            title: window.translation.warning,
                            text: jsonResult.message,
                            type: "error",
                            closeOnConfirm: true
                        });
                    }

                    //Hide processing screen
                    $('#form-builder-block').find('.processing_screen').hide();
                    });
                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({
                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.',
                type: "warning",
                closeOnConfirm: true
            });
        }
    });
}

function AjaxPreLoadSalesForceFields(sfObj) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    
    if (sfObj !== "") {
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetSalesforceFields",
            data: { sfObject: sfObj },
            beforeSend: function () {
                $('#form-builder-block').find('.processing_screen').show();
            }
        }).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"]').append(option);

                $.each(object, function (index, item) {
                    arrayItems.push({ object: item.object, apiName: item.apiName, label: item.label });
                    if (item.type == 'datetime') {
                        datetTimeItems.push(item.apiName);
                    }

                });

                //Sort array
                arrayItems.sort(function (a, b) {
                    if (a.label < b.label) return -1;
                    if (a.label > b.label) return 1;
                    return 0;
                });

                $.each(arrayItems, function (index, item) {

                    var classDateTime = '';
                    if (datetTimeItems.indexOf(item.apiName) != -1) {
                        classDateTime = 'class="datetime-option"';
                    }

                    var option = '<option data-object="' + item.object + '" value="' + item.apiName + '" ' + classDateTime + '>' + item.label + '</option>';
                    $('.form_builder_block select[name="salesforce_field"]').append(option);
                });
            } else {


                swal({
                    title: window.translation.warning,
                    text: jsonResult.message,
                    type: "error",
                    closeOnConfirm: true
                });
            }
            //Hide processing screen
            $('#form-builder-block').find('.processing_screen').hide();
        });
    } 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
        $('#form-builder-block').find('.processing_screen').hide();
    }
}

function ShowSubmitButtonFormBuilder() {
    if (!is_backend_page()) return;
    if (GetQuantityElementsFormBuilder() > 0) {
        $('.form_builder_block .submit-row').removeClass("hidden");
    } else {
        $('.form_builder_block .submit-row').addClass("hidden");
    }
}

function SetActiveField() {
    if (!is_backend_page()) return;
    $(document).on('click', '.form_builder_block .field-row', function (event) {
        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");

        // removing dependent_sf_rule meesage
        $('.salesforce-mapping-section').find('.dependent_sf_rule').remove();

        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);
                $('.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 = AjaxLoadSalesForceFields(elementId, false);
                    if (fromService === false) {
                        
                        loadValuesFromLocalStorage(elementId);
                        executed = true;
                    } 
                }
                if (executed === false) {
                    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");
                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({
                        title: window.translation.warning,
                        text: 'The payment component should be reviewed, Please review its settings and click on Save field button',
                        type: "warning",
                        closeOnConfirm: true,
                        html: 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 = AjaxLoadSalesForceFields(elementId, false);
                        if (fromService == false) {
                            loadValuesFromLocalStorage(elementId);
                            executed = true;
                        }
                    }

                    if (executed === false) {
                        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();
                    updateFormBuilderPreview(typefield, align_selected);
                    ShowTimeFormatField();
                    if (typefield == 'datetime') {
                        ShowDateValidations();
                    }

                }

            }

        } else {
            //HideFormBuilderFields(typefield);
        }

        if (typefield !== 'paymentcomponent') {
            ValidationShowSalesforceMappingSection();
        } else {
            $('.form_builder_block').find('.salesforce-mapping-section').addClass('hidden');
        }


        if (typefield === 'dropdown') {
            ValidationDisplayOrHideFieldsSFDropdown();
            checkDependentPicklistMessage();
        }
        else if (typefield === 'multiselect') {
            DisplayAsCheckboxesFunctions();
        }
        else if (typefield == "file") {
            DisplaySalesforceFilesOptions();
        }
        return false;
    });

    $(document).on('click', '.form_builder_block .link-refresh-sobjects-llamapi', function () {
        if (IS_LLAMAPI_ENABLED === true) {
            
            localStorage.removeItem('salesforce-fields');
            var selectedObject = $('.form_builder_block input[name="salesforce_object_field"]').val();
            AjaxLoadSalesForceFields(selectedObject, true);

            if ($('.form_builder_block input[name="salesforce_object_field"]').length > 0) {
                LoadSalesForceObjects(selectedObject, false, false, true, false);
            }else
                loadSfObjects(selectedObject,true);
        }
    });

    $(document).on('click', '.form_builder_block .submit-row', 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();
                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();
                updateFormBuilderPreview(typefield, align_selected);
                $('.form_builder_block ul.tabs a:first').trigger("click");
                $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
                $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
                $(".form_builder_block .encrypted").addClass("hidden");
            } else {

                if (lastTypefield === 'paymentcomponent') {
                    swal({
                        title: window.translation.warning,
                        text: 'The payment component should be reviewed, Please review its settings and click on Save field button',
                        type: "warning",
                        closeOnConfirm: true,
                        html: 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();
                    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();
                    updateFormBuilderPreview(typefield, align_selected);
                    $('.form_builder_block ul.tabs a:first').trigger("click");
                    $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
                    $('.form_builder_block .salesforce-mapping-section-notrf').removeClass("hidden");
                    $(".form_builder_block .encrypted").addClass("hidden");

                }
            }
        } else {
            HideFormBuilderFields(typefield);
        }
    });
}

function loadValuesFromLocalStorage(elementId) {
    var section_border_sttus = ''; 
    if(parseInt(elementId) === 0){
        cleanFormBuilderFields();
        $('.form_builder_block input[name="element-id"]').val(0);
        $("#form-builder-block form input[name='label-" + window.translation.language + "']").val('Submit');
    }    

    var jsonData = GetLocalFormBuilderStorage();
    if (jsonData != "" && jsonData != null) {
        var json = JSON.parse(jsonData);
        
        json.forEach(function (item) {
            
            if (parseInt(item.elementId) === parseInt(elementId)) {
                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 = false;
                    var list_view_salesforce_object = "";
                    var listview = "";
                    var from_sf_list_views = false;
                    var auto_suggest = false;
                    var is_label_diferent_section = false;
                    var private_file = false;
                    var display_as_checkboxes = false;
                    var display_inline = false;
                    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 related_files = false;
                    var file_image = false;
                    var salesforce_library = "";
                    var sflistViewLabel = "";
                    var sflistViewValue = "";
                    var sflistViewFilterField = "";
                    var sflistViewFilterValue = "";
                    var displayAs = "";
                    var displayPicklistMode = "";
                    var alignLabel = "";

                    var sfRecordToRelate = "";
                    var salesforceField_value = "";
                    var is_label_diferent = 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 '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 '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 'placeholder_field': $("#form-builder-block input[name='placeholder_field']").val(key.value);
                                break;
                            case 'default_value_field': $("#form-builder-block input[name='default_value_field']").val(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 '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 '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;
                                        }
                                    }
                                }

                                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(({ name, value }) => 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_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 'from_sf_list_views':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="from_sf_list_views"]').prop("checked", true);
                                    $("#form-builder-block .list_view_options").removeClass("hidden");
                                    $("#form-builder-block .dropdown-options").addClass("hidden");
                                    $('#form-builder-block .dropdown_field').addClass('hidden');
                                    $('#form-builder-block .dropdown-options-reloaded').removeClass('hidden');
                                    from_sf_list_views = true;
                                }
                                break;
                            case 'list_view_salesforce_object':
                                list_view_salesforce_object = key.value;
                                break;
                            case 'listview':
                                listview = 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 'pull_values_from_sf':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="pull_values_from_sf"]').prop('checked', true);
                                    $('#form-builder-block .pull_values_from_sf_help').removeClass("hidden");
                                    $('#form-builder-block .dropdown-options-reloaded').addClass('hidden');
                                    pull_values_from_sf = true;
                                    ValidationDisplayOrHideFieldsSFDropdown();
                                }
                                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") {
                                    $("#form-builder-block select[name='decimal_mark']").val(".");
                                } 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 'calculate_items':
                                if (typeField == 'calculate')
                                    populate_calculate_fields(key.value);
                                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 'related_files':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="related_files"]').prop("checked", true);
                                    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 '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_operator': $('.form_builder_block select[name="sf_listview_filter_operator"]').val(key.value);
                                break;
                        }
                       

                        $("#form-builder-block form ul.tabs li a").each(function () {
                            var langId = $(this).data('language-id');
                            var label = 'label-' + langId;
                            var helptext = 'helptext_field-' + langId;
                            var options = 'options-' + langId;
                            var label_textarea = 'label-textarea-' + langId;
                            var option_checkbox = 'checkbox-option-' + langId;
                            var text_validation = 'number_validation_text-' + langId;
                            var topminimum = 'top_minimum_label-' + langId;
                            var topmaximum = 'top_maximum_label-' + langId;
                            var options_labels = 'options-labels-textarea-' + langId;
                         
                            
                            if (is_label_diferent == true && key.name == options_labels) {   
                                $("#form-builder-block form textarea[name='" + options_labels + "']").val(key.value);
                            }


                            if (key.name == topminimum) {
                                $("#form-builder-block form input[name='" + topminimum + "']").val(key.value);
                            }                                
                            if (key.name == topmaximum) {
                                $("#form-builder-block form input[name='" + topmaximum + "']").val(key.value);
                            }  
                            if (key.name == text_validation) {
                                $("#form-builder-block form input[name='" + text_validation + "']").val(key.value);
                            }

                            if (key.name === label) {
                                $("#form-builder-block form input[name='" + label + "']").val(key.value);
                            }
                            if (key.name === helptext) {
                                $("#form-builder-block form input[name='" + helptext + "']").val(key.value);
                            }
                            if (key.name === options) {
                                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 (key.value != "") {
                                    var option_list = JSON.parse(key.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 (key.name === label_textarea) {
                                if (key.value != "") {
                                    CKEDITOR.instances[label_textarea].setData(key.value);
                                }
                            }
                            if (key.name === option_checkbox) {
                                $("#form-builder-block form input[name='" + option_checkbox + "']").val(key.value);
                            }
                        });
                        if (typeField === 'number') {
                            ratingScaleValidation(displayAs);

                        }
                        if (typeField === 'dropdown') {
                            ratingScaleValidationPicklist(displayPicklistMode);
                            ShowDisplayAsRadioButtonsValues();
                        }

                        if (typeField === 'number' || typeField === 'dropdown' || typeField === 'radio') {
                            isLabelDiferent();
                        }
                        
                    });

                    var defaultValuePicklist = '';
                    //Iterate again to populate default value dropdown simple
                    item.properties.forEach(function (key) {
                        $("#form-builder-block form ul.tabs li a").each(function () {
                            var langId = $(this).data('language-id');
                            var default_value_dropdown = 'default_value_dropdown_simple-' + langId;

                            if (key.name === default_value_dropdown) {
                                defaultValuePicklist = key.value;
                                $("#form-builder-block form select[name='" + default_value_dropdown + "']").val(key.value);
                            }
                        });
                    });

                    



                    if (is_required === false) {
                        $("#form-builder-block input[name='is_required']").prop("checked", false);
                    }
                    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 (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 (from_sf_list_views === true) {
                        if (list_view_salesforce_object !== "") {
                            if ($("#form-builder-block select[name='list_view_salesforce_object'] option").length === 0) {
                                $('#form-builder-block .processing_screen').show();
                                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);
                            }
                        } else {
                            $("#form-builder-block select[name='list_view_salesforce_object']").val("");
                            $("#form-builder-block select[name='listview'] option").remove();
                        }
                    } else {
                        $('.form_builder_block input[name="from_sf_list_views"]').prop("checked", false);

                    }
                    if (auto_suggest == false) {
                        $("#form-builder-block input[name='auto_suggest']").prop("checked", false);
                    }
                    if (is_label_diferent_section == false) {
                        $("#form-builder-block input[name='is_label_diferent_section']").prop("checked", false);
                    }
                    if (pull_values_from_sf == false) {
                        $("#form-builder-block input[name='pull_values_from_sf']").prop("checked", false);
                        $('#form-builder-block .pull_values_from_sf_help').addClass("hidden");
                        if (typeField == 'dropdown')
                            $('#form-builder-block .dropdown-options-reloaded').removeClass('hidden');
                        ValidationDisplayOrHideFieldsSFDropdown();
                    }
                    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);
                        //}
                    }


                    
                    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(({ name, value }) => 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 (typeField === 'dropdown' && salesforceField !== false && pull_values_from_sf !== false) {
                        add_default_values_for_picklist_from_salesforce(defaultValuePicklist);
                    }

                    if (typeField !== 'section' && typeField !== 'paymentcomponent' && typeField !== 'hidden' && typeField !== 'description' && typeField !=='submit') {
                        alignLabelBehavior();
                    }

                    

                    if (typeField === 'section') {
                        borderOptionBehavior();
                    }                    

                } else {
                    load_payment_component_selected_formbuilder(item);
                }

            }
        });

    }
    EventActiveBorder(section_border_sttus);
}

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) {
    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) {
    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 != "")) {
                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 ) {
                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 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;
}

function SaveAndEditFieldType() {
    if (!is_backend_page()) return;
    $(document).on('click', '.form_builder_block form button.save_field', 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;


        if (elementId == 0) {
            type_field = 'submit';
            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({
                    title: window.translation.warning,
                    text: window.translation.please_select_a_date_field,
                    type: '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;
            });


            if ($('.form_builder_block form input[name="from_sf_list_views"]:checked').length == 0 &&
                $('.form_builder_block form input[name="pull_values_from_sf"]:checked').length == 0) {


                if (existsItemInDropdown === 0) {
                    swal({
                        title: window.translation.warning,
                        text: window.translation.please_add_option,
                        type: "warning",
                        closeOnConfirm: true
                    });
                    return false;
                }

                if (equalsNumberInAllLanguages === false) {
                    swal({
                        title: window.translation.do_you_want_continue,
                        text: window.translation.languages_should_have_equals_options,
                        type: "warning",
                        closeOnConfirm: true,
                        showCancelButton: true,
                    }, function (isConfirm) {
                        if (!isConfirm) {
                            $("#form_changed").val(true);
                            $(".form_builder_block button.save_field").addClass("pending_changes");
                            return false;
                        }
                    });
                }

            }
            else if ($('.form_builder_block form input[name="pull_values_from_sf"]:checked').length === 1) {
                var valueSFFieldMapping = $(".form_builder_block select[name='salesforce_field']").val();

                if (valueSFFieldMapping === undefined || valueSFFieldMapping === 'none' || valueSFFieldMapping === '') {
                    swal({
                        title: window.translation.warning,
                        text: window.translation.please_select_field_from_wich_pull_values,
                        type: 'warning',
                        closeOnConfirm: true
                    });
                    return false;
                }
            } else if ($('.form_builder_block form input[name="from_sf_list_views"]:checked').length === 1) {

                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({
                        title: window.translation.warning,
                        text: window.translation.select_sfobject_and_listview,
                        type: '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({
                    title: window.translation.warning,
                    text: window.translation.please_select_extensions,
                    type: '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({
                            title: window.translation.warning,
                            text: window.translation.languages_should_have_equals_options,
                            type: "error",
                            closeOnConfirm: false
                        });
                        is_error = true;
                    } else {
                        var optVal = optionsValues.split('\n');
                        var optLab = labelValues.split('\n');
                        if (optVal.length != optLab.length) {
                            swal({
                                title: window.translation.warning,
                                text: window.translation.options_message,
                                type: "error",
                                closeOnConfirm: false
                            });
                            is_error = true;
                        }
                        
                    }
                });
            }

            if (is_error == true)
                return false;

        }

        if (type_field == 'paymentcomponent') {
            var formSelector = '.form_builder_block';
            if (!validate_fields_in_payment_component(formSelector)) {
                return false;
            }
            review_llist_amounts(formSelector);
        }

        var syncFormWithSF = $(".form_builder_block input[name='save_data_salesforce']:checked").length > 0;
        var selectedSalesforceField = $(".form_builder_block select[name='salesforce_field']").val();
        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 = $('.form_builder_block form').serializeArray();

        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;
                    item.properties = JsonObject.properties;
                    item.weight = (orderItem) ? parseInt(orderItem) : 1;
                    band = true;
                } else if (syncFormWithSF && isFieldMappingToSalesforce) {
                    //validate if any other form field is mapping to the same salesforce field
                    var existeElement = item.properties.find(({ name, value }) => name === 'salesforce_field' && value === selectedSalesforceField);
                    var existeElementObject = item.properties.find(({ name, value }) => name === 'related_field_object' && value === selectedSalesforceFieldObject);
                    var valueObjectText = $("#form-builder-block select[name='salesforce_object']").val() == undefined ? '' : $("#form-builder-block select[name='salesforce_object']").val();
                    
                    var isBothObject = valueObjectText.indexOf('Both') == 0;
                    if (existeElement != undefined && existeElement !== null && (isBothObject && existeElementObject != undefined && existeElementObject !== null || !isBothObject)) {
                        var currentLangId = $('body').data('lang-index');
                        //to show the label using the currentlanguage

                        existeElement = item.properties.find(({ name, value }) => name === 'label-' + currentLangId);

                        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(({ apiName }) => apiName === selectedSalesforceField);
                        }

                        if (salesforceFieldInfo !== undefined && salesforceFieldInfo !== null)
                            selectedSalesforceField = salesforceFieldInfo.label;

                        var errorMessageDuplicatefield= window.translation.duplicate_salesforce_mapping.replace("#formField#",existeElement.value).replace("#salesforceField#",selectedSalesforceField);

                        swal({
                            title: window.translation.warning,
                            text: errorMessageDuplicatefield,
                            type: 'warning',
                            closeOnConfirm: true
                        });
                        applyChanges = false;
                        return false;
                    }

                }

                item.weight = (orderItem) ? parseInt(orderItem) : 1;
            });

            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
            updateFormBuilderPreview(type_field, align_label);

            $("#form_changed").val(false);
            $(".form_builder_block button.save_field").removeClass("pending_changes");
        }
    });
}

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);
    }

}

function updateFormBuilderPreview(typeField, align_label) {

    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 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">'
                        + '</div>'
                        + '<div class="right">'
                             + FieldContentPreview(typeField, "")
                        + '</div>';
            content.html(newfield);
        }
    } else if(typeField === 'section') {
        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);

                }
                AssignOptionToPreviewReloaded(options, typeField);
            }
            if (typeField == 'datetime') {
                AddTimeToPreview();
            }
        }
    }

    ValidateRequiredField();
    DetectValidateField();
    ValidateifHideLabel();
}

function SaveOrEditFormBuilder() {
    if (!is_backend_page()) return;
    $(document).on('click', '.form_builder_block .save_form_builder', function () {
        var isArs = ($('.form_builder_block.ars').length > 0) ? true : 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({
                                                    title: "Error",
                                                    type: "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({
                                                        title: "Error",
                                                        type: "error",
                                                        text: "Please fill the reason to store into the gallery",
                                                        confirmButtonText: "Ok"
                                                    });

                                                }
                                            }


                                        }
                                    });
                                    $('#' + elementReveal).foundation('open');
                                    $('#' + elementReveal).foundation();

                                } else {
                                    logic_save_form();
                                }
                            } else {
                                logic_save_form();
                            }
                        } else {
                            logic_save_form();
                        }                   
                    } else {
                        swal({
                            title: window.translation.pending_changes,
                            type: "warning",
                            text: window.translation.pending_changes_message,
                            confirmButtonText: "Ok"
                        });

                        $("#form-builder-block").find('.processing_screen').hide();
                        return false;
                    }
                } else {
                    swal({
                        title: window.translation.warning,
                        type: "warning",
                        text: window.translation.add_least_a_field_type,
                        confirmButtonText: "Ok"
                    });

                    $("#form-builder-block").find('.processing_screen').hide();
                    return false;
                }
            } 

        } else {
            
            return false;
        }
    });
}

function EventsResetModal() {
    if (!is_backend_page()) return;
    $(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);
}

function EventsPopulateFieldsFormBuilder() {
    if($('.formBlock').length > 0) {
        $('.formBlock').each(function() {
            var self = $(this);
            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 values from URL
            self.find('input.populate-from-url').each(function() {
                var parameterName = $(this).val();
                var machineName = $(this).attr('data-machine-name');
                var valueToPopulate = '';

                if(parameterName && machineName) {
                    valueToPopulate = retrieveGetParameter(parameterName);

                    //Populate field
                    if(valueToPopulate) {
                        //Populate input
                        self.find('input[name="' + machineName + '"]').val(valueToPopulate);

                        //Populate textarea
                        self.find('textarea[name="' + machineName + '"]').empty();
                        self.find('textarea[name="' + machineName + '"]').append(valueToPopulate);
                    }
                }
            });

            //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
                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);
                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]);
                }
                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);
                }
            });



            //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 ReadUrlForImageFileInput(input, idPreview) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#' + idPreview).attr('src', e.target.result);
            $('#' + idPreview).parent('.file-upload-preview').removeClass('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");
        } else {
            $('#form-builder-block  .url_redirect_to').addClass("hidden");
            $('#form-builder-block .disable_modal_confirm').removeClass("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);
                if (isGlobalAdmin == 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);
            }
            else {
                //$(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();
        } 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 && isGlobalAdmin == true) {
                $(formSelector).find('.save_complete_later').removeClass('hidden');
            }
            remove_dependency_salesforce_fields(formSelector);

            if ($(formSelector + ' input[name="update_user_information"]:checked').length > 0) {
                //Disable update user information check
                DisableUserUpdateInformation();
            }
        }
    });
    $(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);

                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('.save_complete_later').addClass('hidden');
        } else {
            if (isGlobalAdmin == true)
                $(formSelector).find('.save_complete_later').removeClass('hidden');
        }
    });
    $(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();
            }

            remove_dependency_salesforce_fields(formSelector);
        }
        else {
            var objectSalesforce = $(formSelector).find('select[name="salesforce_object"]').val();

            //Enable update
            $(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');
            }
            else {
                $(formSelector).find('.message_sid_querystring').removeClass('hidden');
            }

            $(formSelector).find('.dependency-from-salesforce').show();
        }
    });
}

function ShowSfListviewObjects() {
    if (!is_backend_page()) return;
    var elementReveal = "form-builder-block";
    if ($("#form-builder-block input[name='from_sf_list_views']").length > 0) {
        $(document).on('change', '#form-builder-block input[name="from_sf_list_views"]', function () {
            if ($('#form-builder-block input[name="from_sf_list_views"]:checked').length > 0) {
                $("#form-builder-block .list_view_options").removeClass("hidden");
                $("#form-builder-block .dropdown-options").addClass("hidden");
                $('#form-builder-block .dropdown_field').addClass('hidden');
                $('#form-builder-block .dropdown-options-reloaded').addClass('hidden');
                $('#form-builder-block .list_view_options .list-view-dropdown-settings').addClass('hidden');

                $('#form-builder-block .is_label_diferent_section').addClass('hidden');
                $('#form-builder-block .dropdown-options-labels').addClass('hidden');
                $('#form-builder-block input[name="is_label_diferent"]').prop('checked', false);

                if ($("#form-builder-block select[name='list_view_salesforce_object'] option").length == 0) {
                    loadSfObjects("");
                }
                //Field "Load values from Salesforce Field"
                $('#form-builder-block .pull_values_from_sf').addClass('hidden');
                $('#form-builder-block .pull_values_from_sf_help').addClass('hidden');
                $('#form-builder-block input[name="pull_values_from_sf"]').prop('checked', false);
            } else {
                $("#form-builder-block .dropdown-options").removeClass("hidden");
                $("#form-builder-block .list_view_options").addClass("hidden");
                $('#form-builder-block .dropdown_field').removeClass('hidden');
                $('#form-builder-block .dropdown-options-reloaded').removeClass('hidden');
                $('#form-builder-block .list_view_options .list-view-dropdown-settings').addClass('hidden');

                //Field "Load values from Salesforce Field"
                $('#form-builder-block .pull_values_from_sf').removeClass('hidden');

                $('#form-builder-block .is_label_diferent_section').removeClass('hidden');
                $('#form-builder-block .label-options-reloaded').removeClass('hidden');
                $('#form-builder-block .option-values').addClass('hidden');
                
            }
        });
    }
    $(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({
                title: window.translation.warning,
                text: window.translation.please_select_one_option,
                type: "warning",
                closeOnConfirm: true
            });
        }
        return false;
    });

    $(document).on('change', "#form-builder-block select[name='listview']", function () {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var SFView = $('#' + elementReveal + ' select[name="listview"]').val();
        var SfObject = $('#' + elementReveal + ' select[name="list_view_salesforce_object"]').val();
        loadSfListViewsFields(SfObject, SFView, '', '');
    });
}

function ShowSfFieldPullValues() {
    if (!is_backend_page()) return;
    var elementReveal = "form-builder-block";
    if ($("#form-builder-block input[name='pull_values_from_sf']").length > 0) {
        $(document).on('change', '#form-builder-block input[name="pull_values_from_sf"]', function () {
            if ($('#form-builder-block input[name="pull_values_from_sf"]:checked').length > 0) {
                $("#form-builder-block .dropdown-options").addClass("hidden");
                $("#form-builder-block .dropdown_field").addClass("hidden");
                $("#form-builder-block .pull_values_from_sf_help").removeClass("hidden");
                $('#form-builder-block .dropdown-options-reloaded').addClass('hidden');
                //Field "Load picklist options from salesforce listview"
                $('#form-builder-block .listview').addClass('hidden');
                $('#form-builder-block .list_view_options').addClass('hidden');
                $('#form-builder-block .is_label_diferent_section').addClass('hidden');
                $('#form-builder-block .dropdown-options-labels').addClass('hidden');

                $('#form-builder-block input[name="from_sf_list_views"]').prop('checked', false);
                $('#form-builder-block input[name="is_label_diferent"]').prop('checked', false);
                $('#form-builder-block select[name="list_view_salesforce_object"]').val('');
                $('#form-builder-block select[name="listview"]').val('');

                //verify the fields
                add_default_values_for_picklist_from_salesforce(null);

            } else {

                $("#form-builder-block .dropdown-options").removeClass("hidden");
                $("#form-builder-block .dropdown_field").removeClass("hidden");
                $("#form-builder-block .pull_values_from_sf_help").addClass("hidden");
                $('#form-builder-block .dropdown-options-reloaded').removeClass('hidden');
                $('#form-builder-block .is_label_diferent_section').removeClass('hidden');
                $('#form-builder-block .label-options-reloaded').removeClass('hidden');
                $('#form-builder-block .option-values').addClass('hidden');
                //Field "Load picklist options from salesforce listview"
                $('#form-builder-block .listview').removeClass('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 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 == '3') {
            $('#form-builder-block .number_of_columns_checkbox').removeClass('hidden');
        } else {
            $('#form-builder-block .number_of_columns_checkbox').addClass('hidden');
        }
        $(document).on('change', '#form-builder-block select[name="display_picklist_mode"]', function () {
            var value = $(this).val();
            if (value == '3') {
                $('#form-builder-block .number_of_columns_checkbox').removeClass('hidden');
            } else {
                $('#form-builder-block .number_of_columns_checkbox').addClass('hidden');
            }
        });
    }
}

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 .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 .salesforce-mapping-section-notrf').addClass("hidden");
                    
                }

                $("#form-builder-block input[name='related_files']").prop("checked", false);
                loadSfLibraries("");


            } else {

                $("#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 .salesforce-mapping-section-notrf').removeClass("hidden");
                }
                else {
                    $('#form-builder-block .salesforce-mapping-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')) {
            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 .salesforce-mapping-section-notrf').addClass("hidden");

        }
        else {
            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 .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 ($('.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 .related_files').removeClass("hidden");

                    $('#form-builder-block .salesforce-mapping-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 .related_files').addClass("hidden");

                    $('#form-builder-block .salesforce-mapping-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 .related_files').addClass("hidden");
                $('#form-builder-block .salesforce-mapping-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 .related_files').removeClass("hidden");
                    $('#form-builder-block .salesforce-mapping-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 .related_files').addClass("hidden");
                    
                }
            }
            else {
                $('.form_builder_block input[name="related_files"]').prop("checked", false);
                $('#form-builder-block .related_files').addClass("hidden");
            }
        }
    });
}

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({
                title: window.translation.warning,
                text: window.translation.this_file_will_be_permanently,
                type: "warning",
                showCancelButton: true,
                //confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    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({
                                    title: window.translation.success,
                                    text: jsonResult.message,
                                    type: "success",
                                    showCancelButton: false,
                                    confirmButtonText: "Ok",
                                    closeOnConfirm: true
                                }, function (isConfirm) {
                                    if (isConfirm) {
                                        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({
                                    title: window.translation.warning,
                                    text: jsonResult.message,
                                    type: "error",
                                    showCancelButton: false,
                                    //confirmButtonColor: '#ff0000',
                                    closeOnConfirm: true
                                }, function (isConfirm) {
                                    if (isConfirm) {
                                        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({
            title: window.translation.warning,
            text: window.translation.this_file_will_be_permanently,
            type: "warning",
            showCancelButton: true,
            //confirmButtonColor: '#ff0000',
            closeOnConfirm: true
        }, function (isConfirm) {
            if (isConfirm) {
                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({
                                    title: window.translation.success,
                                    text: jsonResult.message,
                                    type: "success",
                                    showCancelButton: false,
                                    confirmButtonText: "Ok",
                                    closeOnConfirm: true
                                }, function (isConfirm) {
                                    if (isConfirm) {
                                        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({
                                    title: window.translation.warning,
                                    text: jsonResult.message,
                                    type: "error",
                                    showCancelButton: false,
                                    //confirmButtonColor: '#ff0000',
                                    closeOnConfirm: true
                                }, function (isConfirm) {
                                    if (isConfirm) {
                                        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 () {
            $('#' + elementReveal + ' .processing_screen').show();
            $('#' + elementReveal + ' select[name="list_view_salesforce_object"]').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);
            $.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 + ' .processing_screen').hide();
        } else {
            swal({
                title: window.translation.warning,
                text: jsonResult.message,
                type: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    swal.close();
                    $('#' + elementReveal + ' .processing_screen').hide();
                }
            });

        }
    });
}

function processListViewFields(jsonResult, defaultOptionLabel, defaultOptionValue, elementReveal, defaultFilterField) {
    var optionsLabel = '';
    var optionsValue = '';
    var optiontFilter = '<option>None</option>';
    
    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");

            }
        }
        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="sf_listview_label_field"]').empty();
    $('#' + elementReveal).find('select[name="sf_listview_filter_field"]').empty();
    $('#' + elementReveal).find('select[name="sf_listview_label_field"]').html(optionsLabel);
    $('#' + elementReveal).find('select[name="sf_listview_value_field"]').html(optionsValue);
    $('#' + elementReveal).find('select[name="sf_listview_filter_field"]').html(optiontFilter);
    $('#' + elementReveal).find('.list-view-dropdown-settings').removeClass("hidden");
    $('#' + elementReveal + ' .processing_screen').hide();

    //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");

            }
        }
        
    });

}


function loadSfListViewsFields(SfObject, ListViewID, defaultOptionLabel, defaultOptionValue, defaultFilterField) {
    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");

    var datafields = sessionStorage.getItem(nameListViewFields);
    if (datafields) {
        var jsonResult = JSON.parse(datafields);
        if (jsonResult.code == 200) {
            processListViewFields(jsonResult, defaultOptionLabel, defaultOptionValue, elementReveal, defaultFilterField);
        } 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 () {
                    $('#' + elementReveal + ' .processing_screen').show();
                }

            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.code == 200) {
                    sessionStorage.setItem(nameListViewFields, data);
                    processListViewFields(jsonResult, defaultOptionLabel, defaultOptionValue, elementReveal, defaultFilterField);

                } else {
                    console.log("Error: " + jsonResult.message);
                }

            });
        }

    }

}



function processSFListViewResult(jsonResult, defaultOption, defaultOptionField, defaultOptionValue, elementReveal, SfObject, defaultFilterField) {
    var listviews = jsonResult.salesforceListViews;

    var empty_op = '<option value="">' + window.translation.select_one + '</option>';
    $('#' + elementReveal + ' select[name="listview"]').empty();
    $('#' + elementReveal + ' select[name="listview"]').append(empty_op);
    var listViewID = 0;

    $.each(listviews, function (index, item) {
        var option = '<option value="' + item.Id + '">' + item.Label + '</option>';
        if (defaultOption != null && defaultOption != "") {
            if (defaultOption == item.Id) {
                listViewID = item.Id;
                option = '<option selected value="' + item.Id + '">' + item.Label + '</option>';
            }
        }
        $('#' + elementReveal + ' select[name="listview"]').append(option);
    });

    if (listViewID !== 0) {

        loadSfListViewsFields(SfObject, listViewID, defaultOptionField, defaultOptionValue, defaultFilterField);

    } else {
        $('#' + elementReveal + ' .processing_screen').hide();
    }


}

function loadSfListViews(SfObject, defaultOption, defaultOptionField, defaultOptionValue, defaultFilterField) {
    //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) {
        var jsonResult = JSON.parse(dataListViews);
        if (jsonResult.status == "ok") {
            processSFListViewResult(jsonResult, defaultOption, defaultOptionField, defaultOptionValue, elementReveal, SfObject, defaultFilterField);
        } else {
            swal({
                title: window.translation.warning,
                text: jsonResult.message,
                type: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    swal.close();
                    $('#' + elementReveal + ' .processing_screen').hide();
                }
            });

        }
    } else {
        if (SfObject != null && SfObject != "") {
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetSalesforceListViews",
                data: { Sfobject: SfObject },
                beforeSend: function () {
                    $('#' + elementReveal + ' .processing_screen').show();
                    $('#' + elementReveal + ' select[name="listview"]').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);
                } else {
                    swal({
                        title: window.translation.warning,
                        text: jsonResult.message,
                        type: "error",
                        showCancelButton: false,
                        confirmButtonColor: '#ff0000',
                        closeOnConfirm: true
                    }, function (isConfirm) {
                        if (isConfirm) {
                            swal.close();
                            $('#' + elementReveal + ' .processing_screen').hide();
                        }
                    });

                }
            });
        }

    }

}

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 () {
                $('#' + elementReveal + ' .processing_screen').show();
                $('#' + 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);
                });
                $('#' + elementReveal + ' .processing_screen').hide();
            } else {
                swal({
                    title: window.translation.warning,
                    text: jsonResult.message,
                    type: "error",
                    showCancelButton: false,
                    confirmButtonColor: '#ff0000',
                    closeOnConfirm: true
                }, function (isConfirm) {
                    if (isConfirm) {
                        swal.close();
                        $('#' + elementReveal + ' .processing_screen').hide();
                    }
                });

            }
        });
    
}


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 AddEventToDisplayFilename() {
    if($(".formBlock").length > 0) {
        // Attach the change event listener to change the label of all input[type=file] elements
        var els = $("input[type=file].simple-file"), i;
        for (i = 0; i < els.length; i++) {
            els[i].addEventListener("change", function () {
                var filename = window.translation.file_selected + ' <i>' + this.files[0].name + '</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);
                
            });
        }

        //var multipleFiles = $("input[type=file].multiple-file"), j;
        //for (j = 0; j < multipleFiles.length; j++) {
        //    multipleFiles[j].addEventListener("change", function () {

        //        var filename = window.translation.file_selected;

        //        for (k = 0; k < this.files.length; k++) {
        //            filename += ' ' + this.files[k].name + '';
        //        }

        //        if (this.files.length > 0) {
        //            var sectionFile = $(this).parent();
        //            sectionFile.find('.confirm-file-section').remove();
        //            sectionFile.find('input[name*=type]').after('<div class="confirm-file-section"> <span class="file-upload-name">' + filename + '</span> <a class="load-multi-file-button button tiny">' + window.translation.add_selected_file + '</a> </div>');
        //            sectionFile.find('label.file-upload').text(window.translation.choose_fle);
        //        }
        //        else if (sectionFile.find('.confirm-file-section').length > 0) {
        //            sectionFile.find('.confirm-file-section').remove();
        //        }
                
        //    });
        //}

    }


    $(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({
                                title: window.translation.success,
                                text: (window.translation.file_successfully_uploaded_as + " " + getSFFileNameFromURL(fileUrl)),
                                type: 'success',
                                showCancelButton: false,
                                closeOnConfirm: true
                            }, function (isConfirm) {
                                    if (isConfirm) {

                                            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({
                                title: window.translation.error,
                                type: "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 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() !== '') {
                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 loadDataForm(jsonResult, hasReadOnly, self, fromVOWizard) {
    if (fromVOWizard) {
        //window.sle
    }

    var dontPull = 'False';
    if (jsonResult) {
        if (jsonResult['code'] == '200') {
            if (jsonResult['Record'] || jsonResult['FilesDetails']) {
                if (jsonResult['Record']) {
                    var record = jsonResult['Record'];
                    var fileDetails = jsonResult['FilesDetails'];
                    Object.keys(record).forEach(function (key, value) {
                        if (key !== 'attributes') {

                            if (hasReadOnly === false) {

                                value = record[key];
                                var fieldHidden = self.find('input.sf_field[value="' + key + '"]');
                                if (fieldHidden && value) {
                                    var fieldSection = fieldHidden.parent();
                                    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 (dontPull == 'False')
                                                fieldSection.find('input[type="text"]').first().val(value);
                                            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"]').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");
                                            }

                                            break;
                                        case 'select':
                                            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' || fieldSection.find('label.read-only-text').length > 0) {
                                                if (fieldSection.find('label.read-only-text').length > 0) {
                                                    fieldSection.find('label.read-only-text').text(value);
                                                } else if (fieldSection.find('select').length > 0) {

                                                    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) {
                                                    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"]').first().attr('data-dontretsf');
                                            if (dontPull == 'False') {
                                                if (fieldSection.find('label.read-only-text').length > 0) {
                                                    fieldSection.find('label.read-only-text').text((!!value) ? "Yes" : "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 urlFile = '<a href="' + value + '" target="_blank">' + fileNameFromUrl + '</a>';
                                                var sectionFileUploaded = '<span class="file-upload-name">' + window.translation.current_file + urlFile + '</span>';

                                                fieldSection.find('label.file-upload').text(window.translation.upload_a_new_file);
                                                fieldSection.find('input[name*=type]').after(sectionFileUploaded);
                                            }
                                            break;
                                        case 'datetime':
                                            dontPull = fieldSection.find('input[type="text"]').first().attr('data-dontretsf');
                                            if (dontPull == 'False') {
                                                var dateToPopulate = moment(value).format('M/D/YYYY');
                                                if (fieldSection.find('label.read-only-text').length > 0) {
                                                    //  If valua has a T contains time info
                                                    if (value.indexOf('T') > -1) {
                                                        var dateToPopulate = moment(value).format('M/D/YYYY hh:mm A');
                                                    }
                                                    fieldSection.find('label.read-only-text').text(dateToPopulate);
                                                } else {

                                                    //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':
                                            var dontPull = fieldSection.find('input[type="text"]').first().attr('data-dontretsf');
                                            if (dontPull == 'False') {
                                                var formatTime = fieldSection.find('input[name*=formatTime]').val();
                                                var timezone = fieldSection.find('input[name*=timezone]').val();
                                                var dateToPopulate = moment(value).tz(timezone);
                                                var dateToPopulateDatePicker = dateToPopulate.format('M/D/YYYY');
                                                //fieldSection.find('input.date-picker-input').val(dateToPopulateDatePicker);
                                                var cad = dateToPopulateDatePicker.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');

                                                if (formatTime === 'HHMMPM') {
                                                    fieldSection.find('input[data-type="hour"]').val(parseInt(moment(dateToPopulate).format('hh')));
                                                    fieldSection.find('input[data-type="minute"]').val(parseInt(moment(dateToPopulate).format('mm')));
                                                    fieldSection.find('select[data-type="format"]').val(moment(dateToPopulate).format('a').toUpperCase());
                                                }
                                                else {
                                                    fieldSection.find('input[data-type="hour"]').val(parseInt(moment(dateToPopulate).format('HH')));
                                                    fieldSection.find('input[data-type="minute"]').val(parseInt(moment(dateToPopulate).format('mm')));
                                                }

                                            }
                                            break;
                                    }
                                }
                            } else {
                                var valueField = record[key];
                                var valueID = self.find('input[name="' + key + '"]').val();
                                if (valueField !== null && valueField !== undefined && valueField.trim() !== '') {
                                    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 (jsonResult['FilesDetails']) {
                    var filesDetail = jsonResult['FilesDetails']['filesDetails'];
                    LoadDataForRelatedFieldsInfo(filesDetail);
                    //LoadDataForRelatedFields(filesDetail);
                }

            }
            else {
                self.find('.message_sid_querystring').removeClass('hidden');
                self.find('form').find('a.submit-button').attr('disabled', 'disabled');
            }

        }
    }
}

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 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 PopulateFromBlockWithDataFromSF() {
    if ($('.formBlock').length > 0) {
        //Get if site is sharingPortalPlus
        
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $('.formBlock').each(function() {
            var self = $(this);
            
            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 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 hasReadOnly = self.find('form').hasClass('read-only-form');
            if (hasReadOnly === true) {
                self.find('.submit-group').hide();
            }
            if (populateFromSF === 'true' && objectSFToMap) {
                if (parameterRecId) {
                    
                    $.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);
                        //self.find('.processing_screen').hide();
                        HandleProcessingScreenFormBlock('hide', isPartnerPortalPage, containsForm, self);
                    });
                }
                else {

                    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);
                            //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);
                                });
                            }
                        });

                    }
                }
            }
        });
    }
}


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;
            ConfigureFileRelatedFilesList(relatedFilesId, dataSet, value);
        });
    }
}

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;
    if(url.indexOf(field + '=') != -1)
        return true;
    else if(url.indexOf('&' + field + '=') != -1)
        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', 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#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');
                LoadSalesForceObjects();

                $('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="populate_from_salesforce"]').prop('checked', false);
                
                $('.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");
                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 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({
                        title: window.translation.error,
                        type: "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({
                            title: window.translation.error,
                            type: "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(({ name, value }) => name === 'label-' + currentLangId);
                    if (itemProperty !== null && itemProperty !== undefined)
                        fieldLabel = itemProperty.value;
                    var sf_object_value = $('select[name="salesforce_object"]').val();

                    element = properties.find(({ name, value }) => name === 'salesforce_field');
                    var salesForceField = element !== undefined ? element.value : '';

                    if (item.typeField === 'dropdown' || item.typeField === 'multiselect' || item.typeField === 'radio') {

                        var element = properties.find(({ name, value }) => name === 'from_sf_list_views');
                        var fromListView = element !== undefined ? element.value : false;

                        element = properties.find(({ name, value }) => name === 'sf_listview_label_field');
                        var listViewLabel = element !== undefined ? element.value : '';

                        element = properties.find(({ name, value }) => name === 'sf_listview_value_field');
                        var listViewValue = element !== undefined ? element.value : '';

                        element = properties.find(({ name, value }) => name === 'pull_values_from_sf');
                        var fromSalesforce = element !== undefined ? element.value : false;

                        element = properties.find(({ name, value }) => 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];
                        if (elementMapping === undefined) {
                            salesforceFieldsMapping[salesForceField] = true;
                        } else {
                            var items_sf_object_value = item.properties.find(({ name, value }) => 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({
                title: window.translation.warning,
                text: window.translation.invalid_fields_general_message + ' ' + fieldsOptionsIssues.join(', '),
                type: 'warning',
                closeOnConfirm: true
            });
            isValid= false;
        }
    }

    return isValid;
}


function logic_save_form() {
    if (!is_backend_page()) return;
    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();
        }
        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();
        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 = [];
        $(".custom-message-tabs-content textarea").each(function () {
            var langId = $(this).data('language-id');
            custom_messages.push({
                name: 'custom-messsage-textarea-' + langId,
                value: $(this).val(),
                language: langId
            });
        });

        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 disable_confirm = ($('.form_builder_block input[name="disable_confirm_modal_after_submit"]:checked').length > 0) ? true : false;
        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 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 dataworkflow = undefined;
        var datamodalfrom = '';

        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.isExternalRegistration = isExternalRegistration;
        data.subsiteID = subsiteId;
        data.profileSelected = profileSelected;
        data.includeInGallery = includeInGallery;
        data.gallerySelected = gallerySelected;
        data.helpText = helpText;
        data.formID = formID;
        data.isArs = isArs;
        data.formName = form_builder_name;
        data.have_redirection = have_redirection;
        data.disable_confirm = disable_confirm;
        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.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;

        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;
        }


        data['__RequestVerificationToken'] = requestVerificationToken;
        $.ajax({
            method: "POST",
            url: urlSite + "admin/SaveOrEditFormBuilder",
            data: data,
            beforeSend: function () {
                $("#form-builder-block").find('.processing_screen').show();
            }
        }).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();

                        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();

                        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");
                    $("#form-builder-block").find('.processing_screen').hide();
                } else {
                    swal({
                        title: window.translation.success,
                        text: window.translation.changes_have_been_saved,
                        type: "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);
                    window.location.reload();
                }
                return false;
            } else {
                swal({
                    title: window.translation.warning,
                    text: jsonResult.message,
                    type: "error",
                    closeOnConfirm: true
                });

                $("#form-builder-block").find('.processing_screen').hide();
            }
        });
    } else {
        swal({
            title: window.translation.warning,
            type: "warning",
            text: window.translation.add_least_a_field_type,
            confirmButtonText: "Ok"
        });

        $("#form-builder-block").find('.processing_screen').hide();
    }
    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();

        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('.field-list a.paymentcomponent').show();
    }
    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('.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();

        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();

       
    }

    $('#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 .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 .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="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');
    
    remove_dependency_salesforce_fields();
    initializeDescriptionField();
    initializeCustomMessageField();
    
}

function remove_dependency_salesforce_fields(formSelector) {
    if ($(formSelector).find('input#populate_from_salesforce:checked').length == 0)
        $(formSelector).find('.dependency-from-salesforce').hide();
}

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('.field-list a.paymentcomponent').hide();
    } else {
        $(formSelector).find('.field-list a.paymentcomponent').show();
    }*/
    $(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);
    $(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 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':
                                                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;
                                        }
                                    }
                                }
                            });
                        }
                    }

                    self.find('.processing_screen').hide();
                });
            }
        });
    }
}

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 isFieldRichText(elementId) {

    var rich_text = false;
    var jsonData = GetLocalFormBuilderStorage();
    if (jsonData != "" && jsonData != null) {
        var json = JSON.parse(jsonData);

        json.forEach(function (item) {

            if (parseInt(item.elementId) === parseInt(elementId)) {

                item.properties.forEach(function (key) {

                    switch (key.name) {
                        case 'rich_text':
                            if (key.value != "" && (key.value == true || key.value == "on")) {
                                rich_text = true;
                            }
                            break;
                    }

                });


            }
        });

    }

    return rich_text;

}

function setDataToSessionStore(json, formTokenStore) {
    if (json === "")
        sessionStorage.setItem("json-form-builder-data-" + formTokenStore, "");
    else
        sessionStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(json));
}


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();
    if ($('#form-builder input[name="pull_values_from_sf"]:checked').length > 0 &&
        (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>');

            $.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") {
                    $.each(jsonData['values'], function (i, option) {
                        selectField.append('<option value="' + option['value'] + '">' + option['label'] + '</option>');
                    });

                    if (defaultValue) {
                        selectField.val(defaultValue);
                    }
                } else {
                    console.error('Error trying to get values from SF.')
                }

                $('#form-builder').find('.processing_screen').hide();
            });



        }




    } 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>');

        }
    }
    $('#form-builder').find('.dropdown_field').removeClass('hidden');
}

function isEncriptedField(elementId) {
    var encripted = false;
    var jsonData = GetLocalFormBuilderStorage();
    if (jsonData != "" && jsonData != null) {
        var json = JSON.parse(jsonData);

        json.forEach(function (item) {

            if (parseInt(item.elementId) === parseInt(elementId)) {

                item.properties.forEach(function (key) {

                    switch (key.name) {
                        case 'encrypted':
                            if (key.value != "" && (key.value == true || key.value == "on")) {
                                encripted = true;
                            }
                            break;
                    }

                });


            }
        });

    }

    return encripted;

}

function ratingScaleValidation(displayAs) {
    if (!is_backend_page()) return;


    if (displayAs == '2' || displayAs == '3') {
        $(".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 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('');

        });
    }



    $(document).on('change', '.form_builder_block select[name="display_as"]', function () {
        var value = $(this).val();
        if (value == '2' || value == '3') {
            $(".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 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('');            
               
            });
        }

    });
}


function ratingScaleValidationPicklist(displayPicklistMode) {
    if (!is_backend_page()) return;
    if (displayPicklistMode == '1' || displayPicklistMode == '2') {
        $(".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 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 (displayPicklistMode == '3') {
        $(".form_builder_block .display_inline_inputs").removeClass('hidden');

    } else {
        $(".form_builder_block .display_inline_inputs").addClass("hidden");
    }


    $(document).on('change', '.form_builder_block select[name="display_picklist_mode"]', function () {
        var value = $(this).val();
        if (value == '1' || value == '2') {
            $(".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 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 == '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 (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
            }
        });
    }, 500);
    

    AsignValueCalculateItems();
}

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');
        }
    });
}
;
$(document).ready(function () {

});


function after_translation_resource_load_forms() {
    form_block_events();
    add_verification_code_events();
    if(typeof load_payment_component_frontend != "undefined")
        load_payment_component_frontend();
}

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 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);

        $('.formBlock').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 jsonData = [];

            $.ajax({
                method: "POST",
                url: urlSite + "/Admin/GetFormFieldsData",
                async: false,
                data: { formId: formId }
            }).done(function (data) {
                jsonData = JSON.parse(data);
                return false;
            });


            $(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"], select';
            var selectorAutoPopulate = 'input.custom-combobox-input';

            $(this).on('change', selector, function () {
                var self = $(this);
                var dataType = self.attr('data-type');
                if (dataType) {
                    display_logic_events($(this), jsonData);
                }
                if (dataType === 'dropdown') {
                    // 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
                        if($('select[data-controller-name="'+sfFieldName+'"]').length > 0) {
                            var selectedIndex = self.prop('selectedIndex');
                            var controlledField = $('select[data-controller-name="'+sfFieldName+'"]');
                            controlledField.val('').trigger('change');
                            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);
                                }
                            })
                        }
                    }
                }
            });
            $(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), jsonData);
            });


            if ($('select[data-type="dropdown"]').length > 0) {
                $('select[data-type="dropdown"]').each(function () {
                    var self = $(this);
                    var isAutoSuggest = $(this).hasClass('autosuggest');
                    if (isAutoSuggest) {
                        //New functionality
                        self.select2();
                    }
                });
            }
            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']);
                        }
                    }
                });
            }

            //Including trigger change to radiobuttons to activa display logic with default value
            self.find(selector).each(function () {
                var input = $(this);
                input.trigger('change');
            });
            //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');
                    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) {
                $('#login-modal').find('form').find('input[name="returnurl"]').val(window.location.pathname); //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);
            }

        });

        $(document).on('click', '.formBlock a.submit-button', function () {
            var self = $(this);
            var isDisabled = self.attr('disabled');
            var hasPaymentComponent = false;
            var errorFromPayment = false;
            if (isDisabled) {
                return false;
            }
            var _formId = self.closest('.formBlock').data('form-id');
            var _form = self.closest('.formBlock').find('form');
            var select = self.closest('.formBlock').find('select[data-required="true"]');
            var textboxes = self.closest('.formBlock').find('input[type="text"][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-input');
            var requireTextarea = self.closest('.formBlock').find('textarea[data-required="true"]');
            var requestVerificationTokens = self.closest('.formBlock').find('input[name="__RequestVerificationToken"]');
            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();

            //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;
                    }
                }
            });

            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';
                    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 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(".input-group-select").append(label);
                        }
                        valid = false;
                    }
                }
            });

            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="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="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');
                        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 name = $(this).attr('name');
                var isSectionHidden = _form.find('.row.is-hidden input[name="'+name+'"]').length > 0;
                if (isSectionHidden === false) {
                    var currentValue = ($(this).val() != '')
                    ? ($('input[name="' + name + '"]').length > 0)
                        ? $('input[name="' + name + '"]').fdatepicker().data('datepicker').date.valueOf()
                        : null
                    : null;

                    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="error" for="' + name + '" style="display:block;">' + endDateMsg + '</label>';
                                $(this).parents(".fields-section").append(label);
                                valid = 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="error" for="' + name + '" style="display:block;">' + startDateMsg + '</label>';
                                $(this).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))) && !$(this).parents(".fields-section").find('label.error').is(':visible')) {
                                var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + targetDateMsg + '</label>';
                                $(this).parents(".fields-section").append(label);
                                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 textRichText = CKEDITOR.instances[idField + '[value]'].getData();
                    formForm[idField].value = 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) { 
                    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 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({
                                                title: 'Error',
                                                type: 'error',
                                                text: window.translation.should_have_same_year,
                                                confirmButtonText: 'Ok',
                                                closeOnConfirm: true
                                            });

                                        }
                                    }
                                }
                            }

                        }
                    }
                }
            });


            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({
                                title: '',
                                type: 'error',
                                text: 'You should select a Payment processor or Sorry, I cannot donate at this time',
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            });

                        }

                        hasPaymentComponent = has_payment_component(paymentComponent);

                    } else {
                        hasPaymentComponent = true;
                    }
                }
            }


            if (valid === true && $('label.error-custom').is(':visible') === false) {

                // Starting verification is is form to update User information
                //Validate if is updating information and the email was changed
                if ((isuserinformationform !== undefined && isuserinformationform === "True" && existCurrentUserEmail === true) ||
                    (isuserregistrationform !== undefined && isuserregistrationform === "True")
                ) {
                    // 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 {
                //Move document to first field with error
                if (errorFromPayment === false) {
                    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;
                    }

                    if (currentScrollTopUser > topLabelError) {
                        $('body,html').animate({
                            scrollTop: topLabelError - 100,
                        }, 500);
                    }

                }
            }

            return false;
        });

        $(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;
            submit_form(self, formForm, false);

        });

        $(document).on('keyup keydown change', '.formBlock input[type="number"]', function () {
            calculate_items();
        });

        $(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();
        });

        
    }

}
function calculate_items(){
    $(document).ready(function(){
        if ($('.formBlock .active_field_calculate').length > 0) {
            $('.formBlock .active_field_calculate').each(function(index, el) {
                var result = 0;
                var $this = $(this);
                var items = $this.attr('data-items').split(',');
                $(items).each(function(index, active) {
                    $('.formBlock input[type="number"]').each(function (index1, el1) {
                        
                        var field_id = $(this).attr('name');
                        var positiontype = field_id.indexOf('[');                        
                        var value = $(this).val();                        
                        if (positiontype > 0) {
                            field_id = field_id.substring(0, positiontype);
                            if (field_id == active) {
                                if (value) {
                                    result = parseInt(result) + parseInt(value);
                                }
                            }
                        }
                    });

                    $('.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) {
                                        result = parseInt(result) + parseInt(value);
                                    }
                                }
                            }
                        }

                    });

                    $('.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) {
                                        result = parseInt(result) + parseInt(value);
                                    }
                                }
                            }
                        }

                    });
                });
                $this.siblings('.result_calculate').html(result);
                $this.val(result);
            });
        }
    });    
}

function submit_form(self, formForm, hasPaymentComponent) {
    var jsonData = [];
    var isComplianceForm = (self.closest('form').hasClass('isComplianceForm') === true) ? true : false;
    var formId = self.closest('form').attr("id");
    var haveRedirection = formForm["have_redirection"];
    var disableConfirmationMessage = self.closest('.formBlock').find('input[name="disable_confirmation_message"]').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"];
    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') {
                swal({
                    title: '',
                    type: 'error',
                    text: jsonData.results,
                    confirmButtonText: 'Ok',
                    closeOnConfirm: true,
                    html: true
                },
                    function () {
                        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();

                        //window.location.reload();
                    });
                return false;
            }
            else {
                var successMessage = (isComplianceForm) ? window.translation.submission_has_been_received : window.translation.submit_successfull;
                if (formForm.save_complete_later) successMessage = window.translation.data_saved;
                //Validate if form has redirect and avoid display sucess message
                if (hasPaymentComponent === false) {
                    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);
                            }
                            window.location.href = urlSite + url_redirect;
                        } else {
                            window.location.reload(true);
                        }
                    }
                    else {
                        self.closest('.formBlock').find('.spinner').show();
                        self.closest('.formBlock').find('.processing_screen').show();

                        if (disableConfirmationMessage == false) {
                            swal({
                                title: window.translation.success,
                                text: successMessage,
                                type: "success",
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            }, function () {
                                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 = 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);
                            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')){
                                console.log("Entre here 00009-001");
     
                                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({
                                title: '',
                                type: '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 display_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 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 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;



            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 _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 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 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');
        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 != null) {
            hour.addClass('is-hidden');
            minute.addClass('is-hidden');
            format.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 (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);
        }
    }
}


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);
    }
    
}

/* //backup
function GetVerificationCode(token, containerElement) {
    var vertificationCodeHTML = '<div class="row verification-code-section small-12">' +
        '<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="row">' +
        '<input type="text" name="verificationCode" id="verificationCode" value="" placeholder="' + window.translation.verification_code_placeholder + '" class="verify-code-input" maxlength="5" />' +
        '<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 class="row resend-code-section" style="margin-top: -1.0rem; margin-bottom: 1rem;"><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) {
        containerElement.find('div.submit-group').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({
                title: window.translation.warning,
                text: jsonResult.message,
                type: "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 () {
        $(this).closest('.formBlock').find('.custom-disabled-opacity').removeClass('custom-disabled-opacity');
        $(this).closest('.formBlock').find('.submit-group').show();
        $(this).closest('.formBlock').find('div.verification-code-section').remove();
    });

    $('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('label.info-email-code').show();
                                } else
                                    $(this).closest('.formBlock').find('label.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) {
    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 validFile = true;
    if (fileUploads.length > 0) {
        var xhrs = [];
        var undCounter = 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);
                    for (var x = 0; x < files.length; x++) {
                        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;
                                            }
                                        }
                                    });
                                }
                            }
                            var name = f.name.substring(0, f.name.indexOf('['));
                            formForm[name].value = fileUrl;

                            return false;
                        });

                        xhrs.push(xhr);
                    }
                    else {
                        swal({
                            title: "",
                            type: "error",
                            text: translation.max_size_x.replaceAll("{0}", window.maxFileLengthMBForm),
                            confirmButtonText: "Ok",
                        });
                    }

                } 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;
                }
            }
        });

        if (validFile) {
            $.when.apply($, xhrs).done(function () {
                undCounter = 0;
                if (self.closest('.formBlock.llamapi-registration-form').length > 0)
                    submit_form_registration_in_ars(self, formForm);
                else {
                    submit_form(self, formForm, hasPaymentComponent);

                }
            });

            if (undCounter > 0) {
                if (self.closest('.formBlock.llamapi-registration-form').length > 0)
                    submit_form_registration_in_ars(self, formForm);
                else {
                    submit_form(self, formForm, hasPaymentComponent);
                }
            }
        }
        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) {
            submit_form_registration_in_ars(self, formForm);
        }
        else {
            submit_form(self, formForm, hasPaymentComponent);
        }
    }

}

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) {
    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#' + elementEmailId).val();
        newEmail = newEmail.trim().toLowerCase();
    }

    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";

            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 }
            }

            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) {
                        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');
                            prepare_form_submission(self, formForm, _form, hasPaymentComponent)
                    }

                } 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();
                        }
                    } 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({
                        title: window.translation.warning,
                        text: jsonResult.message,
                        type: "error",
                        closeOnConfirm: true
                    });
                }

            }).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();

    }
}

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"];
                $.each(registrationData, function (key, value) {
                    if (value != '') {
                        if (value['value'] !== null && value['value'] !== undefined && value['value'] !== '') {
                            if (value['sf_field'] === 'Email') {
                                self.find('input[name="last_email_selected"]').val(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#' + elementEmailId).val();
        newEmail = newEmail.trim().toLowerCase();
    }

    if (newEmail !== '') {
        var lastEmail = formForm['last_email_selected'];

        if (newEmail != lastEmail) {
            return true;
        }
    }

    return false;
}



;
/*
	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({
                    title: window.translation.warning,
                    type: "warning",
                    text: window.translation.minimum_age_validation,
                    confirmButtonText: "Ok"
                });
            }
        } else {
            swal({
                title: window.translation.warning,
                type: "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 ($('#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
  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({
			        title: "Error",
			        type: "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({
          title: window.translation.success,
          type: "success",
          text: jsonResult.message,
          confirmButtonText: "Ok",
        });	
			}
			else if(jsonResult.status == 'error') {
				swal({
          title: "Error",
          type: "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({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_page,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: true
	        }, function (isConfirm) {
	            if (isConfirm) {
	                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
  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() {
	$(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({
		                title: 'Missing Values',
		                type: 'error',
		                text: 'Please add a branch logic valid',
		                confirmButtonText: "Ok",
		            });
				}
			}
			else {
				swal({
	                title: 'Missing Values',
	                type: 'error',
	                text: 'Please select a page to redirect branch logic',
	                confirmButtonText: "Ok",
	            });
			}
		}
		else {
			swal({
                title: 'Missing Values',
                type: '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({
			    title: window.translation.are_you_sure,
			    text: window.translation.do_you_want_delete_rule,
			    type: "warning",
			    showCancelButton: true,
			    confirmButtonColor: "#ff0000",
			    confirmButtonText: window.translation.yes_delete_it,
			    cancelButtonText: window.translation.cancel,
			    closeOnConfirm: true
			}, function (isConfirm) {
			    if (isConfirm) {
			    	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() {
	$(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 isUserIdle = false;
var MAX_AUTO_REFRESH_CALLS = 100;

$(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(); 
});

//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();
}

function listingcmsblock_get_fields_settings_class_name(displayFormat) {
    return (displayFormat === '4' || displayFormat == '4') ? '.field-configuration' : '.calendar-data-configuration';
}

function listingcmsblock_get_fields_settings_storage_name(className) {
    return className === '.field-configuration' ? 'column-settings-listing' : 'calendar-listing-data-settings';
}

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,0)');
            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,0)');
            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,0)');
                    
                }
            }
            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(field, className) {
    let storage = listingcmsblock_get_fields_settings_storage_name(className);
    var columnSettings = sessionStorage.getItem(storage);
    
    $('.listing-cms-block .field-configuration .title-tabs-content  input.label-custom').each(function () {
        var input = $(this);
        var languageId = input.data('language-id');
        $(".title-tabs-content .tabs-panel #label-" + languageId).val('');
    });

    var jsonSettings = JSON.parse(columnSettings);
    if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {
        
        jsonSettings.columns.forEach(function (item) {
            
            if (item.name === field) {
                
                $("#colum_name_settings").text(item.name);
                $("#name_settings").val(item.name);
                if (item.label && item.label.length > 0) {
                    
                    item.label.forEach(function (label) {                    
                        if ($(".title-tabs-content .tabs-panel #label-" + label.language).length > 0) {
                            $(".title-tabs-content .tabs-panel #label-" + label.language).val(label.value);
                        }
                    });
                }

                if (item.type === "custom") {
                    $(".custom-column-content").removeClass('hide-custom');
                    $(".remove-button-section").removeClass('hide-custom');
                    $("textarea#custom-column-content").val(item.content);
                } else {
                    $(".custom-column-content").addClass('hide-custom');
                    $(".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
                    $('.sort_order_field').removeClass('is-hidden');
                }
                else if (item.defaultSort === false) {
                    //hide
                    $('.sort_order_field').addClass('is-hidden');
                }
            }
        });
    }
}

function listingcmsblock_load_column_settings(columnSettings, className, fromRefresh) {
    $("#table-columns-fields").DataTable().destroy();
    $("#table-columns-fields tbody").empty();

    if (columnSettings === null || columnSettings === undefined || columnSettings === '') {
        return false;
    }

    var jsonSettings = JSON.parse(columnSettings);
    var columns = jsonSettings.columns;
    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');
        $(".remove-button-section").addClass('hide-custom');

        if (fromRefresh === true && dataColumns.columns.length > 0) {
            var newColumns = [];
            dataColumns.columns.forEach(function (column) {
                if (column.type === "custom") {
                    newColumns.push(column);
                }
            });            

            columns.forEach(function (column) {
                newColumns.push(column);
            });

            columns = newColumns;
            jsonSettings.columns = newColumns;
            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>";
            htmlRow += "<td class='cell-name'>" + column.name + "</td>";
            htmlRow += "<td class='cell-label'>" + column.defaultLabel + "</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>";
            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>";
            htmlRow += "<td class='cell-reorder'><span></span></td>";
            htmlRow += "</tr>";
            $("#table-columns-fields").append(htmlRow);
            i = i + 1;
            //Load boolean values
            $("#table-columns-fields").find('input[name="visible-' + column.name + '"]').prop('checked', column.visible);
            $("#table-columns-fields").find('input[name="sort-' + column.name + '"]').prop('checked', column.defaultSort);
            if (className === '.calendar-data-configuration') {
                $("#table-columns-fields").find('.cell-sort').addClass('hide-custom');
                $("#table-columns-fields").find('.cell-visible').addClass('extra-width');
            }
        });



        var datatable = $('#table-columns-fields').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);
            }
        });

    }
}

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 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="delete_rule  columns small-1"><a href="#" alt="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 listingcmsblock_backend() {
    //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 () {
        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');

        //Open modal
        self.foundation('open');
        self.find('#commentsTimeline').addClass('hide-custom');
        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('');
        }
        //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;

            if(jsonResult.length > 0) {
                var info_options = '';

                for (var i = 0; i < jsonResult.length; i++) {
                    var info_option_row = '<option value="' + jsonResult[i].ID + '">' + jsonResult[i].Name + '</option>';
                    info_options += info_option_row;

                    if(jsonResult[i].PageCategories.length) {
                        info_options = listingcmsblock_displayoptionpagecategorieslisting(jsonResult[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>');
            }

            //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(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");
                        });

                        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="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"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="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);
                            }

                            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.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="items-per-page"]').val(jsonResultDetail.cmsBlock.ItemsPerPage);
                            self.find('select[name="page-categories"]').val(jsonResultDetail.cmsBlock.PageCategories);
                            self.find('select[name="source"]').val(jsonResultDetail.cmsBlock.Source);
                            self.find('textarea[name="custom_card_template"]').val(jsonResultDetail.cmsBlock.CardTemplate);
                            self.find('textarea[name="calendar-event-url"]').val(jsonResultDetail.cmsBlock.CalendarEventUrl);
                            self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                            self.find('input[name="disable-summary-result"]').prop('checked', jsonResultDetail.cmsBlock.HideFooterSummaryInTable);
                            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('select[name="OrderDirectionCT"]').val(jsonResultDetail.cmsBlock.OrderDirectionCT);
                            self.find('input[name="DateDisplay-hidden"]').val(jsonResultDetail.cmsBlock.DateDisplay);
                            self.find('input[name="FieldAuthor-hidden"]').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="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.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.Editable) {
                                self.find('input[name="is-editable"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="is-editable"]').prop('checked', false);
                            }


                            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.criteria != null) {
                                    self.find('input[name="advanced-criteria-input"]').val(customFilters.criteria);
                                }
                                else {
                                    self.find('input[name="advanced-criteria-input"]').val('');
                                }
                                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);
                                    });
                                }
                            } else {
                                $('#listing-cms-form .filter_rules .rule').remove();
                                $('#listing-cms-form .without_rules').removeClass('hide-custom');
                                self.find('input[name="advanced-criteria-input"]').val('');
                            }

                            //Load salesforce object select
                            if (jsonResultDetail.cmsBlock.SalesforceObject && jsonResultDetail.cmsBlock.Source === 1) {

                                self.find('select[name="title_field_map"]').val(jsonResultDetail.cmsBlock.TitleMapField);
                                self.find('select[name="description_field_view"]').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(".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 !== 0 && jsonResultDetail.cmsBlock.Format !== 4) {
                                    self.find('.row_custom_card_template').removeClass('hide-custom');
                                    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');

                                    //This line is due to now the auto-refrehs is enabled for custom card template too
                                    if (jsonResultDetail.cmsBlock.Format !== 3)
                                        review_auto_refresh_visibility_settings(false, self);

                                    if(jsonResultDetail.cmsBlock.Format === 6) {
                                        self.find('.row_display_search_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('.display-export-csv-section').addClass('hide-custom');
                                    review_auto_refresh_visibility_settings(false, self);
                                }
                                var isGlobaluser = $('#is-global-user').val() === 'true';
                                //sort field in listining (not apply in datatable or calendar)
                                if (isGlobaluser || IS_LLAMAPI_ENABLED) {
                                    if (jsonResultDetail.cmsBlock.Format === 4 || jsonResultDetail.cmsBlock.Format === 5) {
                                        self.find('#customOrder').addClass('hide-custom');
                                    } else {
                                        self.find('#customOrder').removeClass('hide-custom');
                                    }

                                    //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('#customOrder').addClass('hide-custom');
                                    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 && (isGlobaluser || IS_LLAMAPI_ENABLED)) {
                                    var optionCalendar = '<option value="5">' + window.translation.calendar + (!IS_LLAMAPI_ENABLED ? ' &#xf06e;' : '') + '</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 && (isGlobaluser || IS_LLAMAPI_ENABLED)) {
                                    var optionMap = '<option value="6">' + window.translation.only_map + (!IS_LLAMAPI_ENABLED ? ' &#xf06e;' : '') + '</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 ? ' &#xf06e;' : '') + '</option>';
                                    self.find('select[name="display-format"]').append(optionComment);
                                    self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                                }

                                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');
                                }
                                //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', jsonResultDetail.columnSettings && jsonResultDetail.cmsBlock.Format == '4', blockValues, false, false, listviewIdStored, listviewLabelStored, listviewColumnsStored);
                                load_table_for_rewrite_parameters(jsonResultDetail.cmsBlock.RewriteFilterNames);
                            }
                            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 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');

                                // 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();
                                    }
                                });

                                //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');
                            }
                        }
                        if (jsonResultDetail.languagesInfo) {
                            jsonResultDetail.languagesInfo.forEach(function (languageInfo) {
                                var languageId = languageInfo.languageId;

                                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("#no-results-" + languageId).text(languageInfo.noResultsText);
                            });
                        }
                        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('select[name="calendar-event-title"]').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);
                            listingcmsblock_load_column_settings(jsonResultDetail.columnSettings, className, false);
                        }

                        if (jsonResultDetail.calendarSettings && jsonResultDetail.cmsBlock.Format == '5' && ($('#is-global-user').val() == 'true' || IS_LLAMAPI_ENABLED)) {
                            let className = listingcmsblock_get_fields_settings_class_name(jsonResultDetail.cmsBlock.Format);
                            listingcmsblock_load_column_settings(jsonResultDetail.calendarSettings, className, false);
                        }
                        //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({
                            title: "Error",
                            type: "error",
                            text: jsonResultDetail.message,
                            confirmButtonText: "Ok"
                        });
                    }

                    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');
                });


                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*="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"]').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').addClass('is-hidden');
                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('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="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);

                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('');

                //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('select[name="sf_chart_value_field"]').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');
                
            }


            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();
            }


        });

    });

    $(document).on('click', '#listing-cms-form button.submit-button', function() {
        var self = $('#listing-cms-block-conf');

        if (self.find('button.save_field').hasClass('pending_changes')) {
            swal({
                title: "Error",
                type: "error",
                text: "There is a Column with pending changes to save",
                confirmButtonText: "Ok"
            });
            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()));
            }
        }

        $("#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();

        var stylesCustom = editor.getValue().toString();
        
        //Assign stylesCustom
        formData['styles-custom'] = stylesCustom;
        if (displayFormat == '4') {
            formData['column-settings'] = sessionStorage.getItem('column-settings-listing');
        }
        else if (displayFormat == '5' && ($('#is-global-user').val() == 'true' || IS_LLAMAPI_ENABLED)) {
            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").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({
                                        title: "Error",
                                        type: "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;
                                        listingcmsblock_save_logic(formData, urlSite, self);
                                        
                                    } else {
                                        swal({
                                            title: "Error",
                                            type: "error",
                                            text: "Please fill the reason to store into the gallery",
                                            confirmButtonText: "Ok"
                                        });

                                    }
                                }


                            }
                        });
                        $('#' + elementReveal).foundation('open');
                        $('#' + elementReveal).foundation();

                    } else {
                        listingcmsblock_save_logic(formData, urlSite, self);
                    }
                } else {
                    listingcmsblock_save_logic(formData, urlSite, self);
                }
            } else {
                listingcmsblock_save_logic(formData, urlSite, self);
            }


        }

        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 select[name="field_to_filter"]', function() {
        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') {
            filterValue.fdatepicker({
                format: 'yyyy-mm-dd',
                language: 'en',
            });
            $('#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');
        }
    });

    $(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-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({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_listing_block,
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    $.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({
                                title: window.translation.success,
                                text: jsonResult.message,
                                type: "success",
                                closeOnConfirm: true
                            }, function(){
                                selfModal.find('.processing_screen').show();
                                swal.close();

                                window.location.reload();
                            });
                        } else {
                            swal({
                                title: window.translation.error,
                                text: jsonResult.message,
                                type: "error",
                                closeOnConfirm: true
                            }, function(){
                                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();

        if(source === '0') {
            //Hide rows of Salesforce Object
            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();

            // 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');

            review_auto_refresh_visibility_settings(false, selfModal);
        }
        else {
            //Show rows of Salesforce Object
            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');

            //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');

            if(displayFormat !== '0' && displayFormat !== '4') {
                selfModal.find('.row_custom_card_template').removeClass('hide-custom');
                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 !== '4') {
                    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 && (isGlobaluser || IS_LLAMAPI_ENABLED)) {
                var optionCalendar = '<option value="5">' + window.translation.calendar + (!IS_LLAMAPI_ENABLED ? ' &#xf06e;' : '') + '</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 ? ' &#xf06e;' : '') + '</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);
            }

            //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', false);
        }
    });

    // 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 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('.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();
        if(sfObject) {
            //Load salesforce views
            listingcmsblock_loadsalesforceview(selfModal, sfObject, '', 'salesforce_view', false);
        }
    });

    $(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 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="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');
        if (displayFormat !== '0' && source === '1' && 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_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');
            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 (displayFormat == '1' || displayFormat == '2' || displayFormat == '3' || displayFormat == '7') {
                selfModal.find('select[name="salesforce_view"]').trigger('change');
            }

            if (displayFormat === '5' && ($('#is-global-user').val() === 'true' || IS_HOC4_ENABLED)) {
                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('.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');

                var objectSF = selfModal.find('select[name="salesforce_object"]').val();
                var viewSF = selfModal.find('select[name="salesforce_view"]').val();
                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('.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');
                var objectSF = selfModal.find('select[name="salesforce_object"]').val();
                var viewSF = selfModal.find('select[name="salesforce_view"]').val();
                listingcmsblock_loadfieldsavailablesalesforceview(selfModal, objectSF, viewSF, displayFormat, null, null, null, null, captureUrlParameter);
            }

            // This i due now is enabled for custom card template
            if (displayFormat !== '3')
                review_auto_refresh_visibility_settings(false, selfModal);
        }
        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('.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');
            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('.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');
        }

        //sort field in listining (not apply in datatable or calendar)
        if ($('#is-global-user').val() == 'true' || IS_LLAMAPI_ENABLED) {
            if (displayFormat === '4' || displayFormat === '5') {
                selfModal.find('#customOrder').addClass('hide-custom');
            } else {
                selfModal.find('#customOrder').removeClass('hide-custom');
            }

            //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('#customOrder').addClass('hide-custom');
            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');
        }

    });

    $(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 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();
        selfModal.find('select[name="sf_chart_label_field"] option').remove();
        selfModal.find('select[name="sf_chart_value_field"] option').remove();
        listingcmsblock_loadfieldsavailablesalesforceview(selfModal, objectSF, viewSF, displayFormat, "event", displayFormat === '5' ? true : null, null,null,captureUrlParameter);
    });

    $(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);
        if ($(this).hasClass('selected')) {
            $(this).removeClass('selected');
            $(className).addClass('hide-custom');
            $(".remove-button-section").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);
        }
    });

    $(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);

        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-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);
        
        if (visibleColumns > 15) {
            swal({
                title: "",
                type: "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 .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);
        listingcmsblock_save_field_change(field_name, className);
    });

    $(document).on('click', '.listing-cms-block button.add-custom-column', function () {
        
        listingcmsblock_add_custom_column();
    });

    $(document).on('click', '.listing-cms-block 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);
        $('#table-columns-fields tbody tr.selected').trigger('click');
        selfModal.find('input[name="pending-changes"]').val(true);
        listingcmsblock_remove_custom_column(fieldName, className);
        if (displayFormat == '5') {
            listingcmsblock_remove_option_custom_field(fieldName, selfModal);
        }
    });

    $(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);
    });

    $(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', '#listing-cms-form .link-refresh-sobjects-llamapi', function () {
        var selfModal = $(this).parents('.reveal').first();
        var defaultObject = '';
        var defaultSalesforceView = '';

        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();

        listingcmsblock_loadsalesforceobjects(selfModal, defaultObject, defaultSalesforceView, 'salesforce_object', false, false, true,true);
    });

    $(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="use-local-list-view-data"]', function () {
        var valueInput = $(this).prop('checked');
        listingcmsblock_actions_local_listview(valueInput);
    });


    listingcmsblock_detect_form_change();
}

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_save_logic(formData, urlSite, self) {
    $.ajax({
        method: "POST",
        url: urlSite + "admin/AddOrUpdateListingCMSBlock",
        data: formData,
        beforeSend: function () {
            self.find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status === 'ok') {
            swal({
                title: window.translation.success,
                text: window.translation.listing_cms_saved_successfully,
                type: 'success',
                closeOnConfirm: true
            }, function () {
                self.find('.processing_screen').show();
                window.location.reload();
            });
        }
        else {
            swal({
                title: window.translation.error,
                text: jsonResult.message,
                type: "error",
                closeOnConfirm: true
            });

        }

        self.find('.processing_screen').hide();

        return false;
    });

}

function listingcmsblock_remove_custom_column(fieldName, className) {
    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);
        }
    }
}

function listingcmsblock_add_custom_column() {

    var totalCustom = $('#table-columns-fields tr.custom-colum').length;
    var columnName = "Custom" + totalCustom;

    var jsonLabelList = new Array();
    var newItem = Object();
    newItem.name = columnName;
    newItem.defaultLabel = '-';
    newItem.type = 'custom';
    newItem.visible= false;
    newItem.defaultSort = false;
    newItem.sort = 0;
    newItem.label = jsonLabelList;
    newItem.content = '';


    var selfModal = $('#table-columns-fields').closest('.reveal').first();
    var displayFormat = selfModal.find('select[name="display-format"]').val()
    var className = listingcmsblock_get_fields_settings_class_name(displayFormat);
    listingcmsblock_update_add_setting(newItem, className);
    
    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 listingcms_behaviors() {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $(document).on('click', '.listingcmsblock .search-section a.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') {                
                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') {
                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();

        //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},
            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>' +
                                                '<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', 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:not(.file-item)').hide();
            self.find('ul.pages').find('li:not(.file-item)').removeClass('is-hidden');

            self.find('ul.pages').find('li:not(.hidden_by_search):not(.file-item)').slice(itemInitialPage, itemFinalPage).each(function () {
                $(this).fadeIn('fast', function () { $(this).css('display', styleCard); });
            });


            //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');
    });
}

function listingcmsblock_update_pagination(liClicked, containerItems) {
    if (liClicked.hasClass('page-number'))
        return;
    var itemPagination = 1;
    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 type="text/css">' + 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').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();

    //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: 0},
        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>' +
                                            '<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);
                });
            }

            //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() {
    //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.length > 0) {
                var info_options = '';

                for (var i = 0; i < jsonResult.length; i++) {
                    var info_option_row = '<option value="' + jsonResult[i].ID + '">' + jsonResult[i].Name + '</option>';
                    info_options += info_option_row;

                    if(jsonResult[i].PageCategories.length) {
                        info_options = listingcmsblock_displayoptionpagecategorieslisting(jsonResult[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 button.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({
                    title: window.translation.success,
                    text: window.translation.content_type_saved_successfully,
                    type: 'success',
                    closeOnConfirm: true
                }, function(){
                    self.foundation('close');

                    //Load pageCategories stored in DB
                    listingcmsblock_loadpagecategorylisting(selfListing);
                });
            }
            else {
                swal({
                    title: window.translation.error,
                    text: jsonResult.message,
                    type: "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({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_content_type,
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    
                    $.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({
                                title: window.translation.success,
                                text: jsonResult.message,
                                type: "success",
                                closeOnConfirm: true
                            }, function(){
                                $('#' + datareveal).foundation('close');
                                swal.close();
                            });
                        } else {
                            swal({
                                title: window.translation.error,
                                text: jsonResult.message,
                                type: "error",
                                closeOnConfirm: true
                            }, function(){
                                $('#' + 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.length > 0) {
            var info_table_rows = '';

            for (var i = 0; i < jsonResult.length; i++) {
                var classParent = (jsonResult[i].PageCategories.length > 0) ? 'parent' : '';
                var info_table = '<tr><td class="' + classParent + '"><a data-element-reveal="page-category-conf" data-category-id=' + jsonResult[i].ID + ' class="blue-key">' + jsonResult[i].Name + '</a></td><td>' + jsonResult[i].Description + '</td></tr>';
                info_table_rows += info_table;

                if(jsonResult[i].PageCategories.length > 0) {
                    info_table_rows = listingcmsblock_displayrowpagecategorylisting(jsonResult[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);

        //Assing values
        if (jsonResult.length > 0) {
            var info_rows = '';

            for (var i = 0; i < jsonResult.length; i++) {
                
                var info_row =  '<li>' +
                                    '<div class="input-group input-group-checkbox">' + 
                                        '<input id="pageCategory-' + jsonResult[i].ID + '-' + languageId + '" name="pageCategory-' + jsonResult[i].ID + '-' + languageId + '" type="checkbox" value="' + jsonResult[i].ID + '" data-language-id="' + languageId + '" />' + 
                                        '<label for="pageCategory-' + jsonResult[i].ID + '-' + languageId + '">' + jsonResult[i].Name + '</label>' +
                                    '</div>' +
                                '</li>';
                info_rows += info_row;

                if(jsonResult[i].PageCategories.length) {
                    info_rows = listingcmsblock_displayrowpagecategorylistingmodal(jsonResult[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, notDefaultColumnSettings, modalValues, skipCache, fromRefresh, listviewIdStored, listviewLabelStored, listviewColumnsStored) {
    //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, 'salesforce_view', notDefaultColumnSettings, modalValues, skipCache, fromRefresh, listviewIdStored, listviewLabelStored, listviewColumnsStored);               
            }
            else {
                modal.find('.processing_screen').hide();
            }
        }
        else {
            swal({
                title: window.translation.warning,
                text: jsonResult.message,
                type: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    swal.close();
                    modal.find('.processing_screen').hide();
                }
            });
        }
    });
}

function listingcmsblock_loadsalesforceview(modal, objectSF, defaultOption, selectName, notDefaultColumnSettings, modalValues, skipCache, fromRefresh, listviewIdStored, listviewLabelStored, listviewColumnsStored) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var displayFormat = modal.find('select[name="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('.custom_filtering').removeClass('hide-custom');
                listingcmsblock_loadfieldsavailablesalesforceview(modal, objectSF, firstSFView, displayFormat, 'Load', notDefaultColumnSettings, modalValues, fromRefresh);
            }
            else {
                modal.find('.custom_filtering').addClass('hide-custom');
                modal.find('select[name="field_to_filter"] option').remove();
                modal.find('.processing_screen').hide();
            }
        }
        else {
            swal({
                title: window.translation.warning,
                text: jsonResult.message,
                type: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }, function (isConfirm) {
                if (isConfirm) {
                    swal.close();
                    modal.find('.processing_screen').hide();
                }
            });
        }
    });
}

function listingcmsblock_loadfieldsavailablesalesforceview(modal, objectSF, objectSFView, displayFormat, eventLoad, notDefaultColumnSettings, modalValues, fromRefresh, captureUrlParameter) {

    if (displayFormat == 4 && notDefaultColumnSettings) {
        modal.find('.processing_screen').hide();
    }

    var className = listingcmsblock_get_fields_settings_class_name(displayFormat);

    if (objectSF == null || objectSF == undefined || objectSF == '') {
        listingcmsblock_load_column_settings('', className, false);
    }

    if (objectSFView == null || objectSFView == undefined || objectSFView == '') {
        listingcmsblock_load_column_settings('', className, false);
    }

    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    
    var urlPath = '';

    if (displayFormat == '4' || displayFormat == '5' && ($('#is-global-user').val() == 'true' || IS_LLAMAPI_ENABLED)) {
        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('.row_custom_card_template').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 = '';
            let dateFieldsArray = [];
            let blockConf = $('#listing-cms-block-conf');
            var itemsForCustomFiltering = '';
            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();
            // 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>';
                });
                modal.find('select[name="field_to_filter"]').append(itemsForCustomFiltering);

                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('.row_custom_card_template').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>';
                });
                modal.find('select[name="field_to_filter"]').append(itemsForCustomFiltering);
                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') {
                    listingcmsblock_load_column_settings(fields, className, fromRefresh);
                }
                if (displayFormat == '5' && ($('#table-columns-fields tbody').contents().length == 0 || notDefaultColumnSettings)) {
                    let className = listingcmsblock_get_fields_settings_class_name(displayFormat);
                    listingcmsblock_load_column_settings(fields, className, fromRefresh);
                }
            }
            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 && (isGlobaluser || IS_LLAMAPI_ENABLED)) {
                    let optionDatatable = '<option value="5">' + window.translation.calendar + (!IS_LLAMAPI_ENABLED ? ' &#xf06e;' : '') +'</option>';
                    blockConf.find('select[name="display-format"]').append(optionDatatable);
                }
                if (displayFormat == '5' && (isGlobaluser || IS_LLAMAPI_ENABLED)) {

                    
                    $.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('.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');
                }
                    
            }

            if (displayFormat === '7') {
                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>';
                    }
                });

                //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();
            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);
                }
                if (modalValues.DescriptionMapField) {
                    modal.find('select[name="description_field_view"]').val(modalValues.DescriptionMapField);
                }
                if (modalValues.LatitudeMapField) {
                    modal.find('select[name="latitude_field_view"]').val(modalValues.LatitudeMapField);
                }
                if (modalValues.LongitudeMapfield) {
                    modal.find('select[name="longitude_field_view"]').val(modalValues.LongitudeMapfield);
                }
                if (modalValues.sfChartLabelField) {
                    modal.find('select[name="sf_chart_label_field"]').val(modalValues.sfChartLabelField);
                }
                if (modalValues.sfChartValueField) {
                    modal.find('select[name="sf_chart_value_field"]').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);
                }
            }
        }
        else {
            var isUsingLocalCopy = false;
            var localCopyViewIsSelected = false;

        }

        modal.find('.processing_screen').hide();
    });
}

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);
            self.find('select[name="order-option"]').val(listingcmsblock.order);
            self.find('input[name="number-items"]').val(listingcmsblock.numberOfItems);
            self.find('input[name="items-per-page"]').val(listingcmsblock.itemsPerPage);
            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="display-number-result"]').prop('checked', listingcmsblock.DisplayNumberResults);
            self.find('input[name="display-summary"]').prop('checked', listingcmsblock.displaySummary);
            self.find('select[name="source"]').val(listingcmsblock.source);
            self.find('textarea[name="custom_card_template"]').val(listingcmsblock.cardTemplate);
            self.find('textarea[name="calendar-event-url"]').val(listingcmsblock.calendarEventUrl);
            self.find('select[name="display-format"]').val(listingcmsblock.format);
            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="comments-in-two-columns"]').prop('checked', listingcmsblock.commentsInTwoColumns);
            self.find('select[name="OrderFieldCT"]').val(listingcmsblock.OrderFieldCT);
            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="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('.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 && (isGlobaluser || IS_LLAMAPI_ENABLED)) {
                    var optionCalendar = '<option value="5">' + window.translation.calendar + (!IS_LLAMAPI_ENABLED ? ' &#xf06e;' : '') + '</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 ? ' &#xf06e;' : '') + '</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);
                }

                //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');
            }
            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();
                });

                //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);
        self.find('input[name="listingcms_show_title"]').prop('checked', blockInfo.ShowTitle);
        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("#no-results-" + languageListing.Language).val(languageListing.TextNoResults);
            self.find("#no-results-" + languageListing.Language).text(languageListing.TextNoResults);
            //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) {

    if($('.listingcmsblock.SALESFORCE').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);
                });
            })
            .fail(function( jqxhr, settings, exception ) {
                console.log('exception', exception);
                swal({
                    title: "Error",
                    type: "error",
                    text: window.translation.chart_loading_error,
                    confirmButtonText: "Ok"
                });
            });
        } else {

            if (isAutoRefreshAction === true && isUserIdle === true) {
                console.log('aborting process for ' + listingCMSId)
                return;
            } else if (isAutoRefreshAction === true) {
                var self = $('.auto-refresh-' + listingCMSId)
                processListingCmsBlok(self, urlSite, isAutoRefreshAction);
            } else {
                iterateListingCmsBloks(urlSite);
            }

        }
    }
}

function iterateListingCmsBloks(urlSite) {
    $('.listingcmsblock.SALESFORCE').each(function () {
        var self = $(this);
        processListingCmsBlok(self, urlSite, false);
    });
}


function processListingCmsBlok(self, urlSite, isAutoRefreshAction) {
        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 displayExportCSVValue = self.find('input[name="displayExportCSV"]').val();
        var enforcedbyContactOrAccount = self.find('input[name="enforcedbyContactOrAccount"]').val();
        var parametersUrl = getQueryString();
        var parametersUrlString = (Object.keys(parametersUrl).length) ? JSON.stringify(parametersUrl) : '';
        var parametersRequiredByBlock = (self.find('input[name="requireURLParameters"]').val()) ? self.find('input[name="requireURLParameters"]').val().split(',') : [];
        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 accountNameUserLogged = null;
        var autoRefresh = self.find('input[name="AutoRefresh"]').val() == "True" ? true : false;
        var lastMaxSystemStamp = "";
        var autoRefreshFrequency = self.find('input[name="AutoRefreshFrequency"]').val();
        var listingcmsId = self.find('input[name="listingcmsid"]').val();
        var channelName = self.find('input[name="ChannelName"]').val();
        var lastFetchTime = self.find('input[name="LastFetchTime"]').val();

        console.log('channelName ' + channelName + ' lastFetchTime ' + lastFetchTime)

        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 {
                    console.log('this block reached  the maximum of allowed auto calls')
                    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();
        if (CustomFilters) { CustomFilters = JSON.parse(CustomFilters); }
        if (fieldEnforceFilteringAccountId || (accountIdUserLogged === 'null' || accountIdUserLogged === null)) {
            accountIdUserLogged = sessionStorage.getItem('Salesforce Contact Account ID');
            accountNameUserLogged = sessionStorage.getItem('Salesforce Contact Account Name');
            if (accountIdUserLogged === 'null' || accountIdUserLogged === null) {
                $.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);
                        accountIdUserLogged = 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();
        }

        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;
            }

        }
        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;
        $(CustomFilters['filters']).each(function (index, el) {
            var value = el.comparisonValue;
            if (value == 's:currentUserID') {
                if (contactIdUserLogged == null) { enforceFilterStatus = false; } else { Object.assign(parametersUrl, { currentUserID: contactIdUserLogged }); }
            } else if (value == 's:currentAccountID') {
                if (accountIdUserLogged == null) { enforceFilterStatus = false; } else { Object.assign(parametersUrl, { currentAccountID: accountIdUserLogged }); }
            } else if (value == 's:currentDateTime') {
                Object.assign(parametersUrl, { currentDateTime: today_dateTime });
            }
        });
        // 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>There are URL parameters required by block missing in URL. Please include them to render listing.</span>');
        } else if (!enforceFilterStatus) {
            self.find('.block-wrapper').append(window.translation.there_is_not_items_to_display);
        }
        else if (objectSFView && objectSF) {
            //Get records of SFView
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetSalesforceViewRecords",
                data: { 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 },
                beforeSend: function () {
                    if (isAutoRefreshAction !== true) {
                        self.find('.processing_screen').removeClass('is-hidden');
                        self.find('.processing_screen').addClass('always_show');
                        self.find('.pages').empty();
                    }
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                var processing_screen = self.find('.processing_screen');
                var isChartFormat = (format === 'COLUMN_CHART' || format === 'BAR_CHART' || format === 'PIE_CHART' || format === 'DONUT_CHART');
                if (jsonResult.status === 'ok') {
                    var listing = self.find('.pages').first();

                    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') {
                        listingcmsblock_render_sfviews_list(listing, jsonResult.records, totalItems, itemsPerPage, displayPaging, processing_screen);
                    }
                    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.isEditable != undefined && jsonResult.isEditable == true) {

                            if (jsonResult.pickListsInfo != undefined && jsonResult.pickListsInfo != null) {
                                localStorage.setItem('picklist-info-' + listingcmsId, JSON.stringify(jsonResult.pickListsInfo));
                            }
                            if (isAutoRefreshAction !== 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);

                                if (autoRefresh === true) {
                                    autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId);
                                }
                            }
                        }
                        else {
                            if (isAutoRefreshAction !== 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);
                                if (autoRefresh === true) {
                                    autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId);
                                }
                            }
                        }

                        if (isAutoRefreshAction === 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 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) {
                                        dataTableElement.row('#' + record[0]).data(record);
                                    } else {
                                        dataTableElement.row.add(record).node().id = record[0];
                                    }

                                    idsToDraw.push('#' + record[0]);
                                }
                            }

                            dataTableElement.rows(idsToDraw).draw(false);
                            autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId);
                        }
                    }
                    else if (format === 'CALENDAR') {
                        var currentLanguage = window.translation['locale_iso'];
                        var timeFormat = 'hh:mm a'; //default value for most sites
                        var lastDate = null;
                        var calendarSearchSessionStorage = getCalendarSearchLastDateSessionStorage();

                        moment.locale(currentLanguage);

                        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;
                        }

                        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 !== '') {
                            $.each(jsonResult.records, function (index, record) {
                                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');
                                $.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 isDateField = col.Type.toLowerCase().indexOf('date') >= 0;
                                        if (column.Value !== '' && typeof column.Value !== 'undefined') {
                                            event[colName] = !isDateField ? column.Value : ((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));
                                        }
                                    }
                                });
                                var _orderValue = moment(dateToGroup.Value).format("YYYY-MM-DD hh:mm:ss A");
                                var _startValue = moment(dateToGroup.Value).format(window.MomentDateTimeFormat);

                                var _startForCriteria = moment(dateToGroup.Value).format("YYYY-MM-DDThh:mm");
                                var _timeForCriteria = moment(dateToGroup.Value).format("hh:mm A") + ' - ' + moment(dateToGroup.Value).add(1, 'hours').format("hh:mm A");
                                event["configurationInformationCMS"] = jsonResult.columns;

                                eventToDisplay.push({
                                    title: _title ? _title.Value : '',
                                    start: _startForCriteria,
                                    time: _timeForCriteria,
                                    data: event,
                                    className: 'black-key',
                                    customUrl: _url,
                                    customStart: _startValue,
                                    customOrder: _orderValue
                                });
                            });

                        }

                        var calendarListing = new FullCalendar.Calendar(calendarEl, {
                            locale: 'en',
                            height: 'auto',
                            initialDate: lastDate,
                            eventOrder: 'customOrder',
                            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 description = '';
                                var myPosition = 'right center';
                                var atPosition = 'center left';

                                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)
                                            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,
                                        }
                                    });
                                }

                                $(data.el).find('span.fc-title').html(data.event.title);



                            },
                            events: eventToDisplay
                        });

                        calendarListing.render();
                        processing_screen.addClass('is-hidden');
                        processing_screen.removeClass('always_show');
                    }
                    else if (format === 'MAP') {
                        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;
                                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);
                                if (titleObj) { title = titleObj.Value; }
                                if (descriptionObj) { description = descriptionObj.Value; }
                                if (latitudenObj) { latitude = latitudenObj.Value; }
                                if (longitudeObj) { longitude = longitudeObj.Value; }

                                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
                                        });
                                    }
                                }
                            });
                        }
                        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');
                    }
                    else if (format === 'COMMENTS') {
                        listingcmsblock_render_sfviews_comment_timeline(listing, jsonResult.records, totalItems, itemsPerPage, displayPaging, customCardTemplate, processing_screen);
                    }
                    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);
                            } else {
                                var noDataAvailable = '<p class="not-data-available">' + window.translation.there_is_not_items_to_display; +'</p>';
                                self.find('.chart-wrapper').append(noDataAvailable);
                            }

                        }
                    }
                    else {

                        if (isAutoRefreshAction !== true) {
                            listingcmsblock_render_sfviews_grid_slider_card(listing, format, 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);
                            }
                        } else {
                            listingcmsblock_render_sfviews_grid_slider_card_auto_refresh(listing, format, jsonResult.records, totalItems, itemsPerPage, displayPaging, customCardTemplate, orderDirection);
                            autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId);
                        }
                    }

                    //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();
                    }
                }
                else {
                    //Display error
                    if (isAutoRefreshAction === true) {
                        autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId);
                    } else {

                        var noResultsText = self.find('#noResultsText').val();
                        if (noResultsText == undefined || noResultsText == null || noResultsText == '')
                            noResultsText = window.translation.there_is_not_items_to_display;

                        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 = 'Please check the 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');
                    }
                }
            });
        }
}


function listingcmsblock_render_sfviews_datatable(list, columns, records, totalItems, itemsPerPage, displayPaging, displaySearchSectionValue, processing_screen, listingcmsId, defaultSort, firstValue, lastValue, size, displayExportCSVValue, noResultsText, columnsName, isEditable) {
    var htmlHeader = columns;
    if (records) 
    {
        // 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 afterEdit = function () {
            
            if ($('#' + idTable + ' td.datatable-cell-edited').length > 0 && $('#' + idTable + ' td label.error').length == 0) {
                $('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').hide();
                $('#' + idTable + 'SaveChanges').show();
                //$('#cancel-button').show();
            } else {
                $('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').show();                
                $('#' + idTable + 'SaveChanges').hide();
                //$('#cancel-button').hide();
            }
            if ($('#' + idTable + '  tr.error').length == 0) {
                $(".validation-summary-errors").hide();
            }
        };
        

        for (var i = 0; i < totalItems; i++) {
            var itemResult = JSON.parse(records[i]);
            
            if (itemResult) {
                var rowHtml = "<tr id='" + itemResult[0] + "'>";
                $.each(itemResult, function (index, item) {
                    var classTd = ((isEditable && item.indexOf('cell-edit-btn') != -1) ? 'datatable-cell-editable' : '')
                    rowHtml += "<td tabindex='0' class='" + classTd +"'><strong class='show-for-small-only'>"+ columnsNameInfo[index] +": </strong>"+item+"</td>";
                });
                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;

        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

        var defaultButtons = [];
        if (displayExportCSVValue == "True") {
            defaultButtons = [{
                extend: 'csv',
                text: window.translation.export_csv
            }];
        }

        var datatable = $('#' + idTable).DataTable({
            "bFilter": true,
            "bPaginate": paging,
            "bLengthChange": false,
            "bProcessing": true,
            "pageLength": itemsPerPage,
            "order": [[defaultSort, sortConfigured]],
            "columnDefs": [
                {
                    targets: "datepicker-column",
                    type:"datetime"
                },
                {
                    targets: "onlydatepicker-column",
                    type:"datetime"
                },
                {
                    targets: 0,
                    visible: false
                },
            ],
            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) {
                $('#' + 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) {
                    $('#' + idTable + '_wrapper .dt-buttons').append('<button id="' + idTable + 'SaveChanges" class="button primary-button dt-button buttons-csv buttons-html5" style="display:none;" >' +
                                    '<span>' + window.translation.save_changes + '</span></button>')
                }
                

                if (offset != 0 || totalItems >= limit) {
                    listingcmsblock_add_load_more_datatable(listingcmsId, onlyFirst, onlyLast);
                }

                
                if (isEditable) {
                    
                    init_datatable_editable(this, afterEdit);
                }
                
            },
            "fnDrawCallback": function () {
                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');
                    }
                } 

            }
        });


        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) {
                var dataTableValues = $('#' + idTable).DataTable();                

                if (dataTableValues.$('tr.datatable-row-edited').length > 0 && dataTableValues.$('td.datatable-cell-edited').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) {
                            var rec = {};
                            rec.RecordSfId = $(this).find('.record-id').val();
                            rec.Fields = {};
                            $(this).find('td.datatable-cell-edited').each(function (index, element) {
                                var th = $('#' + idTable).find('thead th').eq($(this).index());
                                rec.Fields[th.data('field-name')] = $(this).find('span.cell-value').text().trim();
                                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);
                        }
                    });
                    
                    var title = window.translation.you_will_update_x_records.replace("{0}", records.length);
                    swal({
                        title: title,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonClass: 'btn-danger',
                        confirmButtonText: window.translation.yes,
                        cancelButtonText: window.translation.no,
                        closeOnConfirm: false,
                        showLoaderOnConfirm: true,
                        closeOnCancel: true
                    },
                        function (isConfirm) {
                            
                            if (isConfirm) {

                                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")) {
                                        //    var table = $('#report-attendance-grid').DataTable();
                                        //    table.ajax.reload(function () {
                                        //        afterEdit();
                                            swal({
                                                title: window.translation.success,
                                                text: response.message,
                                                type: "success",
                                                closeOnConfirm: true
                                            }, function () {
                                                swal.close();
                                                window.location.reload();
                                            });

                                        //    });
                                        } else {
                                        //    if (!$.isEmptyObject(response.errorsDetail)) {
                                        //        var html = "<ul>";
                                        //        var arrayLength = response.errorsDetail.length;
                                        //        for (var i = 0; i < arrayLength; i++) {
                                        //            $("#report-attendance-grid").find("input.record-id[value='" + response.connections[i].id + "']").closest("tr").addClass('error');
                                        //            var conn_name = $("#report-attendance-grid").find("input[value='" + response.connections[i].id + "']").closest("tr").find("td").eq(1).html();
                                        //            var error_array = response.connections[i].error;
                                        //            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();
                                        //    }
                                            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({
                                                title: window.translation.error,
                                                text: text,
                                                type: "error",
                                                closeOnConfirm: true,
                                                html: true
                                            }, function () {
                                                swal.close();
                                                window.location.reload();
                                            });
                                        }
                                    },
                                    error: function (jqXHR, textStatus, errorThrown) {
                                        swal({
                                            title: textStatus,
                                            type: "error",
                                            text: errorThrown
                                        });
                                    }
                                });
                            }
                        });
                }
            });
        }
        

        //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 listingcmsblock_render_sfviews_list(list, records, totalItems, itemsPerPage, displayPaging, processing_screen) {
    if (records) {
        var listingResult = '';
        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);
        
        for (var i = 0; i < totalItems; i++) {
            var record = records[i];
            var classItem = (countItems < itemsPerPage || itemsPerPage == 0 || displayPaging === 'False') ? '' : 'is-hidden';
            var itemResult = '<li class="'+ classItem +'">';

            if(record.Columns) {
                $.each(record.Columns, function (index, item) {
                    var title = item.FieldNameOrPath;
                    var value = item.Value;
                    
                    //Fix to modify text of content when has ; (Multiselects in SF)
                    if(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>';
                });
            }

            itemResult = itemResult + '</li>';
            listingResult = listingResult + itemResult;
            if(itemsPerPage != 0) countItems++;
        }

        list.append(listingResult);

        //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 href="#" data-number-page="1">' + window.translation.first_option + '</a></li>';
            var previousPage = '<li class="previous-item"><a href="#" data-number-page="1">' + window.translation.previous_option + '</a></li>';
            var nextPage = '<li class="next-item"><a href="#" data-number-page="2">' + window.translation.next_option + '</a></li>';
            var lastPage = '<li class="last-item"><a href="#" 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 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');
    }
}

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 customCardItemHTML = records[i];
            var classItem = (countItems < itemsPerPage || itemsPerPage == 0 || displayPaging === 'False') ? '' : 'is-hidden';
            
            if (customCardItemHTML) {
                customCardItemHTML = '<li class=" comment-box ' + classItem + '">' + 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 href="#" data-number-page="1">' + window.translation.first_option + '</a></li>';
            var previousPage = '<li class="previous-item"><a href="#" data-number-page="1">' + window.translation.previous_option + '</a></li>';
            var nextPage = '<li class="next-item"><a href="#" data-number-page="' + nextPageNumber + '">' + window.translation.next_option + '</a></li>';
            var lastPage = '<li class="last-item"><a href="#" 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 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 = 'inline-block';
    if (cardPresentation !== undefined && cardPresentation !== null && cardPresentation.trim() !== '') {
        styleCard = (cardPresentation === 'inline') ? 'inline-block' : '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) {
    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()
        }

        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) {
                $.each(record.Columns, function (index, item) {
                    var column = '{' + item.FieldNameOrPath + '}';
                    var value = item.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) value = (value.indexOf(';') !== -1) ? value.replaceAll(';', ', ') : value;

                    if (customCardItemHTML.indexOf(column) !== -1) {
                        customCardItemHTML = customCardItemHTML.replaceAll(column, value);
                    }
                });

                if (format === 'GRID' || format === 'CARD') {
                    onlyInternalValue = customCardItemHTML;
                    if (existPagination === true)
                        hiddenClass = "is-hidden";

                    customCardItemHTML = '<li ' + dataFieldProperty + ' class="' + hiddenClass + ' ' + classItem + ' ' + classId + ' custom-row">' + customCardItemHTML + '</li>';
                }
                /*else if (format === 'SLIDER') {
                    customCardItemHTML = '<div class="item">' + customCardItemHTML + '</div>';
                }*/

                if (classId !== undefined) {
                    var existItem = list.find('.' + classId);

                    itemsHandled.push(classId);

                    if (existItem !== undefined && existItem.length > 0) {
                        existItem.html(onlyInternalValue);
                        existItem.data('sortingvalue', newDataSortvalue);

                        if (existPagination === true)
                            existItem.css('display', 'none')

                        if (orderDirection != '' && existFieldToSort === true)
                            $('.' + classId).attr('data-sortingvalue', newDataSortvalue);
                        
                    } 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) {
    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 record = records[i];
            var customCardItemHTML = customCard;
            var classItem = (countItems < itemsPerPage || itemsPerPage == 0 || displayPaging === 'False') ? '' : 'is-hidden';

            //var recordId = undefined;
            var classId = "";
            var dataFieldProperty = "";
            if(record.Columns && customCardItemHTML) {
                $.each(record.Columns, function (index, item) {
                    var column = '{' + item.FieldNameOrPath + '}';
                    var value = item.Value;

                    if (item.FieldNameOrPath == 'Id') {
                        //recordId = value;
                        classId = 'row-' + value;
                    } else if (item.FieldNameOrPath == 'FieldUsedForSorting') {
                        dataFieldProperty = 'data-sortingvalue="' + value+ '"';
                    }


                    //Fix to modify text of content when has ; (Multiselects in SF)
                    if(value) value = (value.indexOf(';') !== -1) ? value.replaceAll(';', ', ') : value;

                    if(customCardItemHTML.indexOf(column) !== -1) {
                        customCardItemHTML = customCardItemHTML.replaceAll(column, value);
                    }
                });

                if (format === 'GRID' || format === 'CARD') {
                    customCardItemHTML = '<li ' + dataFieldProperty + ' class="' + classItem + ' ' + classId + ' custom-row">' + customCardItemHTML + '</li>';
                }
                else if(format === 'SLIDER') {
                    customCardItemHTML = '<div class="item">'+ 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 href="#" data-number-page="1">' + window.translation.first_option + '</a></li>';
            var previousPage = '<li class="previous-item"><a href="#" data-number-page="1">' + window.translation.previous_option + '</a></li>';
            var nextPage = '<li class="next-item"><a href="#" data-number-page="'+ nextPageNumber +'">' + window.translation.next_option + '</a></li>';
            var lastPage = '<li class="last-item"><a href="#" 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 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');
    }
}

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 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) {
        
        if (listingcmsblock_perform_search(self.find('ul.pages').text().toLowerCase(), searchText, true)) {
            var totalItemsSearched = 0;

            //Hide all elements
            self.find('ul.pages').find('li:not(.file-item)').removeClass('is-hidden');
            self.find('ul.pages').find('li:not(.file-item)').addClass('hidden_by_search');
            self.find('ul.pages').find('li:not(.file-item)').fadeOut();

            var cardPresentation = self.find('input[name="cardItemPresentation"]').val();
            var styleCard = 'inline-block';
            if (cardPresentation !== undefined && cardPresentation !== null && cardPresentation.trim() !== '') {
                styleCard = (cardPresentation === 'inline') ? 'inline-block' : 'block';
            }


            self.find('ul.pages').find('li:not(.file-item)').each(function() {
                var item = $(this);
                var textItem = item.text().toLowerCase();
                var classItem = (totalItemsSearched < itemsPerPage) ? '' : 'is-hidden';

                if (listingcmsblock_perform_search(textItem, searchText, true)) {
                    item.fadeIn('fast', function () { $(this).css('display', styleCard); });
                    item.removeClass('hidden_by_search');
                    totalItemsSearched++;

                    if(!item.hasClass('is-hidden')) item.addClass(classItem);
                }
            });

            //Validation to displayPaging
            if(displayPaging === 'True') {
                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();
                }
            }

            //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('');
            }
        }
        else {
            //Hide all elements
            self.find('ul.pages').find('li:not(.file-item)').addClass('hidden_by_search');
            self.find('ul.pages').find('li:not(.file-item)').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
        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:not(.file-item)').removeClass('is-hidden');
            self.find('ul.pages').find('li:not(.file-item)').removeClass('hidden_by_search');
            self.find('ul.pages').find('li:not(.file-item)').hide();
            var cardPresentation = self.find('input[name="cardItemPresentation"]').val();
            var styleCard = 'inline-block';
            if (cardPresentation !== undefined && cardPresentation !== null && cardPresentation.trim() !== '') {
                styleCard = (cardPresentation === 'inline') ? 'inline-block' : 'block';
            }


            self.find('ul.pages').find('li:not(.file-item)').each(function() {
                var item = $(this);
                var classItem = (countItems < itemsPerPage) ? '' : 'is-hidden';

                item.fadeIn('fast', function () { $(this).css('display', styleCard); });
                countItems++;

                if(!item.hasClass('is-hidden')) item.addClass(classItem);
            });

            //Validation to displayPaging
            if(displayPaging === 'True') {
                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.removeAttr('data-items-searched');

                var totalPages = Math.ceil(totalItems/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();
                }
            }
        }
    }

    return false;
}

function listingcmsblock_detect_form_change() {
    $(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(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 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));
        }

        $(".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_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) {

    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);
        }
    }
}

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;
    
    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 + '">' + 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 + '">' + window.translation.load_more + '</a>');
            
        }
        
        if (onlyFirst && $("#" + tableId + "_loadAction").length > 0 || (Number(offset) + Number(limit)) > 2000 && $("#" + 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 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 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=AIzaSyAxjB3f7bQaLkRDZ_7IhAmzpZGrJJswBIA", 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 ) {
                        map = new google.maps.Map(mapContainer);
                        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 markerPosition = new google.maps.LatLng(latitude, longitude);
                                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('click', function(e) {
                                    infowindow.setContent(contentString);
                                    infowindow.open(map, marker);
                                    return false;
                                });
                            }
                        });
                    	//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
                        });
                    }
                    
					// set_markers_to_map_featured_opportunities(mapContainer, self);
				}
			});
		});
	}
}

function drawChart(dataChart) {
    /* 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) {
        /* 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%'} 
                var classicChart = new google.visualization.BarChart(DOMChartElement);
                classicChart.draw(dataTable, options);
            }
            if(dataChart.format === 'COLUMN_CHART') {
                options.bar = { groupWidth: "80%" };
                options.chartArea = { width: '85%', left: '10%'}
                var classicChart = new google.visualization.ColumnChart(DOMChartElement);
                classicChart.draw(dataTable, options);
            } 
        } else if(dataChart.format === 'PIE_CHART') {
            options.height = 315;
            options.title = chartTitle;
            options.legend = legendOptions;
            options.chartArea = { width: '75%', height: '85%' }

            var chart = new google.visualization.PieChart(DOMChartElement);
            chart.draw(dataTable, options);
        } 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%' }

            var chart = new google.visualization.PieChart(DOMChartElement);
            chart.draw(dataTable, options);
        }
    }
}

function cancel_future_autorefresh(listingcmsId) {
    if (autoRefreshBlocks[listingcmsId] !== undefined) {
        console.log('canceling timer ' + autoRefreshBlocks[listingcmsId].timerId)
        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)
    }
}

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'));
});


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');
    }
}
;
$(document).ready(function () {
    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();
});

//Load methods after load translations
function after_translation_resource_load_searchresult() {
	//Behaviors search result
	searchresult_behaviors(false);

	//Populate location field of searchresultblock
	//searchresult_populate_location_field();

    //Behaviors of backend for SearchResult Block
	searchresult_backend_behaviors();

    reset_block_search_form();

    search_result_as_corporate_page();
}


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 searchName = self.find('input[name="save_current_search_as"]').val();
        var searchNameClean = searchName;
        var blockId = self.attr('data-block-id');

        if (searchName) {
            searchName = searchName + ' searchresultblock ' + blockId;
            searchresult_save_search(self, formDataString, searchName, searchNameClean);
        }
        else {
            swal({
                title: '',
                type: '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') {
            if (self.find('.refine-search a.button').length > 0) {
                self.find('.refine-search a.button').trigger('click');
                executed = true;
            }
        }
    }
    return executed;
}


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();
    if (listingFormat === 'LISTING_WITH_TILES' || listingFormat === 'LISTING_WITHOUT_TILES') {
        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);
                }
                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);
                    searchresult_populate_calendar_tile_link_more_behavior(self);
                }


                //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")
                        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") {
                    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();
                }

                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);
                

                //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({
                    title: '',
                    text: jsonData.message,
                    type: '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
                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);
                });

            }
            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_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 !== '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,
                    '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();
        return false;
    });

}


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);
		}

        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 (isSearch) {
        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);

    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_", "&");

                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 (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" 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 searchResultBlockId = self.find('input[name="searchResultId"]').val();
    if (listingFormat === 'LISTING_WITH_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('.opportunities-service');

                    opportunityContainer.empty();

                    searchresult_populate_opportunity_container_listing(opportunityContainer, jsonData['opportunities'], showImage);
                }

                //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 },
            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);
                    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();
        });
    
    }
}

function searchresult_update_result_after_change(self) {

    if (self.find('select[name="activity-type"]').length > 0) 
        if (self.find('select[name="activity-type"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('select[name="skills-use"]').length > 0)
        if (self.find('select[name="skills-use"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('select[name="population"]').length > 0)
        if (self.find('select[name="population"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('select[name="organization-serve"]').length > 0)
        if (self.find('select[name="organization-serve"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('select[name="issue-areas"]').length > 0)
        if (self.find('select[name="issue-areas"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('select[name="participate-event"]').length > 0)
        if (self.find('select[name="participate-event"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));


    if (self.find('input[name="view_by"]').length > 0)
        if (self.find('input[name="view_by"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('input[name="your_availability"]').length > 0)
        if (self.find('input[name="your_availability"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));


    if (self.find('select[name="duration"]').length > 0)
        if (self.find('select[name="duration"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('select[name="managed-by"]').length > 0)
        if (self.find('select[name="managed-by"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('select[name="age-group"]').length > 0)
        if (self.find('select[name="age-group"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('select[name="gender"]').length > 0)
        if (self.find('select[name="gender"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('select[name="my_causes"]').length > 0)
        if (self.find('select[name="my_causes"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (self.find('input[name="other_criteria"]').length > 0)
        if (self.find('input[name="other_criteria"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));


    if (self.find('select[name="distance"]').length > 0)
        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(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 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);
    		}

            //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 searchResultBlockId = self.find('input[name="searchResultId"]').val();
    $.ajax({
        method: "POST",
        url: urlSite + "search/GetOpportunitiesSearchResultBlockGrid",
        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();

                searchresult_populate_opportunity_container_by_date(opportunityContainer, jsonData['opportunities'], showImage, self);
    		}

            //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 searchresult_populate_opportunity_container_listing(opportunityContainer, opportunities, showImage) {

    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 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 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'] != '')?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 + ' ' + 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><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 (!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);


    //Reload foundation method to display tooltip
    opportunityContainer.foundation();
}

function searchresult_populate_opportunity_container_by_date(opportunityContainer, opportunities, showImage, searchresultblock) {

    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);
                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);

                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();
            });
        }
    });

    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) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $.ajax({
        method: "POST",
        url: urlSite + "search/SaveSearchSearchResult",
        data: { parameters: formData, searchName: searchName },
        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({
                    title: '',
                    text: window.translation.search_saved_successfully,
                    type: '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({
                        title: '',
                        text: window.translation.search_saved_successfully,
                        type: 'success',
                        confirmButtonText: 'Ok',
                    });
                }
                else {
                    swal({
                        title: '',
                        type: '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();
    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 },
                        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);
                        processingContainer.hide();
                    });

                } 
            }
        }
    }
    else {
        if (listingFormat !== 'CALENDAR_WITHOUT_TILES') {
            $.ajax({
                method: "POST",
                url: urlSite + "search/LoadSavedSearchSearchResult",
                data: { searchId: searchId, listingFormat: listingFormat, blockId: searchResultId },
                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);
                processingContainer.hide();
            });

        } 
    }
}

function searchresult_populate_block_saved_search(self, listingFormat, elementViewMore, showImage, blockId, jsonData) {
    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);
                }

                //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);
                }

                //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();

                }
            }
            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);
                }

            }

            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
            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) {
    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;

    if(occurrenceContainer.find('.opportunity-container[data-occurrence-id="' + sid + '"]').length === 0) {
        var durationOccurrence = ocurrenceInfo['Duration'];
        var dateOccurrence = ocurrenceInfo['DateOccurrence'];
        var timeZone = ocurrenceInfo['TimeZone'];
        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 miniSitePath = (ocurrenceInfo['MiniSitePath'] != null && ocurrenceInfo['MiniSitePath'] !== undefined && ocurrenceInfo['MiniSitePath'] != '')?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>'
                            + '<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 (!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>';
            
            if (!multiTimeZone) {
                opportunityHTML += '<span class="date_time">' + timeOccurrence + '</span>';
            }
            else {
                opportunityHTML += '<span class="date_time" data-tooltip title="' + timeZone.replaceAll('_', ' ') + '">' + timeOccurrence + '</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();

            //Initiate jquery validate
            initiate_jquery_validate_reveal($('#searchresult-form'), 'searchresult-form');

            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"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="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);

                            if(jsonResult.blockInfo.Visibility != 0) {
                                self.find('#searchresult_exception_url_container').removeClass('is-hidden');
                            }
                            else {
                                self.find('#searchresult_exception_url_container').addClass('is-hidden');
                            }
                        }
                        
                        //Cms Info
                        if (jsonResult.cmsBlock) {
                            self.find('select[name="sort-by"]').val(jsonResult.cmsBlock.SortBy);
                            if (jsonResult.cmsBlock.SortBy === 0) {
                                $('#searchresult-form .sort-type-distance-section').removeClass('hide');
                            } else {
                                $('#searchresult-form .sort-type-distance-section').addClass('hide');
                            }


                            self.find('select[name="distance-sort-by"]').val(jsonResult.cmsBlock.DistanceSortType);


                            self.find('select[name="display-format"]').val(jsonResult.cmsBlock.Format);
                            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');
                            }

                            self.find('input[name="searchresult-block-id"]').val(jsonResult.cmsBlock.ID);
                            self.find('select[name="default_distance"]').val(jsonResult.cmsBlock.DefaultValueDistance);
                            self.find('input[name="custom-sort"]').val(jsonResult.cmsBlock.CustomSort);
                            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.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.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);
                            }
                        }
                        
                        //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');
                        }

                        $('select[name="display-format"]').on('change', function () {
                            var value = $(this).val();
                            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 (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(elementReveal, true, jsonResult, true);
                        if (jsonResult.blockInfo.SystemName === 'System Default Calendar' || jsonResult.blockInfo.SystemName === 'System Default Search') {
                            $('#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');

                        }

                    }

                    //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');
                    //self.find('.processing_screen').hide();
                });
            }
            else {
                //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, '#searchresult-advanced-settings');
                self.find('input[name="css_class"]').val('');
                //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"]').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').addClass('is-hidden');
                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="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(elementReveal, true, null, true);


                $('select[name="display-format"]').on('change', function () {
                    var value = $(this).val();
                    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');
                    }
                });





                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');
                }
            });
        });

        //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) {
                    }*/
                }
            }


            var formData = $("#searchresult-form").serializeObject();

            if ($("#searchresult-form").valid()) {
                $.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({
                            title: window.translation.success,
                            text: window.translation.search_result_block_saved_successfully,
                            type: 'success',
                            closeOnConfirm: true
                        }, function(){
                            self.find('.processing_screen').show();
                            window.location.reload();
                        });
                    }
                    else {
                        swal({
                            title: window.translation.error,
                            text: jsonResult.message,
                            type: "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();
                    });
                }
            }
        });
    }
}

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.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"]').prop('checked', true);
        }
        else {
            self.find('input[name="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() {
    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;
            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;
            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
                        }

                    ],
                    buttonsContainer: self.find("#multiple-views-buttons"),
                    afterViewChange: function () {
                        $("#wait-message").show();
                    },
                    afterInit: function () {

                    },
                    afterViewLoad: function () {
                        var viewsData = $("#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;
                        if (currentOption.attr('id') === 'view-listing-with-tile')
                            selector = '.opportunity-container.view-more.searchresult-listing';
                        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';
                        else if (currentOption.attr('id') === 'view-calendar-without-tile') {
                            selector = '';
                            defaultCalendar = true;
                        }
                            
                        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);
                            /*add_multi_select_widget_for_corporate(self);
                            firstLoadCalendar = false;
                            events_for_calendar_corporate(self);*/
                        } else {
                            searchresult_behaviors(true);
                            expandable_behaviors();
                        }
                        reset_block_search_form();

                    },
                    afterDataLoad: function () {

                    }

                };
                $("#wait-message").show();
                $("#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');
                    }

                });
            }

        });
    }
}

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-items .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);
        }
    });


}

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 = {};

    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');
    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;

    }
    var calendar = generate_calendar_widget(searchResultBlockId, lastDate, isCorporateBlock);
    retrieve_occurrences(calendar, parametersAPI, processingContainer, self, recreate, false);

    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, false);

        });
    }
    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, false);
        });
    }
    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, false);
        });
    }
    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, false);
        });
    }
    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, false);
        });
    }

    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, false);
        });
    }

    
    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 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) {
    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 time = occurence.startTime + timeFormatSuffix + ' - ' + occurence.endTime + timeFormatSuffix;
                var spotRemaining = parseInt(occurence.volunteersStillNeeded);
                var managedBy = occurence.managingOrganization;
                var opportunityId = occurence.occurrenceId;
                var miniSitePath = occurence.miniSitePath;
                var timezone = occurence.timezone;
                if (miniSitePath !== undefined && miniSitePath !== null) {
                    if (miniSitePath.indexOf('/', miniSitePath.length - 1) === -1) {
                        miniSitePath = miniSitePath + "/";
                    }
                }

                var startDate = occurence.startDateTimeISO;
                var endDate = occurence.endDateTimeISO;

                var className = 'blue-key';

                if (spotRemaining <= 0) {
                    className = 'gray-key';
                    countFilled++;
                }
                else if (occurence.opportunityType === "Activity" || occurence.opportunityType === "Spreadsheets_AllForGood_Ad") {
                    className = 'black-key';
                    countTraining++;
                }

                if (className === 'blue-key') {
                    countRegular++;
                }

                if (moment(getFormattedDate(timezone)).isAfter(moment(startDate))) {
                    className += ' fc-past';
                }


                //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
                });

            });

            // 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_select_SR('.basic-search-filter-section select[name="causes"]', "causes", data.causes.join('---'), true, self);


        //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);
        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) {
    var currentLanguage = window.translation['language_iso'];
    var locale = currentLanguage;
    if (locale === 'zh-CHT')
        locale = 'zh-tw';
    else if (locale === 'en-GB')
        locale = 'en-gb';
    else {
        var values = locale.split('-');
        locale = values[0];
    }

    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 (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 calendar = new FullCalendar.Calendar(calendarEl, {
        locale: locale,
        height: 'auto',
        initialDate: lastDate,
        initialView: initialViewValue,
        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
            }
        },
        eventClick: function (info) {
            var props = info.event.extendedProps;
            if (props.opportunityId) {
                if (props.miniSitePath !== undefined && props.miniSitePath !== null && props.miniSitePath !== '') {                    
                    if (OpenOppInCalendar == 'NEW_TAB') {
                        window.open(props.miniSitePath + 'opportunity/' + props.opportunityId, '_blank');
                    }
                    else {
                        window.location.assign(props.miniSitePath + 'opportunity/' + props.opportunityId);
                    }
                }
                else {
                    if (OpenOppInCalendar == 'NEW_TAB') {
                        window.open('/opportunity/' + props.opportunityId, '_blank');
                    }
                    else {
                        window.location.assign('/opportunity/' + props.opportunityId);
                    }
                }
            }
            if (props.eventId) {

                if (OpenOppInCalendar == 'NEW_TAB') {
                    window.open('/special-event/' + props.eventId, '_blank');
                }
                else {
                    window.location.assign('/special-event/' + props.eventId);
                }
            }
        },
        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 : '';

                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>';
                }
                else {
                    if (event_description !== null && event_description !== undefined && event_description !== 'undefined')
                        description = description + '<p class="minimal-space">' + event_description + '</p>';
                    description = description + '<p class="time">' + props.time + '</p>';
                    description = description + '<p class="last-section"><span>' + translation['spots_remaining'] + ': ' + props.spotRemaining + '</span>';
                    if (props.managedBy !== null && props.managedBy !== undefined) {
                        description = description + '<span>' + translation['managed_by'] + ': ' + props.managedBy + '</span>';
                    }
                    description = description + '</p>';
                }

               
                var urlOpp = '';
                if (props.opportunityId) {
                    if (props.miniSitePath !== undefined && props.miniSitePath !== null && props.miniSitePath !== '') {
                        urlOpp = props.miniSitePath + 'opportunity/' + props.opportunityId;
                    }
                    else {
                        urlOpp = '/opportunity/' + props.opportunityId;
                    }
                }
                if (props.eventId) {
                    urlOpp = '/special-event/' + props.eventId;
                }

                if (urlOpp !== '') {
                    $(data.el).attr('url-opp', urlOpp);
                }

                if ($(window).width() >= 639) {
                    $(data.el).qtip({
                        content: {
                            title: '<span>' + data.event.title + '</span>' + titleOrganization,
                            text: description
                        },
                        position: {
                            my: myPosition,
                            at: atPosition
                        }
                    });
                }

            }
        }


    });
    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 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)
                    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;
        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)
                            currentCalendar.destroy();
                        //new call
                        process_calendar_default(self, true, processingContainer);

                    } else {
                        swal({
                            title: '',
                            type: '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)
                    currentCalendar.destroy();
                //new call
                process_calendar_default(self, true, processingContainer);
            } else {
                swal({
                    title: '',
                    type: '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 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 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 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'; }
                        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');

                        bodyAdd += '<a 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>';
                    });

                    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>';
            self.find('table.fc-scrollgrid tbody tr td.fc-daygrid-day').each(function () {
                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'; }
                        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);
        });
    }
    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();
} ;
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
	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');

		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 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.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.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);
					$('#featured-opp-form input[name="oppBlockInfo.Block.ShowTitle"]').prop('checked', jsonResult.showBlockTitle);
					$('#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.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);

					//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({
						title: window.translation.error,
						text: jsonResult.message,
						type: "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').addClass('is-hidden');
			$(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.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"]').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.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();
        

		//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.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.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({
						title: window.translation.success,
						text: 'Featured Opportunity Saved Successfully',
						type: 'success',
						closeOnConfirm: true
					}, function () {
						self.foundation('close');
						location.reload(true);
					});
				}
				else {
					swal({
						title: window.translation.error,
						text: jsonResult.message,
						type: "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({
				title: window.translation.are_you_sure,
				text: 'Do you want delete this block?',
				type: "warning",
				showCancelButton: true,
				confirmButtonColor: "#ff0000",
				confirmButtonText: window.translation.yes_delete_it,
				cancelButtonText: window.translation.cancel,
				closeOnConfirm: true
			}, function (isConfirm) {
				if (isConfirm) {

					$.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({
								title: window.translation.success,
								text: jsonResult.message,
								type: "success",
								closeOnConfirm: true
							}, function () {
								$('#' + datareveal).foundation('close');
								swal.close();
								location.reload(true);
                                });                                                        
						} else {
							swal({
								title: window.translation.error,
								text: jsonResult.message,
								type: "error",
								closeOnConfirm: true
							}, function () {
								$('#' + 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();
		}
		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();
		}
	});
}


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=AIzaSyAxjB3f7bQaLkRDZ_7IhAmzpZGrJJswBIA", 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 multiTimeZone = self.find('input[name="multitimezone"]').val();
		var siteTimeZone = self.find('input[name="sitetimezone"]').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 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 + '" title="' + item.opportunityName + '" target="_blank"><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)
                                        }

										thumbnail = '<a href="' + opportunityUrl + '" title="' + item.opportunityName + '" target="_blank"><img class="group list-group-image" src="' + opportunityImageUrl + '" alt="Opportunity Thumbnail" /></a>';
									}
									if (ShowImage) {
										thumbnail = '<div class="thumbnail">'
											+ thumbnail
											+ '</div>';
									}
									else {
										thumbnail = '';
									}

									var oppTitle = '';
									if (showOppTitle) {
										oppTitle = '<a href="' + opportunityUrl + '" title="' + item.opportunityName + '" target="_blank">'
											+ '<p class="group inner list-group-item-heading">' + item.opportunityName + '</p>'
											+ '</a>';
									}
									var shortDesc = '';
									if (ShowShortDesc) {

										shortDesc = '<p class="group inner list-group-item-text">' + item.description + '</p>';
									}

									var location = '';
									locationtext = "";
									if (ShowLocation || showMap) {
										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 || showMap) {
										if (item.scheduleType == "Date & Time Specific") {
											if (item.startDate != null) {
												datetimetext = item.startDate;
												if (item.startTime != null) {
													datetimetext = datetimetext + " " + item.startTime;
												}

												if (multiTimeZone == "true") {
													datetimetext = '<span class="date-time-zone" data-tooltip title="' + timeZoneToUse + '">' + datetimetext + '</span>';
                                                }
											}
										}
                                        else if (item.scheduleType == 'Individually Scheduled' || item.scheduleType == 'To Be Scheduled') {
                                            if (item.DisplayStart === "true" || item.DisplayStart === true) {
                                                var dateToDisplay = window.translation.volunteers_needed_through_with_start_date;
                                                if (multiTimeZone == "true") {
                                                    dateToDisplay = dateToDisplay.replace('{0}', ' <span class="date-time-zone" data-tooltip title="' + timeZoneToUse + '">' + item.startDate + '</span>');
                                                    dateToDisplay = dateToDisplay.replace('{1}', ' <span class="date-time-zone" data-tooltip title="' + timeZoneToUse + '">' + item.endDate + '</span>');
                                                }
                                                else {
                                                    dateToDisplay = dateToDisplay.replace('{0}', item.startDate);
                                                    dateToDisplay = dateToDisplay.replace('{1}', item.endDate);
                                                }
                                                datetimetext = dateToDisplay;

                                            } else {
                                                if (multiTimeZone == "true")
                                                    datetimetext = window.translation.though_only + ' <span class="date-time-zone" data-tooltip title="' + timeZoneToUse + '">' + item.endDate + '</span>';
                                                else
                                                    datetimetext = window.translation.though_only + ' ' + item.endDate;

                                            }
										}
										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="_blank">+' + window.translation.more + '</a>' : '') +
											'</p>';
									}

									var itemHTML = '<div class="item ' + listOrGrid + '">'
										+ thumbnail
										+ '<div class="caption">'
										+ oppTitle
										+ shortDesc
										+ location
										+ availableSpots
										+ datetime
										+ '</div>'
										+ '</div>';
									groupItems.append(itemHTML);

									//Append info of locations
									if (showMap === 'true') {
										var occInfo = {};
										occInfo['Name'] = item.opportunityName;
										occInfo['Location'] = locationtext;

										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({
							title: "",
							type: "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=AIzaSyAxjB3f7bQaLkRDZ_7IhAmzpZGrJJswBIA", 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 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;

	//Create map
	map = new google.maps.Map(mapContainer);

	if(jarray_location) {
		var markers = [];

		//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
							};

                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
			});

			var availableDataToDisplay = (markerInfo.availableSpots) ? ('<p><strong>' + markerInfo.availableSpots + '</strong></p>') : '';

			var contentString = '<div id="content">' +
									'<p><strong>'+ window.translation.name_report +':</strong> '+ oppName +'</p>' + 
									'<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 + '">'+ 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;
			});
		});
	}

	//Auto zoom and center of map by markers
	map.fitBounds(bounds);       // auto-zoom
	map.panToBounds(bounds);     // auto-center
}

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,
				});
			}
	}
}

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('');
						        }

						    } 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.CriteriaType != null &&
                                    typeof jsonResult.cmsBlock.CriteriaType != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaType != '') {
						            $(elementReveal + ' select[name="oppBlockInfo.CriteriaType"]').val(jsonResult.cmsBlock.CriteriaType);
						        }
                                else {
						            $(elementReveal + ' select[name="oppBlockInfo.CriteriaType"]').val(0);
						        }

								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');
						}
					});
				}
			}
			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.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);
							self.find('input[name="show_title"]').prop('checked', jsonResult.blockInfo.ShowTitle);
							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').addClass('is-hidden');
				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 formData = $("#button-block-form").serializeObject();

			if ($("#button-block-form").valid()) {
				$.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({
							title: window.translation.success,
							text: 'Button block saved Successfully',
							type: 'success',
							closeOnConfirm: true
						}, function(){
							self.find('.processing_screen').show();
							window.location.reload();
						});
					}
					else {
						swal({
							title: window.translation.error,
							text: jsonResult.message,
							type: "error",
							closeOnConfirm: true
						});

						console.log(jsonResult.log);
					}

					self.find('.processing_screen').hide();

					return false;
				});

				return false;
			}
		});
	}
};
/*
	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.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({
                                title: window.translation.donation_completed,
                                type: 'success',
                                text: window.translation.donation_has_been_received,
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            }, function(){
                                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) 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) 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({
                    title: window.translation.missing_values,
                    type: '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({
                                title: window.translation.missing_values,
                                type: 'warning',
                                text: window.translation.please_complete_valid_amount,
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            }, function () {
                                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({
                            title: window.translation.missing_values,
                            type: 'warning',
                            text: window.translation.please_complete_valid_amount,
                            confirmButtonText: 'Ok',
                            closeOnConfirm: true
                        }, function () {
                            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({
                                title: window.translation.missing_values,
                                type: 'warning',
                                text: 'Please complete a valid email',
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            }, function () {
                                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({
                title: window.translation.donation_completed,
                type: '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({
	                            title: window.translation.success,
	                            text: window.translation.donation_block_saved,
	                            type: 'success',
	                            closeOnConfirm: true
	                        }, function(){
	                            self.find('.processing_screen').show();
	                            window.location.reload();
	                        });
	                    }
	                    else {
	                        swal({
	                            title: window.translation.error,
	                            text: jsonResult.message,
	                            type: "error",
	                            closeOnConfirm: true
	                        });

	                    }

	                    self.find('.processing_screen').hide();

	                    return false;
	                });
	            }
            }
            else {
            	swal({
            	    title: window.translation.warning,
            	    text: errorMessage,
            	    type: "warning",
            	    closeOnConfirm: true,
            	    html: 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({
	        title: window.translation.warning,
	        text:   window.translation.label_amount_required,
	        type: "warning",
	        closeOnConfirm: true,
	        html: true,
	    });
	    return false;
	} else {
	    if ($.isNumeric(amount_donation) == false) {
	        swal({
	            title: window.translation.warning,
	            text: window.translation.amount_numeric,
	            type: "warning",
	            closeOnConfirm: true,
	            html: true,
	        });
	        return false;
	    }
	}
	var cant = parseInt(reveal.find('input[name="number_amounts"]').val());
	var 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) {
            console.log('[' + i + '] Retry get public ip...');
            dontaion_block_get_public_ip(i + 1);
        });
    } else {
        console.log('Aborting getting public ip after 2 times.')
        $('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($('#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({
	                        title: "",
	                        type: "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({
                    title: "",
                    type: "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({
        			    title: window.translation.warning,
        			    text: window.translation.are_you_sure_delete_report_and_data + modal_report_info,
        			    type: 'warning',
        			    html: true,
        			    showCancelButton: true,
        			    confirmButtonColor: '#ff0000',
        			    confirmButtonText: window.translation.social_login_link_continue.toUpperCase(),
        			    cancelButtonText: window.translation.cancel,
        			    closeOnConfirm: false
        			}, function (isConfirm) {
        				swal({
        				    title: window.translation.warning,
        				    text: window.translation.all_data_will_be_deleted + window.translation.did_you_download_copy,
        				    type: 'warning',
        				    html: true,
        				    showCancelButton: true,
        				    confirmButtonColor: '#ff0000',
        				    confirmButtonText: window.translation.delete_report.toUpperCase(),
        				    cancelButtonText: window.translation.cancel,
        				    closeOnConfirm: false
        				}, function () {
        					//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({
        			    title: window.translation.warning,
        			    text: window.translation.since_form_is_still_enabled_you_cant_remove + modal_report_info,
        			    type: 'warning',
        			    html: true,
        			    showCancelButton: true,
        			    confirmButtonColor: '#ff0000',
        			    confirmButtonText: window.translation.social_login_link_continue.toUpperCase(),
        			    cancelButtonText: window.translation.cancel,
        			    closeOnConfirm: false
        			}, function (isConfirm) {
						swal({
        				    title: window.translation.warning,
        				    text: window.translation.all_data_will_be_deleted_sort + window.translation.did_you_download_copy,
        				    type: 'warning',
        				    html: true,
        				    showCancelButton: true,
        				    confirmButtonColor: '#ff0000',
        				    confirmButtonText: window.translation.clear_data.toUpperCase(),
        				    cancelButtonText: window.translation.cancel,
        				    closeOnConfirm: false
        				}, function () {
        					//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({
                title: window.translation.success,
                text: jsonResult['message'],
                type: "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({
                title: window.translation.error,
                text: jsonResult['message'],
                type: "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
        /*** 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();

        /*** Image Block ***/
        if (typeof after_translation_resource_load_image_block === 'function')
            after_translation_resource_load_image_block();

        /*** Image Slider Block ***/
        if (typeof after_translation_resource_load_image_slider_block === 'function')
            after_translation_resource_load_image_slider_block();

        /*** 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();


    };

    //Initialze watcher
    watch(window.translationsCompleted, 'completed', watcher);
});

function get_translation_resources_initialization() {
    //Get if site is sharingPortalPlus
    set_info_sharing_portal_plus_page();
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    //Validate if translations exists or the language has been changed
    if (get_translation_resource(urlSite) === false) {
        jQuery.ajax({
            url: urlSite + '/translation/' + new Date().getTime(),
            tryCount: 0,
            retryLimit: 3,
            success: function (data) {
                window.translation = data;
                window.translationsCompleted.completed = true;

                /*** App Translate Initialization ***/
                ajax_for_translation_resource(data, urlSite);
            },
            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 {
        //Initialize methods when are used the translations in the site
        /*** 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();

        /*** Image Block ***/
        if (typeof after_translation_resource_load_image_block === 'function')
            after_translation_resource_load_image_block();

        /*** Image Slider Block ***/
        if (typeof after_translation_resource_load_image_slider_block === 'function')
            after_translation_resource_load_image_slider_block();

        /*** 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();


    }
}

//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 == "") {
        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 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: _autoPlay,
            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();
            }
            
        }, 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 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

    //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 ($('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();
    }
    
    if($("body").hasClass("new-template-system")) {
        validate_content_page_block();
        adding_styles_in_region();
    }
}


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>' + jsonResult[i].Regions + '</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.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({
                    title: "",
                    type: "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({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_setting_confirm_save,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true

                    }, function (isConfirm) {
                        if (isConfirm) {
                            $('#' + 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 === "1") {
            $('#' + 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);

            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({
                title: "",
                type: "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) {
        //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.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 });
            });
        }).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({
                        title: window.translation.are_you_sure,
                        text: window.translation.do_you_want_delete_region,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.yes_delete_it,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: false

                    }, function (isConfirm) {
                        if (isConfirm) {
                            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({
                                            title: window.translation.success,
                                            text: jsonResult.message,
                                            type: "success",
                                            closeOnConfirm: true

                                        }, function () {
                                            $('#' + datareveal).foundation('close');
                                            window.location.reload();
                                        });
                                    } else {
                                        swal({
                                            title: window.translation.error,
                                            text: jsonResult.message,
                                            type: "error",
                                            closeOnConfirm: true
                                        }, function () {
                                            $('#' + datareveal).foundation('close');
                                            window.location.reload();
                                        });

                                    }
                                });
                            }
                        }
                    });

                } else {
                    swal({
                        title: window.translation.error,
                        text: window.translation.remove_region_warning_message,
                        type: "error",
                        closeOnConfirm: true
                    }, function () {
                        $('#' + 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({
                title: window.translation.are_you_sure,
                text: messageText,
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: buttonText,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true,
                html: true

            }, function (isConfirm) {
                $('.processing_screen').show();
                if (isConfirm) {
                    //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 === "1") {
                $('.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({
                    title: "",
                    type: "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({
                    title: "",
                    type: "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({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_layout,
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: false

            }, function (isConfirm) {
                if (confirm) {
                    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({
                                    title: window.translation.success,
                                    text: jsonResult.message,
                                    type: "success",
                                    closeOnConfirm: true

                                }, function () {
                                    $('#' + datareveal).foundation('close');
                                    $('.processing_screen').hide();
                                    window.location.href = urlSite;
                                });
                            } else {
                                $('.processing_screen').hide();
                                swal({
                                    title: window.translation.error,
                                    text: jsonResult.message,
                                    type: "error",
                                    closeOnConfirm: true
                                }, function () {
                                    $('.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).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") {
                    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({
                        title: "",
                        type: "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({
                    title: window.translation.are_you_sure,
                    text: window.translation.visual_settings_restore_setting_message,
                    type: "warning",
                    showCancelButton: true,
                    confirmButtonColor: "#ff0000",
                    confirmButtonText: window.translation.visual_settings_restore_save_it,
                    cancelButtonText: window.translation.cancel,
                    closeOnConfirm: true
                }, function (isConfirm) {
                    if (isConfirm) {
                        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({
                    title: window.translation.are_you_sure,
                    text: window.translation.visual_settings_restore_setting_message,
                    type: "warning",
                    showCancelButton: true,
                    confirmButtonColor: "#ff0000",
                    confirmButtonText: window.translation.visual_settings_restore_save_it,
                    cancelButtonText: window.translation.cancel,
                    closeOnConfirm: true
                }, function (isConfirm) {
                    if (isConfirm) {
                        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({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_settings_warning_message_before_save,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true

                    }, function (isConfirm) {
                        if (isConfirm) {
                            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({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_setting_confirm_save,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true

                    }, function (isConfirm) {
                        if (isConfirm) {
                            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({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_settings_warning_message_before_save,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true

                    }, function (isConfirm) {
                        if (isConfirm) {
                            $('.processing_screen_compiling_settings').show();
                            $('#visual-site-per-layout-form').submit();
                        } else {
                            e.preventDefault();
                            return false;
                        }
                    });

                } else if (isNew == '1') {
                    swal({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_setting_confirm_save,
                        type: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true

                    }, function (isConfirm) {
                        if (isConfirm) {
                            $('.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 (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({
                            title: "",
                            type: "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({
                                title: "",
                                type: "success",
                                text: window.translation.subsite_saved_successfully,
                                confirmButtonText: "Ok",
                            },
                            function () {
                                window.location.reload();
                            });
                        }
                        else {
                            swal({
                                title: "",
                                type: "warning",
                                text: jsonResult.log,
                                confirmButtonText: "Ok",
                            },
                            function () {
                                $('#subsite-form-modal').find('.processing_screen').hide();
                            });
                        }
                    }
                });
            }
            else {
                swal({
                    title: '',
                    type: '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({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_subsite,
                type: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#DD6B55',
                confirmButtonText: window.translation.yes_delete_it,
                closeOnConfirm: true
            },
            function(){
                $.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({
                                title: "",
                                type: "success",
                                text: window.translation.subsite_deleted_successfully,
                                confirmButtonText: "Ok",
                            },
                            function () {
                                if(pathSubsite === currentPath) {
                                    window.location = currentPath;
                                }
                                else {
                                    window.location.reload();
                                }
                            });
                        }
                        else {
                            swal({
                                title: "",
                                type: "warning",
                                text: jsonResult.log,
                                confirmButtonText: "Ok",
                            },
                            function () {
                                $('#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 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 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;
}

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);
                    }
                });
                
            }
            
        }

    });
}

;

/*
  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);
                        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({
            title: '',
            type: '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({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_subsite,
            type: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#DD6B55',
            confirmButtonText: window.translation.yes_delete_it,
            closeOnConfirm: true
        },
        function(){
            $.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({
                            title: "",
                            type: "success",
                            text: window.translation.subsite_deleted_successfully,
                            confirmButtonText: "Ok",
                        }, function () {
                            if(pathSubsite === currentPath) {
                                window.location = '/';
                            }
                            window.location.reload();
                        });
                    }
                    else {
                        swal({
                            title: "",
                            type: "warning",
                            text: jsonResult.log,
                            confirmButtonText: "Ok",
                        },
                        function () {
                            $('#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({
                    title: "",
                    type: "success",
                    text: window.translation.subsite_saved_successfully,
                    confirmButtonText: "Ok",
                },
                function () {
                    window.location.reload();
                });
            }
            else {
                swal({
                    title: "",
                    type: "warning",
                    text: jsonResult.log,
                    confirmButtonText: "Ok",
                },
                function () {
                    $('#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', '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();
}


function expandable_behaviors() {

    $('[data-expandable]').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);
        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');
            }
        }

        elem.on('click', function (e) {
            e.preventDefault();

            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;
        });


    });


};
$(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();
    validate_open_dropdown_menu();
    fix_image_opp_detail();
    fix_horizontal_menu();

    fix_sidebar_ut0();
    validate_message_in_savedsearches();
    page_space_validation();

});

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_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 > ul").first().length !== 0) {
            var menu_mobile = $("body .main-menu > 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');
        }
    } 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('/');
                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");
                    }
                }

            });
        }
        /*
                if ($('.menu-block.horizontal-menu').length > 0) {
                    var items = $('.menu-block.horizontal-menu ul.level-1 > li');
                    if (!items.hasClass('active')) {
                        items.first().addClass('active');
                    }
                }
        */

        if ($('.menu-block-wrapper').length > 0 && pathname !== "/") {
            // verifiying if not exits item active in main menu
            if ($(".menu-block-wrapper ul li.active").length === 0) {
                var last_page = getCookie("last-page-menu");
                if (last_page !== null || last_page !== "") {
                    $('.menu-block-wrapper ul a').each(function () {
                        var pathlink = $(this).attr('href').toLowerCase();
                        if (last_page.match('^' + pathlink + '$') !== null) {
                            $(this).parents("li").addClass("active");
                        }
                    });
                }

            } else {
                var infoCookie = "";
                // validating if page have menu active
                if ($(".menu-block-wrapper ul li.active a").length > 0) {
                    infoCookie = document.location.pathname;
                }

                setCookie('last-page-menu', infoCookie, 0.5);
            }

        }

    }
}

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);
    var hasParameter = false;
    if ($.urlParamGet('layoutViewMode')) {
        hasParameter = true;
    }
    /*if (urlParams.has('layoutViewMode') === true) {
        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)) {
            window.location = items[0] + currentparameters + "layoutViewMode=tablet";
        } else if (current_width <= 641 && ($('body.desktop').length > 0 || $('body.tablet').length > 0)) {
            window.location = items[0] + currentparameters + "layoutViewMode=mobile";
        } else if (current_width >= 1024 && ($('body.mobile').length > 0 || $('body.tablet').length > 0)) {
            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, '');
                    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);
                window.location = items[0] + currentparameters;
            }

        }
    }
    validate_links_mobile_tablet();
}

function validate_open_dropdown_menu() {

    var menuDropdown = ".dropdown-menu";
    var menuMixed = ".mixed-menu";

    //if ($(menuDropdown).length > 0) {
    //    var menuSelector = " li.is-dropdown-submenu-parent.is-active";
    //    $("body").mousemove(function (event) {
    //        var optionOpened = $(menuDropdown).find(menuSelector);
    //        if (optionOpened.length > 0) {
    //            var liSelector = 'ul li:hover';
    //            var liFound = $(menuDropdown).find(liSelector);
    //            if (liFound.length <= 0) {
    //                //not hovering in the menu!!!!
    //                optionOpened.removeClass('is-active');
    //                optionOpened.attr('aria-expanded', 'false');
    //                var uls = optionOpened.find('ul.is-dropdown-submenu.js-dropdown-active');
    //                uls.removeClass('js-dropdown-active');
    //            }
    //        }

    //    });
    //}

    //if ($(menuMixed).length > 0) {
    //    var menuSelector = ".menu-section-secondary li.is-dropdown-submenu-parent.is-active";
    //    $("body").mousemove(function (event) {
    //        var optionOpened = $(menuSelector);
    //        if (optionOpened.length > 0) {
    //            var liSelector = 'ul li:hover';
    //            var liFound = $('.menu-section-secondary').find(liSelector);
    //            if (liFound.length <= 0) {
    //                //not hovering in the menu!!!!
    //                optionOpened.removeClass('is-active');
    //                optionOpened.attr('aria-expanded', 'false');
    //                var uls = optionOpened.find('ul.is-dropdown-submenu.js-dropdown-active');
    //                uls.removeClass('js-dropdown-active');
    //            }

    //        }
    //    });
    //}

}

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);
    }
};
