$.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 += '
';
}
$('#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('');
$('#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 += ''+row['name']+' ';
}
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 += '';
}
else for(var i in data.reviews)
{
var row = data.reviews[i];
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 += ' '+serviceListHtml+' ';
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);
}
});
}
}