// 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;
}