vic4884
2/24/2019 - 6:05 PM

avto_calc.php

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>

<script>
jQuery(document).ready(function($){

$('.price-left a').click(function(){
    localStorage.setItem('arenda_date_1', $('.date1').val());
    localStorage.setItem('arenda_date_2', $('.date2').val());
    localStorage.setItem('arenda_hours', $('#coll-horrs2').val());
});

if( $('.post-top').length ) { parent_box = '.post-top'; }else{ parent_box = '.drop-div'; }

$('[data-ix="popap-open-bron-car"]').click(function(){
    $('.form-hidden').empty();
    $(this).parents(parent_box).find( ".date1" ).clone().appendTo( $('[name="Забронировать авто"] .form-hidden') );
    $(this).parents(parent_box).find( ".date2" ).clone().appendTo( $('[name="Забронировать авто"] .form-hidden') );
    $(this).parents(parent_box).find( ".checkbox:checked" ).clone().appendTo( $('[name="Забронировать авто"] .form-hidden') );
    $('[name="Забронировать авто"] .form-hidden').append('<textarea name="Итого">'+$(this).parents(parent_box).find('.itogo-card,.itogo-tar').text().replace('Итого:', '').trim()+'</textarea>');
});

$('[data-ix="popap-open-bron-vip"]').click(function(){
    $('.form-hidden').empty();
    $(this).parents(parent_box).find( ".date4" ).clone().appendTo( $('[name="Забронировать VIP экскурсию"] .form-hidden') );
    $(this).parents(parent_box).find( ".time2" ).clone().appendTo( $('[name="Забронировать VIP экскурсию"] .form-hidden') );
    $(this).parents(parent_box).find( ".checkbox:checked" ).clone().appendTo( $('[name="Забронировать VIP экскурсию"] .form-hidden') );
    $('[name="Забронировать VIP экскурсию"] .form-hidden').append('<textarea name="Итого">'+$(this).parents(parent_box).find('.itogo-vip').text().replace('Итого:', '').trim()+'</textarea>');
});

$('[data-ix="popap-open-bron-transfer"]').click(function(){
    $('.form-hidden').empty();
    $(this).parents(parent_box).find( ".date3" ).clone().appendTo( $('[name="Забронировать трансфер"] .form-hidden') );
    $(this).parents(parent_box).find( ".time" ).clone().appendTo( $('[name="Забронировать трансфер"] .form-hidden') );
    $(this).parents(parent_box).find( ".select" ).clone().appendTo( $('[name="Забронировать трансфер"] .form-hidden') );
    $(this).parents(parent_box).find( ".checkbox:checked" ).clone().appendTo( $('[name="Забронировать трансфер"] .form-hidden') );
	$('[name="Забронировать трансфер"] .form-hidden').append('<textarea name="Итого">'+$(this).parents(parent_box).find('.itogo-vip,.itogo-tar').text().replace('Итого:', '').trim()+'</textarea>');
});

$('[name="Время начала"]').mask('00:00', {placeholder: "00:00"});
$('[name="Кол-во часов"]').select2();

$.datepicker.setDefaults({
				closeText: 'Закрыть',
				prevText: '<Пред',
				nextText: 'След>',
				currentText: 'Сегодня',
				monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
				monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек'],
				dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
				dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
				dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
				weekHeader: 'Нед',
				dateFormat: 'dd-mm-yy',
				firstDay: 1,
				showAnim: 'slideDown',
				isRTL: false,
				showMonthAfterYear: false,
				yearSuffix: ''
			} );

$('#date1,.date1,.date3,.date4').datepicker({ dateFormat: 'dd.mm.y' });
$('#date2,.date2').datepicker({ dateFormat: 'dd.mm.y' });

if( localStorage.getItem('arenda_date_1') === null ){
    $('#date1,.date1,.date3,.date4').datepicker('setDate', '0');
    $('#date2,.date2').datepicker('setDate', '+1');
}else{
    $('#date1,.date1,.date3,.date4').datepicker('setDate', localStorage.getItem('arenda_date_1'));
    $('#date2,.date2').datepicker('setDate', localStorage.getItem('arenda_date_2'));
}

if( localStorage.getItem('arenda_hours') !== null ){
    $('#coll-horrs2').val(localStorage.getItem('arenda_hours')).trigger('change');
}

$('.cena-tarif span,.price span').each(function(){
$(this).text(number_format($(this).text(), 0, '', ' '));
});

$('.post-top .price span').text(0);
if( localStorage.getItem('arenda_city') !== null ){
    $('.select-ekskursia').val(localStorage.getItem('arenda_city'));
}else{
    localStorage.setItem('arenda_city', 'Сочи');
    $('.select-ekskursia').val(localStorage.getItem('arenda_city'));
}

$('[name="Забронировать (vip)"] select,[name="Забронировать (vip)"] input[type=checkbox]').change(function(){
var service_cost = 0;
$(this).parent().find('.checkbox:checked').each(function(){
    service_cost += parseInt($(this).siblings('.check-label').find('.option-cena').text().replace(' ',''));
});
var city_price = 0;
if( $(this).parents('form').find('select').val() === 'Сочи' ){
    city_price = parseInt($(this).parents('.post-top').find('[data-w-tab="Tab 1"] .cena-tarif span').eq(2).text().replace(' ',''));
    $('.price span').text(number_format(city_price, 0, '', ' '));
}
if( $(this).parents('form').find('select').val() === 'Абхазия' ){
    city_price = parseInt($(this).parents('.post-top').find('[data-w-tab="Tab 2"] .cena-tarif span').eq(2).text().replace(' ',''));
    $('.price span').text(number_format(city_price, 0, '', ' '));
}
$('.itogo-vip span').text(number_format(city_price + service_cost, 0, '', ' '));
});
    
$('.menu-tab-vip [data-w-tab="Tab 1"]').click(function(){
    localStorage.setItem('arenda_city', 'Сочи');
    $('.select-ekskursia').val('Сочи');
    var city_price = $(this).parents('.tab-vip').find('[data-w-tab="Tab 1"] .cena-tarif span').eq(2).text();
    $('.price span').text(number_format(city_price, 0, '', ' '));
    $(this).parents('.ekskursia-card-box').find('.price-one span').text(number_format(city_price, 0, '', ' '));
});

$('.menu-tab-vip [data-w-tab="Tab 2"]').click(function(){
    localStorage.setItem('arenda_city', 'Абхазия');
    $('.select-ekskursia').val('Абхазия');
    var city_price = $(this).parents('.tab-vip').find('[data-w-tab="Tab 2"] .cena-tarif span').eq(2).text();
    $('.price span').text(number_format(city_price, 0, '', ' '));
    $(this).parents('.ekskursia-card-box').find('.price-one span').text(number_format(city_price, 0, '', ' '));
});

if( $('.select-ekskursia').length ){

$('.ekskursia .select-ekskursia, .ekskursia .checkbox').change(function(){
    recalc_excursion();
    });
    
    recalc_excursion();  
    function recalc_excursion(){
        
        $('.cena-tarif span').each(function(){
        $(this).text(number_format($(this).text(), 0, '', ' '));
        });
        
        $('[data-w-tab="VIP экскурсии"] .drop-div').each(function(){
            
            var price = 0; var service_cost = 0;
            var city = $(this).find('.select-ekskursia').val();
            
            if ( city === 'Сочи' ) {
                price = parseInt($(this).find('.vip-ex').eq(4).find('.cena-tarif span').text().replace(' ',''));
            }
            if ( city === 'Абхазия' ) {
                price = parseInt($(this).find('.vip-ex').eq(5).find('.cena-tarif span').text().replace(' ',''));
            }
            
            $(this).find('.checkbox:checked').each(function(){
        		service_cost += parseInt($(this).siblings('.check-label').find('.option-cena').text());
        	});
            
            var total = price + service_cost;
            
            $(this).find('.price span').text(number_format(price, 0, '', ' '));
            $(this).find('.itogo-vip').text(number_format(total, 0, '', ' '));
        });
    }

}

$('.select-ekskursia').trigger('change');

if( $('.transfer').length ){
    
    $('.transfer select,.transfer input[type="checkbox"],.transfer-form select').change(function(){
    recalc_transfer();
    });
    
    recalc_transfer();  
    function recalc_transfer(){
        
        $('.car-box,.main-card-box,.drop-div').each(function(){
            
            var hours = 0; var hours_text = '';
            
            if( $('.drop-div').length ){
                hours = parseInt($(this).find('select').val());
            }else{
                hours = parseInt($('#form-transfer select').val());
            }
        
            if( hours === 1 ) hours_text = hours+' час';
            if( hours >= 2 && hours <= 5 ) hours_text = hours+' часа';
            if( hours >= 5 ) hours_text = hours+' часов';
        
            var price = parseInt($(this).find('.price span,.price-one span').text());
            
            var total = 0; var service_cost = 0;
            
            $(this).find('.checkbox:checked').each(function(){
        		service_cost += parseInt($(this).siblings('.check-label').find('.option-cena').text());
        	});
            
            total = hours*price + service_cost;
            
            $(this).find('.hours,.col-hours').text(hours_text);
            $(this).find('.itogo-transfer .margin-span,.itogo-right .margin-span,.itogo-tr').text(number_format(total, 0, '', ' '));
        });
    }
    
}

if( $('.date1').length ){
$('.form1 input,.form2 input,.form4 input').on('change', recalc_price);

recalc_price();
function recalc_price(){
    
    $('.cena-tarif span,.cena-zolog span,.cena-black span,.price span').each(function(){
    $(this).text(number_format($(this).text(), 0, '', ' '));
    });
	
	var str_1 = $('.date1').val().split('.');
	var str_2 = $('.date2').val().split('.');
	var date1 = Date.parse('20'+str_1[2]+'/'+str_1[1]+'/'+str_1[0]);
	var date2 = Date.parse('20'+str_2[2]+'/'+str_2[1]+'/'+str_2[0]);
	var timeDiff = Math.abs(date2 - date1);
	var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
	
	if ( date2 < date1 ) { alert('Дата конца не может быть раньше начала!'); }
	
	if ( diffDays === 0 ) diffDays = 1;
	
	if ( diffDays === 1 ){
		$('.sutki').text('1 сутки');
	} else {
		$('.sutki').text(diffDays+' суток');
	}
	
	var price_day = 0;
	var price_col = 1;
	var service_cost = 0;
	
	if( diffDays >= 1 && diffDays <= 2 ) price_col = 1;
	if( diffDays >= 3 && diffDays <= 6 ) price_col = 2;
	if( diffDays >= 7 && diffDays <= 14 ) price_col = 3;
	if( diffDays >= 15 && diffDays <= 30 ) price_col = 4;
	if( diffDays >= 31 ) price_col = 5;
	
	if( diffDays < 3 ) { 
	$('[for^=tarif_na_pereprobeg_ot_3_sutok]').hide(); } 
	else { $('[for^=tarif_na_pereprobeg_ot_3_sutok]').show(); }
	
	$('.post-top,.main-card-box,.drop-div').each(function(){
		
		if( $('.car-tarif-tr2').length ){
		    price_day = parseInt($(this).find('.car-tarif-tr2').eq(price_col-1).find('.cena-tarif span').text().replace(' ',''));
		}else{
		    price_day = parseInt($(this).find('.option-line2-tr').eq(price_col).find('.cena-tarif').text().replace(' ',''));
		}
	
		$(this).find('.checkbox:checked').each(function(){
			service_cost += parseInt($(this).siblings('.check-label').find('.option-cena').text());
		});
		
		$(this).find('.price-one .margin-span,.price .margin-span,.price-tarifi .margin-span').text(number_format(price_day, 0, '', ' '));
		$(this).find('.itogo.margin-span').text(number_format(price_day*diffDays + service_cost*diffDays, 0, '', ' '));
		
	});
}

jQuery(document).on( 'ajaxs_done', function( event, data ){
	if(data['action'] === "ajaxs_load_posts"){
		recalc_price();
	}
});
}

})

function number_format(number, decimals, dec_point, thousands_sep) {
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}
</script>