var debug = 1; var simple_tarifs = [400, 800, 1300]; //var simple_tarifs = [300, 500, 900]; var holyday_tarifs = [500, 1000, 1500]; //var holyday_tarifs = [500, 700, 900]; var animator_tarifs = [2000,3000,4500]; var discont_5 = 0.9; var discont_10 = 0.8; var disabledDays = ["01-07-2019",":::","31-07-2019"]; disabledDays = calcDateRangeDecompile(disabledDays); var holyDays = ["01-05-2019","02-05-2019","03-05-2019","09-05-2019","10-05-2019","12-06-2019","04-11-2019","01-01-2020","02-01-2020","03-01-2020","04-01-2020","05-01-2020","06-01-2020","07-01-2020","08-01-2020","09-03-2020","04-11-2020"]; var clearDays = ["14-05-2019", "5-06-2019", "20-08-2019", "03-10-2019", "05-11-2019", "05-12-2019", "14-01-2020", "03-03-2020", "05-10-2020", "07-12-2020"]; var clearMode = 0; var animator_enable = 0; var animator_suits = ''; $( function() { $('#cisuit').append(''); $('#cphone').mask('+7(000)000-00-00'); $('#ci_guest_amount').mask('99'); $('#ci_follower_amount').mask('99'); $('.ctime').clockpicker({ autoclose: true, }); $('.animtimestart').clockpicker({ autoclose: true, }); if ($('#canimator').prop('checked')) { $('#ci_animator_cont').fadeIn(); animator_enable = 1; } else animator_enable = 0; $( "#cdate" ).datepicker({ closeText: 'Закрыть', prevText: '', currentText: 'Сегодня', monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', 'Июл','Авг','Сен','Окт','Ноя','Дек'], dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], weekHeader: 'Не', dateFormat: 'dd-mm-yy', firstDay: 1, beforeShowDay: function(date) { var mt = date.getMonth()+1, dt = date.getDate(), y = date.getFullYear(); var m = ''+mt; var d = ''+dt; if (mt<10) m = '0'+mt; if (dt<10) d = '0'+dt; //alert(d + '-' + (m) + '-' + y); for (i = 0; i < holyDays.length; i++) { //tDate = holyDays[i].split('-'); //alert(getWeekDay(date)); if($.inArray(d + '-' + (m) + '-' + y,disabledDays) != -1) { //return [false]; return [true, 'ui-state-disabled', '']; } else if($.inArray(d + '-' + (m) + '-' + y,holyDays) != -1 || date.getDay() == 6 || date.getDay() == 0) { //return [false]; return [true, 'ui-state-holyday', '']; } else for (i = 0; i < clearDays.length; i++) { if($.inArray(d + '-' + (m) + '-' + y,clearDays) != -1) { //return [false]; return [true, 'ui-state-clearday', '']; } else return [true, 'ui-state-simple', '']; } } return [true]; } }); } ); function getWeekDay(date) { var days = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']; var result; result = days[date.getDay()]; return result; } function ci_delete_bdb(row_id) { $(row_id).fadeOut(500, function(){ $(row_id).remove(); }); } function ci_add_birthdayboy() { var row_id = 'ci_row_id_'+parseInt(new Date().getTime()/1000); $('#new_ci_cont').append('
') } function ci_timeChange(obj){ var time = $(obj).val().split(':'); if ((( ((time[0] < 10 || time[0] > 20) && clearMode == 0) || (time[0] < 14 || time[0] > 20) && clearMode == 1)) && time!='') { if (clearMode == 0) alert('Выберите время в интервале между 10 и 20 часами'); else if (clearMode == 1) alert('Выберите время в интервале между 14 и 20 часами'); $(obj).val(''); } } function date_convert(date, zero) { var temp = date.split('-'); if (temp[0]<10 && temp[0].length < 2 && zero === true) temp[0] = '0'+temp[0]; if (temp[1]<10 && temp[1].length < 2 && zero === true) temp[1] = '0'+temp[1]; if (zero === false) { temp[0] = parseInt(temp[0]) + ''; temp[1] = parseInt(temp[1]) + ''; } var new_date = temp[0]+'-'+temp[1]+'-'+temp[2]; return new_date; } function ci_dateChange(obj) { var sel_date = $(obj).val(); if ($.inArray(sel_date,clearDays) != -1){ $('.clearday_tooltip').fadeIn("slow"); $('#ctime').val(''); clearMode = 1; } else { $('.clearday_tooltip').fadeOut("slow"); clearMode = 0 } } function ci_check_order_fields(order_fields) { var cname = $('#cname').val(); var cphone = $('#cphone').val(); var cdate = $('#cdate').val(); var ctime = $('#ctime').val(); var ctarif = $('#ctarif').val(); var err = 0; if (cdate == '' || ctime == '' || ctarif < 0) { err = 1; } if ( order_fields == 1 && (cdate == '' || ctime == '' || ctarif < 0 || cname.length < 3 || cphone.length < 10)) { err = 2; } if (err == 1) { alert('Не все обязательные для расчета поля заполнены'); return false; } if (err == 2) { alert('Не все обязательные для заказа поля заполнены'); return false; } return true; } function ci_check_birthbs_fields() { var err = 0; $('input[name=ciname]').each(function(index) { if ($('input[name=ciname]').eq(index).val() == '' || $('input[name=cisex]').eq(index).val() == '' || $('input[name=ciage]').eq(index).val() == '') { err = 1; } }); if (err == 1) { alert('Не все данные именинников заполнены'); return false; } return true; } function ci_calculate(){ var day_mode = 'simple'; var cur_tarifs = [0,0,0]; var animator_price = 0; var price = 0; var follow_over_amount = 0; var over_price_followers = 0; var guest_discont = 1; var bd_boys_price = 0; var total_summ = 0; var sel_date = $('#cdate').val(); // Выбранная дата var sel_time = $('#ctime').val(); // Выбранное время var sel_tarif = $('#ctarif').val(); // Выбранный тариф var ci_guest_amount = parseInt($('#ci_guest_amount').val()); // Количество гостей var ci_follower_amount = $('#ci_follower_amount').val(); // Количество сопровождающих var time_arr = sel_time.split(':'); var bd_boys_amount = 0; var bd_payman_amount = 0; var date = new Date(); var tdate = ''; if ($('#ci_guest_amount').val() == '') ci_guest_amount = 0; if (ci_follower_amount == '') ci_follower_amount = 0; $('input[name=ciname]').each(function(index){ if($('input[name=ciname]').eq(index).val() != '' && $('input[name=ciage]').eq(index).val() != '') bd_boys_amount++; }); date = Date.parseExact(sel_date, "dd-MM-yyyy"); // Опредлеляем праздничный или простой день if ($.inArray(sel_date,holyDays) != -1 || date.getDay() == 6 || date.getDay() == 0) { cur_tarifs = holyday_tarifs; day_mode = 'holyday'; } else { cur_tarifs = simple_tarifs; day_mode = 'simple'; } //Сколько именинников оплачивается bd_boys_price = bd_boys_amount - Math.floor(ci_guest_amount / 2); if (bd_boys_price < 0) bd_boys_price = 0; //Количество оплачиваемых людей (гости и именинники) bd_payman_amount = ci_guest_amount + bd_boys_price; // Считаем гостевую скидку // if (bd_payman_amount >= 15) //guest_discont = discont_15; if (bd_payman_amount >= 10) guest_discont = discont_5; else guest_discont = 1; // Определяем нужна ли скидка в 20% будние дни до 13.00 if (day_mode == 'simple' && time_arr[0] <= 12 && time_arr[1] <= 59 && sel_tarif != 2){ price = cur_tarifs[sel_tarif] * 0.8; guest_discont = 1; } else { price = cur_tarifs[sel_tarif]; } // За всех вторых сопровождающих + 100р //if (ci_follower_amount > ci_guest_amount) //{ // follow_over_amount = ci_guest_amount - ci_follower_amount; // over_price_followers = Math.abs(follow_over_amount * 100); //} //else // over_price_followers = 0; over_price_followers = ci_follower_amount * 100; if ($('#canimator').prop('checked')) { var sel_animator_tarif = $('#ciduration').val(); animator_price = animator_tarifs[sel_animator_tarif]; animator_enable = 1; } else { animator_price = 0; animator_enable = 0; } //if (ci_guest_amount >= (bd_boys_amount * 2)) // bd_boys_price = 0; //else // bd_boys_price = bd_boys_amount ; //bd_boys_price = bd_boys_amount / ci_guest_amount; // 1i - (2 / 2) = 1 // 2i - (2 / 2) = 1 // 5i - (2 / 2)) = 4 // 5i - (5 / 2) = 3 //alert(parseInt(bd_boys_price)); total_summ = Math.ceil((parseInt(price) * ((parseInt(ci_guest_amount) + parseInt(bd_boys_price))) * guest_discont) + parseInt(over_price_followers) + parseInt(animator_price)); var pre_summ = (parseInt(price) * ((parseInt(ci_guest_amount) + parseInt(bd_boys_price))) * guest_discont); //alert(price+' * (('+parseInt(ci_guest_amount)+' + '+parseInt(bd_boys_price)+' ) * '+guest_discont+ ' ) + '+parseInt(over_price_followers)+' + '+parseInt(animator_price)+' = '+Math.ceil(parseInt(price) * ((parseInt(ci_guest_amount) + parseInt(bd_boys_price)) * guest_discont) + parseInt(over_price_followers) + parseInt(animator_price))); if (ci_check_order_fields(0) == true && ci_check_birthbs_fields() == true ) { $('#total_summ').html(total_summ); if (debug > 0) { $('#debug_total_count').html(''); $('#debug_total_count').fadeIn(); if (day_mode == 'simple') $('#debug_total_count').append('

