jQuery(function($){
'use strict';
var is_blocked=function($node){
return $node.is('.processing')||$node.parents('.processing').length;
};
var block=function($node){
$.blockUI.defaults.overlayCSS.cursor='wait';
if(! is_blocked($node) ){
$node.addClass('processing').block({
message:null,
overlayCSS:{
background:'#fff',
opacity:0.6
}});
}};
var unblock=function($node){
$node.removeClass('processing').unblock();
};
var ticket_numbers=[ ];
var frontend={
init:function(){
if($('.asp-rfw-raffle-wrapper').find('.asp-rfw-raffle-duration-timer-single').length > 0){
this.duration_timer($('.asp-rfw-raffle-duration-timer-single') );
}
if($('.asp-rfw-raffle-duration-timer-shop').length > 0){
$.each($('.asp-rfw-raffle-duration-timer-shop'), function(){
frontend.duration_timer($(this) );
});
}
$(document).on('click', '.asp-rfw-raffle-manual-tickets-form-tab', this.raffle_tickets_form_tab);
$(document).on('click', '.asp-rfw-remaining-ticket', this.raffle_manual_tickets_list);
$(document).on('change keyup', '.asp-rfw-add-to-cart-form .qty', this.alert_price_for_participate_button);
$('.asp-rfw-add-to-cart-form .qty').change();
$(document).on('click', '.asp-rfw-particpate-button', this.participate_button);
$(document).on('click', '.asp-rfw-lucky-dip-button', this.lucky_dip_button);
$(document).on('click', '.asp-rfw-answer-list', this.answers_list);
$(document).on('click', '.asp-rfw-raffle-instant-prizes-filter', this.instant_prizes_filter);
$(document).on('input', '.asp-rfw-slider', this.toggle_quantity_range_slider);
$(document).on('click', '.asp-rfw-slider-increment', this.toggle_quantity_slider_increment);
$(document).on('click', '.asp-rfw-slider-decrement', this.toggle_quantity_slider_decrement);
},
duration_timer:function($duration_wrapper){
var x=setInterval(function(){
var d=new Date(),
utc=d.getTime(),
now=new Date(utc),
end_date=new Date($duration_wrapper.data('duration') ).getTime(),
distance=end_date - now.getTime();
var days=Math.floor(distance /(1000 * 60 * 60 * 24) );
var hours=Math.floor(( distance %(1000 * 60 * 60 * 24) ) /(1000 * 60 * 60) );
var minutes=Math.floor(( distance %(1000 * 60 * 60) ) /(1000 * 60) );
var seconds=Math.floor(( distance %(1000 * 60) ) / 1000);
$duration_wrapper.find('.asp-rfw-duration-timer-type').find('.asp-rfw-days-span').text(days > 0 ? days:0);
$duration_wrapper.find('.asp-rfw-duration-timer-type').find('.asp-rfw-hours-span').text(hours > 0 ? hours:0);
$duration_wrapper.find('.asp-rfw-duration-timer-type').find('.asp-rfw-minutes-span').text(minutes > 0 ? minutes:0);
$duration_wrapper.find('.asp-rfw-duration-timer-type').find('.asp-rfw-seconds-span').text(seconds > 0 ? seconds:0);
if(distance < 0){
clearInterval(x);
block($duration_wrapper.find('.asp-rfw-raffle-wrapper') );
var data={
action:'asp_rfw_count_down_timer_action',
product_id:$duration_wrapper.find('.asp-rfw-product-id').val(),
security:asp_rfw_frontend_params.asp_rfw_count_down_timer_action_nonce
};
$.ajax({
type:'post',
url:asp_rfw_frontend_params.admin_ajax_url,
data:data,
dataType:'json',
success:function(response){
if(response.success){
window.location.reload();
}
unblock($duration_wrapper.find('.asp-rfw-raffle-wrapper') );
}});
return false;
}}, 1000);
},
raffle_tickets_form_tab:function(event){
event.preventDefault();
var $this=$(this);
$('.asp-rfw-raffle-manual-tickets-form-tab').each(function(){
if($(this).hasClass('asp-rfw-tab-active') ){
$(this).removeClass('asp-rfw-tab-active');
}});
$this.addClass('asp-rfw-tab-active');
var data={
action:'asp_rfw_tickets_form_tab_action',
start_tab:$this.data('start_tab'),
product_id:$this.closest('.asp-rfw-raffle-manual-tickets-form-fields').find('.asp-rfw-product-id').val(),
ticket_numbers:$('.asp-rfw-raffle-manual-tickets').val(),
security:asp_rfw_frontend_params.raffle_tickets_form_tab_nonce
};
block($this.closest('.asp-rfw-raffle-manual-tickets-form-fields') );
$.ajax({
type:'post',
url:asp_rfw_frontend_params.admin_ajax_url,
data:data,
dataType:'json',
success:function(response){
if(response.success){
$('.asp-rfw-raffle-manual-tickets-form-contents').html(response.data.html);
unblock($this.closest('.asp-rfw-raffle-manual-tickets-form-fields') );
}else{
unblock($this.closest('.asp-rfw-raffle-manual-tickets-form-fields') );
window.alert(response.data.error);
}},
});
return false;
},
raffle_manual_tickets_list:function(event){
event.preventDefault();
var $this=$(this);
if($this.hasClass('asp-rfw-cart-ticket')||$this.hasClass('asp-rfw-sold-ticket') ){
return false;
}
if($this.hasClass('asp-rfw-ticket-selected') ){
$this.removeClass('asp-rfw-ticket-selected');
ticket_numbers.splice(ticket_numbers.indexOf($this.data('ticket') ), 1);
$this.closest('.asp-rfw-raffle-manual-tickets-form-fields').find('.asp-rfw-raffle-manual-tickets').val(ticket_numbers);
$this.closest('.asp-rfw-raffle-manual-tickets-form-fields').find('.asp-rfw-raffle-manual-tickets-quantity').val(ticket_numbers.length);
}else{
$this.addClass('asp-rfw-ticket-selected');
ticket_numbers.push($this.data('ticket') );
$this.closest('.asp-rfw-raffle-manual-tickets-form-fields').find('.asp-rfw-raffle-manual-tickets').val(ticket_numbers);
$this.closest('.asp-rfw-raffle-manual-tickets-form-fields').find('.asp-rfw-raffle-manual-tickets-quantity').val(ticket_numbers.length);
}
frontend.set_price($this.closest('.asp-rfw-raffle-manual-tickets-form-fields').find('.asp-rfw-raffle-manual-tickets-quantity').val());
},
alert_price_for_participate_button:function(event){
event.preventDefault();
var $this=$(this);
frontend.set_price($this.val());
},
set_price:function($qty){
$qty=$qty > 1 ? $qty:1;
var $price_obj=$('.asp-rfw-particpate-button').find('.asp-rfw-price');
var $price_amount=frontend.format_number($price_obj.data('price'), $qty);
var $html='<span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">' + asp_rfw_frontend_params.currency + '</span>' + $price_amount + '</span>';
if('right_space'==asp_rfw_frontend_params.currency_pos){
var $html='<span class="woocommerce-Price-amount amount">' + $price_amount + '<span class="woocommerce-Price-currencySymbol"> ' + asp_rfw_frontend_params.currency + '</span></span>';
}else if('right'==asp_rfw_frontend_params.currency_pos){
var $html='<span class="woocommerce-Price-amount amount">' + $price_amount + '<span class="woocommerce-Price-currencySymbol">' + asp_rfw_frontend_params.currency + '</span></span>';
}else if('left_space'==asp_rfw_frontend_params.currency_pos){
var $html='<span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">' + asp_rfw_frontend_params.currency + '</span> ' + $price_amount + '</span>';
}
$($price_obj).html($html);
},
format_number:function($price_amount, $qty){
return accounting.formatNumber(parseFloat($price_amount) * $qty, asp_rfw_frontend_params.decimals, asp_rfw_frontend_params.thousand_separator, asp_rfw_frontend_params.decimal_separator);
},
participate_button:function(event){
var $this=$(this);
if('manual'==$this.data('ticket_creation')&&(! $('.asp-rfw-raffle-manual-tickets-quantity').val()||'undefined'==$('.asp-rfw-raffle-manual-tickets-quantity').val()||null==$('.asp-rfw-raffle-manual-tickets-quantity').val()) ){
event.preventDefault();
$.alert({
title:'',
content:asp_rfw_frontend_params.empty_ticket_error,
boxWidth:'250px',
useBootstrap:false,
});
return false;
}
if('yes'==$('.asp-rfw-question-answer-mandatory-checked').val()&&! $('.asp-rfw-selected-answer-field').val()){
event.preventDefault();
$.alert({
title:'',
content:asp_rfw_frontend_params.empty_question_answer_error,
boxWidth:'250px',
useBootstrap:false,
});
return false;
}
return true;
},
lucky_dip_button:function(event){
event.preventDefault();
var $this=$(this);
var data={
action:'asp_rfw_lucky_dip_action',
product_id:$this.data('product_id'),
quantity:$('.asp-rfw-lucky-dip-qty').val(),
answer_index:$('.asp-rfw-selected-answer-field').val(),
security:asp_rfw_frontend_params.raffle_lucky_dip_action_nonce
};
if('yes'==$('.asp-rfw-question-answer-mandatory-checked').val()&&! $('.asp-rfw-selected-answer-field').val()){
$.alert({
title:'',
content:asp_rfw_frontend_params.empty_question_answer_error,
boxWidth:'250px',
useBootstrap:false,
});
return false;
}
block($this.closest('.asp-rfw-add-to-cart-form') );
$.ajax({
type:'post',
url:asp_rfw_frontend_params.admin_ajax_url,
data:data,
dataType:'json',
success:function(response){
if(response.success){
$.alert({
title:'',
content:response.data.success_msg,
boxWidth:'250px',
useBootstrap:false,
});
setTimeout(function(){
window.location.reload();
}, 2000);
unblock($this.closest('.asp-rfw-add-to-cart-form') );
}else{
unblock($this.closest('.asp-rfw-add-to-cart-form') );
window.alert(response.data.error);
}},
});
return false;
},
answers_list:function(event){
event.preventDefault();
var $this=$(this);
$('.asp-rfw-answer-list').each(function(){
$(this).closest('.asp-rfw-answers-wrapper').find('.asp-rfw-selected-answer-field').val('');
$(this).removeClass('asp-rfw-answer-selected');
});
$this.addClass('asp-rfw-answer-selected');
$this.closest('.asp-rfw-answers-wrapper').find('.asp-rfw-selected-answer-field').val($this.data('answer_index') );
return false;
},
instant_prizes_filter:function(event){
event.preventDefault();
var $this=$(this);
$('.asp-rfw-raffle-instant-prizes-filter').each(function(){
$(this).removeClass('asp-rfw-raffle-instant-prizes-active');
});
$this.addClass('asp-rfw-raffle-instant-prizes-active');
$('.asp-rfw-won-ticket').show();
$('.asp-rfw-available-ticket').show();
if('winner'===$this.data('filter_type') ){
$('.asp-rfw-won-ticket').show();
$('.asp-rfw-available-ticket').hide();
}else if('available'===$this.data('filter_type') ){
$('.asp-rfw-won-ticket').hide();
$('.asp-rfw-available-ticket').show();
}},
toggle_quantity_range_slider:function(event){
event.preventDefault();
frontend.set_slider_elements($(event.currentTarget) );
},
set_slider_elements:function($slider){
var $slider_value=parseInt($slider.val()),
value=parseInt(( $slider_value - $slider.attr("min") ) /($slider.attr("max") - $slider.attr("min") ) * 100),
$tooltip=$slider.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-qty-slider-ticket-count");
$slider.css("background", 'linear-gradient(to right, ' + asp_rfw_frontend_params.slider_scrolling_bg_color + ' ' + value + '%, ' + asp_rfw_frontend_params.slider_bg_color + ' ' + value + '%)');
$tooltip.text($slider_value);
$slider.closest('.asp-rfw-quantity-range-slider').find('.asp-rfw-hidden-quantity').val($slider_value);
frontend.set_price($slider_value);
},
toggle_quantity_slider_increment:function(event){
event.preventDefault();
var $this=$(event.currentTarget),
$slider_value=parseInt($this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider").val()),
$min=parseInt($this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider").attr('min') ),
$max=parseInt($this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider").attr('max') ),
$slider_value=$slider_value + 1;
if($slider_value >=$min&&$slider_value <=$max){
$this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider").val($slider_value);
frontend.set_slider_elements($this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider") );
}},
toggle_quantity_slider_decrement:function(event){
event.preventDefault();
var $this=$(event.currentTarget),
$slider_value=parseInt($this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider").val()),
$min=parseInt($this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider").attr('min') ),
$max=parseInt($this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider").attr('max') ),
$slider_value=$slider_value - 1;
if($slider_value >=$min&&$slider_value <=$max){
$this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider").val($slider_value);
frontend.set_slider_elements($this.closest('.asp-rfw-quantity-range-slider').find(".asp-rfw-slider") );
}}
};
frontend.init();
});