Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/medad.corals.io/public/assets/corals/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/medad.corals.io/public/assets/corals/js/corals_functions.js
"use strict";

function initElements(isAjax) {
    $.ajaxSetup({
        beforeSend: function (xhr) {
            xhr.setRequestHeader('X-CSRF-TOKEN', $('meta[name="csrf-token"]').attr('content'));
        }
    });

    if ($.fn.iconpicker) {
        $('.icp-auto').iconpicker({
            animation: false
        });
    }

    $('[data-toggle="popover"]').popover();

    if (window.initFunctions) {
        $.each(window.initFunctions, function (index, element) {
            window[element]();
        });
        window.initFunctions = [];
    }

    if (window.Ladda) {
        Ladda.bind('button[type=submit]');
        Ladda.bind('.laddaBtn');
        Ladda.bind('[data-action]');
    }
    initSelect2Tree(isAjax);
    initCopyToClipBoard(isAjax);
    initLimitedText(isAjax);
    initFormIsDirty(isAjax);
    initFormLangSwitcher(isAjax);
    initializeCoralsDatetimePicker();
    initializeAutoCompleteSearch();
}

function initSelect2Tree(isAjax) {
    if (isAjax) {
        return;
    }
    if ($.fn.select2 && $.fn.select2ToTree) {
        $('.select2-tree').each(function () {
            let element = $(this);
            let options = element.data('options');
            element.select2ToTree({treeData: {dataArr: options}, allowClear: true});
        });
    }
}

function initCkeditor() {
    if (typeof CKEDITOR !== "undefined") {
        CKEDITOR.config.allowedContent = true;
        CKEDITOR.dtd.$removeEmpty['i'] = false;
        CKEDITOR.config.filebrowserBrowseUrl = '/file-manager/ckeditor';

        $('.ckeditor-simple').each(function (e) {
            if (CKEDITOR.instances[$(this).prop('id')]) {
                return;
            }

            CKEDITOR.replace($(this).prop('id'), {
                toolbarGroups: [
                    {name: 'document', groups: ['mode', 'document', 'doctools']},
                    {name: 'clipboard', groups: ['clipboard', 'undo']},
                    {name: 'editing', groups: ['find', 'selection', 'spellchecker', 'editing']},
                    {name: 'forms', groups: ['forms']},
                    {name: 'basicstyles', groups: ['basicstyles', 'cleanup']},
                    {name: 'paragraph', groups: ['list', 'indent', 'blocks', 'align', 'bidi', 'paragraph']},
                    {name: 'links', groups: ['links']},
                    {name: 'insert', groups: ['insert']},
                    {name: 'styles', groups: ['styles']},
                    {name: 'colors', groups: ['colors']},
                    '/',
                    '/',
                    {name: 'tools', groups: ['tools']},
                    {name: 'others', groups: ['others']},
                    {name: 'about', groups: ['about']}
                ],
                removeButtons: 'Save,NewPage,Preview,Print,Templates,Cut,Copy,Paste,PasteText,PasteFromWord,Undo,Redo,Find,Replace,SelectAll,Scayt,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,CopyFormatting,RemoveFormat,BidiLtr,BidiRtl,Language,Anchor,Flash,Table,HorizontalRule,Smiley,PageBreak,Iframe,Unlink,Maximize,ShowBlocks,About',
            });
        });
    }
}

function initLimitedText() {
    $('.limited-text').each(function () {
        var value = $(this).val();

        var limit = $(this).prop('maxlength');

        if (value.length == limit) {
            event.preventDefault();
        } else if (value.length > limit) {
            // Maximum exceeded
            value = value.substring(0, limit);
            $(this).val(value);
        }

        $(this).parent().find(".limit-counter").text(value.length);
    });
}

function initCopyToClipBoard() {
    if ($('.copy-button').length && window.Clipboard) {
        var clipboard = new Clipboard('.copy-button');
        clipboard.on('success', function (e) {
            // e.clearSelection();
            var message = {
                level: 'success',
                message: 'Copied to clipboard!'
            };
            themeNotify(message);
        });
    }
}


