/* global lty_frontend_params */
jQuery(function ($) {
'use strict';
var ticket_numbers = [];
var LTY_Frontend = {
init: function () {
this.trigger_on_page_load();
// Choose the ticket tab.
$(document).on('click', '.lty-lottery-ticket-tab', this.lottery_ticket_tab_selection);
// Select the ticket.
$(document).on('click tap', '.lty-ticket', this.lottery_ticket_selection);
// Unselect the ticket.
$(document).on('click tap', '.lty-selected-ticket', this.lottery_ticket_unselection);
// Select the question answer.
$(document).on('click', 'ul.lty-lottery-answers li', this.select_question_answer);
// Select the predefined button.
$(document).on('click', 'ul.lty-predefined-buttons li', this.select_predefined_button);
// Increase the quantity.
$(document).on('click', '.lty-lottery-range-slider-increment', this.increase_rangeslider_quantity);
// Decrease the quantity.
$(document).on('click', '.lty-lottery-range-slider-decrement', this.decrease_rangeslider_quantity);
// Validate the participate now button.
$(document).on('click', '.lty-participate-now-button', this.validate_participate);
// Process the ticket lucky dip.
$(document).on('click', '.lty-lucky-dip-button', this.process_lucky_dip);
// Process the add more ticket lucky dip.
$(document).on('click', '.lty-add-more-lucky-tip', this.add_more_lucky_dip);
// Process the manual search action.
$(document).on('click', '.lty-manual-ticket-search-action', this.process_manual_ticket_search_action);
// Process the click to back action.
$(document).on('click', '.lty-manual-ticket-click-to-back-action', this.process_manual_ticket_click_to_back_action);
// Process the lottery price based on qty.
$(document).on('change keyup', '.lty-participate-now .qty', this.process_lottery_price_based_on_qty);
// Pagination.
$(document).on('click', '.lty-frontend-table .lty-pagination', this.pagination);
$(document).on('click', '.lty-lottery-winners-by-date-wrapper .lty-pagination', this.winners_by_date_pagination);
// Search ticket logs.
$(document).on('click', '.lty-ticket-logs-search-btn', this.search_ticket_logs);
$(document).on('click', '.lty-toggle-lottery-tickets', this.toggle_lottery_tickets_per_tab);
// Popup dashboard lottery tickets.
$(document).on('click', '.lty-view-all-tickets', this.display_customer_popup_lottery_tickets);
},
trigger_on_page_load: function () {
LTY_Frontend.set_price_amount($('.lty-participate-now .qty').val());
if ('yes' == lty_frontend_params.disable_participate_now_button) {
$('.lty_manual_add_to_cart').attr('disabled', true);
}
$('.lty-manual-ticket-click-to-back-action').hide();
LTY_Frontend.handle_add_cart_button();
LTY_Frontend.initialize_range_slider();
LTY_Frontend.hide_lottery_tickets();
LTY_Frontend.maybe_select_predefined_button($('input[name="quantity"]').val());
},
lottery_ticket_tab_selection: function (event) {
event.preventDefault();
LTY_Frontend.handle_lottery_ticket_tab_selection($(event.currentTarget));
},
select_predefined_button: function (event) {
event.preventDefault();
LTY_Frontend.handle_select_predefined_button($(event.currentTarget));
},
process_lottery_price_based_on_qty: function (event) {
event.preventDefault();
LTY_Frontend.set_price_amount($(event.currentTarget).val());
LTY_Frontend.maybe_select_predefined_button($(event.currentTarget).val());
},
initialize_range_slider: function () {
var field = $('.lty-quantity-range-slider:not(.ui-slider)');
if (!field.length) {
return false;
}
field.slider({
range: 'min',
min: field.data('min'),
max: field.data('max'),
value: field.data('preset'),
slide: function (event, ui) {
var wrapper = $(this).closest('.lty-lottery-range-slider-wrapper');
wrapper.find('.lty-quantity-selector').val(ui.value);
wrapper.find('.lty-range-slider-current-value').text(ui.value);
var percentage = ((ui.value - field.data('min')) / (field.data('max') - field.data('min'))) * 100;
wrapper.find('.lty-lottery-range-value').css({ 'left': percentage + '%' });
LTY_Frontend.set_price_amount(ui.value);
},
change: function (event, ui) {
var wrapper = $(this).closest('.lty-lottery-range-slider-wrapper');
wrapper.find('.lty-quantity-selector').val(ui.value);
wrapper.find('.lty-range-slider-current-value').text(ui.value);
var percentage = ((ui.value - field.data('min')) / (field.data('max') - field.data('min'))) * 100;
wrapper.find('.lty-lottery-range-value').css({ 'left': percentage + '%' });
LTY_Frontend.set_price_amount(ui.value);
}
});
var preset = field.data('preset');
field.slider('value', preset);
},
select_question_answer: function (e) {
e.preventDefault();
var $this = $(e.currentTarget),
answers_wrapper = $($this).closest('.lty-lottery-answers'),
answer_id = $($this).data('answer-id');
answers_wrapper.find('li').removeClass('lty-selected');
$($this).addClass('lty-selected');
$('.lty-question-answer-id').val(answer_id);
LTY_Frontend.handle_add_cart_button();
},
handle_select_predefined_button: function ($this) {
var predefined_button_wrapper = $('.lty-predefined-buttons'),
predefined_button_id = $($this).data('predefined-button-id'),
ticket_quantity = $($this).data('ticket-quantity'),
per_ticket_amount = $($this).data('per-ticket-amount'),
is_predefined_button_selected = $($this).hasClass('lty-selected-button');
// Return if the predefined button is already selected.
if (is_predefined_button_selected && ticket_quantity == $('input[name="quantity"]').val()) {
return;
}
predefined_button_wrapper.find('li').removeClass('lty-selected-button');
// Deselect the predefined button.
if (is_predefined_button_selected && ticket_quantity != $('input[name="quantity"]').val()) {
predefined_button_id = '';
per_ticket_amount = '';
} else {
// Select the predefined button.
$($this).addClass('lty-selected-button');
$('input[name="quantity"]').val(ticket_quantity);
}
$('.lty-predefined-button-id').val(predefined_button_id);
$('.lty-per-ticket-amount').val(per_ticket_amount);
LTY_Frontend.handle_range_slider_quantity();
LTY_Frontend.handle_add_cart_button();
},
increase_rangeslider_quantity: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
wrapper = $($this).closest('.lty-lottery-range-slider-wrapper'),
current_value = wrapper.find('.lty-quantity-selector').val(),
range_slider = wrapper.find('.lty-quantity-range-slider');
if (range_slider.data('max') > current_value) {
current_value++;
range_slider.slider('value', current_value);
wrapper.find('.lty-quantity-selector').val(current_value);
}
LTY_Frontend.maybe_select_predefined_button(current_value);
},
decrease_rangeslider_quantity: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
wrapper = $($this).closest('.lty-lottery-range-slider-wrapper'),
current_value = wrapper.find('.lty-quantity-selector').val(),
range_slider = wrapper.find('.lty-quantity-range-slider');
if (range_slider.data('min') < current_value) {
current_value--;
range_slider.slider('value', current_value);
wrapper.find('.lty-quantity-selector').val(current_value);
}
LTY_Frontend.maybe_select_predefined_button(current_value);
},
/**
* Handle the range slider quantity.
*
* @since 10.0.0
*/
handle_range_slider_quantity: function () {
var wrapper = $('.lty-lottery-range-slider-wrapper'),
range_slider = wrapper.find('.lty-quantity-range-slider'),
quantity = $('input[name="quantity"]').val();
if (range_slider.data('min') > quantity || range_slider.data('max') < quantity) {
quantity = range_slider.data('min');
}
range_slider.slider('value', quantity);
wrapper.find('.lty-quantity-selector').val(quantity);
},
handle_add_cart_button: function () {
var show_button = true,
ticket_container = $('.lty-lottery-ticket-container'),
question_container = $('.lty-lottery-question-answer-container'),
lucky_dip_container = $('.lty-lottery-ticket-lucky-dip-container'),
predefined_button_container = $('.lty-lottery-predefined-buttons-container');
if (ticket_container.length && '' == ticket_container.find('.lty-lottery-ticket-numbers').val()) {
$(".lty_manual_add_to_cart").attr("title", lty_frontend_params.ticket_selection_alert_message);
show_button = false;
}
if (question_container.length && 'yes' == question_container.data('force') && '' == question_container.find('.lty-question-answer-id').val()) {
$(".lty_manual_add_to_cart").attr("title", lty_frontend_params.question_answer_alert_message);
show_button = false;
}
if (predefined_button_container.length && true == lty_frontend_params.is_predefined_buttons_enabled && '' == predefined_button_container.find('.lty-predefined-button-id').val() && false == lty_frontend_params.can_display_predefined_with_quantity_selector) {
$(".lty_manual_add_to_cart").attr("title", lty_frontend_params.predefined_buttons_alert_message);
show_button = false;
}
// Show manual add to cart button.
if (show_button) {
$('.lty_manual_add_to_cart').removeAttr('disabled');
$('.lty_manual_add_to_cart').removeAttr('title');
}
// Show Lucky dip Button.
if (question_container.length && 'yes' == question_container.data('force') && '' != question_container.find('.lty-question-answer-id').val()) {
if (lucky_dip_container.length) {
lucky_dip_container.find('.lty-lucky-dip-button').removeAttr('disabled');
lucky_dip_container.find('.lty-lucky-dip-button').removeAttr('title');
}
}
},
validate_participate: function (event) {
var error_message = null;
if ('yes' == lty_frontend_params.guest_user) {
error_message = lty_frontend_params.guest_error_msg;
}
var ticket_container = $('.lty-lottery-ticket-container'),
question_container = $('.lty-lottery-question-answer-container'),
predefined_button_container = $('.lty-lottery-predefined-buttons-container'),
lucky_dip_container = $('.lty-lottery-ticket-lucky-dip-container');
if (!error_message && ticket_container.length && '' == ticket_container.find('.lty-lottery-ticket-numbers').val()) {
error_message = lty_frontend_params.ticket_selection_alert_message;
}
if (!error_message && question_container.length && 'yes' == question_container.data('force') && '' == question_container.find('.lty-question-answer-id').val()) {
error_message = lty_frontend_params.question_answer_alert_message;
}
if (!error_message && predefined_button_container.length && true == lty_frontend_params.is_predefined_buttons_enabled && '' == predefined_button_container.find('.lty-predefined-button-id').val() && false == lty_frontend_params.can_display_predefined_with_quantity_selector) {
error_message = lty_frontend_params.predefined_buttons_alert_message;
}
if (!error_message && question_container.length && 'yes' == question_container.data('force') && '' != question_container.find('.lty-question-answer-id').val() && 'yes' != lty_frontend_params.incorrectly_selected_answer_restriction && 'yes' == lty_frontend_params.validate_correct_answer) {
if ('yes' == lty_frontend_params.disable_answer_verification_alert || confirm(lty_frontend_params.verify_question_answer_alert_message)) {
$(event.currentTarget).submit();
return true;
} else {
event.preventDefault();
return false;
}
}
if (error_message) {
event.preventDefault();
$.alertable.alert(error_message);
return false;
}
return true;
},
handle_lottery_ticket_tab_selection: function ($this) {
var tickets_container = $($this).closest('.lty-lottery-ticket-container');
LTY_Frontend.block(tickets_container);
var data = ({
action: 'lty_ticket_tab_selection',
product_id: tickets_container.find('.lty-ticket-product-id').val(),
tab: $this.data('tab') ? $this.data('tab') : 1,
index: $this.data('index') ? $this.data('index') : 0,
ticket_numbers: $('.lty-lottery-ticket-numbers').val(),
lty_security: lty_frontend_params.lottery_tickets_nonce,
});
$.post(lty_frontend_params.ajaxurl, data, function (res) {
if (true === res.success) {
tickets_container.find('.lty-lottery-ticket-tab').removeClass('lty-active-tab');
$($this).addClass('lty-active-tab');
tickets_container.find('.lty-lottery-ticket-tab-content').html(res.data.html);
// class 'lty-selected-ticket' added when ticket tab selection is clicked.
var $selected_ticket_numbers = res.data.ticket_numbers;
for (var i = 0; i < $selected_ticket_numbers.length; i++) {
$('.lty-ticket[data-ticket="' + $selected_ticket_numbers[i] + '"]').addClass('lty-selected-ticket');
}
LTY_Frontend.hide_lottery_tickets();
} else {
$.alertable.alert(res.data.error);
}
LTY_Frontend.unblock(tickets_container);
});
},
lottery_ticket_selection: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
tickets_container = $($this).closest('.lty-lottery-ticket-container'),
selected_tickets = tickets_container.find('.lty-lottery-ticket-numbers'),
quantity = tickets_container.find('.lty-lottery-ticket-quantity');
if ($this.hasClass("lty-booked-ticket") || $this.hasClass("lty-processing-ticket") || $this.hasClass("lty-selected-ticket")) {
return;
}
$($this).removeClass('lty-unselected-ticket');
$($this).addClass('lty-selected-ticket');
// Push selected ticket numbers in array.
ticket_numbers.push($($this).data('ticket'));
selected_tickets.val(ticket_numbers);
quantity.val(ticket_numbers.length);
LTY_Frontend.set_price_amount(quantity.val());
LTY_Frontend.handle_add_cart_button();
},
lottery_ticket_unselection: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
tickets_container = $($this).closest('.lty-lottery-ticket-container'),
selected_tickets = tickets_container.find('.lty-lottery-ticket-numbers'),
quantity = tickets_container.find('.lty-lottery-ticket-quantity');
var $ticket = $($this).data('ticket');
$($this).removeClass('lty-selected-ticket');
$($this).addClass('lty-unselected-ticket');
// Splice index number , delete count.
ticket_numbers.splice(ticket_numbers.indexOf($ticket), 1);
selected_tickets.val(ticket_numbers);
quantity.val(ticket_numbers.length);
LTY_Frontend.set_price_amount(quantity.val());
},
process_lucky_dip: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
$validate_lucky_tip = LTY_Frontend.validate_lucky_dip(event);
if (!$validate_lucky_tip) {
return false;
}
LTY_Frontend.lucky_dip_action($this);
},
lucky_dip_action: function ($this) {
LTY_Frontend.block($this);
var data = ({
action: 'lty_process_lucky_dip',
product_id: $('.lty-ticket-product-id').val(),
qty: $('.lty-lucky-dip-quantity,.qty').val(),
answer: $('.lty-question-answer-id').val(),
lty_security: lty_frontend_params.lottery_tickets_nonce,
});
$.post(lty_frontend_params.ajaxurl, data, function (res) {
if (true === res.success) {
// Redirect to cart option.
if ('yes' == lty_frontend_params.enable_cart_redirection) {
window.location = lty_frontend_params.cart_url;
return;
} else {
$.alertable.prompt(res.data.msg, {
prompt: res.data.html,
cancelButton: false
});
}
} else {
$.alertable.alert(res.data.error);
}
LTY_Frontend.unblock($this);
});
},
validate_lucky_dip: function ($this) {
var error_message = null;
if ('yes' == lty_frontend_params.guest_user) {
error_message = lty_frontend_params.guest_error_msg;
}
var ticket_container = $('.lty-lottery-ticket-container'),
question_container = $('.lty-lottery-question-answer-container'),
lucky_dip_container = $('.lty-lottery-ticket-lucky-dip-container');
if (!error_message && question_container.length && 'yes' == question_container.data('force') && '' == question_container.find('.lty-question-answer-id').val()) {
if (lucky_dip_container.length) {
error_message = lty_frontend_params.question_answer_alert_message;
}
}
if (!error_message && question_container.length && 'yes' == question_container.data('force') && '' != question_container.find('.lty-question-answer-id').val() && 'yes' != lty_frontend_params.incorrectly_selected_answer_restriction && 'yes' == lty_frontend_params.validate_correct_answer) {
if ('yes' != lty_frontend_params.disable_answer_verification_alert && !confirm(lty_frontend_params.verify_question_answer_alert_message)) {
$this.preventDefault();
return false;
}
}
if (error_message) {
$this.preventDefault();
$.alertable.alert(error_message);
return false;
}
return true;
},
add_more_lucky_dip: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
tickets_container = $('.lty-lottery-ticket-container');
var $validate_lucky_tip = LTY_Frontend.validate_lucky_dip(event);
if (!$validate_lucky_tip) {
return false;
}
LTY_Frontend.lucky_dip_action($this, tickets_container);
},
set_price_amount: function ($qty) {
$qty = $qty > 1 ? $qty : 1;
var $price_element = $('.lty-lottery-price'),
$quantity_element = $('.lty-ticket-quantity'),
$price_amount = LTY_Frontend.format_number($price_element.data('price-amount'), $qty),
$html = '' + lty_frontend_params.currency + '' + $price_amount + '';
if ('right_space' == lty_frontend_params.currency_pos) {
var $html = '' + $price_amount + ' ' + lty_frontend_params.currency + '';
} else if ('right' == lty_frontend_params.currency_pos) {
var $html = '' + $price_amount + '' + lty_frontend_params.currency + '';
} else if ('left_space' == lty_frontend_params.currency_pos) {
var $html = '' + lty_frontend_params.currency + ' ' + $price_amount + '';
}
$($price_element).html($html);
$($quantity_element).html($qty);
},
format_number: function ($price_amount, $qty) {
return accounting.formatNumber(parseFloat($price_amount) * $qty, lty_frontend_params.decimals, lty_frontend_params.thousand_separator, lty_frontend_params.decimal_separator);
},
process_manual_ticket_search_action: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
tickets_container = $($this).closest('.lty-lottery-ticket-container'),
$searched_value = $('.lty-manual-ticket-search').val();
if (!$searched_value) {
$.alertable.alert(lty_frontend_params.manual_ticket_search_empty_error);
return false;
}
LTY_Frontend.block(tickets_container);
var data = ({
action: 'lty_manual_ticket_search_action',
searched_value: $searched_value,
product_id: tickets_container.find('.lty-ticket-product-id').val(),
lty_security: lty_frontend_params.lottery_manual_ticket_search_action_nonce,
});
$.post(lty_frontend_params.ajaxurl, data, function (res) {
if (true === res.success) {
if (res.data.html) {
tickets_container.find('.lty-lottery-ticket-tab-wrapper').hide();
tickets_container.find('.lty-ticket-number-wrapper').hide();
tickets_container.find('.lty-lottery-ticket-tab-content').html(res.data.html);
tickets_container.find('.lty-manual-ticket-click-to-back-action').show();
} else {
tickets_container.find('.lty-lottery-ticket-tab-wrapper').show();
tickets_container.find('.lty-ticket-number-wrapper').show();
}
LTY_Frontend.unblock(tickets_container);
} else {
$.alertable.alert(res.data.error);
LTY_Frontend.unblock(tickets_container);
}
});
},
process_manual_ticket_click_to_back_action: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
tickets_container = $($this).closest('.lty-lottery-ticket-container');
tickets_container.find('.lty-ticket-number-content-search').hide();
tickets_container.find('.lty-lottery-ticket-tab-wrapper').show();
tickets_container.find('.lty-ticket-number-wrapper').show();
tickets_container.find('.lty-manual-ticket-click-to-back-action').hide();
tickets_container.find('.lty-manual-ticket-search').val('');
LTY_Frontend.handle_lottery_ticket_tab_selection(event);
},
pagination: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
wrapper = $this.closest('.lty-data-table-wrapper'),
filter = wrapper.find('.lty-frontend-filter'),
selected_page = $this.data('page'),
table_action_name = $this.closest('td').data('action_name'),
product_id = $this.closest('td').data('product_id');
LTY_Frontend.block(wrapper);
var data = ({
action: 'lty_pagination_action',
selected_page: selected_page,
product_id: '' != product_id ? product_id : 0,
table_action_name: table_action_name,
s: filter.find('.lty-frontend-search').val(),
lty_security: lty_frontend_params.pagination_action_nonce
});
$.post(lty_frontend_params.ajaxurl, data, function (res) {
if (true === res.success) {
wrapper.html(res.data.html);
} else {
alert(res.data.error);
}
LTY_Frontend.unblock(wrapper);
});
},
winners_by_date_pagination: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
wrapper = $this.closest('.lty-lottery-winners-by-date-wrapper'),
selected_page = $this.data('page');
LTY_Frontend.block(wrapper);
var data = ({
action: 'lty_pagination_action',
selected_page: selected_page,
per_page: wrapper.find('.lty-pagination-per-page').val(),
order: wrapper.find('.lty-pagination-order').val(),
date_filter_number: wrapper.find('.lty-pagination-date-filter-number').val(),
date_filter_unit: wrapper.find('.lty-pagination-date-filter-unit').val(),
table_action_name: 'winners_by_date',
lty_security: lty_frontend_params.pagination_action_nonce
});
$.post(lty_frontend_params.ajaxurl, data, function (res) {
if (true === res.success) {
wrapper.replaceWith(res.data.html);
} else {
alert(res.data.error);
}
LTY_Frontend.unblock(wrapper);
});
},
search_ticket_logs: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
wrapper = $this.closest('.lty-ticket-logs-wrapper');
LTY_Frontend.block(wrapper);
var data = ({
action: 'lty_search_ticket_logs',
s: wrapper.find('.lty-ticket-logs-search').val(),
product_id: wrapper.find('.lty-lottery-product-id').val(),
lty_security: lty_frontend_params.search_nonce
});
$.post(lty_frontend_params.ajaxurl, data, function (res) {
if (true === res.success) {
wrapper.replaceWith(res.data.html);
} else {
alert(res.data.error);
}
LTY_Frontend.unblock(wrapper);
});
},
/**
* Hide lottery tickets if view more option enabled.
*
* @since 8.6.0
*/
hide_lottery_tickets: function () {
if (0 < $('.lty-lottery-ticket-tab-content').length && 0 < $('.lty-hidden-ticket').length) {
$('.lty-lottery-ticket-tab-content').find('.lty-hidden-ticket').hide();
var $button = $('.lty-lottery-ticket-tab-content').find('.lty-toggle-lottery-tickets');
$($button).data('action', 'view_more');
$($button).data('step', 1);
$($button).text(lty_frontend_params.view_more_ticket_label);
}
},
/**
* Toggle lottery tickets per tab.
*
* @since 8.6.0
* @param {event} event
*/
toggle_lottery_tickets_per_tab: function (event) {
event.preventDefault();
var $this = $(event.currentTarget),
$wrapper = $($this).closest('.lty-ticket-number-wrapper'),
$step = parseInt($($this).data('step'));
if ('view_less' === $($this).data('action')) {
LTY_Frontend.hide_lottery_tickets();
$('html, body').animate({ scrollTop: $('.lty-lottery-ticket-tab-content').offset().top }, 1000);
return;
}
if (0 < $($wrapper).find('.lty-step-' + $step).length) {
$($wrapper).find('.lty-step-' + $step).show();
}
if (0 < $($wrapper).find('.lty-step-' + ($step + 1)).length) {
$($this).data('step', ($step + 1));
} else {
$($this).data('action', 'view_less');
$($this).text(lty_frontend_params.view_less_ticket_label);
}
},
/**
* Display customer popup dashboard lottery tickets
*
* @since 8.7.0
* @param {event} event
*/
display_customer_popup_lottery_tickets: function (event) {
event.preventDefault();
var product_id = $(event.currentTarget).data('product_id');
$('.lty-customer-lottery-tickets-modal-wrapper-' + product_id).modal();
},
/**
* Maybe select predefined button if the quantity matches with predefined button.
*
* @since 10.0.0
* @param {int} quantity
*/
maybe_select_predefined_button: function (quantity) {
var wrapper = $('.lty-predefined-buttons');
if (!wrapper.length) {
return;
}
var predefined_button = wrapper.find('.lty-predefined-button[data-ticket-quantity="' + quantity + '"]:first');
// Unselect the predefined button, if already selected when predefined button not exists with the quantity.
if (!predefined_button.length) {
predefined_button = wrapper.find('.lty-selected-button');
}
if (0 < predefined_button.length) {
LTY_Frontend.handle_select_predefined_button(predefined_button);
}
},
block: function (id) {
$(id).block({
message: null,
overlayCSS: { background: '#fff', opacity: 0.7 }
});
},
unblock: function (id) {
$(id).unblock();
},
};
LTY_Frontend.init();
});