var dashboardTimer; var chatRefreshTimer; var chatListTimer; var chatMessageTimer; var map; let marker1, marker2; let poly, geodesicPoly; var outgoing_chat = new Audio('assets/snd/chat_outgoing.mp3'); var incoming_chat = new Audio('assets/snd/chat_incoming.mp3'); var ajax_loader = '
Loading...
'; input_credit_card = function(jQinp) { var format_and_pos = function(input, char, backspace) { var start = 0; var end = 0; var pos = 0; var value = input.value; if (char !== false) { start = input.selectionStart; end = input.selectionEnd; if (backspace && start > 0) // handle backspace onkeydown { start--; if (value[start] == " ") { start--; } } // To be able to replace the selection if there is one value = value.substring(0, start) + char + value.substring(end); pos = start + char.length; // caret position } var d = 0; // digit count var dd = 0; // total var gi = 0; // group index var newV = ""; var groups = /^\D*3[47]/.test(value) ? // check for American Express [4, 6, 5] : [4, 4, 4, 4]; for (var i = 0; i < value.length; i++) { if (/\D/.test(value[i])) { if (start > i) { pos--; } } else { if (d === groups[gi]) { newV += " "; d = 0; gi++; if (start >= i) { pos++; } } newV += value[i]; d++; dd++; } if (d === groups[gi] && groups.length === gi + 1) // max length { break; } } input.value = newV; if (char !== false) { input.setSelectionRange(pos, pos); } }; jQinp.keypress(function(e) { var code = e.charCode || e.keyCode || e.which; // Check for tab and arrow keys (needed in Firefox) if (code !== 9 && (code < 37 || code > 40) && // and CTRL+C / CTRL+V !(e.ctrlKey && (code === 99 || code === 118))) { e.preventDefault(); var char = String.fromCharCode(code); // if the character is non-digit // -> return false (the character is not inserted) if (/\D/.test(char)) { return false; } format_and_pos(this, char); } }). keydown(function(e) // backspace doesn't fire the keypress event { if (e.keyCode === 8 || e.keyCode === 46) // backspace or delete { e.preventDefault(); format_and_pos(this, '', this.selectionStart === this.selectionEnd); } }). on('paste', function() { // A timeout is needed to get the new value pasted setTimeout(function() { format_and_pos(jQinp[0], ''); }, 50); }). blur(function() // reformat onblur just in case (optional) { format_and_pos(this, false); }); }; function creditCardType(cc) { let amex = new RegExp('^3[47][0-9]{13}$'); let visa = new RegExp('^4[0-9]{12}(?:[0-9]{3})?$'); let mastercard = new RegExp('^5[1-5][0-9]{14}$'); let mastercard2 = new RegExp('^2[2-7][0-9]{14}$'); let disco1 = new RegExp('^6011[0-9]{12}[0-9]*$'); let disco2 = new RegExp('^62[24568][0-9]{13}[0-9]*$'); let disco3 = new RegExp('^6[45][0-9]{14}[0-9]*$'); if (visa.test(cc.replace(/\s/g,''))) { return 'visa'; } if (amex.test(cc.replace(/\s/g,''))) { return 'amex'; } if (mastercard.test(cc.replace(/\s/g,'')) || mastercard2.test(cc.replace(/\s/g,''))) { return 'mastercard'; } if (disco1.test(cc.replace(/\s/g,'')) || disco2.test(cc.replace(/\s/g,'')) || disco3.test(cc.replace(/\s/g,''))) { return 'discover'; } return undefined; } function cc_detect() { $( "input[name='payment_cc_number']" ).keyup(function() { var value = creditCardType(this.value); if (value !== undefined) { $(".cc-image").show(); $(".cc-image").attr("src", 'assets/images/credit_cards/sm_'+value+'.png'); } else{ $(".cc-image").hide(); } }); input_credit_card($("input[name='payment_cc_number']")); } const center = {lat: 45.4215, lng: -75.6972}; var map, measureTool; function initMap(zoom,bounds,segments) { if (zoom == null) { var zoom = 15; } map = new google.maps.Map(document.getElementById('map'), { center, zoom: zoom, mapTypeId: 'satellite', scaleControl: true, tilt:0 }); if (bounds != 'null') { map.setCenter(JSON.parse(bounds)); } map.addListener("center_changed", () => { document.getElementById('address_map_zoom').value = map.getZoom(); document.getElementById('address_map_bounds').value = JSON.stringify(map.getCenter()); }); measureTool = new MeasureTool(map, { contextMenu: false, unit: MeasureTool.UnitTypeId.METRIC }); measureTool.setOption('invertColor', true); if (segments == 'null') { } else { measureTool.start(JSON.parse(segments)) } var inverted = true; document.querySelector('#start') .addEventListener('click', () => measureTool.start()); document.querySelector('#end') .addEventListener('click', () => measureTool.end()); document.querySelector('#save_button') .addEventListener('click', () => save_map()); document.querySelector('#invert') .addEventListener('click', () => { inverted = !inverted measureTool.setOption('invertColor', inverted); }); measureTool.addListener('measure_change', (e) => { document.getElementById('address_perimeter').value = e.result.length.toFixed(2); document.getElementById('address_area').value = e.result.area.toFixed(2); document.getElementById('address_map_segments').value = JSON.stringify(e.result.points); }); } function dashboard_timer() { $.ajax({ url: "includes/db.php?func=action&type=dashboard", type: "GET", async: true, cache: false, contentType: false, processData: false, success: function(result){ if (result != "null") { var json = JSON.parse(result); if (json['unread'] == 0) { document.getElementById('header_unread').innerHTML=json['unread']; document.getElementById('header_unread').style.display = 'none'; } else { document.getElementById('header_unread').innerHTML=json['unread']; document.getElementById('header_unread').style.display = 'block'; } } }, error: function(result){ } }); } $(document).ready(function () { datatableInit(); initSummernote(); clearInterval(dashboardTimer); dashboardTimer = setInterval(function() { dashboard_timer(); }, 5000); flatpickr(".date"); flatpickr(".date-range",{mode:"range"}); }); function selection(type,value) { if (type == "method") { if (value == "credit") { document.getElementById('div_payment_cc').style.display = 'block'; $("#token").prop('required',true); } else { document.getElementById('div_payment_cc').style.display = 'none'; $("#token").prop('required',false); } } if (type == "token") { if (value == "0") { document.getElementById('div_new').style.display = 'block'; } else { document.getElementById('div_new').style.display = 'none'; } } if (type == "job_customer") { if (value != "") { document.getElementById('div_customer').style.display = 'none'; $.ajax({ url: "includes/db.php?func=json&type=job_customer&customer_id="+value, type: "POST", async: true, cache: false, contentType: false, processData: false, success: function(result){ if (result != "error") { var json = JSON.parse(result); if (typeof json.address != "undefined") { var addresses = json.address; $.each(addresses, function (i, address) { $('#address_id').empty().html($('