function initTabHash() {
    //init tabs hash
    let hash = window.location.hash;

    if (hash.length) {
        let hasURLParameters = hash.indexOf('?');//-1 if not exist
        let indexOfHash = hash.indexOf('#');

        if (hasURLParameters && hasURLParameters > indexOfHash) {
            hash = _.split(hash, '?')[0];
        }

        let $element = $('ul.nav a[href="' + hash + '"]');

        if ($element.length > 0) {
            $element.tab('show');
            let scroll = $element.offset().top - 150;
            $("html, body").animate({scrollTop: scroll});

        }
    }

    $('.nav-tabs a').on("click", function (e) {
        $(this).tab('show');
        changeHashWithoutScrolling(this.hash);

    });
}

function changeHashWithoutScrolling(hash) {
    var id;
    var elem;

    id = hash.replace(/^.*#/, '');

    if (id) {
        elem = document.getElementById(id);

        if (elem) {
            elem.id = id + '-tmp';
            window.location.hash = hash;
            elem.id = id;
        }
    }
}

function refreshDataTable(table) {
    var $table = $(table);
    if (undefined !== table && $table.length) {
        $table.DataTable().ajax.reload();
    } else {
        // site_reload();
    }
}

function ucfirst(string) {
    return string.charAt(0).toUpperCase() + string.slice(1);
}

function redirectTo(data) {
    setTimeout(function () {
        window.location.replace(data.url);
    }, 1000);
}

function site_reload() {
    setTimeout(function () {
        location.reload();
    }, 1000);
}


function clearContactForm(response, $form) {

    var form_contact = $('#main-contact-form');

    $('html, body').animate({
        scrollTop: form_contact.offset().top - 100
    }, 1000);

    $form[0].reset();
}


function clearForm(response, $form) {
    $form[0].reset();

    $($form).find('input[type=checkbox]').prop('checked', false);

    if ($.fn.iCheck) {
        $($form).find('input[type=checkbox]').iCheck('update');
    }
}

function closeModal(response, $form) {
    if (!$form) {
        return;
    }
    setTimeout(function () {
        if ($form.closest('.modal ').length) {
            clearForm(response, $form);
            $form.closest('.modal ').modal('hide');
        }
    }, 500);
}


/* Simulate Ajax call on Panel with reload effect */
function blockUI(item) {
    if ($.fn.block) {
        $(item).block({
            message: '<svg class="circular"><circle class="path" cx="40" cy="40" r="10" fill="none" stroke-width="2" stroke-miterlimit="10"/></svg>',
            css: {
                border: 'none',
                width: '14px',
                backgroundColor: 'none'
            },
            overlayCSS: {
                backgroundColor: '#fff',
                opacity: 0.6,
                cursor: 'wait'
            }
        });
    }
}

function unblockUI(item) {
    if ($.fn.unblock) {
        $(item).unblock();
    }
}

function readURL(area, input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
            if (area.find('.preview').length) {
                area.find('.preview').attr('src', e.target.result);
                area.find('.preview').removeClass('hidden');
            }
        };
        reader.readAsDataURL(input.files[0]);
    }
}

$(document).on("change", ".upload-file-area", function () {
    var $area = $(this);
    var $input = $("#" + $area.data('input'));

    if ($area.find(".file-name").length) {
        var fileNameSpan = $area.find(".file-name");

        var names = '';

        for (var i = 0; i < $input[0].files.length; ++i) {
            names += $input[0].files[i].name + ' | ';
        }
        names = _.trim(names, ' | ');

        fileNameSpan.text(names);
    }

    readURL($area, $input[0]);
});

