var cwpf_redirect = '';//if we use redirect attribute in shortcode [cwpf]
var cwpf_reset_btn_action=false;
//***
jQuery(function ($) {
jQuery('body').append('
');
jQuery.fn.life = function (types, data, fn) {
jQuery(this.context).on(types, this.selector, data, fn);
return this;
};
//http://stackoverflow.com/questions/2389540/jquery-hasparent
jQuery.extend(jQuery.fn, {
within: function (pSelector) {
// Returns a subset of items using jQuery.filter
return this.filter(function () {
// Return truthy/falsey based on presence in parent
return jQuery(this).closest(pSelector).length;
});
}
});
//+++
if (jQuery('#cwpf_results_by_ajax').length > 0) {
cwpf_is_ajax = 1;
}
//listening attributes in shortcode [cwpf]
cwpf_autosubmit = parseInt(jQuery('.cwpf').eq(0).data('autosubmit'), 10);
cwpf_ajax_redraw = parseInt(jQuery('.cwpf').eq(0).data('ajax-redraw'), 10);
//+++
cwpf_ext_init_functions = jQuery.parseJSON(cwpf_ext_init_functions);
//fix for native woo price range
cwpf_init_native_woo_price_filter();
jQuery('body').bind('price_slider_change', function (event, min, max) {
if (cwpf_autosubmit && !cwpf_show_price_search_button && jQuery('.price_slider_wrapper').length < 3) {
jQuery('.cwpf .widget_price_filter form').trigger('submit');
} else {
var min_price = jQuery(this).find('.price_slider_amount #min_price').val();
var max_price = jQuery(this).find('.price_slider_amount #max_price').val();
cwpf_current_values.min_price = min_price;
cwpf_current_values.max_price = max_price;
}
});
jQuery('.cwpf_price_filter_dropdown').on('change', function () {
var val = jQuery(this).val();
if (parseInt(val, 10) == -1) {
delete cwpf_current_values.min_price;
delete cwpf_current_values.max_price;
} else {
var val = val.split("-");
cwpf_current_values.min_price = val[0];
cwpf_current_values.max_price = val[1];
}
if (cwpf_autosubmit || jQuery(this).within('.cwpf').length == 0) {
cwpf_submit_link(cwpf_get_submit_link());
}
});
//change value in textinput price filter if WOOCS is installed
cwpf_recount_text_price_filter();
//+++
jQuery('.cwpf_price_filter_txt').on('change', function () {
var from = parseInt(jQuery(this).parent().find('.cwpf_price_filter_txt_from').val(), 10);
var to = parseInt(jQuery(this).parent().find('.cwpf_price_filter_txt_to').val(), 10);
if (to < from || from < 0) {
delete cwpf_current_values.min_price;
delete cwpf_current_values.max_price;
} else {
if (typeof woocs_current_currency !== 'undefined') {
from = Math.ceil(from / parseFloat(woocs_current_currency.rate));
to = Math.ceil(to / parseFloat(woocs_current_currency.rate));
}
cwpf_current_values.min_price = from;
cwpf_current_values.max_price = to;
}
if (cwpf_autosubmit || jQuery(this).within('.cwpf').length == 0) {
cwpf_submit_link(cwpf_get_submit_link());
}
});
//***
jQuery('.cwpf_open_hidden_li_btn').on('click', function () {
var state = jQuery(this).data('state');
var type = jQuery(this).data('type');
if (state == 'closed') {
jQuery(this).parents('.cwpf_list').find('.cwpf_hidden_term').addClass('cwpf_hidden_term2');
jQuery(this).parents('.cwpf_list').find('.cwpf_hidden_term').removeClass('cwpf_hidden_term');
if (type == 'image') {
jQuery(this).find('img').attr('src', jQuery(this).data('opened'));
} else {
jQuery(this).html(jQuery(this).data('opened'));
}
jQuery(this).data('state', 'opened');
} else {
jQuery(this).parents('.cwpf_list').find('.cwpf_hidden_term2').addClass('cwpf_hidden_term');
jQuery(this).parents('.cwpf_list').find('.cwpf_hidden_term2').removeClass('cwpf_hidden_term2');
if (type == 'image') {
jQuery(this).find('img').attr('src', jQuery(this).data('closed'));
} else {
jQuery(this).text(jQuery(this).data('closed'));
}
jQuery(this).data('state', 'closed');
}
return false;
});
//open hidden block
cwpf_open_hidden_li();
//*** woocommerce native "AVERAGE RATING" widget synchronizing
jQuery('.widget_rating_filter li.wc-layered-nav-rating a').click(function () {
var is_chosen = jQuery(this).parent().hasClass('chosen');
var parsed_url = cwpf_parse_url(jQuery(this).attr('href'));
var rate = 0;
if (parsed_url.query !== undefined) {
if (parsed_url.query.indexOf('min_rating') !== -1) {
var arrayOfStrings = parsed_url.query.split('min_rating=');
rate = parseInt(arrayOfStrings[1], 10);
}
}
jQuery(this).parents('ul').find('li').removeClass('chosen');
if (is_chosen) {
delete cwpf_current_values.min_rating;
} else {
cwpf_current_values.min_rating = rate;
jQuery(this).parent().addClass('chosen');
}
cwpf_submit_link(cwpf_get_submit_link());
return false;
});
//CWPF start filtering button action
jQuery('.cwpf_start_filtering_btn').on('click', function () {
var shortcode = jQuery(this).parents('.cwpf').data('shortcode');
jQuery(this).html(cwpf_lang_loading);
jQuery(this).addClass('cwpf_start_filtering_btn2');
jQuery(this).removeClass('cwpf_start_filtering_btn');
//redrawing [cwpf ajax_redraw=1] only
var data = {
action: "cwpf_draw_products",
page: 1,
shortcode: 'cwpf_nothing', //we do not need get any products, seacrh form data only
cwpf_shortcode: shortcode
};
jQuery.post(cwpf_ajaxurl, data, function (content) {
content = jQuery.parseJSON(content);
jQuery('div.cwpf_redraw_zone').replaceWith(jQuery(content.form).find('.cwpf_redraw_zone'));
cwpf_mass_reinit();
});
return false;
});
//***
var str = window.location.href;
window.onpopstate = function (event) {
try {
console.log(cwpf_current_values)
if (Object.keys(cwpf_current_values).length) {
var temp = str.split('?');
var get1="";
if(temp[1]!=undefined){
get1 = temp[1].split('#');
}
var str2 = window.location.href;
var temp2 = str2.split('?');
if(temp2[1]==undefined){
//return false;
var get2={0:"",1:""};
}else{
var get2 = temp2[1].split('#');
}
if (get2[0] != get1[0]) {
cwpf_show_info_popup(cwpf_lang_loading);
window.location.reload();
}
return false;
}
} catch (e) {
console.log(e);
}
};
//***
//ion-slider price range slider
cwpf_init_ion_sliders();
//***
cwpf_init_show_auto_form();
cwpf_init_hide_auto_form();
//***
cwpf_remove_empty_elements();
cwpf_init_search_form();
cwpf_init_pagination();
cwpf_init_orderby();
cwpf_init_reset_button();
cwpf_init_beauty_scroll();
//+++
cwpf_draw_products_top_panel();
cwpf_shortcode_observer();
//tooltip
cwpf_init_tooltip();
//
cwpf_show_hide_widget();
//+++
//if we use redirect attribute in shortcode [cwpf is_ajax=0]
//not for ajax, for redirect mode only
if (!cwpf_is_ajax) {
cwpf_redirect_init();
}
cwpf_init_toggles();
});
//if we use redirect attribute in shortcode [cwpf is_ajax=0]
//not for ajax, for redirect mode only
function cwpf_redirect_init() {
try {
if (jQuery('.cwpf').length ) {
//https://wordpress.org/support/topic/javascript-error-in-frontjs?replies=1
if (undefined !== jQuery('.cwpf').val()) {
cwpf_redirect = jQuery('.cwpf').eq(0).data('redirect');//default value
if (cwpf_redirect.length > 0) {
cwpf_shop_page = cwpf_current_page_link = cwpf_redirect;
}
//***
/*
var events = ['click', 'change', 'ifChecked', 'ifUnchecked'];
for (var i = 0; i < events.length; i++) {
jQuery('div.cwpf input, div.cwpf option, div.cwpf div, div.cwpf label').live(events[i], function (e) {
try {
if (jQuery(this).parents('.cwpf').data('redirect').length > 0) {
cwpf_redirect = jQuery(this).parents('.cwpf').data('redirect');
}
} catch (e) {
console.log('Error: attribute redirection doesn works!');
}
e.stopPropagation();
});
}
*/
//***
return cwpf_redirect;
}
}
} catch (e) {
console.log(e);
}
}
function cwpf_init_orderby() {
jQuery('form.woocommerce-ordering').on('submit', function () {
/* woo3.3 */
if(!jQuery("#is_woo_shortcode").length){
return false;
}
/* +++ */
});
jQuery('form.woocommerce-ordering select.orderby').on('change', function () {
/* woo3.3 */
if(!jQuery("#is_woo_shortcode").length){
cwpf_current_values.orderby = jQuery(this).val();
cwpf_ajax_page_num = 1;
cwpf_submit_link(cwpf_get_submit_link(),0);
return false;
}
/* +++ */
});
}
function cwpf_init_reset_button() {
jQuery(document).on('click','.cwpf_reset_search_form', function () {
//var link = jQuery(this).data('link');
cwpf_ajax_page_num = 1;
cwpf_ajax_redraw = 0;
cwpf_reset_btn_action=true;
if (cwpf_is_permalink) {
cwpf_current_values = {};
cwpf_submit_link(cwpf_get_submit_link().split("page/")[0]);
} else {
var link = cwpf_shop_page;
if (cwpf_current_values.hasOwnProperty('page_id')) {
link = location.protocol + '//' + location.host + "/?page_id=" + cwpf_current_values.page_id;
cwpf_current_values = {'page_id': cwpf_current_values.page_id};
cwpf_get_submit_link();
}
//***
cwpf_submit_link(link);
if (cwpf_is_ajax) {
history.pushState({}, "", link);
if (cwpf_current_values.hasOwnProperty('page_id')) {
cwpf_current_values = {'page_id': cwpf_current_values.page_id};
} else {
cwpf_current_values = {};
}
}
}
return false;
});
}
function cwpf_init_pagination() {
if (cwpf_is_ajax === 1) {
//jQuery('.woocommerce-pagination ul.page-numbers a.page-numbers').on('click', function () {
jQuery('a.page-numbers').on('click', function () {
var l = jQuery(this).attr('href');
if (cwpf_ajax_first_done) {
//wp-admin/admin-ajax.php?paged=2
var res = l.split("paged=");
if (typeof res[1] !== 'undefined') {
cwpf_ajax_page_num = parseInt(res[1]);
} else {
cwpf_ajax_page_num = 1;
}
var res2 = l.split("product-page=");
if (typeof res2[1] !== 'undefined') {
cwpf_ajax_page_num = parseInt(res2[1]);
}
} else {
var res = l.split("page/");
if (typeof res[1] !== 'undefined') {
cwpf_ajax_page_num = parseInt(res[1]);
} else {
cwpf_ajax_page_num = 1;
}
var res2 = l.split("product-page=");
if (typeof res2[1] !== 'undefined') {
cwpf_ajax_page_num = parseInt(res2[1]);
}
}
//+++
//if (cwpf_autosubmit) - pagination doesn need pressing any submit button!!
{
cwpf_submit_link(cwpf_get_submit_link(),0);
}
return false;
});
}
}
function cwpf_init_search_form() {
cwpf_init_checkboxes();
cwpf_init_mselects();
cwpf_init_radios();
cwpf_price_filter_radio_init();
cwpf_init_selects();
//for extensions
if (cwpf_ext_init_functions !== null) {
jQuery.each(cwpf_ext_init_functions, function (type, func) {
eval(func + '()');
});
}
//+++
//var containers = jQuery('.cwpf_container');
//+++
jQuery('.cwpf_submit_search_form').click(function () {
if (cwpf_ajax_redraw) {
//[cwpf redirect="http://test-all/" autosubmit=1 ajax_redraw=1 is_ajax=1 tax_only="locations" by_only="none"]
cwpf_ajax_redraw = 0;
cwpf_is_ajax = 0;
}
//***
cwpf_submit_link(cwpf_get_submit_link());
return false;
});
//***
jQuery('ul.cwpf_childs_list').parent('li').addClass('cwpf_childs_list_li');
//***
cwpf_remove_class_widget();
cwpf_checkboxes_slide();
}
var cwpf_submit_link_locked = false;
function cwpf_submit_link(link,ajax_redraw) {
if (cwpf_submit_link_locked) {
return;
}
if(typeof CwpfTurboMode!='undefined'){
CwpfTurboMode.cwpf_submit_link(link);
return;
}
if(typeof ajax_redraw == 'undefined' ){
ajax_redraw=cwpf_ajax_redraw;
}
cwpf_submit_link_locked = true;
cwpf_show_info_popup(cwpf_lang_loading);
if (cwpf_is_ajax === 1 && !ajax_redraw) {
cwpf_ajax_first_done = true;
var data = {
action: "cwpf_draw_products",
link: link,
page: cwpf_ajax_page_num,
shortcode: jQuery('#cwpf_results_by_ajax').data('shortcode'),
cwpf_shortcode: jQuery('div.cwpf').data('shortcode')
};
jQuery.post(cwpf_ajaxurl, data, function (content) {
content = jQuery.parseJSON(content);
if (jQuery('.cwpf_results_by_ajax_shortcode').length) {
if(typeof content.products!="undefined"){
jQuery('#cwpf_results_by_ajax').replaceWith(content.products);
}
} else {
if(typeof content.products!="undefined"){
jQuery('.cwpf_shortcode_output').replaceWith(content.products);
}
}
if(typeof content.additional_fields != "undefined"){
jQuery.each(content.additional_fields,function(selector,html_data){
jQuery(selector).replaceWith(html_data);
});
}
jQuery('div.cwpf_redraw_zone').replaceWith(jQuery(content.form).find('.cwpf_redraw_zone'));
cwpf_draw_products_top_panel();
cwpf_mass_reinit();
cwpf_submit_link_locked = false;
//removing id cwpf_results_by_ajax - multi in ajax mode sometimes
//when uses shorcode cwpf_products in ajax and in settings try ajaxify shop is Yes
jQuery.each(jQuery('#cwpf_results_by_ajax'), function (index, item) {
if (index == 0) {
return;
}
jQuery(item).removeAttr('id');
});
//infinite scroll
cwpf_infinite();
//*** script after ajax loading here
cwpf_js_after_ajax_done();
//*** change link in button "add to cart"
cwpf_change_link_addtocart();
/*tooltip*/
cwpf_init_tooltip();
document.dispatchEvent(new CustomEvent('cwpf-ajax-form-redrawing', {detail: {
link: link
}}));
});
} else {
if (ajax_redraw) {
//redrawing [cwpf ajax_redraw=1] only
var data = {
action: "cwpf_draw_products",
link: link,
page: 1,
shortcode: 'cwpf_nothing', //we do not need get any products, seacrh form data only
cwpf_shortcode: jQuery('div.cwpf').eq(0).data('shortcode')
};
jQuery.post(cwpf_ajaxurl, data, function (content) {
content = jQuery.parseJSON(content);
jQuery('div.cwpf_redraw_zone').replaceWith(jQuery(content.form).find('.cwpf_redraw_zone'));
cwpf_mass_reinit();
cwpf_submit_link_locked = false;
/*tooltip*/
cwpf_init_tooltip();
document.dispatchEvent(new CustomEvent('cwpf-ajax-form-redrawing', {detail: {
link: link
}}));
});
} else {
window.location = link;
cwpf_show_info_popup(cwpf_lang_loading);
}
}
}
function cwpf_remove_empty_elements() {
// lets check for empty drop-downs
jQuery.each(jQuery('.cwpf_container select'), function (index, select) {
var size = jQuery(select).find('option').length;
if (size === 0) {
jQuery(select).parents('.cwpf_container').remove();
}
});
//+++
// lets check for empty checkboxes, radio, color conatiners
jQuery.each(jQuery('ul.cwpf_list'), function (index, ch) {
var size = jQuery(ch).find('li').length;
if (size === 0) {
jQuery(ch).parents('.cwpf_container').remove();
}
});
}
function cwpf_get_submit_link() {
//filter cwpf_current_values values
if (cwpf_is_ajax) {
cwpf_current_values.page = cwpf_ajax_page_num;
}
//+++
if (Object.keys(cwpf_current_values).length > 0) {
jQuery.each(cwpf_current_values, function (index, value) {
if (index == scwpf_search_slug) {
delete cwpf_current_values[index];
}
if (index == 's') {
delete cwpf_current_values[index];
}
if (index == 'product') {
//for single product page (when no permalinks)
delete cwpf_current_values[index];
}
if (index == 'really_curr_tax') {
delete cwpf_current_values[index];
}
});
}
//***
if (Object.keys(cwpf_current_values).length === 2) {
if (('min_price' in cwpf_current_values) && ('max_price' in cwpf_current_values)) {
cwpf_current_page_link = cwpf_current_page_link.replace(new RegExp(/page\/(\d+)\//), "");
var l = cwpf_current_page_link + '?min_price=' + cwpf_current_values.min_price + '&max_price=' + cwpf_current_values.max_price;
if (cwpf_is_ajax) {
history.pushState({}, "", l);
}
return l;
}
}
//***
if (Object.keys(cwpf_current_values).length === 0) {
if (cwpf_is_ajax) {
history.pushState({}, "", cwpf_current_page_link);
}
return cwpf_current_page_link;
}
//+++
if (Object.keys(cwpf_really_curr_tax).length > 0) {
cwpf_current_values['really_curr_tax'] = cwpf_really_curr_tax.term_id + '-' + cwpf_really_curr_tax.taxonomy;
}
//+++
var link = cwpf_current_page_link + "?" + scwpf_search_slug + "=1";
//console.log(cwpf_current_page_link);
//just for the case when no permalinks enabled
if (!cwpf_is_permalink) {
if (cwpf_redirect.length > 0) {
link = cwpf_redirect + "?" + scwpf_search_slug + "=1";
if (cwpf_current_values.hasOwnProperty('page_id')) {
delete cwpf_current_values.page_id;
}
} else {
link = location.protocol + '//' + location.host + "?" + scwpf_search_slug + "=1";
/*
if (!cwpf_is_ajax) {
link = location.protocol + '//' + location.host + "?" + scwpf_search_slug + "=1";
}
if (cwpf_current_values.hasOwnProperty('page_id')) {
link = location.protocol + '//' + location.host + "?" + scwpf_search_slug + "=1";
}
*/
}
}
//console.log(link);
//throw('STOP!');
//any trash for different sites, useful for quick support
var cwpf_exclude_accept_array = ['path'];
if (Object.keys(cwpf_current_values).length > 0) {
jQuery.each(cwpf_current_values, function (index, value) {
if (index == 'page' && cwpf_is_ajax) {
index = 'paged';//for right pagination if copy/paste this link and send somebody another by email for example
}
//http://dev.cleveraddon.com/?scwpf=1&cwpf_author=3&cwpf_sku&cwpf_text=single
//avoid links where values is empty
if (typeof value !== 'undefined') {
if ((typeof value && value.length > 0) || typeof value == 'number')
{
if (jQuery.inArray(index, cwpf_exclude_accept_array) == -1) {
link = link + "&" + index + "=" + value;
}
}
}
});
}
//+++
//remove wp pagination like 'page/2'
link = link.replace(new RegExp(/page\/(\d+)\//), "");
if (cwpf_is_ajax) {
history.pushState({}, "", link);
}
//throw ("STOP!");
return link;
}
function cwpf_show_info_popup(text) {
if (cwpf_overlay_skin == 'default') {
jQuery("#cwpf_html_buffer").text(text);
jQuery("#cwpf_html_buffer").fadeTo(200, 0.9);
} else {
//http://jxnblk.com/loading/
switch (cwpf_overlay_skin) {
case 'loading-balls':
case 'loading-bars':
case 'loading-bubbles':
case 'loading-cubes':
case 'loading-cylon':
case 'loading-spin':
case 'loading-spinning-bubbles':
case 'loading-spokes':
jQuery('body').plainOverlay('show', {progress: function () {
return jQuery('
');
}});
break;
default:
jQuery('body').plainOverlay('show', {duration: -1});
break;
}
}
}
function cwpf_hide_info_popup() {
if (cwpf_overlay_skin == 'default') {
window.setTimeout(function () {
jQuery("#cwpf_html_buffer").fadeOut(400);
}, 200);
} else {
jQuery('body').plainOverlay('hide');
}
}
function cwpf_draw_products_top_panel() {
if (cwpf_is_ajax) {
jQuery('#cwpf_results_by_ajax').prev('.cwpf_products_top_panel').remove();
}
var panel = jQuery('.cwpf_products_top_panel');
panel.html('');
if (Object.keys(cwpf_current_values).length > 0) {
panel.show();
panel.html('
');
var is_price_in = false;
//lets show this on the panel
jQuery.each(cwpf_current_values, function (index, value) {
//lets filter data for the panel
if (jQuery.inArray(index, cwpf_accept_array) == -1 && jQuery.inArray(index.replace("rev_",""), cwpf_accept_array) == -1 ) {
return;
}
//***
if ((index == 'min_price' || index == 'max_price') && is_price_in) {
return;
}
if ((index == 'min_price' || index == 'max_price') && !is_price_in) {
is_price_in = true;
index = 'price';
value = cwpf_lang_pricerange;
}
//+++
value = value.toString().trim();
if (value.search(',')) {
value = value.split(',');
}
//+++
jQuery.each(value, function (i, v) {
if (index == 'page') {
return;
}
if (index == 'post_type') {
return;
}
var txt = v;
if (index == 'orderby') {
if (cwpf_lang[v] !== undefined) {
txt = cwpf_lang.orderby + ': ' + cwpf_lang[v];
} else {
txt = cwpf_lang.orderby + ': ' + v;
}
} else if (index == 'perpage') {
txt = cwpf_lang.perpage;
} else if (index == 'price') {
if (typeof woocommerce_price_slider_params === 'undefined') {
txt = cwpf_lang.pricerange;
} else {
var txt_min = woocommerce_price_slider_params.currency_format.replace('%v', cwpf_current_values.min_price);
txt_min = txt_min.replace('%s', woocommerce_price_slider_params.currency_format_symbol);
var txt_max = woocommerce_price_slider_params.currency_format.replace('%v', cwpf_current_values.max_price);
txt_max = txt_max.replace('%s', woocommerce_price_slider_params.currency_format_symbol);
txt = txt_min + ' - ' + txt_max;
}
} else {
var is_in_custom = false;
if (Object.keys(cwpf_lang_custom).length > 0) {
jQuery.each(cwpf_lang_custom, function (i, tt) {
if (i == index) {
is_in_custom = true;
txt = tt;
if (index == 'cwpf_sku') {
txt += " " + v;//because search by SKU can by more than 1 value
}
}
});
}
if (!is_in_custom) {
try {
//txt = jQuery('.cwpf_n_' + index + '_' + v).val();
txt = jQuery("input[data-anchor='cwpf_n_" + index + '_' + v + "']").val();
//console.log("input[data-anchor='cwpf_n_" + index + '_' + v + "']")
} catch (e) {
console.log(e);
}
if (typeof txt === 'undefined')
{
txt = v;
}
}
/* hidden feature
if (jQuery('input[name=cwpf_t_' + index + ']').length > 0) {
txt = jQuery('input[name=cwpf_t_' + index + ']').val() + ': ' + txt;
}
*/
}
panel.find('ul').append(
jQuery('