$.modal.defaults = { clickClose: false, // Allows the user to close the modal by clicking the overlay escapeClose: true, showClose: true, }; window.alert = (message) => { if(!message.match(/'); $('#js-alert .js-confirm-text').html(message); var PromiseAlert = $('#js-alert').modal({ keyboard: false, backdrop: 'static', closeExisting: false });//.modal('show'); return new Promise(function (resolve, reject) { PromiseAlert.on('hidden.bs.modal', resolve); }); }; function openCallbackPopup() { $.ajax({ url: 'index.php?route=common/home/fix_callback_popup', success: function(data) { if(data == 'success') { $('#ex-bell1').modal(); } } }); } function openAppsPopup() { $.ajax({ url: 'index.php?route=common/home/fix_apps_popup', success: function(data) { if(data == 'success') { $('#ex-apps').modal(); } } }); } $(document).on('submit','.js-inn-search', function() { var url = $(this).attr('action'); if(url.match(/\?/)) url += '&'; else url += '?'; var field = $(this).find('input[name="inn"]'); if(field.length) { if(field.val().length < 4) alert('Введите 4 и более символа'); else { url += $(field).attr('name')+ '=' + encodeURIComponent($(field).val()); document.location.href = url; } } return false; }); $(document).on('click','#card-label',function() { loadUserBankCards(); }); $(document).on('click','.add-card', function() { var link = $(this); $.ajax({ url: 'index.php?route=account/cards/add_card', dataType: 'json', beforeSend: function() { link.removeClass('add-card').addClass('in-progress'); }, success: function(data) { if(data.success) { if(data.redirect) document.location.href=data.redirect; else alert(data.message); } else alert(data.message); link.removeClass('in-progress').addClass('add-card'); if(data.refresh) loadUserBankCards(); }, error: function(xnr) { alert('Сервер временно недоступен'); console.log(xnr.responseText) } }); return false; }); $(document).on('click','.add-card2', function() { $('#ex-add-card').modal(); return false; /*var link = $(this); $.ajax({ url: 'index.php?route=account/cards/add_card', dataType: 'json', beforeSend: function() { link.removeClass('add-card').addClass('in-progress'); }, success: function(data) { if(data.success) { if(data.redirect) document.location.href=data.redirect; else alert(data.message); } else alert(data.message); link.removeClass('in-progress').addClass('add-card'); if(data.refresh) loadUserBankCards(); }, error: function(xnr) { alert('Сервер временно недоступен'); console.log(xnr.responseText) } });*/ return false; }); $(document).on('click','.rm-card', function() { var link = $(this); if(confirm('Отвязать карту?')) { $.ajax({ url: link.attr('href'), dataType: 'json', success: function(data) { console.log(data); if(data.success) { loadUserBankCards(false,false,1500); console.log(data.message) if(data.message) alert(data.message); } else alert(data.message); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); } }); } return false; }); Inputmask.extendDefinitions({ 'f': { //masksymbol "validator": "[12345690]" } }); $(document).ready(function() { $('#confirm-remove-account-done').on($.modal.BEFORE_CLOSE, function(event, modal) { document.location.href="/"; }); setInterval('updateBalance();',5000); $('.emailmask').inputmask("email"); $('.phonemask').inputmask({mask:"f999999999"}); $('.passport-code').inputmask({mask: "999-999"}); $('.passport-serial').inputmask({mask: "9999"}); $('.passport-num').inputmask({mask: "999999"}); $('.card-num').inputmask({mask: "9999 9999 9999 9999"}); $(document).on('click','.js-employer-subscribe', function() { var btn = $(this); var subscribe = $(this).hasClass('subscribe') ? true : false; console.log(subscribe); var employer_id = $(this).attr('employer'); $.ajax({ url: 'index.php?route=account/customers/subscribe&employer_id='+employer_id+(!subscribe ? '&unsubscribe=1' : ''), success: function(data) { if(data == 'success') { if(subscribe) { btn.removeClass('subscribe').addClass('unsubscribe').html('Отменить подписку'); } else btn.removeClass('unsubscribe').addClass('subscribe').html('Подписаться на заказы'); } else alert(data); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); } }); return false; }) if(showCallbackPopup) setTimeout("openCallbackPopup();",60000); //if(showAppsPopup) setTimeout("openAppsPopup();",15000); $('.cookies__button').click(function(){ var banner = $(this).closest('.cookies') $.ajax({ url: 'index.php?route=common/home/close_cookies', success:function(data) { if(data == 'success') { banner.hide(); } } }); }); $(document).on('keyup','.js-registry-se-summ', function() { var v = parseInt($(this).val()); if($(this).val() == '' || $(this).val() < 0) v = 0; $(this).val(v); unsaved_form = 1; if(typeof('recalcRegistry') != 'undefined') recalcRegistry(); }); $(document).on('click','.send-invite-btn', function() { var link = $(this); if(link.hasClass('sended')) return false; $.ajax({ url: 'index.php?route=account/order/send_invite&order_id='+$(this).attr('order-id')+'&customer_id='+$(this).attr('customer-id'), success:function(data) { if(data == 'success') { link.addClass('sended'); link.html('Отправлено'); alert('Ваше приглашение было отправлено исполнителю'); } else alert(data); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); } }); return false; }); $(document).on('click','.approve-email-btn', function() { var link = $(this); if(link.hasClass('sended')) return false; $.ajax({ url: $(this).attr('href'), success:function(data) { if(data == 'success') { link.addClass('sended'); link.html('Письмо отправлено'); alert('Вам было отправлено письмо для подтверждения E-mail'); } else alert(data); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); } }); return false; }); $(document).on('focus','input,textarea,select',function() { var placeholder = $(this).attr('placeholder'); $(this).attr('placeholder','').attr('placeholder_hide', placeholder); }); $(document).on('blur','input,textarea,select',function() { var placeholder = $(this).attr('placeholder_hide'); $(this).attr('placeholder',placeholder).attr('placeholder_hide', ''); }); $(document).on('focus','.calc-order-cost input', function() { if($(this).val() == '0') $(this).select(); }); $(document).on('keyup','.calc-order-cost input', function() { var p = $(this).parent().parent().parent(); var quantity = parseInt(p.find('.quantity').val()); if(!quantity ) quantity = 0; p.find('.quantity').val(quantity); var hours_one = parseInt(p.find('.hours_one').val()); if(!hours_one) hours_one = 0; p.find('.hours_one').val(hours_one); var days = parseInt(p.find('.days').val()); if(!days) days = 0; p.find('.days').val(days); var hour_cost = parseInt(p.find('.hour_cost').val()); if(!hour_cost) hour_cost = 0; p.find('.hour_cost').val(hour_cost); var hours_total = quantity * hours_one * days; p.find('.hours').val(hours_total); //var subtotal = Math.round(hours_total * hour_cost * (1 + comission_pt_outsourcer * 0.01)); var subtotal = Math.round(hours_total * hour_cost / (100 - comission_pt_outsourcer ) * 100); p.find('.subtotal-val').val(subtotal); p.find('.subtotal').html(subtotal + ' ₽'); var total = 0; $('.subtotal-val').each(function() { total += parseInt($(this).val()); }); $('#outsourcer-total').val(total + ' ₽'); }); $('.outsourcer-changer').on('change',function() { //console.log('change'); if($(this).val() == '1') { $('.visible-outsourcer').show(); $('.hide-outsourcer').hide(); $('.visible-brigade').hide(); } else if($(this).val() == '2') { $('.visible-outsourcer').hide(); $('.hide-outsourcer').show(); $('.self-employed').hide(); $('.visible-brigade').show(); } else { $('.visible-outsourcer').hide(); $('.hide-outsourcer').show(); $('.visible-brigade').hide(); } }); if($('.outsourcer-changer:checked').length) $('.outsourcer-changer:checked').trigger('change'); $(document).on('click','.showhide-pass', function() { var f = $(this).parent().parent().find('[type=password]'); if(f.length) { f.attr('type','text'); } else { f = $(this).parent().parent().find('[type=text]'); if(f.length) { f.attr('type','password'); } } return false; }); $(document).on('change','.ajax-file', function() { // обрезка фото var result = document.getElementById('cropper-result'), input = this, save = document.getElementById('cropper-save'); const reader = new FileReader(); reader.onload = function(e) { if (e.target.result) { let img = document.createElement('img'); img.id = 'image'; img.src = e.target.result if (window.screen.width < 768) img.width = window.screen.width - 30; result.innerHTML = ''; result.appendChild(img); cropper = new Cropper(img, { aspectRatio: 1, responsive: 1, viewMode: 1, ready: function () { croppable = true; }, }); } }; reader.readAsDataURL(input.files[0]); save.addEventListener('click', (e) => { e.preventDefault(); var croppedCanvas = cropper.getCroppedCanvas({ maxWidth: 500, maxHeight: 500, }); var roundedCanvas = getRoundedCanvas(croppedCanvas); roundedCanvas.toBlob(function(blob) { var url = URL.createObjectURL(blob); var reader = new FileReader(); reader.readAsDataURL(blob); reader.onloadend = function() { var base64data = reader.result; var form_data = new FormData(); form_data.append('image64', base64data); $.ajax({ url: '/index.php?route=account/account/upload_image', dataType: 'json', cache: false, contentType: false, processData: false, data: form_data, type: 'post', beforeSend: function() { $.modal.close(); }, success: function(data) { if (data.success) { if ($('#callback-messages').length) { $('#callback-messages').html('
Фото загружено
'); setInterval("$('#callback-messages').html('')", 3000); } if ($('.customer-logo-div').length) { $('.customer-logo-div').html(''); } if($('.upload-photo-label').length) $('.upload-photo-label').css({'background-image' : 'url('+data.image+')'}); if($('.upload-photo-file').length) $('.upload-photo-file').val(data.image_data); } else alert(data.message); } }); }; }); }); $('#cropper').modal(); // var field = $(this); // var form = new FormData(); // files = $(this).prop('files'); // for(var i in files) // { // form.append('image',$(this).prop('files')[i]); // } // var formname = $(this).attr('name'); // var isMultiple = $(this).prop('multiple'); // $.ajax({ // url: '/index.php?route=account/account/upload_image', // method:'POST', // type: 'POST', // data: form, // dataType: 'json', // processData: false, // contentType : false, // success: function(data) // { // console.log(data); // if(data.success) // { // if($('#callback-messages').length) // { // $('#callback-messages').html('
Фото загружено
'); // setInterval("$('#callback-messages').html('')",3000); // } // if($('.customer-logo-div').length) // { // $('.customer-logo-div').html(''); // } // if($('.upload-photo-label').length) $('.upload-photo-label').css({'background-image' : 'url('+data.image+')'}); // if($('.upload-photo-file').length) $('.upload-photo-file').val(data.image_data); // } // else alert(data.message); // }, // error: function(xnr) // { // alert('Сервер временно недоступен, попробуйте позже!'); // } // }); }); $(document).on('click','.js-selfemployed-pagination a', function() { $.ajax({ url: $(this).attr('href'), beforeSend: function() { $('#js-search-results').html('
Загрузка данных...
'); }, success: function(data) { $('#js-search-results').html(data); }, error: function() { alert('Сервер временно недоступен'); } }); return false; }); $(document).on('change','.ajax-file-gallery', function() { var field = $(this); var form = new FormData(); files = $(this).prop('files'); for(var i in files) { form.append('image',$(this).prop('files')[i]); } var formname = $(this).attr('name'); var isMultiple = $(this).prop('multiple'); $.ajax({ url: '/index.php?route=account/account/upload_gallery_image', method:'POST', type: 'POST', data: form, dataType: 'json', processData: false, contentType : false, success: function(data) { console.log(data); if(data.success) { html = '
'; if(!data.photo_id) { html += ' '; html += '
'; } else { html += '
'; } html += '
'; html += '
'; $('.js-customer-gallery .js-btn-loader').before(html); console.log(html); /*if($('#callback-messages').length) { $('#callback-messages').html('
Фото загружено
'); setInterval("$('#callback-messages').html('')",3000); } if($('.customer-logo-div').length) { $('.customer-logo-div').html(''); } if($('.upload-photo-label').length) $('.upload-photo-label').css({'background-image' : 'url('+data.image+')'}); if($('.upload-photo-file').length) $('.upload-photo-file').val(data.image_data);*/ } else alert(data.message); }, error: function(xnr) { alert('Сервер временно недоступен, попробуйте позже!'); } }); }); if(show_regphone_modal) $('#ex-rigstration').modal(); setInterval('if(check_nalog_status) checkNalogStatus();',15000); if($('#workers-list').length) { setInterval('refreshWorkersList();',10000); } $('.bik-field').on('change keyup', function() { target = $($(this).attr('target')); //console.log('test1'); if(target.length) { if($(this).val().length < 9) return false; //console.log('test'); $.ajax({ url: 'index.php?route=account/account/bank_name&bik='+encodeURIComponent($(this).val()), dataType: 'html', success: function(data) { console.log(data); if(data.length) target.val(data); }, error: function(data) { alert('Сервер временно недоступен. Попробуйте позже'); } }); } }); $('#ex-rating [rating]').each(function() { $(this).on('click',function() { $('#ex-rating [rating].active').removeClass('active'); $(this).parent().prevAll().find('a').addClass('active'); $(this).addClass('active'); $('#ex-rating FORM').attr('action',$(this).attr('href')); return false; }); }); $('#ex-review [name="rating"]').each(function() { $(this).on('change',function() { //$('#ex-rating [rating].active').removeClass('active'); //$(this).parent().prevAll().find('a').addClass('active'); //$(this).addClass('active'); $('#ex-review FORM').attr('action',$(this).attr('href')); //return false; }); }); setInterval('timers();',60000); $('.select2').select2(); $('.datetime').datetimepicker({ format: 'Y-m-d H:i:00', lang: 'ru', mask:true, }); $('.date').datetimepicker({ timepicker: false, format: 'Y-m-d', lang: 'ru', mask: true }); $('.date-ru').datetimepicker({ timepicker: false, format: 'd.m.Y', lang: 'ru', mask: true }); $('#profile-type-selector').on('change', function() { if($(this).val() == '2') { $('#worker-type-list').show(); } else $('#worker-type-list').hide(); }); /*$('#add-order-price, #add-order-hours').on('change keyup',function() { var hours = parseInt($('#add-order-hours').val()); var price = parseInt($('#add-order-price').val()); if(hours > 0 && price > 0) { $('#add-order-total').html('Стоимость: '+(price * hours)+' Р'); } else $('#add-order-total').html(''); });*/ $('#dost1,#dost').on('change', function() { var isReady = '0'; if($(this).attr('checked')) isReady = '1'; $.ajax({ url: 'index.php?route=account/account/change_wstatus&is_ready='+isReady, method: 'GET', dataType: 'json', success: function(data) { if(data.success) { //alert('Ваш статус изменен успешно'); } if(data.message) alert(data.message); } }); return false; }); $('.worker-ajax-search').on('click', function() { $.ajax({ url: 'index.php?route=account/order/aj_search_workers&order_id='+encodeURIComponent($(this).attr('order-id')), method: 'GET', dataType: 'json', success: function(data) { if(!data.success) alert(data.message); else if(!data.customers.length) { var tpl = $('#tpl-executors-row-noresults').html(); $('#searched-executors-container').html(tpl); } else { var html = ''; for(var i in data.customers) { row = data.customers[i]; var tpl = $('
'+$('#tpl-executors-row').html()+'
'); tpl.find('.customer-fullname').html(row.name); tpl.find('.customer-image').attr('src',row.image); tpl.find('.employ-btn').attr('customer-id',row.customer_id); tpl.find('.row-container').attr('id','customer-row-'+row.customer_id); html += tpl.html(); } $('#searched-executors-container').html(html); } $('#search-result-container').show(); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); console.log(xnr.responseText); } }) return false; }); $(document).on('click','.respond-order-link', function() { if($(this).hasClass('inactive')) return false; else { var order_id = $(this).attr('order-id'); $('#respond-order-id-text').text(order_id); $('#respond-order-id').val(order_id); $('#ex-map').modal(); return false; } }); $(document).on('keyup','#response-outsourcer .hour_cost', function() { total = 0; $('#response-outsourcer .hour_cost').each(function() { var p = $(this).parent(); var hours = parseInt(p.find('.hours').val()); if(!hours) hours = 0; p.find('.hours').val(hours); var hour_cost = parseInt(p.find('.hour_cost').val()); if(!hour_cost) hour_cost = 0; p.find('.hour_cost').val(hour_cost); total += hours * hour_cost; }); $('#respond-outsourcer-total').html(total); $('#respond-outsourcer-price').val(total); }); $(document).on('click','.respond-order-outsourcer-link', function() { if($(this).hasClass('inactive')) return false; else { var order_id = $(this).attr('order-id'); $.ajax({ url: 'index.php?route=account/order/get_respond_info&order_id='+order_id, beforeSend: function() { $('#response-outsourcer .error').hide(); $('#response-outsourcer [type="submit"]').hide(); }, dataType: 'json', success: function(data) { if(data.success) { $('#respond-outsourcer-order-id').val(data.order_id); $('#respond-outsourcer-order-id-text').text(data.order_id); $('#response-outsourcer [type="submit"]').attr('refresh','1').show(); var html = ''; for(var i in data.suborders) { var suborder = data.suborders[i]; html += '
'; html += '
Направление '+suborder.workertype_name+' - ставка в час
'; html += '
'; html += ' '; html += ' '; html += ' '; html += '
'; html += '
'; html += '
'; } $('#response-outsourcer .response-outsourcer-items').html(html); $('#respond-outsourcer-total').html(data.total); $('#respond-outsourcer-price').val(data.total); } else { $('#response-outsourcer .error').html(data.message).show(); $('#response-outsourcer .response-outsourcer-items').hide(); $('#response-outsourcer [type="submit"]').hide(); $('#response-outsourcer .js-confirm-button1').show(); } $('#response-outsourcer').modal(); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); console.log(xnr.responseText); } }); //$('#respond-order-id-text').text(order_id); //$('#respond-order-id').val(order_id); return false; } }); /*$(document).on('click','.applying-btn', function() { var link = $(this); if(link.hasClass('inactive')) return false; $.ajax({ url: 'index.php?route=account/order/applying_job&order_id='+encodeURIComponent($(this).attr('order-id')), method: 'GET', dataType: 'json', success: function(data) { if(data.success) { link.html('Заявка отправлена'); link.addClass('inactive'); } else alert(data.message); } }); return false; });*/ $(document).on('click','.employ-btn', function() { $.ajax({ url: 'index.php?route=account/order/employ_customer&order_id='+encodeURIComponent($(this).attr('order-id'))+'&customer_id='+encodeURIComponent($(this).attr('customer-id')), method: 'GET', dataType: 'json', success: function(data) { if(data.success) { $('#customer-row-'+data.customer_id+' .query-status').html('Запрос отправлен').show(); } alert(data.message); } }); return false; }); $(document).on('change','.worker-type-checkbox', function() { var checked = $(this).attr('checked') ? true : false; var val = $(this).val(); $('.worker-type-checkbox[value="'+val+'"]').attr('checked', checked); }); $(document).on('change','.worker-type-selector', function() { $('.worker-type-selector.active').removeClass('active'); $(this).addClass('active'); $('#add-order-price').val($(this).attr('price')); //if($(this).attr('name-rp')) $('#order-search-title').html('Поиск '+$(this).attr('name-rp')); //else $('#order-search-title').html('Поиск работника'); $($(this).attr('target')).val($(this).attr('value')); if($(this).hasClass('mobile')) { $('.worker-type-selector.desctop[value="'+$(this).val()+'"]').attr('checked', true); } else { $('.worker-type-selector.mobile[value="'+$(this).val()+'"]').attr('checked', true); } /*if($(this).attr('name') == 'type_mobile') { $('.worker-type-selector[name="type"][value="'+$(this).val()+'"]').attr('checked', true); } else { $('.worker-type-selector[name="type_mobile"][value="'+$(this).val()+'"]').attr('checked', true); }*/ var rownum = $(this).attr('rownum'); console.log(rownum); if(typeof(rownum) != 'undefined' && rownum != '') { $('.descriptions .description[rownum="'+rownum+'"]:visible').hide(); $('#description-'+$(this).attr('value')+'-'+rownum).show(); } else { $('.descriptions .description:visible').hide(); $('#description-'+$(this).attr('value')).show(); } //return false; }); }); function loadUserBankCards(selector,viewOnly, delay) { if(!delay) delay = 0; if(typeof(selector) == 'undefined' || !selector) selector = '.usr-bank-cards';// '#card-data'; if(!viewOnly) viewOnly = 0; //console.log('load user cards'); if(delay > 0) $(selector).html('
Ожидание ответа...
'); setTimeout(function(selector,viewOnly) { //console.log('test delay ' + selector); $.ajax({ url: 'index.php?route=account/cards&viewOnly='+viewOnly.toString(), beforeSend: function() { $(selector).html('
Загрузка данных...
'); }, success:function(data) { $(selector).html(data); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); console.log(xnr.responseText); } }); }, delay, selector, viewOnly); } function refreshWorkersList() { if($('#workers-list').length) { $.ajax({ url: document.location.href, method: 'POST', data: 'is_ajax=1', success: function(data) { $('#workers-list').replaceWith(data); } }) } } function applyingJob(form) { var link = $('#applying-btn-'+$(form).find('[name="order_id"]').val()); if(link.hasClass('inactive')) return false; $.ajax({ url: 'index.php?route=account/order/applying_job&order_id='+encodeURIComponent($(form).find('[name="order_id"]').val()), method: 'POST', dataType: 'json', data: $(form).serialize(), success: function(data) { if(data.success) { link.html('Заявка отправлена'); link.addClass('inactive'); $.modal.close(); if(link.attr('refresh') == '1') document.location.reload(); } else alert(data.message); } }); return false; } function openBindingByPhoneForm() { $('#input-inn-form').hide(); $('#input-phone-form').show(); return false; } var current_register_step = 'all'; var readyToSubmit = false; function validateRegisterStep(step, formSelector) { if(readyToSubmit) return true; $.ajax({ url: 'index.php?route=account/register/validate_step&step='+encodeURIComponent(step), type: 'POST', method: 'POST', data: $('#'+formSelector).serialize(), dataType:'json', success: function(data) { if(data.success) { switch(data.step) { case 1: $('.register-step:visible').hide(); $('#register-step2').show(); current_register_step = 2; break; case 2: $('.register-step:visible').hide(); $('#register-step3').show(); current_register_step = 3; break; case 3: $('.register-step:visible').hide(); $('#register-step4').show(); current_register_step = 4; break; case 4: case "all" : readyToSubmit = true; $('#'+formSelector).trigger('submit');break; } } else { alert(data.errors.join("\n")); } }, error: function(xnr) { alert('Сервер временно недоступен'); console.log(xnr.responseText); } }); return readyToSubmit; } var current_addorder_step = 1; function validateAddOrderStep(step,formSelector) { if(readyToSubmit) return true; $.ajax({ url: 'index.php?route=account/order/validate_order&step='+encodeURIComponent(step), type: 'POST', method: 'POST', data: $('#'+formSelector).serialize(), dataType:'json', success: function(data) { if(data.success) { switch(data.step) { case 1: $('.order-step:visible').hide(); $('#order-step2').show(); current_register_step = 2; break; case 2: $('.order-step:visible').hide(); $('#order-step3').show(); current_register_step = 3; break; case 3: readyToSubmit = true; $('#'+formSelector).trigger('submit');break; //case 3: $('.order-step:visible').hide(); $('#order-step4').show(); current_register_step = 4; break; case 4: readyToSubmit = true; $('#'+formSelector).trigger('submit');break; } } else { alert(data.errors.join("\n")); } }, error: function(xnr) { alert('Сервер временно недоступен'); console.log(xnr.responseText); } }); return readyToSubmit; } function uploadOrderPhoto(field) { //$('#callback-messages').html(''); var file_data = $(field).prop('files')[0]; var form_data = new FormData(); form_data.append('image', file_data); $.ajax({ url: '/index.php?route=account/order/upload_image', dataType: 'json', cache: false, contentType: false, processData: false, data: form_data, type: 'post', success: function(data){ //$(form).trigger('reset'); //console.log(data); //alert(data); if(data.success) { //$('#order-form-images').append('
X
'); $('#order-form-images').before('
') } else alert(data.message); } }); } function getRoundedCanvas(sourceCanvas) { var canvas = document.createElement('canvas'); var context = canvas.getContext('2d'); var width = sourceCanvas.width; var height = sourceCanvas.height; canvas.width = width; canvas.height = height; context.imageSmoothingEnabled = true; context.drawImage(sourceCanvas, 0, 0, width, height); context.globalCompositeOperation = 'destination-in'; context.beginPath(); context.arc(width / 2, height / 2, Math.min(width, height) / 2, 0, 2 * Math.PI, true); context.fill(); return canvas; } function uploadPhoto(form) { $('#callback-messages').html(''); if (typeof(form) == 'object' && form.length && form.attr('type') == 'file') { var file_data = form.prop('files')[0]; var loading_mask = $('#loading-for-' + $(this).attr('id')); } else { var file_data = $('#file').prop('files')[0]; var loading_mask = $('#loading-for-file'); } // обрезка фото var result = document.getElementById('cropper-result'), input = typeof(form) == 'object' && form.length && form.attr('type') == 'file' ? form[0] : $('#file')[0], save = document.getElementById('cropper-save'); const reader = new FileReader(); reader.onload = function(e) { if (e.target.result) { let img = document.createElement('img'); img.id = 'image'; img.src = e.target.result; if (window.screen.width < 768) img.width = window.screen.width - 30; result.innerHTML = ''; result.appendChild(img); cropper = new Cropper(img, { aspectRatio: 1, responsive: 1, viewMode: 1, ready: function () { croppable = true; }, }); } }; reader.readAsDataURL(input.files[0]); save.addEventListener('click', (e) => { e.preventDefault(); var croppedCanvas = cropper.getCroppedCanvas({ maxWidth: 500, maxHeight: 500, }); var roundedCanvas = getRoundedCanvas(croppedCanvas); roundedCanvas.toBlob(function(blob) { var url = URL.createObjectURL(blob); var reader = new FileReader(); reader.readAsDataURL(blob); reader.onloadend = function() { var base64data = reader.result; var form_data = new FormData(); form_data.append('image64', base64data); $.ajax({ url: '/index.php?route=account/account/upload_image', dataType: 'json', cache: false, contentType: false, processData: false, data: form_data, type: 'post', beforeSend: function() { if (loading_mask.length) loading_mask.show(); $.modal.close(); }, success: function(data) { if (data.success) { if ($('#callback-messages').length) { $('#callback-messages').html('
Фото загружено
'); setInterval("$('#callback-messages').html('')", 3000); } if ($('.customer-logo-div').length) { $('.customer-logo-div').html(''); } if ($('.upload-photo-label').length) $('.upload-photo-label').css({ 'backgroud-image': data.image }); if ($('.upload-photo-file').length) $('.upload-photo-file').val(data.image_data); } else alert(data.message); if (loading_mask.length) loading_mask.hide(); } }); }; }); }); $('#cropper').modal(); // var form_data = new FormData(); // form_data.append('image', file_data); // $.ajax({ // url: '/index.php?route=account/account/upload_image', // dataType: 'json', // cache: false, // contentType: false, // processData: false, // data: form_data, // type: 'post', // beforeSend: function() { // if (loading_mask.length) loading_mask.show(); // }, // success: function(data) { // //$(form).trigger('reset'); // console.log(data); // //alert(data); // if (data.success) { // if ($('#callback-messages').length) { // $('#callback-messages').html('
Фото загружено
'); // setInterval("$('#callback-messages').html('')", 3000); // } // if ($('.customer-logo-div').length) { // $('.customer-logo-div').html(''); // } // if ($('.upload-photo-label').length) $('.upload-photo-label').css({ // 'backgroud-image': data.image // }); // if ($('.upload-photo-file').length) $('.upload-photo-file').val(data.image_data); // } else alert(data.message); // if (loading_mask.length) loading_mask.hide(); // } // }); } function openRatingModal(link) { href = $(link).attr('href'); $('#ex-review FORM').attr('action', href); if(href.match(/\?/i)) href +='&'; else href +='?'; href += 'rating='; $('#ex-review [name="rating"]').each(function() { $(this).attr('href',href + $(this).val()); }); $('#ex-review').modal(); return false; } function openDismissModal(link) { href = $(link).attr('href'); $('#ex-dismiss FORM').attr('action',href); console.log(href); /*if(href.match(/\?/i)) href +='&'; else href +='?'; href += 'rating='; $('#ex-rating [rating]').each(function() { $(this).attr('href',href + $(this).attr('rating')); });*/ $('#ex-dismiss').modal(); return false; } function openStornModal(link) { href = $(link).attr('href'); $('#ex-storn FORM').attr('action',href); console.log(href); /*if(href.match(/\?/i)) href +='&'; else href +='?'; href += 'rating='; $('#ex-rating [rating]').each(function() { $(this).attr('href',href + $(this).attr('rating')); });*/ $('#ex-storn').modal(); return false; } function timers() { $('.timer').each(function() { m = parseInt($(this).attr('m')); if(!m) m = 0; h = parseInt($(this).attr('h')); if(!h) h = 0; m += 1; if(m >= 60) { h += 1; m -= 60; } $(this).attr('h',h.toString()); $(this).attr('m',m.toString()); $(this).html((h > 0 ? h+' ч. ' : '')+(m > 0 ? m+' мин. ' : '')); }) } function openCheckInn(form) { inn = $(form).find('[name=inn]').val(); if(inn.match(/[^\d]/g)) alert('ИНН должен содержать только цифры'); else if(inn.length != 10 && inn.length != 12) alert('ИНН должен быть 10 или 12 символов'); else { $('#ex-correctness FORM [name=inn]').val(inn); $('#check-current-inn').text(inn); $('#ex-correctness').modal(); } return false; } function filterPayments(form) { url = $(form).attr('action'); $(form).find('[type=text], select').each(function() { url += url.match(/\?/) ? '&' : '?'; url += $(this).attr('name')+'='+encodeURIComponent($(this).val()); }); document.location.href = url; return false; } function sendBindingByPhoneForm(form) { $.ajax({ url:$(form).attr('action'), method:'POST', type:'POST', //data:$(form).serialize(),// раскоментировать, если браузер не поддерживает FormData. То что ниже закоментировать data: $(form).serialize(), dataType: 'json', beforeSend: function() { $('#phone-unregistered').hide(); }, success:function(data) { if(data.message) alert(data.message); if(data.open_unregistered) $('#phone-unregistered').show(); if(data.refresh) location.reload(); }, error:function(xnr) { alert('Сервер временно недоступен'); } }); } function makePayment(form) { formData = new FormData(form);// позволит отправить даже файл(нужна поддержка FormData браузером) $.ajax({ url:$(form).attr('action'), method:'POST', type:'POST', //data:$(form).serialize(),// раскоментировать, если браузер не поддерживает FormData. То что ниже закоментировать data: formData, processData: false, // tell jQuery not to process the data contentType: false, // tell jQuery not to set contentType dataType: 'json', success:function(data) { if(data.success) { if(data.redirect && data.inNewTab) { window.open(data.redirect,'_blank'); if(data.message) alert(data.message); } else if(data.redirect) document.location.href=data.redirect; else { $(form).trigger('reset'); alert('Ваш запрос на пополнение счета отправлен. В ближайшее время с вами свяжется менеджер для обсуждения деталей.'); } } else { alert(data.errors); //console.log(data); } console.log(data); }, error:function(xnr) { console.log(xnr.responseText); alert('Сервер временно недоступен'); } }); } function loginCallback() { document.location.reload(); return false; } function boundINN(form) { formData = new FormData(form); $.ajax({ url:$(form).attr('action'), method:'POST', type:'POST', //data:$(form).serialize(),// раскоментировать, если браузер не поддерживает FormData. То что ниже закоментировать data: formData, processData: false, // tell jQuery not to process the data contentType: false, // tell jQuery not to set contentType dataType: 'json', beforeSend: function() { $(form).find('.errors').html(''); $(form).find('.message').html(''); $(form).find('.conf-message').hide(); $(form).find('.busy').show(); check_nalog_status = false; }, success: function(data) { console.log(data); if(!data.success) { $(form).find('.errors').html(data.errors.join('
')); } else { if(data.reload) document.location.reload(); if(data.message.length) $(form).find('.message').html(data.message); console.log('inn saved'); checkNalogStatus(); } check_nalog_status = true; }, error:function(xnr) { alert('Сервер временно недоступен'); console.log(xnr.responseText); } }) } function sendBindingRequest() { $.ajax({ url: 'index.php?route=account/account/binding&is_ajax=1', //dataType: 'json', beforeSend: function() { $('.conf-message.busy').show(); $('.conf-binding-btn').hide(); $('.inn-binding .errors').html(''); $('.inn-binding .message').html(''); check_nalog_status = false; }, success:function(data) { check_nalog_status = true; console.log(data); if(data == 'success') { $('.inn-binding .message').html('Запрос на привязку отправлен в МойНалог'); } else { $('.conf-message.busy').hide(); $('.conf-binding-btn').show(); $('.inn-binding .errors').html(data); } } }); } function checkNalogStatus() { $.ajax({ url: 'index.php?route=account/account/check_nalog_status', dataType: 'json', success: function(data) { console.log(data); if(!data.error) { $('.customer-inn-code').html(data.customer_inn); if(data.status != 6) { $('.search-job-link').hide(); $('.inn-ready').hide(); $('.inn-in-progress').show(); } if(data.empty_inn) { $('.input-inn').attr('readonly',false); $('.conf-message').hide(); $('.conf-message.nalog-status-0').show(); } else if(data.status == 0 || data.status == 1) { $('.input-inn').attr('readonly',false); $('.conf-message').hide(); $('.conf-message.nalog-status-1').show(); } else if(data.status == 2) { $('.input-inn').attr('readonly',true); $('.conf-message').hide(); $('.conf-message.nalog-status-2').show(); } else if(data.status == 3) { $('.input-inn').attr('readonly',true); $('.conf-message').hide(); $('.conf-message.nalog-status-3').show(); } else if(data.status == 4) { $('.input-inn').attr('readonly',true); $('.conf-message').hide(); $('.conf-message.nalog-status-4').show(); } else if(data.status == 5) { if($('#ex-confirmation:visible').length && !$('#ex-confirmation3:visible').length) { getConfirmationProfileData(); $('#ex-confirmation3').modal(); } } else if(data.status == 6) { $('.input-inn').attr('readonly',true); $('.conf-message').hide(); $('.inn-fieldgroup').hide(); $('.conf-message.nalog-status-6').show(); $('.search-job-link').show(); $('.inn-in-progress').hide(); $('.inn-ready').show(); } else { $('.input-inn').attr('readonly',false); $('.conf-message').hide(); $('.conf-message.nalog-status-0').show(); } } else { $('.inn-binding .errors').html(data.error); } }, error: function(xnr) { console.log(xnr.responseText); } }); } function getConfirmationProfileData() { $.ajax({ url: 'index.php?route=account/account/get_profile_data', dataType:'json', success: function(data) { if(data.success) { var countries = ''; for(var i in data.countries) { var row = data.countries[i]; countries += ''; } console.log(data.countries); $('#popup-confirmation-profile [name="country_id"]').html(countries); for(var i in data.profile) { var v = data.profile[i]; $('#popup-confirmation-profile [name="'+i+'"]').val(v); } } else alert(data.errors.join("\n")); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); console.log(xnr.responseText); } }); } function saveConfirmationData(form) { $.ajax({ url: $(form).attr('action'), method: 'POST', type: 'POST', data: $(form).serialize(), dataType: 'json', success: function(data) { console.log(data); if(data.errors && data.errors.length) { alert(data.errors.join("\n")); } else { alert(data.message); document.location.reload(); } }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); console.log(xnr.responseText); } }) } function sendRegphoneForm(form) { $.ajax({ url: $(form).attr('action'), method: 'POST', type: 'POST', data: $(form).serialize(), dataType: 'json', success: function(data) { console.log(data); $('#regphone-step').val(data.step); if(data.step == 2) { $('#regphone-phone').html(data.telephone_formatted); $('#regphone-1').hide(); $('#regphone-2').show(); } if(data.success) { if(is_reg_page) $.modal.close(); else if(data.redirect) document.location.href = data.redirect; else document.location.href = reg_page_href; } if(data.errors.length) alert(data.errors.join("\n")); } }); } /** * Использование * Отправит форму на index.php и в случае success выдаст стандартное сообщение "Заявка успешно отправлена." * второй параметр, если форма во всплывашке *
* Отправит форму, но вместо сообщений об успешной отправке выполнит функцию myCallbackFunction() *
* Отправит форму на index.php и в случае success выдаст сообщение "мое сообщение" *
* Для отсылки файлов, в тег form нужно добавить enctype="multipart/form-data" *
*/ function sendAjaxForm(form,isPupup,callback) { formData = new FormData(form);// позволит отправить даже файл(нужна поддержка FormData браузером) $.ajax({ url:$(form).attr('action'), method:'POST', type:'POST', //data:$(form).serialize(),// раскоментировать, если браузер не поддерживает FormData. То что ниже закоментировать data: formData, processData: false, // tell jQuery not to process the data contentType: false, // tell jQuery not to set contentType beforeSend: function() { if($(form).find('.errs').length) { $(form).find('.errs').html(''); } }, success:function(data) { if(data=='success') { $(form).trigger('reset'); if(isPupup) { // триггер закрытия всплывашки, если форма является всплывашкой //$(form).parent().find('a.close-absolute').trigger('click'); $.modal.getCurrent().close(); } // если передана функция callback для формы if(typeof(callback) != 'undefined') { //console.log('callback'); if(callback()) { if($(form).attr('success-message')) alert($(form).attr('success-message')); else alert('Заявка успешно отправлена.'); // стандартный alert() успешной отправки } } else { //если у формы есть аттрибут success-message, то выводим в alert это сообщение if($(form).attr('success-message')) alert($(form).attr('success-message')); else alert('Заявка успешно отправлена.'); // стандартный alert() успешной отправки } } else { if($(form).find('.errs').length) { $(form).find('.errs').html(data.replace("\n",'
')); } else alert(data); //console.log(data); } }, error:function(xnr) { alert('Сервер временно недоступен'); } }); } function showPopupReviews(customer_id) { $.ajax({ url: 'index.php?route=account/account/get_reviews&customer_id='+encodeURIComponent(customer_id), dataType: 'json', success:function(data) { var html = ''; if(!data.success) { alert(data.message); } else { if(data.reviews.length == 0) { html += '
'; html += '
'; html += '
Отзывов пока нет
'; html += '
'; html += '
'; } else for(var i in data.reviews) { var row = data.reviews[i]; html += '
'; html += '
'; html += '
'; html += '
'+row['date']+'
'; html += '
'; html += '
    '; for(var c = 1; c <= 5; c++) { html += '
  • '; } //html += '
  • '; html += '
'; html += '
'; html += '
'; html += '
Заказчик: '+row['name']+'
'; html += '
'+row['review']+ '
'; html += '
'; html += '
'; } $('#popup-reviews').html(html); $('#ex-reviews').modal(); } }, error: function(xnr) { alert('Сервер временно недоступен'); } }) return false; } var suborderCnt = typeof(suborder_row) != 'undefined' ? suborder_row : 0; function addSuborder() { var html = $('#step1-template').html(); html = html.replace(/__cnt__/ig,suborderCnt.toString()); $('#adv-order').append('
'+html+'
'); suborderCnt ++; initOwlCheckbox(); return false; } function forgottenClb() { var tel = $('#ex-forgot [name="telephone"]').val(); $('#ex-authorization [name="telephone"]').val(tel); $('#auth-pass-popup-label').html('Пароль из СМС'); $('#ex-authorization .msg').html('На ваш номер был выслан новый пароль'); $('#ex-authorization').modal(); } function rmAccountClb() { $('#confirm-remove-account-sms').modal(); } function rmAccountDoneClb() { $('#confirm-remove-account-done').modal(); } function rmGalleryImage(photo_id) { if(confirm('Удалить фото?')) { var cont = $('#js-custom-gallery-'+photo_id); $.ajax({ url: 'index.php?route=account/account/rm_image_gallery&photo_id='+photo_id, success: function(data) { if(data == 'success') { cont.remove(); } else alert(data); } }); } } function addNewDate() { var html = $('#tpl-new-date').html(); $('#start-dates').append(html); $('#start-dates .datetime-new').each(function() { $(this).removeClass('datetime-new').addClass('datetime'); $(this).attr('name', $(this).attr('t-name')).attr('t-name', ''); $(this).datetimepicker({ format: 'Y-m-d H:i:00', lang: 'ru', mask:true, }); }); return false; } function addToRegistry(customer_id) { $.ajax({ url: 'index.php?route=account/registry/selfemployed_add&customer_id='+customer_id, dataType: 'json', success: function(data) { console.log(data); if(data.success) { $('#ex-add-selfemployed .js-popup-status').html('Добавлен в реестр'); $('.js-inn-search-div [data-id="'+data.customer_id+'"] .js-in-registry').html('✓'); $('.js-inn-search-div [data-id="'+data.customer_id+'"]').attr('data-added','1'); $('#ex-add-selfemployed .js-add-to-registry').parent().hide(); } else alert(data.errors); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); } }); } function getMySelfemployedList(search) { $.ajax({ url: 'index.php?route=account/registry/aj_get_my_selfemployed&s='+encodeURIComponent(search), beforeSend: function() { $('#js-search-results').html('
Загрузка данных...
'); }, success: function(data) { $('#js-search-results').html(data); }, error: function(xnr) { alert('Сервер временно недоступен. Попробуйте позже'); } }) } function addToWithdrawalRegistry(customer_id) { $.ajax({ url: 'index.php?route=account/registry/get_selfemployed&customer_id='+encodeURIComponent(customer_id), dataType: 'json', success: function(data) { //console.log(data); if(!data.success) alert(data.errors); else { var serviceListHtml = $('#js-services-list-tpl').html(); var html = ''; html += ' ✓'; html += ' '+data.customer.customer_id+''; html += ' '; html += ' '+data.customer.full_name+''; html += ' '+data.customer.inn+''; html += ' '+(data.customer.is_partner ? 'Да' : 'Нет')+''; //html += ' '+data.customer.cardnum+''; html += ' '; html += ' '; html += ' '; html += ''; $('#js-registry-payments').prepend(html); $('.select2.new').each(function() { $(this).select2().removeClass('new'); }); $('.date-ru.new').each(function() { $(this).datetimepicker({ timepicker: false, format: 'd.m.Y', lang: 'ru', mask: true }).removeClass('new'); }); $('#js-se-inn-fio').val(''); $.modal.close(); unsaved_form = 1; if(typeof('recalcRegistry') != undefined) recalcRegistry(); } } }); } function openWithdrawalRequisites(form) { var newForm = $('#ex-withdrawal-requisites'); var type = newForm.find('[name=type]').val(); var summ = $(form).find('[name=summ]').val(); summ = parseInt(summ); if(!summ) { alert('Укажите сумму!'); return; } if(type == 1) { newForm.find('.js-to-card').show(); newForm.find('.js-to-deposit').hide(); //js-binded-cards loadUserBankCards('.js-binded-cards',true); } else { newForm.find('.js-to-card').hide(); newForm.find('.js-to-deposit').show(); } newForm.find('[name=summ]').val(summ); newForm.find('.js-withdrawal-summ').html(summ) $('#ex-withdrawal-requisites').modal( { closeExisting: false }); } function withdrawalSuccess() { if($.modal.getCurrent()) $.modal.getCurrent().close(); updateBalance(); return true; } function updateBalance() { $.ajax({ url: 'index.php?route=account/balance/get_balance', success:function(data) { $('.js-balance').html(data); } }); return true; } function sendTinkoffToNPDRequest(link) { if(!$(link).hasClass('disabled')) { //js-send-tinkoff-npd $.ajax({ url: 'index.php?route=account/account/tinkoff_to_npd_request', dataType: 'json', beforeSend: function() { $('.js-send-tinkoff-npd').each(function() { $(this).addClass('disabled'); $(this).attr('last-val',$('
').text($(this).html()).html()); $(this).html('Подождите...'); }); }, success: function(data) { $('.js-send-tinkoff-npd').each(function() { $(this).removeClass('disabled'); $(this).html($('
').html($(this).attr('last-val')).text()); }); if(!data.success) alert(data.message); else { $('.js-send-tinkoff-npd').html('Запрос отправлен').addClass('disabled'); alert(data.message); } }, error: function(xnr) { $('.js-send-tinkoff-npd').each(function() { $(this).removeClass('disabled'); $(this).html($('
').html($(this).attr('last-val')).text()); }); alert('Сервер временно недоступен. Попробуйте позже'); console.log(xnr.responseText); } }); } }