$(document).on('click', '.modal-load ,[data-action="modal-load"]', function (e) {
    e.preventDefault();
    let title = $(this).data('title');
    let size = $(this).data('size');
    let view_url = $(this).attr('href');

    $('#global-modal .modal-header .modal-title').html(title);

    if (size) {
        $('#global-modal .modal-dialog').addClass(size);
    }

    $('#global-modal').modal();
    $('#modal-body-global-modal').html('<h3 class="text-center"> <i class="fa fa-spinner fa-spin"></i> loading...</h3>');

    $.get(view_url, function (data) {
        $('#modal-body-global-modal').html(data);
        initElements();
        initThemeElements();
        initSelect2ajax();
    });

    $('#global-modal').on('shown.bs.modal', function () {
    });

    $('#global-modal').on('hidden.bs.modal', function () {
        $('#global-modal .modal-body').data('');
        if (size) {
            $('#global-modal .modal-dialog').removeClass(size);
        }
    });
})

function clearFormValidationBeforeSubmit(form) {
    $('.has-error .help-block', form).html('');

    $('.form-group', form).removeClass('has-error');

    $('.nav.nav-tabs li a').removeClass('c-red');
}

function handleAjaxSubmitSuccess(response, textStatus, jqXHR, page_action, actionData, table, $form) {
    if ($form) {
        try {
            $form.prop('is_dirty', false);
        } catch (e) {

        }
    }

    if (response.message) {
        themeNotify(response);
    }

    if (response.csrf_token) {
        $('meta[name="csrf-token"]').attr('content', response.csrf_token);
        $('input[name="_token"]').val(response.csrf_token);

    }

    if (response.action) {
        window[response.action](response, $form);
    }

    if (undefined !== table) {
        refreshDataTable(table);
    }

    if (undefined !== page_action) {
        window[page_action](response, $form, actionData);
    }

    closeModal(response, $form);
}

function handleAjaxSubmitError(response, textStatus, jqXHR, $form) {
    if (response.status === 422) {
        var errors = $.parseJSON(response.responseText)['errors'];
        // Iterate through errors object.
        $.each(errors, function (field, message) {
            //console.error(field+': '+message);
            //handle arrays
            if (field.indexOf('.') !== -1) {
                field = field.replace('.', '[');
                //handle multi dimensional array
                for (let i = 1; i <= (field.match(/./g) || []).length; i++) {
                    field = field.replace('.', '][');
                }
                field = field + "]";
            }
            var formGroup = $('[name="' + field + '"]', $form).closest('.form-group');
            //Try array name
            if (formGroup.length === 0) {
                formGroup = $('[name="' + field + '[]"]', $form).closest('.form-group');
            }

            // try data-name
            if (formGroup.length === 0) {
                formGroup = $('[data-name="' + field + '"]', $form).closest('.form-group');
            }

            if (formGroup.length === 0) {
                field = field.replace(/[0-9]/, '');
                formGroup = $('[name="' + field + '"]', $form).closest('.form-group');
            }


            var tabIndex = formGroup.closest('.tab-pane').index();

            var panel = formGroup.closest('.panel').find('.panel-title').addClass('c-red');
            if (tabIndex >= 0) {
                $('.nav.nav-tabs li').eq(tabIndex).find('a').addClass('c-red');
            }
            formGroup.removeClass('hidden');

            formGroup.addClass('has-error has-danger').append('<small class="help-block form-control-feedback">' + message + '</small>');
        });
    }
    var data = {};
    data.message = $.parseJSON(response.responseText)['message'];
    data.level = 'error';
    themeNotify(data);

}

function divSubmit(div) {
    if (!div.length) {
        return
    }
    if (!div.data('url') || !div.data('method')) {
        return;
    }

    $('.has-error .help-block').html('');

    var page_action = div.data('page_action');
    var table = div.data('table');

    var actionData = div.data('action_data');

    var data = div.find('input, textarea, select').serializeArray();

    var formData = new FormData();

    $.each(data, function (index, element) {
        formData.append(element.name, element.value);
    });

    $.ajax({
        url: div.data('url'),
        type: div.data('method'),
        processData: false,
        contentType: false,
        dataType: 'json',
        data: formData,
        success: function (response, textStatus, jqXHR) {
            handleAjaxSubmitSuccess(response, textStatus, jqXHR, page_action, actionData, table)
        },
        error: function (response, textStatus, jqXHR) {
            handleAjaxSubmitError(response, textStatus, jqXHR, div);
        }
    });
}