Будний день. Тариф: '+cur_tarifs[sel_tarif]+' руб/чел

'); if (day_mode == 'holyday') $('#debug_total_count').append('

Праздничный день. Тариф: '+cur_tarifs[sel_tarif]+' руб/чел

'); if (day_mode == 'simple' && time_arr[0] <= 12 && time_arr[1] <= 59 && sel_tarif != 2) $('#debug_total_count').append('

Буднее утро -20%. Тариф: '+(cur_tarifs[sel_tarif]*0.8)+' руб/чел

'); $('#debug_total_count').append('

Расчет за именинников: '+bd_boys_amount+' чел ['+Math.ceil(price * (bd_boys_price))+' руб]

'); $('#debug_total_count').append('

Расчет за гостей: '+ci_guest_amount+' чел ['+Math.ceil(price * (ci_guest_amount))+' руб]

'); $('#debug_total_count').append('

С учетом скидки '+((100 - guest_discont * 100))+'% ['+Math.ceil(pre_summ)+' руб]

'); $('#debug_total_count').append('

Вторые сопровождающие ( '+ci_follower_amount+' чел) +'+over_price_followers+' руб

Промежуточный итог ['+Math.ceil(pre_summ + parseInt(over_price_followers))+' руб]

'); if ($('#canimator').prop('checked')) $('#debug_total_count').append('

