HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //var/www/iranga.kauko.lt/wp-content/plugins/woocommerce-bookings.bad/assets/js/time-picker.js
jQuery(document).ready(function($) {

	$('.block-picker').on( 'click', 'a', function() {
		var value        = $(this).data( 'value' );
		var block_picker = $(this).closest( 'ul' );

		set_selected_time( block_picker, value );
		return false;
	});

	function set_selected_time( block_picker, value ) {
		var submit_button = block_picker.closest( 'form' ).find( '.wc-bookings-booking-form-button' );
		if ( undefined === value ) {
			submit_button.addClass( 'disabled' );
			return;
		}

		var selected_block = block_picker.find( '[data-value="' + value + '"]' );

		if ( undefined === selected_block.data( 'value' ) ) {
			submit_button.addClass( 'disabled' );
			return;
		}

		var target = block_picker.closest( 'div' ).find( 'input' );

		target.val( value ).change();
		block_picker.closest( 'ul' ).find( 'a' ).removeClass( 'selected' );
		selected_block.addClass( 'selected' );
		submit_button.removeClass( 'disabled' );
	}

	$('#wc_bookings_field_resource, #wc_bookings_field_duration').change( function() {
		show_available_time_blocks( this );
	});
	$('.wc-bookings-booking-form fieldset').on( 'date-selected', function() {
		show_available_time_blocks( this );
	});

	var xhr;

	function show_available_time_blocks( element ) {
		var $form               = $(element).closest( 'form' );
		var fieldset            = $(element).closest( 'div' ).find( 'fieldset' )
		var block_picker        = $(element).closest( 'div' ).find( '.block-picker' );
		var selected_block      = block_picker.find( '.selected' );

		var year  = parseInt( fieldset.find( 'input.booking_date_year' ).val(), 10 );
		var month = parseInt( fieldset.find( 'input.booking_date_month' ).val(), 10 );
		var day   = parseInt( fieldset.find( 'input.booking_date_day' ).val(), 10 );

		if ( ! year || ! month || ! day ) {
			return;
		}

		// clear blocks
		block_picker.closest( 'div' ).find( 'input' ).val( '' ).change();
		block_picker.closest( 'div' ).block( {message: null, overlayCSS: { background: '#fff', backgroundSize: '16px 16px', opacity: 0.6 }} ).show();

		// Get blocks via ajax
		if ( xhr ) xhr.abort();

		xhr = $.ajax({
			type: 		'POST',
			url: 		booking_form_params.ajax_url,
			data: 		{
				action: 'wc_bookings_get_blocks',
				form:   $form.serialize()
			},
			success: function( code ) {
				block_picker.html( code );
				resize_blocks();
				block_picker.closest( 'div' ).unblock();
				set_selected_time( block_picker, selected_block.data( 'value' ) );
			},
			dataType: 	"html"
		});
	}

	function resize_blocks() {
		var max_width  = 0;
		var max_height = 0;

		$('.block-picker a').each( function() {
			var width  = $(this).width();
			var height = $(this).height();
			if ( width > max_width ) {
				max_width = width;
			}
			if ( height > max_height ) {
				max_height = height;
			}
		});

		$('.block-picker a').width( max_width );
		$('.block-picker a').height( max_height );
	}
});