function ajax_form($form) {

    clearFormValidationBeforeSubmit($form);

    var page_action = $form.data('page_action');

    var actionData = $form.data('action_data');

    var table = $form.data('table');

    var formData = new FormData($form.get(0));

    var button = $('button[name]:focus', $form);

    if (button.length) {
        formData.append(button.attr('name'), button.attr('value'));
    }

    var url = $form.attr('action');

    var confirmation_message = $form.data('confirmation');

    if (undefined !== confirmation_message) {
        themeConfirmation(
            corals.confirmation.title,
            confirmation_message,
            'info',
            corals.confirmation.yes,
            corals.confirmation.cancel,
            function () {
                $.ajax({
                    url: url,
                    type: 'POST',
                    data: formData,
                    cache: false,
                    processData: false,
                    contentType: false,
                    dataType: 'json',
                    success: function (response, textStatus, jqXHR) {
                        handleAjaxSubmitSuccess(response, textStatus, jqXHR, page_action, actionData, table, $form);
                    },
                    error: function (response, textStatus, jqXHR) {
                        handleAjaxSubmitError(response, textStatus, jqXHR, $form);
                        if (typeof grecaptcha !== 'undefined') {
                            grecaptcha.reset()

                        }
                    }
                });
            });
        return;
    }

    $.ajax({
        url: url,
        type: 'POST',
        data: formData,
        cache: false,
        processData: false,
        contentType: false,
        dataType: 'json',
        success: function (response, textStatus, jqXHR) {
            handleAjaxSubmitSuccess(response, textStatus, jqXHR, page_action, actionData, table, $form);
        },
        error: function (response, textStatus, jqXHR) {
            handleAjaxSubmitError(response, textStatus, jqXHR, $form);
            if (typeof grecaptcha !== 'undefined') {
                grecaptcha.reset()
            }
        }
    });
}

function ajaxRequest(url, requestData, table, page_action, method) {
    $.ajax({
        url: url,
        type: method,
        processData: false,
        contentType: false,
        dataType: 'json',
        data: JSON.stringify(requestData),
        success: function (data, textStatus, jqXHR) {
            themeNotify(data);

            if (undefined !== table) {
                refreshDataTable(table);
            }
            if (undefined !== page_action) {
                window[page_action](data);
            }
        },
        error: function (data, textStatus, jqXHR) {
            themeNotify(data);
        }
    });
}

function openInNewWindow(url, title) {
    event.preventDefault();
    var newWindow = window.open(url, title, 'height=480,width=640,top=200,left=300,resizable');

    if (window.focus) {
        newWindow.focus();
    }
}

function getURLSearchParameters() {
    let searchParameters = window.location.search.substr(1);

    let params = {};

    if (searchParameters !== null && searchParameters !== "") {

        let parametersArray = searchParameters.split("&");

        for (let i = 0; i < parametersArray.length; i++) {
            let parameter = parametersArray[i].split("=");
            params[parameter[0]] = parameter[1];
        }
    }

    return params;
}

function translateFormFields(response) {
    let form = $('[data-hashed_id="' + response.hashed_id + '"]').closest('form');

    if (!form.length) {
        return;
    }

    let translateables = response.translateables;

    $.each(translateables, function (fieldId, value) {
        $("#" + fieldId, form).val(value);
        $("#" + fieldId, form).prop('is_dirty', false);
    });

    if (window.CKEDITOR) {

        for (var i in CKEDITOR.instances) {
            let textarea_name = CKEDITOR.instances[i].name;


            let $textarea = $('textarea[name="' + textarea_name + '"]');

            let path = textarea_name.replace('[', '.');

            path = path.replace(']', '');

            if (_.get(translateables, path) !== undefined) {
                CKEDITOR.instances[i].setData(_.get(translateables, path));
                CKEDITOR.instances[i].updateElement();
            }
        }
    }

}