Доплата за аниматора: +'+animator_price+' руб'); if (debug > 1){ $('#debug_total_count').append('

Формула: ('+parseInt(price)+' * '+'('+parseInt(ci_guest_amount) +' + '+ parseInt(bd_boys_price)+') * '+ guest_discont+')' +' + '+ parseInt(over_price_followers) +' + '+ parseInt(animator_price))+'

'; } } return total_summ; } else return 0; } function ci_send_order(step){ var day_mode = 'simple'; var cur_tarifs = [0,0,0]; var animator_price = 0; var price = 0; var follow_over_amount = 0; var over_price_followers = 0; var guest_discont = 1; var total_summ = 0; var sel_date = $('#cdate').val(); // Выбранная дата var sel_time = $('#ctime').val(); // Выбранное время var sel_tarif = $('#ctarif').val(); // Выбранный тариф var ci_guest_amount = $('#ci_guest_amount').val(); // Количество гостей var ci_follower_amount = $('#ci_follower_amount').val(); // Количество сопровождающих var time_arr = sel_time.split(':'); if (ci_guest_amount == '') ci_guest_amount = 0; var cname = $('#cname').val(); var cphone = $('#cphone').val(); var cdate = $('#cdate').val(); var ctime = $('#ctime').val(); var ctimestart = $('#ctimestart').val(); var ciduration = $('#ciduration').val(); var cisuit = $('#cisuit').val(); var birthday_boys = ''; var calcModalWindow = new wmModalWindow ('indexOrderModalForm'); calcModalWindow.init(); total_summ = ci_calculate(); if (step == 1) { if (document.querySelector('.indexOrderModalForm')){ document.querySelector('#confirm-phone').value = cphone; calcModalWindow.show(); } return false; } if (step == 2) { /* console.log(cphone); console.log(document.querySelector('#confirm-phone').value); */ if (document.querySelector('#confirm-phone').value != '') cphone = document.querySelector('#confirm-phone').value; calcModalWindow.hide(); /* return false; */ } if (ci_check_order_fields(1) == true ) { if (ci_check_birthbs_fields() == true ) { $('input[name=ciname]').each(function(index){ birthday_boys += "Имя: "+$('input[name=ciname]').eq(index).val()+"    Возраст: "+$('input[name=ciage]').eq(index).val()+"   Пол: "+$('select[name=cisex]').eq(index).val()+"
"; }); if (total_summ > 0) { $.post('ajax/zakaz_calc.php',{'act':'send_order', cname:cname, cphone:cphone, cdate:cdate, ctime:ctime, ci_guest_amount:ci_guest_amount, ci_follower_amount:ci_follower_amount, sel_tarif:sel_tarif, total_summ:total_summ, animator_enable:animator_enable, ctimestart:ctimestart, ciduration:ciduration, cisuit:cisuit, 'birthday_boys':birthday_boys}, function(result){ alert(result); document.location.reload(); }); } } } } function calcDateRangeDecompile(dateRange) { var temp; var start; var stop; var tail; var arr = []; //["01-07-2019":::"31-07-2019"] if (dateRange.indexOf(':::') !== -1) { temp = dateRange[0].split('-'); start = temp[0]; tail = '-'+temp[1]+'-'+temp[2]+''; temp = dateRange[2].split('-'); stop = temp[0]; for (var i=parseInt(start); i<=parseInt(stop); i++) { if (i<10) arr.push( '0'+i.toString()+tail); else arr.push( i.toString()+tail); } return arr; } else return dateRange; }