// Global CSRF token setup — runs immediately so inline AJAX calls also get the header (function() { var csrfToken = document.querySelector('meta[name="csrf-token"]'); if (csrfToken) { $.ajaxSetup({ headers: { 'X-CSRF-Token': csrfToken.getAttribute('content') } }); } // Global handler: redirect to CSRF expired page when token is invalid $(document).ajaxError(function(event, jqXHR, ajaxSettings, thrownError) { if (jqXHR.status === 403) { try { var response = typeof jqXHR.responseJSON !== 'undefined' ? jqXHR.responseJSON : JSON.parse(jqXHR.responseText); if (response && response.csrf_expired) { window.location.href = window.location.pathname + '?session_expired=1'; return; } } catch (e) { // Not JSON — check if the response body contains the CSRF expired page if (jqXHR.responseText && jqXHR.responseText.indexOf('csrf_expired') > -1) { window.location.href = window.location.pathname + '?session_expired=1'; return; } } } }); })(); (function($) { if (!$ || !$.fn || !$.fn.bootstrapTable) { return; } var originalBootstrapTable = $.fn.bootstrapTable; function bootstrapTableWithFooterDetection() { if (typeof arguments[0] !== 'string') { this.each(function() { var $table = $(this); if (!$table.attr('data-show-footer') && $table.find('tfoot tr').length) { $table.attr('data-show-footer', 'true'); } }); } return originalBootstrapTable.apply(this, arguments); } $.extend(bootstrapTableWithFooterDetection, originalBootstrapTable); bootstrapTableWithFooterDetection.Constructor = originalBootstrapTable.Constructor; bootstrapTableWithFooterDetection.defaults = originalBootstrapTable.defaults; bootstrapTableWithFooterDetection.columnDefaults = originalBootstrapTable.columnDefaults; bootstrapTableWithFooterDetection.events = originalBootstrapTable.events; bootstrapTableWithFooterDetection.locales = originalBootstrapTable.locales; bootstrapTableWithFooterDetection.methods = originalBootstrapTable.methods; bootstrapTableWithFooterDetection.utils = originalBootstrapTable.utils; $.fn.bootstrapTable = bootstrapTableWithFooterDetection; })(window.jQuery); function acctValidateForm(inputs, form_id='') { var valid = true; // iterate over the form controls if(form_id!='') { form_id = '#'+form_id; for (i = 0; i < inputs.length; i++) { if (inputs[i].nodeName === "INPUT") { if(inputs[i].hasAttribute("required") || inputs[i].getAttribute("required") === 'required' || inputs[i].getAttribute("required") === '1') { check_type = inputs[i].getAttribute("type"); if(check_type == 'checkbox') { id = inputs[i].getAttribute("id"); var yes = document.getElementById(id); if (yes.checked == true){ $("."+id+".required").removeClass('has-error'); $(form_id+" "+".required").removeClass('show-Error'); valid = true; } else { $(form_id+" "+".required").addClass('show-Error'); valid = false; } } else if(check_type == 'file') { id = inputs[i].getAttribute("id"); var fileInput = document.getElementById(id); var filePath = fileInput.value; // Allowing file type var allowedExtensions = /(\.csv|\.dat|\.prm)$/i; if (!allowedExtensions.exec(filePath)) { $("."+id+" .error-message").removeClass("hide"); $(".required").addClass('has-error'); return false; } } else if(!inputs[i].value) { $(form_id+" "+"input[name="+inputs[i].getAttribute("name")+"]").css('border-color','#ff0000'); //$(form_id+" "+".required").addClass('show-Error'); $(inputs[i]).parent().addClass('show-Error'); valid = false; } else { $(form_id+" "+"input[name="+inputs[i].getAttribute("name")+"]").css('border-color','#ccc'); $(".required").removeClass('has-error'); // $(form_id+" "+".required").removeClass('show-Error'); $(inputs[i]).parent().removeClass('show-Error'); //$(".required").css('border-color','#ccc'); } } } if (inputs[i].nodeName === "TEXTAREA") { if(inputs[i].getAttribute("required") === 'required' || inputs[i].getAttribute("required") === '1') { if(!inputs[i].value) { //$("textarea[name="+inputs[i].getAttribute("name")+"]").css('border-color','#ff0000'); $(form_id+" "+".required").addClass('show-Error'); valid = false; } else { $(form_id+" "+".required").removeClass('show-Error'); $("#"+inputs[i].getAttribute("id")).css('border-color','#ccc'); } } } if (inputs[i].nodeName === "SELECT") { if( inputs[i].getAttribute("required") === 'required' || inputs[i].getAttribute("required") === '1') { var class_name = inputs[i].getAttribute("id"); if(!inputs[i].value || inputs[i].value == 0 || inputs[i].value === '') { $(form_id+" "+"#"+inputs[i].getAttribute("id")).css('border-color','#ff0000'); $(inputs[i]).parent().addClass('show-Error'); //$(form_id+" "+".required").addClass('show-Error'); $('.required'+'.'+class_name+' .select2-selection').css('border-color','#ff0000'); valid = false; } else { //$(form_id+" "+".required").removeClass('show-Error'); $(inputs[i]).parent().removeClass('show-Error'); $(form_id+" "+"#"+inputs[i].getAttribute("id")).css('border-color','#ccc'); $('.required'+'.'+class_name+' .select2-selection').css('border-color','#ccc'); if($('.select2-selection__rendered').children('.select2-selection__choice').length > 0) { $("."+inputs[i].getAttribute("id")+' .select2-selection').css('border-color','#aaa'); } } } } } } else { for (i = 0; i < inputs.length; i++) { if (inputs[i].nodeName === "INPUT") { if(inputs[i].hasAttribute("required") || inputs[i].getAttribute("required") === 'required' || inputs[i].getAttribute("required") === '1') { check_type = inputs[i].getAttribute("type"); if(check_type == 'checkbox') { id = inputs[i].getAttribute("id"); var yes = document.getElementById(id); if (yes.checked == true){ $("."+id+".required").removeClass('has-error'); valid = true; } else { $(".required").addClass('has-error'); valid = false; } } else if(check_type == 'file') { id = inputs[i].getAttribute("id"); var fileInput = document.getElementById(id); var filePath = fileInput.value; // Allowing file type var allowedExtensions = /(\.csv|\.dat|\.prm)$/i; if (!allowedExtensions.exec(filePath)) { $("."+id+" .error-message").removeClass("hide"); $(".required").addClass('has-error'); return false; } } else if(!inputs[i].value) { $("input[name="+inputs[i].getAttribute("name")+"]").css('border-color','#ff0000'); $(".required").css('border-color','#ff0000'); valid = false; } else { $("input[name="+inputs[i].getAttribute("name")+"]").css('border-color','#ccc'); $(".required").removeClass('has-error'); //$(".required").css('border-color','#ccc'); } } } if (inputs[i].nodeName === "TEXTAREA") { if(inputs[i].getAttribute("required") === 'required' || inputs[i].getAttribute("required") === '1') { if(!inputs[i].value) { $("textarea[name="+inputs[i].getAttribute("name")+"]").css('border-color','#ff0000'); valid = false; } else { $("#"+inputs[i].getAttribute("id")).css('border-color','#ccc'); } } } if (inputs[i].nodeName === "SELECT") { if( inputs[i].getAttribute("required") === 'required' || inputs[i].getAttribute("required") === '1') { var class_name = inputs[i].getAttribute("id"); if(!inputs[i].value || inputs[i].value == 0 || inputs[i].value === '') { $("#"+inputs[i].getAttribute("id")).css('border-color','#ff0000'); $('.required'+'.'+class_name+' .select2-selection').css('border-color','#ff0000'); valid = false; } else { $("#"+inputs[i].getAttribute("id")).css('border-color','#ccc'); $('.required'+'.'+class_name+' .select2-selection').css('border-color','#ccc'); if($('.select2-selection__rendered').children('.select2-selection__choice').length > 0) { $("."+inputs[i].getAttribute("id")+' .select2-selection').css('border-color','#aaa'); } } } } } } $('input, select, textarea').on('focus input change', function(e){ $(this).parents('.required').removeClass('show-Error'); }); if ($('#acct .vatnum_validation').length > 0 ) { vatnum_validation = $('#acct .vatnum_validation').val(); if (vatnum_validation !='') { if($.isNumeric(vatnum_validation) == false || vatnum_validation.length < 9) { $('.vatnum_validation').addClass('has-error'); $('.vatnum_validation').addClass('error-message'); if ($('#customer_vatnum_error-message').length == 0) { $('.vatnum_validation').next('label').after(""+$('#company_vat_error_message').html()+""); } valid = false; } else { if ($('.vatnum_validation').hasClass('has-error')) { $('.vatnum_validation').removeClass('has-error'); } if ($('.vatnum_validation').hasClass('error-message')) { $('.vatnum_validation').removeClass('error-message'); } if ($('#customer_vatnum_error-message').length > 0) { $('#customer_vatnum_error-message').remove(); } valid = true; } } } return valid; } function checkValidateInput(inputs, input_id) { var valid = true; if(inputs=='') { $('#'+input_id).css('border-color','#ff0000'); valid = false; } return valid; } function OpenPopup(e, num = ''){ $('body').addClass('body-loader'); data_url = $(e).attr('data-url'); var return_url = $(e).attr('data-return-url'); $.ajax({ type : "GET", url : data_url, success: function (data) { $('#my-modal-3').html(data); $("#my-modal-3").modal('show'); //console.log($('#AC'+num).val()); // This code used for item selection if ($(e).hasClass('item_section')) { $('#add_item_row').val(''); $('#call_from').val(''); call_from = $('.docsadmin_new_item').attr('call_from'); $('#call_from').val(call_from); if (call_from == 'item_modal_no_found_create_new_item_action' || call_from == 'item_modal_new_item_add_action') { if ($('.docsadmin_new_item').length > 0) { $('.itemname_docsadmin').val($('.docsadmin_new_item').attr('data_item_num')); $('#add_item_row').val('1'); //If this input value 1 then add new item row docsadmin item table } } else { var acc_data = $('#AC'+num).val(); //If not item found then we set search item name //if (typeof acc_data !== 'undefined' && acc_data[0].data_custom_attribue =='no_item') { if (typeof acc_data !== 'undefined') { if ($(e).hasClass('create_new_row_btn')) { $('.itemname_docsadmin').val($('#AC_label_'+num).val()); $('#call_from').val('item_row_no_found_create_new_item'); } else { $('#call_from').val('create_new_item_for_row'); } //$('#AC_label_'+num).val(''); } } } if ($(e).hasClass('_open_popup')) { $("input[name=itemname]").val($('#act').val()); } if(return_url) { $('.status-change-btn').attr('data-return-url', return_url); } }, error: function(errorThrown){ $('body').removeClass('body-loader'); myswal('','Something Wrong, Please check try again', 'error'); } }).done(function (data) { $('body').removeClass('body-loader'); }); } function checkValidation(form) { form.find('input, textarea, select').each( function () { var id_input = $(this).attr('id'); $(this).removeClass('alert'); $(this).removeClass('alert-danger'); $(this).removeClass('ErrorElement'); $(this).removeClass('ErrorElement-input'); //$('#'+id_input+'_error-message').remove(); //if (id_input=='total' && $('#'+id_input).val()!='' && ( $('#'+id_input).val()>0 || $('#'+id_input).val()<0)) { if (id_input=='total' && $('#'+id_input).val() > 0) { $('#'+id_input+'_error-message').remove(); } }); } (function($) { $.fn.invisible = function() { return this.each(function() { $(this).css("visibility", "hidden"); }); }; $.fn.visible = function() { return this.each(function() { $(this).css("visibility", "visible"); }); }; }(jQuery)); $( document ).ready(function() { $('input').on('focus', function(e){ cls = $(this).attr('id'); //$('.'+cls).addClass('hide'); $(this).css('border-color','#dadada'); }); $('input:not(.doc-total), textarea, select').on('change', function (event) { var form = $(this).parents("form"); checkValidation(form); }); $('#total').on('blur focus change input', function (event) { var id_input = $(this).attr('id'); //if ($(this).val()!='' && ( $(this).val()>0 || $(this).val()<0)) { if ($(this).val() > 0) { $('#'+id_input+'_error-message').remove(); } else if( $(this).val() == $('#rcptsum').val() ) { $('.total_match_error').remove(); } }); $('#question_mode-tab').click(function(){ const originalHeight = document.body.clientHeight; $('#survey_answer').find('.slideform-slide').css('height', originalHeight); }); /* * Binds for checkbox and radio buttons, to enable or disable behaviors */ $('form .options-buttons input[type=radio] + span, form .options-buttons input[type=checkbox] + span').on( 'click', function() { // Getting our element behind the span. var input = $(this).prev(); if ( (input.attr('type') != 'radio' || !input.is(':checked')) && !input.is(':disabled') ) { input.prop('checked', !input.is(':checked') ).change(); } }); /*$('.open-popup').click(() => $('#pop-up-modal').modal({ show: true }));*/ $(document).ready(function(){ $(".open-sub-popup").click(function(){ data_url = $(this).attr('data-url'); var data_data = $(this).attr('data-data'); var data_label = $(this).attr('data-label'); var data_id = $(this).attr('data_id'); var data_element_id = $(this).attr('data_element_id'); var return_url = $(this).attr('return-url'); var parent_num = $(this).attr('parent_num'); $('body').addClass('body-loader'); $.ajax({ type : "GET", url : data_url, success: function (data) { $('body').removeClass('body-loader'); $('#my-modal-2').html(data); $("#my-modal-2").modal('show'); if(data_data == 'annual_form') { $('.save-btn').attr('data-data', 'annual_form'); } else if(data_data == 'annual_income_form') { setTimeout(function(){ if(parent_num>0) { $('#parent_num_cust_id').val(parent_num); } if(return_url) { $('#return_url').val(return_url); } }, 250); $('.save-btn').attr('data-data', 'annual_income_form'); $('.save-btn').attr('return-url', return_url); $('.save-btn').attr('data_label', data_label); } else if(data_data == 'dynamic_id_update') { $('.save-btn').attr('data-data', 'dynamic_id_update'); $('.save-btn').attr('data_id', data_id); $('.save-btn').attr('data_element_id', data_element_id); $('.save-btn').attr('data_label', data_label); } // If docsadmin step form active then this code use for generic item if ($('#new_customer_popup').is(":visible")) { if ($('#customer_num').val() !='') { data_customer_num = $("#customer_num").attr('data_customer_num'); if (data_customer_num =='') { $('.docsadmin_company').val($('#customer_num').val()); } } $('.save-btn').attr('data_label', data_label); } else { if ($('#acc_num_label').val() !='' && $('#documenet #company').val() == '') { $('.docsadmin_company').val($('#acc_num_label').val()); } // pass dynamic label name element $('.save-btn').attr('data_label', data_label); } }, error: function(errorThrown){ $('body').removeClass('body-loader'); myswal('','Something Wrong, Please check try again', 'error'); } }).done(function (data) { $('body').removeClass('body-loader'); }); }); }); $(document).on('hidden.bs.modal', '#tourModal', function() { $("iframe").attr('src',''); }); $(document).on('hidden.bs.modal', '#pop-up-modal', function() { $("iframe").attr('src',''); }); $(document).on('show.bs.modal', '.modal', function() { const zIndex = 1040 + 10 * $('.modal:visible').length; $(this).css('z-index', zIndex); setTimeout(() => $('.modal-backdrop').not('.modal-stack').css('z-index', zIndex - 1).addClass('modal-stack')); }); //$( ".open-popup" ).bind( "click", function() { $(document).on('click', '.open-popup', function() { data_url = $(this).attr('data-url'); var data_data = $(this).attr('data-data'); var return_url = $(this).attr('return-url'); var parent_num = $(this).attr('parent_num'); $('body').addClass('body-loader'); $.ajax({ type : "GET", url : data_url, success: function (data) { $('body').removeClass('body-loader'); $('#pop-up-modal').html(data); $("#pop-up-modal").modal('show'); if(data_data == 'annual_form') { $('.save-btn').attr('data-data', 'annual_form'); } else if(data_data == 'annual_income_form') { setTimeout(function(){ if(parent_num>0) { $('#parent_num_cust_id').val(parent_num); } if(return_url) { $('#return_url').val(return_url); } }, 250); $('.save-btn').attr('data-data', 'annual_income_form'); $('.save-btn').attr('return-url', return_url); } if ($('#acc').val() !='' && $('#documenet #company').val() == '') { $('.docsadmin_company').val($('#acc').val()); } }, error: function(errorThrown){ $('body').removeClass('body-loader'); myswal('','Something Wrong, Please check try again', 'error'); } }).done(function (data) { $('body').removeClass('body-loader'); }); }); $(document).on('click', '.open-copy-doc-popup', function() { account = $("#acc").val(); if(account=='') { myswal('','אנא בחר לקוח', 'error'); return 0; } data_url = $(this).attr('data-url'); $('body').addClass('body-loader'); $.ajax({ type : "GET", url : data_url, data :{'account':account}, success: function (data) { $('body').removeClass('body-loader'); $('#pop-up-modal').html(data); $("#pop-up-modal").modal('show'); }, error: function(errorThrown){ $('body').removeClass('body-loader'); myswal('','משהו השתבש, אנא נסה שנית', 'error'); } }).done(function (data) { $('body').removeClass('body-loader'); }); }); $( ".no-pastdate" ).datepicker("option", "minDate", "0" ); $( ".no-futuredate" ).datepicker("option", "maxDate", "0" ); var $window = $(window).on('resize', function(){ $('.loader').height($('body').height()); }).trigger('resize'); //on page load }); function hideErrorMsg() { $('#error_msg').delay(4000).fadeOut(); } function removeErrorClass(e) { $(e).removeClass('alert'); $(e).removeClass('alert-danger'); $(e).removeClass('ErrorElement'); $(e).removeClass('ErrorElement-input'); } function removeErrorClassAll() { $('input').each(function(){ if(!$(this).hasClass('error')) removeErrorClass(this); }); //$(e).removeClass('alert'); //$(e).removeClass('alert-danger'); //$(e).removeClass('ErrorElement'); } function numberonly(e) { var maxnumber = parseInt($(e).attr('maxnumber')); var minumber = parseInt($(e).attr('min')); var maxlength = parseInt($(e).attr('maxlength')); var regex = /[0-9]|\./; if (maxnumber && parseInt(e.value) > maxnumber) { $(e).val(maxnumber) ;//= $(e).value.slice(0, maxnumber); } else if(minumber && parseInt(e.value) < minumber){ $(e).val(minumber) ; } else if(maxlength && parseInt(e.value.length) > maxlength){ if(maxnumber) { $(e).val(maxnumber) ; } else { $(e).val(0); } } else if( !regex.test(e.value) ) { $(e).val('') ; } } $(document).on('click', '.pdf_preview', function(e){ var file_path = $(this).attr('href'); window.open(file_path, '_blank'); return; e.preventDefault(); var fileName = $(this).attr('data-name'); //Set the File URL. var url = file_path; if(fileName!='') { fileName = fileName+".pdf"; } else { fileName = "AccountIt_download_pdf.pdf"; } $.ajax({ url: url, cache: false, xhr: function () { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 2) { if (xhr.status == 200) { xhr.responseType = "blob"; } else { xhr.responseType = "text"; } } }; return xhr; }, success: function (data) { //Convert the Byte Data to BLOB object. var blob = new Blob([data], { type: "application/octetstream" }); //Check the Browser type and download the File. var isIE = false || !!document.documentMode; if (isIE) { window.navigator.msSaveBlob(blob, fileName); } else { var url = window.URL || window.webkitURL; link = url.createObjectURL(blob); var a = $(""); a.attr("download", fileName); a.attr("href", link); $("body").append(a); a[0].click(); $("body").remove(a); } } }); }); $(document).on('click', '.panel-toggle > .panel-heading:not(.toggel-heading)', function(e){ var $this = $(this); if(!$this.hasClass('panel-collapsed')) { $this.parents('.panel').find('.panel-body').slideUp(); $this.addClass('panel-collapsed'); $this.find('i').removeClass('glyphicon-chevron-up').addClass('glyphicon-chevron-down'); } else { // $this.parents('.panel').find('.panel-hide').css("display", "block"); $this.parents('.panel').find('.panel-body').slideDown(); $this.removeClass('panel-collapsed'); $this.find('i').removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-up'); } }); function deleteRow(e) { var URL = $(e).attr('data-url'); var return_url = $(e).attr('data-return-url'); var title = $(e).attr('data-title'); if (title) { } else { title ='האם אתה בטוח?'; } Swal.fire({ title: title, showDenyButton: false, showCancelButton: true, confirmButtonText: 'כן', icon: 'warning', cancelButtonText: 'ביטול', }).then((result) => { if (result) { if(result.value) { $('body').addClass('body-loader'); $.ajax({ url: URL, type: "GET", success: function(data){ $('body').removeClass('body-loader'); if(return_url) { delay(40).then(function(){ if (return_url.indexOf('#') > -1) { window.location.href = return_url; location.reload(true); } else { window.location.href = return_url; } }); } else { location.reload(true); } },error: function(errorThrown){ $('body').removeClass('body-loader'); } }); } } }); } function mvcAction(e) { let URL = $(e).attr('data-url'); let title = $(e).attr('data-title'); var return_url = $(e).attr('data-return-url'); if (typeof title !== 'undefined' && title != '' && title !==null) { } else { title ='האם אתה בטוח?'; } Swal.fire({ title: title, showDenyButton: false, showCancelButton: true, confirmButtonText: 'כן', icon: 'info', cancelButtonText: 'ביטול', }).then((result) => { if (result) { if(result.value) { $('#acct-loader').fadeIn(); $.ajax({ url: URL, type: "GET", success: function(response){ var modal_id = $(e).parents('.modal').attr('id'); $("#"+modal_id).modal('hide'); // Check the status and message if (response.status === 1) { label_msg = 'success' } else { label_msg = 'error' } setTimeout(function() { $('#acct-loader').fadeOut(); }, 100); Swal.fire({ title:response.message, icon: label_msg, confirmButtonText: 'אישור', }).then(function (result) { setTimeout(function() { $('#acct-loader').fadeOut(); }, 100); if (typeof return_url !== 'undefined' && return_url != '' && return_url !==null) { window.location.href = return_url; } else { location.reload(true); } }) },error: function(xhr){ var message = 'משהו השתבש, אנא פנה לתמיכה'; if (xhr && xhr.responseJSON && xhr.responseJSON.message) { message = xhr.responseJSON.message; } else if (xhr && xhr.responseText) { try { var parsed = JSON.parse(xhr.responseText); if (parsed && parsed.message) { message = parsed.message; } } catch (e) { } } myswal('', message, 'error') setTimeout(function() { $('#acct-loader').fadeOut(); }, 100); } }); } } }); } function deleteRowPopup(e) { var URL = $(e).attr('data-url'); var title = $(e).attr('data-title'); var page_refresh = $(e).attr('page_refresh'); if (typeof title !== 'undefined' && title != '' && title !==null) { } else { title ='האם אתה בטוח?'; } Swal.fire({ title: title, showDenyButton: false, showCancelButton: true, confirmButtonText: 'כן', icon: 'warning', cancelButtonText: 'ביטול', }).then((result) => { if (result) { if(result.value) { $('body').addClass('body-loader'); $.ajax({ url: URL, type: "GET", success: function(data){ $('body').removeClass('body-loader'); var modal_id = $(e).parents('.modal').attr('id'); $("#"+modal_id).modal('hide'); myswal('', 'רשומה הוסרה', 'error') if(page_refresh==1) { location.reload(true); } },error: function(errorThrown){ $('body').removeClass('body-loader'); } }); } } }); } function deleteSurveyImage(e, delfirstPreview='') { var file_full_path = $(e).attr('data-url'); var dat_id = $(e).attr('data-id'); var data_img = $(e).attr('data-img'); var data_year = $(e).attr('data-year'); var data_report = $(e).attr('data-report'); var img_str = $('#'+dat_id).val(); Swal.fire({ title: 'האם אתה בטוח?', showDenyButton: false, showCancelButton: true, confirmButtonText: 'כן', icon: 'warning', cancelButtonText: 'ביטול', }).then((result) => { if (result) { if(result.value) { $('body').addClass('body-loader'); $.ajax({ url: '?action=lister&data=delete_survey_image', type: "POST", data: {'file_full_path':file_full_path, 'data_year':data_year, 'data_report': data_report}, success: function(data){ $('body').removeClass('body-loader'); if(data!='') { res = $.parseJSON(data); if(res.status==1 || res.status==0) { if(delfirstPreview=='preview_thumb') { $('.del-preview-img + img').remove(); $('.del-preview-img + object').remove(); $('.del-preview-img').remove(); $('.upload-image').val(''); } var mySubString = img_str.substring( img_str.indexOf("{") + 1, img_str.lastIndexOf("}") ); mySubString = mySubString.replace(data_img, ""); mySubString = mySubString.replace(/^,+|,+$/g, ''); if(mySubString!='') { mySubString = '{'+mySubString+'}'; } else { mySubString=''; } $('#'+dat_id).val(mySubString); $(e).parent('li').remove(); } } },error: function(errorThrown){ $('body').removeClass('body-loader'); } }); } } }); } function deleteRowRefresh(e) { var URL = $(e).attr('data-url'); var data_return_id = $(e).attr('data-return-id'); var data_refresh_url = $(e).attr('data-refresh-url'); Swal.fire({ title: 'האם אתה בטוח?', showDenyButton: false, showCancelButton: true, confirmButtonText: 'כן', icon: 'warning', cancelButtonText: 'ביטול', }).then((result) => { if (result) { if(result.value) { $('body').addClass('body-loader'); $.ajax({ url: URL, type: "GET", success: function(data){ $('body').removeClass('body-loader'); if(data_refresh_url) { $.ajax({ type : "GET", url : data_refresh_url, success: function (data) { $('body').removeClass('body-loader'); $('#'+data_return_id).html(data); $('table').trigger('update'); $('table').trigger('pagerUpdate'); }, error: function(errorThrown){ $('body').removeClass('body-loader'); myswal('','Something Wrong, Please check try again', 'error'); } }).done(function (data) { $('body').removeClass('body-loader'); }); } },error: function(errorThrown){ $('body').removeClass('body-loader'); } }); } } }); } function getUrIVars(url='') { var vars = [], hash; if(url) { var hashes = url.slice(window.location.href.indexOf('?') + 1).split('&'); } else { var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); } for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; } function floatingBtn() { $(".social-panel-container").toggleClass('visible'); } function dynamicaddField(field_name, value) { var FN = document.createElement("input"); FN.setAttribute("type", "hidden"); FN.setAttribute("name", field_name); FN.setAttribute("value", value); } function newexportaction(e, dt, button, config) { var self = this; var oldStart = dt.settings()[0]._iDisplayStart; dt.one('preXhr', function (e, s, data) { // Just this once, load all data from the server... data.start = 0; data.length = 2147483647; dt.one('preDraw', function (e, settings) { // Call the original action function if (button[0].className.indexOf('buttons-copy') >= 0) { $.fn.dataTable.ext.buttons.copyHtml5.action.call(self, e, dt, button, config); } else if (button[0].className.indexOf('buttons-excel') >= 0) { $.fn.dataTable.ext.buttons.excelHtml5.available(dt, config) ? $.fn.dataTable.ext.buttons.excelHtml5.action.call(self, e, dt, button, config) : $.fn.dataTable.ext.buttons.excelFlash.action.call(self, e, dt, button, config); } else if (button[0].className.indexOf('buttons-csv') >= 0) { $.fn.dataTable.ext.buttons.csvHtml5.available(dt, config) ? $.fn.dataTable.ext.buttons.csvHtml5.action.call(self, e, dt, button, config) : $.fn.dataTable.ext.buttons.csvFlash.action.call(self, e, dt, button, config); } else if (button[0].className.indexOf('buttons-pdf') >= 0) { $.fn.dataTable.ext.buttons.pdfHtml5.available(dt, config) ? $.fn.dataTable.ext.buttons.pdfHtml5.action.call(self, e, dt, button, config) : $.fn.dataTable.ext.buttons.pdfFlash.action.call(self, e, dt, button, config); } else if (button[0].className.indexOf('buttons-print') >= 0) { $.fn.dataTable.ext.buttons.print.action(e, dt, button, config); } dt.one('preXhr', function (e, s, data) { // DataTables thinks the first item displayed is index 0, but we're not drawing that. // Set the property to what it was before exporting. settings._iDisplayStart = oldStart; data.start = oldStart; }); // Reload the grid with the original page. Otherwise, API functions like table.cell(this) don't work properly. setTimeout(dt.ajax.reload, 0); // Prevent rendering of the full data to the DOM return false; }); }); // Requery the server with the new one-time export settings dt.ajax.reload(); } function AcctItmyDropdownFunction(num, e) { if ($("#myDropdown-"+num).hasClass("show")) { $("#myDropdown-"+num).removeClass("show"); } else { $(".dropdown-content").removeClass("show"); $("#myDropdown-"+num).addClass("show"); } } function IsEmail(email) { var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if (!regex.test(email)) { return false; } else { return true; } } function sendApiEmail(e) { var owner_email = $(e).attr('data-email'); var data_api = $(e).attr('data-api'); if (IsEmail(owner_email) == false) { myswal(owner_email,'מייל לא תקין, אנא בדוק ונסה שנית', 'error'); return false; } $('body').addClass('body-loader'); $.ajax({ type: 'POST', url: '?action=send_email_token_api', data: {'owner_email':owner_email, 'data_api':data_api}, success: function(data){ // remove loader $('body').removeClass('body-loader'); if (typeof data !== 'undefined' && data != '' && data !==null) { let parse_res = jQuery.parseJSON(data); let status = parse_res.status; if(status==true) { myswal('', parse_res.msg, 'success'); } else { myswal('', parse_res.msg, 'error'); } } }, error: function(data) { myswal('','מייל לא נשלח, אנא נסה שנית', 'error'); $('body').removeClass('body-loader'); } }); } function copyText(element) { // Get the text content of the clicked div var text = element.textContent; // Create a temporary textarea element to hold the text var textarea = document.createElement('textarea'); textarea.value = text; // Append the textarea to the body document.body.appendChild(textarea); // Select the text within the textarea textarea.select(); // Copy the selected text document.execCommand('copy'); // Remove the temporary textarea document.body.removeChild(textarea); // Optionally, provide some visual feedback element.style.backgroundColor = 'lightgreen'; setTimeout(function() { element.style.backgroundColor = 'lightblue'; }, 1000); } function getCurrentUrlVars(url='') { var vars = [], hash; if(url) { var hashes = url.slice(window.location.href.indexOf('?') + 1).split('&'); } else { var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); } for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; } // Helper function to get query parameters by name function getParameterByName(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, ' ')); } $(document).ready(function() { // Get the URL var url = window.location.href; // Extract the 'module' parameter from the URL var moduleName = getParameterByName('module', url); // If the module name is found, add it as a class to the main div if (moduleName) { $('#wrapper').addClass(moduleName); } }); /* multiple email */ $(document).ready(function () { var multi_input= $('#multiEmailInput'); var $main_container = $('#multiEmailContainer'); var hiddenField_id = 'multiEmailsHidden'; var $multiRequiredMessage = $('#multiRequiredMessage'); function updateHiddenInput() { const emails = $main_container.find('.email-tag').map(function () { return $(this).text().replace('×', '').trim(); }).get().join(','); $(`#${hiddenField_id}`).val(emails); if($('#multiEmailsHidden').attr('required') == 'required') { const emailCount = $main_container.find('.email-tag').length; if (emailCount === 0) { $multiRequiredMessage.show(); $('#btnAccSubmit').prop('disabled', true); } else { $multiRequiredMessage.hide(); $('#btnAccSubmit').prop('disabled', false); } } } $('.remove-container').click(function (e) { e.stopPropagation(); (this).closest('.email-tag').remove(); updateHiddenInput(); }); $('.email-tag').dblclick(function () { const emailText = $(this).find('span').first().text(); multi_input.val(emailText); multi_input.data('editingTag', this); this.remove(); multi_input.prop('disabled', false) .focus() .attr('placeholder', 'אימייל(ים) כאן'); updateHiddenInput(); }); function setupEmailInput($container, $input, $errorMessage, hiddenFieldId) { function createEmailTag(email, $targetElement = null) { const $emailTag = $(''); const $emailText = $(`${email}`); const $separator = $(''); const $removeContainer = $(''); const $removeButton = $('×'); $removeButton.click(function (e) { e.stopPropagation(); $emailTag.remove(); $input.prop('disabled', false) .attr('placeholder', $container.hasClass('single-email') ? 'אימייל(ים) כאן' : 'אימייל(ים) כאן') .focus(); updateHiddenInput(); }); $emailTag.dblclick(function () { const emailText = $(this).find('span').first().text(); $input.val(emailText); const $editInput = $(``); // Store the reference to the current tag $input.data('editingTag', $emailTag); $emailTag.remove(); $input.prop('disabled', false) .focus() .attr('placeholder', 'אימייל(ים) כאן'); $editInput.on('blur', function () { validateAndUpdateEmail($editInput); }); $editInput.on('keyup', function (event) { if (event.key === 'Enter') { validateAndUpdateEmail($editInput); } }); }); $removeContainer.append($removeButton); $emailTag.append($emailText, $separator, $removeContainer); // Insert the tag at the original position or at the end if ($targetElement && $targetElement.length) { $emailTag.insertBefore($targetElement); } else { $emailTag.insertBefore($input); } updateHiddenInput(); } function validateAndAddEmail() { const email = $input.val().trim(); if (email) { if (validateEmail(email)) { const $editingTag = $input.data('editingTag'); if ($container.hasClass('single-email')) { if (!$container.find('.email-tag').length) { createEmailTag(email); $input.prop('disabled', true) .attr('placeholder', 'אימייל(ים) כאן' ) .val(''); } } else { if ($editingTag && $editingTag.length) { // Insert at the original position createEmailTag(email, $input); $input.removeData('editingTag'); } else { createEmailTag(email); } $input.val(''); } $errorMessage.hide(); } else { $errorMessage.show(); $input.focus(); } } $input.removeData('editingTag'); } function validateAndUpdateEmail($editInput) { const email = $editInput.val().trim(); if (email && validateEmail(email)) { const $newEmailTag = $(`${email}`); const $removeButton = $('×'); $removeButton.css('cursor', 'pointer').click(function () { $newEmailTag.remove(); updateHiddenInput(); }); $newEmailTag.append($removeButton); $editInput.replaceWith($newEmailTag); updateHiddenInput(); } else { $errorMessage.show(); } } function updateHiddenInput() { const emails = $container.find('.email-tag').map(function () { return $(this).text().replace('×', '').trim(); }).get().join(','); $(`#${hiddenFieldId}`).val(emails); if($('#multiEmailsHidden').attr('required') == 'required') { const emailCount = $main_container.find('.email-tag').length; if (emailCount === 0) { $multiRequiredMessage.show(); $('#btnAccSubmit').prop('disabled', true); } else { $multiRequiredMessage.hide(); $('#btnAccSubmit').prop('disabled', false); } } } $container.click(function() { $input.focus(); }); $input.on('keydown', function (event) { if (event.key === 'Enter') { event.preventDefault(); validateAndAddEmail(); } else if (event.key === 'Backspace' && !$input.val()) { const $lastTag = $container.find('.email-tag').last(); if ($lastTag.length) { const emailText = $lastTag.find('span').first().text(); $input.val(emailText); $lastTag.remove(); event.preventDefault(); } } }); $input.on('blur', validateAndAddEmail); $input.on('input', function() { $errorMessage.hide(); }); } function validateEmail(email) { if (typeof email !== 'string') return false; // Normalize and clean hidden RTL/LTR control chars, then trim const cleaned = email .normalize('NFKC') .replace(/[\u200E\u200F\u202A-\u202E]/g, '') .trim(); const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; return emailPattern.test(cleaned); } setupEmailInput($('#singleEmailContainer'), $('#singleEmailInput'), $('#singleErrorMessage'), 'singleEmailHidden'); setupEmailInput($('#multiEmailContainer'), $('#multiEmailInput'), $('#multiErrorMessage'), 'multiEmailsHidden'); }); $(document).ready(function() { // Paper work module for annual report var paper_work_url = $("#paperwork-table-get").attr('data-url'); var report_paper_num = $("#paperwork-table-get").attr('data-report-id'); var paper_survey = $("#paperwork-table-get").attr('data-survey'); var parent_paper_num = $("#paperwork-table-get").attr('data-parent-id'); var paper_year = $("#paperwork-table-get").attr('data-year'); paper_work_url+='&year='+paper_year; paper_work_url+='&report_num='+report_paper_num; paper_work_url+='&parent_num='+parent_paper_num; paper_work_url+='&survey_key='+paper_survey; $( "#paperwork-table-get" ).select2({ placeholder: "בחר נייר עבודה", width: '100%', ajax: { url: paper_work_url, dataType: "json", delay: 250, delay: 250, cache: false, data: function (params) { return { term: params.term, page_no: params.page_no || 1, }; }, processResults: function(data, params) { var page_no = params.page_no || 1; return { results: $.map(data.content, function (item) { return {id: item.id, text: item.text}}), pagination: { // THE `10` SHOULD BE SAME AS `$resultCount FROM PHP, it is the number of records to fetch from table` more: (page_no * 10) <= data.content[0].total_count } }; } } }); $('#paperwork-table-get').on('select2:select', function(e) { let record_num = $(this).val(); // if (e.params.data.newOption) { var record_id = e.params.data.id; var record_text = e.params.data.text; let edit_paperwork_url = '?action=ajax&controller=paperwork&page=viewPopup&num='+record_num; edit_paperwork_url+='&year='+paper_year; edit_paperwork_url+='&report_num='+report_paper_num; edit_paperwork_url+='&parent_num='+parent_paper_num; edit_paperwork_url+='&survey_key='+paper_survey; $('body').addClass('body-loader'); $.ajax({ type : "GET", url : edit_paperwork_url, success: function (data) { $('body').removeClass('body-loader'); $('#paperwork-table-get').val(null).trigger('change'); $('#pop-up-modal').html(data); $("#pop-up-modal").modal('show'); if(record_id==0) { $('#paper_title').val(record_text); } }, error: function(errorThrown){ $('body').removeClass('body-loader'); myswal('','Something Wrong, Please check try again', 'error'); } }).done(function (data) { $('body').removeClass('body-loader'); }); // } }); }); $(document).ready(function() { // Use event delegation for dynamic content and unbind first to prevent duplicates $(document).off('click', '.ellipsis-btn').on('click', '.ellipsis-btn', function(event) { event.stopPropagation(); var submenu = $(this).next(".submenu"); // Toggle behavior if (submenu.is(":visible")) { submenu.fadeOut(100); return; } // Close other open menus $(".submenu").not(submenu).hide(); // 1. Prepare for measurement submenu.css({ 'display': 'block', 'visibility': 'hidden', 'position': 'fixed', 'top': 0, 'left': 0, 'z-index': 1060 // Higher than modals usually }); // 2. Measure dimensions & viewport var menuHeight = submenu.outerHeight(); var menuWidth = submenu.outerWidth(); var rect = this.getBoundingClientRect(); // Button position var winHeight = window.innerHeight; var winWidth = window.innerWidth; // 3. Calculate Vertical Position (Smart Flip) var top; // Check if fits below if (rect.bottom + menuHeight <= winHeight - 10) { top = rect.bottom; // Open Down } else if (rect.top - menuHeight >= 10) { top = rect.top - menuHeight; // Open Up } else { // Doesn't fit either way well, prefer Down but capped? // Or prefer Up if more space? // Checking max available space if (winHeight - rect.bottom > rect.top) { top = rect.bottom; } else { top = rect.top - menuHeight; } } // 4. Calculate Horizontal Position (RTL safe) // Default: Align to Right edge of button (good for RTL actions column) var left = rect.right - menuWidth; // If that pushes it off-screen to the left (e.g. narrow screen), flip align if (left < 10) { left = rect.left; } // 5. Apply Final Position & Show submenu.css({ 'top': top + 'px', 'left': left + 'px', 'visibility': 'visible', 'opacity': 0 }).animate({ opacity: 1 }, 100); }); // Close submenu when clicking outside OR Scrolling (since fixed pos drifts) $(document).off('click.close_submenu scroll.close_submenu resize.close_submenu').on('click.close_submenu scroll.close_submenu resize.close_submenu', function(e) { // Allow clicking inside the menu if ($(e.target).closest(".submenu").length) return; $(".submenu").fadeOut(100); }); // Prevent closing when clicking inside the submenu $(document).off('click', '.submenu').on('click', '.submenu', function(event) { event.stopPropagation(); }); }); function mobileLabelFix(value, row, index) { if (value === null || value === undefined || value === '') { return ' '; } return value; }