function switchFormFieldsTranslation(response, form, action_data) {

    let langCodeSelected = action_data.langCodeSelected;
    let activeLangCode = action_data.activeLangCode;
    let model = action_data.model;
    let hashed_id = action_data.hashed_id;

    activeLangCode.val(langCodeSelected);

    let url = '/get-model-translation';

    let requestData = {
        model: model,
        lang_code: langCodeSelected,
        hashed_id: hashed_id
    };

    let page_action = 'translateFormFields';

    ajaxRequest(url, requestData, undefined, page_action, 'POST');

    $('.form_language_switcher .btn', form).removeClass('current-lang btn-success');

    $('[data-lang_code="' + langCodeSelected + '"]').addClass('current-lang btn-default btn-secondary');

    initFormLangSwitcher();

    form.data('action_data', form.data('old_action_data'));
    form.data('page_action', form.data('old_page_action'));

    $("input[name=translation_submit]", form).remove();
}

function initFormLangSwitcher() {
    $('.current-lang').addClass('btn-success').removeClass('btn-default btn-secondary');
}

function initFormIsDirty() {
    $('form input, form select, form textarea, form input[type="checkbox"], form input[type="radio"]').not('.ignore-dirty-state').change(function () {
        $(this).prop('is_dirty', true);
        $(this).closest('form').prop('is_dirty', true);
    });

    if (window.CKEDITOR) {
        for (var i in CKEDITOR.instances) {
            addCKeditorUpdate(i);
        }
    }
}

function addCKeditorUpdate(instance) {
    CKEDITOR.instances[instance].on('key', function (event) {
        let textarea_name = CKEDITOR.instances[instance].name;
        CKEDITOR.instances[instance].updateElement();
        let $textarea = $('textarea[name="' + textarea_name + '"]');
        $textarea.prop('is_dirty', true);
        $textarea.closest('form').prop('is_dirty', true);

    });
}

function isFormDirty(form) {
    return !!$(form).prop('is_dirty');
}

function filters(tableId) {
    var filters = $(tableId + "_filters" + ' .filter');

    var serialized = filters.serialize();

    return {'filters': serialized};
}

function jQueryBuilderFilters(tableId) {

    try {
        var filters = $(tableId + "_filters").queryBuilder('getRules');

        let url = window.location.href.split('?')[0];


        if (filters) {
            url = `${url}?${jQuery.param({'q': filters})}`;
        }

        window.history.pushState(null, null, url);


        return filters;
    } catch (e) {
        return {};
    }

}

$(document).on('click', '.clearBtn', function (e) {
    var tableId = $(this).data('table');
    var filtersId = "#" + tableId + "_filters";

    e.preventDefault();

    $(filtersId + ' input:not(:checkbox)').val("");

    $(filtersId + ' select').val("").trigger('change');

    $(':checkbox').prop('checked', false);

    if ($.fn.iCheck) {
        $(filtersId + ' input[type="checkbox"]').iCheck('update');
    }

    window.LaravelDataTables[tableId].draw();
});

$(document).on('click', '.filterBtn', function (e) {
    e.preventDefault();

    var tableId = $(this).data('table');

    window.LaravelDataTables[tableId].draw();
});


$(document).on('keypress', '.filtersCollapse input', function (e) {

    if (e.keyCode === 13) {
        $('.filtersCollapse input').change();
        $('.filterBtn').trigger('click')
    }
});

$(document).on('shown.bs.collapse', ".filtersCollapse", function (e) {
    var filtersCollapseHref = "#" + $(this).attr('id');
    var $filterCollapseBtn = $("a[href='" + filtersCollapseHref + "']");
    $filterCollapseBtn.html(corals.filter_close);
    $filterCollapseBtn.removeClass('btn-info');
    $filterCollapseBtn.addClass('btn-warning');
});

$(document).on('hidden.bs.collapse', ".filtersCollapse", function (e) {
    var filtersCollapseHref = "#" + $(this).attr('id');
    var $filterCollapseBtn = $("a[href='" + filtersCollapseHref + "']");
    $filterCollapseBtn.html(corals.filter_open);
    $filterCollapseBtn.removeClass('btn-warning');
    $filterCollapseBtn.addClass('btn-info');
});

function updateParentObjectField(parents, parent_type, parentObject) {
    parent_type.change(function () {
        let selectedType = $(this).val();

        if (_.isEmpty(selectedType)) {
            return;
        }

        let parent = parents[selectedType];
        parentObject.select2('val', null);

        parentObject.data('model', parent['model_class']);
        parentObject.data('columns', parent['columns']);
        parentObject.data('where', parent['where']);
        parentObject.data('scopes', parent.hasOwnProperty('scopes') ? parent['scopes'] : []);
    });
}

function parse_str(str, array) {

    var strArr = String(str).replace(/^&/, '').replace(/&$/, '').split('&')
    var sal = strArr.length
    var i
    var j
    var ct
    var p
    var lastObj
    var obj
    var chr
    var tmp
    var key
    var value
    var postLeftBracketPos
    var keys
    var keysLen

    var _fixStr = function (str) {
        return decodeURIComponent(str.replace(/\+/g, '%20'))
    }

    var $global = (typeof window !== 'undefined' ? window : global)
    $global.$locutus = $global.$locutus || {}
    var $locutus = $global.$locutus
    $locutus.php = $locutus.php || {}

    if (!array) {
        array = $global
    }

    for (i = 0; i < sal; i++) {
        tmp = strArr[i].split('=')
        key = _fixStr(tmp[0])
        value = (tmp.length < 2) ? '' : _fixStr(tmp[1])

        while (key.charAt(0) === ' ') {
            key = key.slice(1)
        }

        if (key.indexOf('\x00') > -1) {
            key = key.slice(0, key.indexOf('\x00'))
        }

        if (key && key.charAt(0) !== '[') {
            keys = []
            postLeftBracketPos = 0

            for (j = 0; j < key.length; j++) {
                if (key.charAt(j) === '[' && !postLeftBracketPos) {
                    postLeftBracketPos = j + 1
                } else if (key.charAt(j) === ']') {
                    if (postLeftBracketPos) {
                        if (!keys.length) {
                            keys.push(key.slice(0, postLeftBracketPos - 1))
                        }

                        keys.push(key.substr(postLeftBracketPos, j - postLeftBracketPos))
                        postLeftBracketPos = 0

                        if (key.charAt(j + 1) !== '[') {
                            break
                        }
                    }
                }
            }

            if (!keys.length) {
                keys = [key]
            }

            for (j = 0; j < keys[0].length; j++) {
                chr = keys[0].charAt(j)

                if (chr === ' ' || chr === '.' || chr === '[') {
                    keys[0] = keys[0].substr(0, j) + '_' + keys[0].substr(j + 1)
                }

                if (chr === '[') {
                    break
                }
            }

            obj = array

            for (j = 0, keysLen = keys.length; j < keysLen; j++) {
                key = keys[j].replace(/^['"]/, '').replace(/['"]$/, '')
                lastObj = obj

                if ((key === '' || key === ' ') && j !== 0) {
                    // Insert new dimension
                    ct = -1

                    for (p in obj) {
                        if (obj.hasOwnProperty(p)) {
                            if (+p > ct && p.match(/^\d+$/g)) {
                                ct = +p
                            }
                        }
                    }

                    key = ct + 1
                }

                // if primitive value, replace with object
                if (Object(obj[key]) !== obj[key]) {
                    obj[key] = []
                }

                obj = obj[key]
            }

            lastObj[key] = value
        }
    }
}

function initializeCoralsDatetimePicker() {
    $('.coralsDatetimePicker .time-picker, .coralsDatetimePicker .corals-datepicker').on('change', function () {

        let hoursMinutesValue, dateVale;

        if ($(this).hasClass('time-picker')) {
            hoursMinutesValue = $(this).val();
            dateVale = $(this).closest('.coralsDatetimePicker').find('.corals-datepicker').val();
        } else {
            dateVale = $(this).val();
            hoursMinutesValue = $(this).closest('.coralsDatetimePicker').find('.time-picker').val();
        }

        let fullDateTime = dateVale + (hoursMinutesValue == null ? '' : (' ' + hoursMinutesValue));

        if (dateVale && hoursMinutesValue) {
            $(this).closest('.coralsDatetimePicker').find(".datetime-hidden")
                .val(fullDateTime)
                .trigger('change');
        }
    });

    $('.coralsDatetimePicker .time-picker').each(function () {

        if ($(this).data('timepicker-init')) {
            return;
        }

        let startHour = $(this).data('start_hour') ? $(this).data('start_hour') : 0,
            minutesStep = $(this).data('minutes_step') ? $(this).data('minutes_step') : 30,
            lastHour = $(this).data('last_hour') ? $(this).data('last_hour') : 24,
            displayTime, timeValue,
            timeElement = $(this),
            timeValuesArray = [];

        for (let hour = startHour; hour < lastHour; hour++) {
            for (let minutes = 0; minutes <= 59; minutes += minutesStep) {

                timeValue = moment().hour(hour).minute(minutes).seconds(0).format('HH:mm:ss');
                displayTime = moment().hour(hour).minute(minutes).format('hh:mm A');

                timeValuesArray.push(timeValue);

                timeElement.append(`<option value="${timeValue}">${displayTime}</option>`);
            }
        }

        //set the values
        let datetimeValue = $(this).closest('.coralsDatetimePicker').find(".datetime-hidden").val(),
            fullDatetime = datetimeValue.split(" "),
            bDatepicker = $(this).closest('.coralsDatetimePicker').find('.corals-datepicker'),
            momentDate = moment(fullDatetime[0], corals.dateInputFormat).format(corals.dateInputFormat);

        if (momentDate === 'Invalid date') {
            momentDate = moment(fullDatetime[0]).format(corals.dateInputFormat);
        }

        if (momentDate === 'Invalid date') {
            return;
        }

        bDatepicker.val(momentDate);


        if (fullDatetime[1] === undefined || !timeValuesArray.includes(fullDatetime[1])) {
            fullDatetime[1] = '';//corals.defaultSelectedHour;
        }

        timeElement.val(fullDatetime[1]);

        timeElement.trigger('change');

        $(this).data('timepicker-init', true);

        let dependWith = bDatepicker.data('depend_with');

        if (dependWith) {
            let targetDatetimePicker = $(dependWith).closest('.coralsDatetimePicker').find('.corals-datepicker');

            $(targetDatetimePicker).datepicker('setStartDate', momentDate);

            if (fullDatetime[0] > targetDatetimePicker.val()) {
                targetDatetimePicker.val(null);
            }
        }
    });
}

function initializeAutoCompleteSearch() {
    if ($.fn.autoComplete) {
        $('.auto-complete').each(function () {
            let $el = $(this);
            $el.autoComplete({
                resolver: 'custom',
                bootstrapVersion: $el.data('bs') ?? 'auto',
                formatResult: function (item) {
                    return {
                        value: item.id,
                        text: item.name,
                        html: [
                            $('<img>').attr('src', item.image).css("height", 18), ' ',
                            item.name
                        ]
                    };
                },
                events: {
                    search: function (qry, callback) {
                        // let's do a custom ajax call
                        $.ajax(
                            $el.data('url'),
                            {
                                data: {'search': qry}
                            }
                        ).done(function (res) {
                            callback(res.results)
                        });
                    }
                }
            });

            $el.on('autocomplete.select', function (evt, item) {
                $(location).attr('href', item.url)
            });

        });
    }
}

Spamworldpro Mini