"use strict";
var data_text = [];
var woof_qt_current_values = [];
woof_qt_current_values.add_filter = {};
woof_qt_current_values.meta_filter = {};
var woof_qt_curr_page = 0;
var woof_qt_result_wraper = {};
var woof_qt_per_page = 12;
var woof_qt_template_code = "";
var woof_qt_show_products = 1;
var woof_qt_current_sort = "title-asc";
var woof_qt_load_count = 0;
var woof_qt_target = "_blank";
var woof_qt_tax_logic = "AND";
var woof_qt_group_text_logic = "AND";
var woof_qt_term_logic = {};
var woof_qt_tpl_cunstruct_selector = ".woof_qs_templates";
var woof_qt_tpl_container_selector = ".woof_qs_container";
var woof_qt_tpl_item_selector = ".woof_qs_item";
var woof_qt_tpl_no_product_selector = ".woof_qs_no_products_item";
var woof_qt_tpl_cunstruct = "";
var woof_qt_tpl_item = "";
var woof_qt_tpl_no_product = "";
/*
*
* Init search function
*
*/
/* default text search ( it uses easyAutocomplete)*/
function init_text_filter_form(url, data) {
var options = {
data: data,
//url:url,
getValue: function (element) {
return element.title + ": " + element.key_words + element.sku;
},
template: {
type: "custom",
method: function (value, item) {
var template = woof_get_text_template(1);
var key_words = woof_cut_words(item.key_words, 100);
var title = woof_cut_words(item.title, 100);
if (item.img == null || item.img.length < 1) {
item.img = wooftextfilelink.no_image
} else {
/*if you need full url*/
/*item.img = wooftextfilelink.site_url+item.img;*/
}
/*if you need full url*/
/*item.url = wooftextfilelink.site_url+item.url;*/
return String.format(template, item.url, woof_qt_target, item.img, title, key_words);
}
},
list: {
maxNumberOfElements: 10,
match: {
enabled: true
},
showAnimation: {
type: "fade", //normal|slide|fade
time: 333,
callback: function () {
}
},
hideAnimation: {
type: "slide", //normal|slide|fade
time: 333,
callback: function () {
}
}
},
};
jQuery("#woof_quick_search_form").easyAutocomplete(options);
}
/* Extended text search #2 ( it uses alasql) */
function init_text_filter_content() {
/*init vars*/
woof_qt_result_wraper = jQuery('.woof_quick_search_results');
if (woof_qt_result_wraper != undefined && woof_qt_result_wraper.length > 0) {
var templates = woof_qt_get_template();
if ("object" == typeof templates && templates.item != undefined && templates.container != undefined) {
woof_qt_tpl_cunstruct = templates.container;
woof_qt_tpl_item = templates.item;
woof_qt_tpl_no_product = templates.no_product;
} else {
/*show notise*/
jQuery('#woof_quick_search_form').after(woof_qt_get_notice('no_template'));
}
woof_qt_per_page = woof_qt_result_wraper.attr('data-per_page');
woof_qt_template_code = woof_qt_result_wraper.attr('data-template');
woof_qt_show_products = woof_qt_result_wraper.attr('data-show_products');
woof_qt_current_sort = woof_qt_result_wraper.attr('data-orderby');
/*init all events*/
woof_init_text_search();
woof_qt_init_ion_sliders();
woof_qt_init_meta_ion_sliders();
woof_qt_init_select();
woof_qt_init_checkbox();
woof_qt_init_radio();
woof_qt_reset_init();
woof_qt_show_add_filter();
} else {
/*show notise*/
jQuery('#woof_quick_search_form').after(woof_qt_get_notice('no_shortcode'));
}
}
function woof_qt_show_add_filter() {
jQuery(".woof_qt_add_filter").show(300);
}
/* text search #1 ( it uses custom func) Now it not used */
function init_text_filter_content_old(data) {
jQuery('#woof_quick_search_form').keyup(function () {
var searchField = jQuery(this).val();
var result_wraper = jQuery('.woof_quick_search_results');
var per_page = result_wraper.attr('data-per_page');
var template_code = result_wraper.attr('data-template');
var template_structure = result_wraper.attr('data-template_structure');
if (result_wraper.length < 1) {
return;
}
if (searchField === '') {
result_wraper.html('');
return;
}
var regex = new RegExp(searchField, "i");
var output = [];
var output_page = "";
var template_item = woof_get_template_result_item(template_code, template_structure);
var count = 0;
jQuery.each(data, function (key, val) {
if ((val.key_words.search(regex) != -1) || (val.title.search(regex) != -1) || (val.sku.search(regex) != -1)) {
var key_words = woof_cut_words(val.key_words, 100);
var title = woof_cut_words(val.title, 100);
var price = 0.00;
price = woof_get_price_html(val.price);
if (val.img == null || val.img.length < 1) {
val.img = wooftextfilelink.no_image
}
output_page += String.format(template_item, val.url, '_blank', val.img, title, key_words, price, val.sku);
count++;
if (count == per_page) {
count = 0;
output[output.length] = output_page;
output_page = "";
}
}
});
if (count != 0) {
count = 0;
output[output.length] = output_page;
output_page = "";
}
var out_content = "";
var pages = output.length;
jQuery.each(output, function (key, val) {
out_content += woof_get_template_result_container(val, template_code, pages, key, template_structure);
});
result_wraper.html(out_content);
woof_init_qt_pagination();
});
}
/*make search query*/
function woof_do_quick_search_search(type, page, per_page) {
var data_result = [];
var sql_query = "";
var text_group_logic = "AND";
var taxonomy_logic = "AND";
var term_logic = "OR";
if (woof_qt_tax_logic) {
taxonomy_logic = woof_qt_tax_logic;
}
if (woof_qt_group_text_logic) {
text_group_logic = woof_qt_group_text_logic;
}
/*Text search*/
var searchField = woof_qt_current_values.text_search;
if (searchField != "" && searchField != undefined && searchField) {
searchField = searchField.replace(/\s{2,}|\.|\,|\:|\;|\"/g, ' ');
searchField = searchField.replace(/\'/g, '’');
//’ //\u2019s
var queries = [];
var words = searchField.split(" ");
jQuery.each(words, function (key, val) {
queries[key] = String.format("( d.title LIKE '%{0}%' OR d.key_words LIKE '%{0}%' OR d.sku LIKE '%{0}%' ) ", val)
});
sql_query = "(" + queries.join(text_group_logic) + ")";
}
/*slider*/
if ((woof_qt_current_values.min_price && woof_qt_current_values.max_price) || (woof_qt_current_values.min_price === 0 && woof_qt_current_values.max_price)) {
var sql_query_slider = String.format("( (get_min_price(d.price) BETWEEN {0} AND {1}) OR (get_max_price(d.price) BETWEEN {0} AND {1})) ", woof_qt_current_values.min_price, woof_qt_current_values.max_price)
if (sql_query != "") {
sql_query_slider = " AND " + sql_query_slider;
}
sql_query += sql_query_slider;
}
/*additional filters*/
if (woof_qt_current_values.add_filter) {
var sql_query_add_filter = [];
jQuery.each(woof_qt_current_values.add_filter, function (key_tax, tax) {
var sql_tax = [];
jQuery.each(tax, function (key, term_id) {
if (term_id || term_id > 0) {
sql_tax.push(" d.term_ids LIKE '% " + term_id + " %' ");
}
})
if (sql_tax.length) {
if (woof_qt_term_logic[key_tax] != undefined && woof_qt_term_logic[key_tax] == "AND") {
term_logic = woof_qt_term_logic[key_tax];
} else {
term_logic = "OR";
}
sql_query_add_filter.push(" (" + sql_tax.join(term_logic) + ") ");
}
});
if (sql_query != "" && sql_query_add_filter.length > 0) {
sql_query += " AND ";
}
if (sql_query_add_filter.length) {
sql_query += sql_query_add_filter.join(taxonomy_logic);
}
}
/*meta filters*/
if (woof_qt_current_values.meta_filter) {
var meta_query = woof_quick_search_generate_meta_filter(woof_qt_current_values.meta_filter);
if (meta_query) {
if (sql_query) {
sql_query += " AND (" + meta_query + ")";
} else {
sql_query += meta_query;
}
}
}
/*If search is not going*/
if (sql_query == "") {
woof_qt_reset_btn_state(false);//hide reset btn
if (woof_qt_show_products == 1) {
sql_query = "1";
} else {
return data_result;
}
} else {
woof_qt_reset_btn_state(true);//show reset btn
}
/*sort*/
alasql.fn.get_max_price = function (_prices) { /*init function*/
var price = woof_get_price_limits(_prices);
return price['max'];
}
alasql.fn.get_min_price = function (_prices) {/*init function*/
var price = woof_get_price_limits(_prices);
return price['min'];
}
var sort_sql = " ";
sort_sql = woof_get_orderby_sql();
/*Pagination*/
var pagination_sql = "";
if (type == "search") {
if (page == undefined || page < 0 || page == NaN) {
page = 0;
}
if (per_page > 0 || per_page != 'undefined') {
pagination_sql = "LIMIT " + per_page + " OFFSET " + page * per_page;
} else {
pagination_sql = "LIMIT 12 ";
}
}
/*+++*/
if (type == "pagination") {
return alasql("SELECT COUNT(1) FROM ? AS d WHERE " + sql_query + sort_sql, [data_text]);
}
data_result = alasql("SELECT * FROM ? AS d WHERE " + sql_query + sort_sql + pagination_sql, [data_text]);
if (data_result != undefined && data_result.length == 0) {
data_result[0] = "nan";
}
return data_result;
}
function woof_quick_search_generate_meta_filter(meta_data) {
var meta_query = [];
var tmp_query = [];
var term_logic = "OR";
jQuery.each(meta_data, function (index, value) {
if (woof_qt_term_logic[index] != undefined && woof_qt_term_logic[index] == "AND") {
term_logic = "AND";
} else {
term_logic = "OR";
}
switch (value['type']) {
case'exact':
jQuery.each(value['value'], function (i, val) {
if (val != -1) {
tmp_query.push(String.format(" d.meta_data->('{0}') ='{1}' ", index, val));
}
});
if (tmp_query.length) {
meta_query.push("(" + tmp_query.join(term_logic) + ")");
}
break;
case'exist':
if (value['value'].length > 0) {
meta_query.push(String.format("( d.meta_data->('{0}') <> 'undefined' )", index));
}
break;
case'range':
if (value['value'].length > 1) {
meta_query.push(String.format("( d.meta_data->('{0}') BETWEEN {1} AND {2} )", index, value['value'][0], value['value'][1]));
}
break;
default:
}
});
return meta_query.join(woof_qt_tax_logic);
}
function woof_quick_search_draw() {
if (!data_text.length) {
woof_qt_load_count++;/*if no date*/
if (woof_qt_load_count < 10) {
woof_load_serch_data();
}
return;
}
var result_wraper = woof_qt_result_wraper;
var per_page = woof_qt_per_page;
var page = woof_qt_curr_page;
if (page == undefined || page < 0 || page == 'NaN') {
page = 0;
}
if (result_wraper.length < 1) {
return;
}
var output = [];
var output_page = "";
var template_item = woof_qt_tpl_item;
var template_container = woof_qt_tpl_cunstruct;
var count = 0;
var data_result = [];
data_result = woof_do_quick_search_search("search", page, per_page);
if (woof_qt_show_products != 1 && (!data_result || data_result.length < 1)) {
result_wraper.html("");
return;
}
if (data_result[0] === "nan") {
output_page = woof_qt_tpl_no_product;
data_result = [];
}
jQuery.each(data_result, function (key, val) {
val.key_words = woof_cut_words(val.key_words, 100);
val.title = woof_cut_words(val.title, 100);
val.price = woof_get_price_html(val.price);
if (val.img == null || val.img.length < 1) {
val.img = wooftextfilelink.no_image
} else {
/*if you need full url*/
/*val.img = wooftextfilelink.site_url+val.img;*/
}
val.target = woof_qt_target;
val.src = "src='" + val.img + "'"
output_page += woof_qt_parse_temlate(template_item, val);
count++;
if (count > per_page) {
// break;
}
});
var out_content = "";
var prod_count = woof_do_quick_search_search("pagination")[0]['COUNT(1)'];
var pages = Math.ceil(prod_count / per_page);
template_container = woof_qt_parse_temlate(template_container, {'pagination': get_pagination_html(pages, page)});
result_wraper.html(template_container);
result_wraper.find(woof_qt_tpl_container_selector).append(output_page);
woof_qt_init_script_after_redraw();/* for init pagination, sort and template script */
}
/* after redraw */
function woof_qt_init_script_after_redraw() {
woof_init_qt_pagination();
woof_qt_init_sort();
//init function for current template
var name = "woof_qs_after_redraw_" + woof_qt_template_code;
window[name]();
}
/*
*
* Templates
*
*/
/*
for Text input ( default search)
*/
function woof_get_text_template(type) {
if (type == 1) {
return "<a href='{0}' target='{1}'><div class='woof_quick_search_img'><img src='{2}' alt='' /></div><div class='woof_quick_search_desc' > <span class='woof_quick_search_desc_title'>{3}</span> <p class='woof_qt_key_words'>{4}</p> </div></a>";
} else {
return "Temlate error"
}
}
function woof_qt_get_template() {
var templates = {};
if (!jQuery(woof_qt_tpl_item_selector).length) {
return templates;
}
var item_tpl = jQuery(woof_qt_tpl_item_selector).wrap('<p/>').parent().html();
jQuery(woof_qt_tpl_item_selector).unwrap();
var no_product_tpl = jQuery(woof_qt_tpl_no_product_selector).wrap('<p/>').parent().html();
jQuery(woof_qt_tpl_no_product_selector).unwrap();
jQuery(woof_qt_tpl_no_product_selector).remove();
jQuery(woof_qt_tpl_item_selector).remove();
var container = jQuery(woof_qt_tpl_cunstruct_selector).html();
if (item_tpl || container) {
templates = {
'item': item_tpl,
'container': container,
'no_product': no_product_tpl
}
return templates;
}
}
function woof_qt_parse_temlate(str, data) {
if (data && "object" == typeof data) {
jQuery.each(data, function (key, value) {
if (key == 'src') {
str = str.replace(new RegExp("__SRC__", "gi"), value);
}
str = str.replace(new RegExp("__" + key.toUpperCase() + "__", "g"), value);
});
}
return str;
}
/*
*
* Pagination
*
*/
/* Get html of pagination */
function get_pagination_html(pages, curr_page) {
if (pages < 2) {
return "";
}
var pagination_html = '<div class="wooqt_pagination" data-curr-page="' + (curr_page) + '" >';
var current = "";
if ((curr_page) > 0) {
pagination_html += '<span class="woof_qt_pagination_item " data-page="' + (curr_page) + '"><</span>';
}
var i = 0;
var max_pag = pages;
var max_page_property = 5;
if (pages > max_page_property) {
i = curr_page;
max_pag = curr_page + max_page_property;
if (max_pag > pages) {
max_pag = pages
var offset_page = max_page_property - (pages - curr_page);
i = i - offset_page;
} else if (i >= 1) {
i = i - 1;
max_pag = max_pag - 1;
}
}
for (i; i < max_pag; i++) {
current = "";
if (i == curr_page) {
current = "qt_current";
}
pagination_html += '<span class="woof_qt_pagination_item ' + current + '" data-page="' + (i + 1) + '">' + (i + 1) + '</span>';
}
if (pages - curr_page > max_page_property) {
pagination_html += '<span >...</span>';
pagination_html += '<span class="woof_qt_pagination_item " data-page="' + pages + '">' + pages + '</span>';
}
if ((curr_page + 1) < pages) {
pagination_html += '<span class="woof_qt_pagination_item " data-page="' + (curr_page + 2) + '">></span>';
}
pagination_html += '</div>';
return pagination_html
}
/* Init pagination event */
function woof_init_qt_pagination() {
jQuery('.woof_qt_pagination_item').on('click', function () {
var page = jQuery(this).attr('data-page');
jQuery(".qt_current").removeClass('qt_current');
jQuery(".woof_qt_pagination_item[data-page='" + page + "']").addClass('qt_current');
woof_qt_curr_page = page - 1;
woof_quick_search_draw();
})
}
/*
*
* Works with price
*
*/
/* Get price HTML for templates (Includes discounts and variations) */
function woof_get_price_html(prices) {
if (prices == undefined || !prices) {
return "";
}
var symbol = wooftextfilelink.currency_data.symbol;
var decimal = wooftextfilelink.currency_data.decimal;
var rate = 1;
var decPoint = wooftextfilelink.currency_data.d_separ;
var thousandsSep = wooftextfilelink.currency_data.t_separ;
var price_html = "";
if (typeof woocs_current_currency != "undefined") {
rate = woocs_current_currency['rate'];
symbol = woocs_current_currency['symbol'];
decimal = woocs_current_currency['decimals'];
}
var get_price_item = function (regular, sale) {
var _price = "";
if ((sale != "" && sale != null && parseFloat(sale) != 0.0) && parseFloat(regular) > parseFloat(sale)) {
_price = '<del>' + woof_add_symbol(woof_number_format(regular * rate, decimal, decPoint, thousandsSep)) + '</del> ' + woof_add_symbol(woof_number_format(sale * rate, decimal, decPoint, thousandsSep));
} else if (regular != "" || regular != null || regular != 0) {
_price = woof_add_symbol(woof_number_format(regular * rate, decimal, decPoint, thousandsSep));
}
return _price;
}
if (prices.length <= 1) {
if (prices[0] == undefined) {
return "";//free
}
var item_html = get_price_item(prices[0]['regular'], prices[0]['sale']);
return item_html;
} else {
var from = "";
var to = "";
var min = 0;
var max = 0;
jQuery.each(prices, function (key, val) {
var curr_price = 0;
var max_price = 0;
var min_price = 0;
if ((val['sale'] != "" && val['sale'] != null && parseFloat(val['sale'] != 0.0)) && parseFloat(val['regular']) > parseFloat(val['sale'])) {
curr_price = val['sale'];
} else if (val['regular'] != "" && val['regular'] != null && val['regular'] != 0) {
curr_price = val['regular'];
}
if ((prices[min]['sale'] != "" && prices[min]['sale'] != null && prices[min]['sale'] != 0) && parseFloat(prices[min]['regular']) > parseFloat(prices[min]['sale'])) {
min_price = prices[min]['sale'];
} else if (prices[min]['regular'] != "" && prices[min]['regular'] != null && prices[min]['regular'] != 0) {
min_price = prices[min]['regular'];
}
if ((prices[max]['sale'] != "" && prices[max]['sale'] != null && prices[max]['sale'] != 0) && parseFloat(prices[max]['regular']) > parseFloat(prices[max]['sale'])) {
max_price = prices[max]['sale'];
} else if (prices[max]['regular'] != "" && prices[max]['regular'] != null && prices[max]['regular'] != 0) {
max_price = prices[max]['regular'];
}
if (parseFloat(curr_price) < parseFloat(min_price)) {
min = key;
}
if (parseFloat(curr_price) > parseFloat(max_price)) {
max = key;
}
});
from = get_price_item(prices[min]['regular'], prices[min]['sale']);
to = get_price_item(prices[max]['regular'], prices[max]['sale']);
if (from == to) {
return from;
}
return from + "-" + to;
}
}
/*additional function for sort or price search*/
function woof_get_price_limits(prices) {
var result = [];
result['min'] = 0.0;
result['max'] = 0.0;
if (prices == undefined) {
return result;
}
if (prices.length == 1) {
if (prices[0]['sale'] != "" && prices[0]['sale'] != null && parseFloat(prices[0]['sale']) < parseFloat(prices[0]['regular'])) {
result['min'] = result['max'] = prices[0]['sale'];
} else {
result['min'] = result['max'] = prices[0]['regular'];
}
} else if (prices.length > 1) {
var min = 0.0;
var max = 0.0;
max = min = prices[0]['regular'];
jQuery.each(prices, function (key, val) {
var curr_price = 0.0;
if (val['sale'] != "" && val['sale'] != null && parseFloat(val['sale']) < parseFloat(val['regular'])) {
curr_price = parseFloat(val['sale']);
} else {
curr_price = parseFloat(val['regular']);
}
if (curr_price < min) {
min = curr_price
}
if (curr_price > max) {
max = curr_price
}
});
result['min'] = min;
result['max'] = max;
}
return result;
}
/*add currency symbol*/
function woof_add_symbol(price) {
var position = wooftextfilelink.currency_data.position;
var symbol = wooftextfilelink.currency_data.symbol;
if (typeof woocs_current_currency != "undefined") {
position = woocs_current_currency['position'];
symbol = woocs_current_currency['symbol'];
}
switch (position) {
case"left_space":
return symbol + " " + price;
break;
case"left":
return symbol + " " + price;
break
case"right_space":
return symbol + " " + price;
break;
default:
return price + symbol;
break;
}
}
/*
*
* Sort function!!!
*
*/
/*get order by string*/
function woof_get_orderby_sql() {
var sort_sql = " ORDER BY d.title ASC ";
var order_data = woof_qt_current_sort;
switch (order_data) {
case'title-desc':
sort_sql = " ORDER BY d.title DESC ";
break;
case'price-desc':
sort_sql = " ORDER BY get_min_price(d.price)*1 DESC ";
break;
case'price-asc':
sort_sql = " ORDER BY get_min_price(d.price)*1 ASC ";
break;
default:
break
}
return sort_sql;
}
/*init sorting function*/
function woof_qt_init_sort() {
jQuery('.woof_qt_sort_item[data-order="' + woof_qt_current_sort + '"]').addClass('current_sort');
jQuery('.woof_qt_sort_select option[value="' + woof_qt_current_sort + '"]').attr('selected', "");
jQuery('.woof_qt_sort_item').on('click', function () {
var order = jQuery(this).attr('data-order');
if (order == "" || order == undefined) {
return false;
}
woof_qt_curr_page = 0
woof_qt_current_sort = order;
woof_quick_search_draw();
})
jQuery('.woof_qt_sort_select').on('change', function () {
var order = jQuery(this).val();
if (order == "" || order == undefined) {
return false;
}
woof_qt_curr_page = 0
woof_qt_current_sort = order;
woof_quick_search_draw();
})
}
function woof_qt_sotr_html(asc, desc) {
var sort_html = "<span class='woof_qt_sort_wraper'>";
var curr_sort = woof_qt_current_sort;
sort_html += '<span class="woof_qt_sort_item ' + ((curr_sort == asc) ? "current_sort" : "") + '" data-order="' + asc + '">▲</span>';
sort_html += '<span class="woof_qt_sort_item ' + ((curr_sort == desc) ? "current_sort" : "") + '" data-order="' + desc + '">▼</span>';
sort_html += "</span>";
return sort_html;
}
function woof_qt_sotr_html_select(sort_data) {
var curr_sort = woof_qt_current_sort;
var sort_html = "<span class='woof_qt_sort_wraper'><select class='woof_qt_sort_select'>";
jQuery.each(sort_data, function (i, val) {
sort_html += '<option value="' + val.key + '"' + ((curr_sort == val.key) ? "selected" : "") + '>' + val.title + '</option>'
})
sort_html += "</select></span>";
return sort_html;
}
/*
*
* Price slider!!!
*
*/
/*init slider*/
function woof_qt_init_ion_sliders() {
jQuery.each(jQuery('.woof_qt_price_slider'), function (index, input) {
try {
jQuery(input).ionRangeSlider({
min: jQuery(input).data('min'),
max: jQuery(input).data('max'),
from: jQuery(input).data('min-now'),
to: jQuery(input).data('max-now'),
type: 'double',
prefix: jQuery(input).data('slider-prefix'),
postfix: jQuery(input).data('slider-postfix'),
prettify: true,
hideMinMax: false,
hideFromTo: false,
grid: true,
step: jQuery(input).data('step'),
onFinish: function (ui) {
woof_qt_current_values.min_price = parseFloat(ui.from, 10);
woof_qt_current_values.max_price = parseFloat(ui.to, 10);
//woocs adaptation
if (typeof woocs_current_currency !== 'undefined') {
woof_qt_current_values.min_price = (woof_qt_current_values.min_price / parseFloat(woocs_current_currency.rate));
woof_qt_current_values.max_price = (woof_qt_current_values.max_price / parseFloat(woocs_current_currency.rate));
}
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
return false;
}
});
} catch (e) {
}
});
}
/* reset slider */
function woof_qt_reset_ion_sliders() {
var slider = jQuery(".woof_qt_price_slider").data("ionRangeSlider");
if (slider != undefined) {
slider.reset();
}
}
/*
*
* meta slider
*
*/
function woof_qt_init_meta_ion_sliders() {
jQuery.each(jQuery('.woof_qt_meta_slider'), function (index, input) {
var tax = jQuery(input).data('tax');
try {
jQuery(input).ionRangeSlider({
min: jQuery(input).data('min'),
max: jQuery(input).data('max'),
type: 'double',
prefix: jQuery(input).data('slider-prefix'),
postfix: jQuery(input).data('slider-postfix'),
prettify: true,
hideMinMax: false,
hideFromTo: false,
grid: true,
step: jQuery(input).data('step'),
onFinish: function (ui) {
if (woof_qt_current_values.meta_filter[tax] == undefined) {
woof_qt_current_values.meta_filter[tax] = {value: [], type: "range"};
}
if (jQuery(input).data('min') == ui.from && jQuery(input).data('max') == ui.to) {
delete woof_qt_current_values.meta_filter[tax];
} else {
woof_qt_current_values.meta_filter[tax]['value'] = [parseFloat(ui.from, 10), parseFloat(ui.to, 10)];
}
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
return false;
}
});
} catch (e) {
}
});
}
/* reset slider */
function woof_qt_reset_meta_ion_sliders() {
var slider = jQuery(".woof_qt_meta_slider").data("ionRangeSlider");
if (slider != undefined) {
slider.reset();
}
}
/*
*
* Checkbox
*
*/
/*init checkboxes*/
function woof_qt_init_checkbox() {
if (icheck_skin != 'none') {
jQuery('.woof_qt_checkbox').iCheck('destroy');
jQuery('.woof_qt_checkbox').iCheck({
checkboxClass: 'icheckbox_' + icheck_skin.skin + '-' + icheck_skin.color,
});
jQuery('.woof_qt_checkbox').off('ifChecked');
jQuery('.woof_qt_checkbox').on('ifChecked', function (event) {
jQuery(this).attr("checked", true);
var slug = jQuery(this).attr('data-tax');
if (woof_qt_current_values.add_filter[slug] == undefined) {
woof_qt_current_values.add_filter[slug] = [];
}
//meta filter
if (jQuery(this).hasClass("meta_" + slug)) {
if (woof_qt_current_values.meta_filter[slug] == undefined) {
woof_qt_current_values.meta_filter[slug] = {value: [], type: ""};
}
woof_qt_current_values.meta_filter[slug]['value'].push(jQuery(this).val());
if (jQuery(this).val() == "meta_exist") {
woof_qt_current_values.meta_filter[slug]['type'] = 'exist';
} else {
woof_qt_current_values.meta_filter[slug]['type'] = 'exact';
}
} else {
woof_qt_current_values.add_filter[slug].push(jQuery(this).val());
}
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
});
jQuery('.woof_qt_checkbox').off('ifUnchecked');
jQuery('.woof_qt_checkbox').on('ifUnchecked', function (event) {
jQuery(this).attr("checked", false);
var slug = jQuery(this).attr('data-tax');
//meta filter
if (jQuery(this).hasClass("meta_" + slug)) {
if (woof_qt_current_values.meta_filter[slug] == undefined) {
woof_qt_current_values.meta_filter[slug] = {value: [], type: ""};
}
var temp_array = woof_qt_current_values.meta_filter[slug]['value'];
woof_qt_delete_element_array(temp_array, jQuery(this).val());
if (temp_array) {
woof_qt_current_values.meta_filter[slug]['value'] = temp_array;
} else {
delete woof_qt_current_values.meta_filter[slug];
}
} else {
var temp_array = woof_qt_current_values.add_filter[slug];
woof_qt_delete_element_array(temp_array, jQuery(this).val());
if (temp_array) {
woof_qt_current_values.add_filter[slug] = temp_array;
}
}
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
});
//this script should be, because another way wrong way of working if to click on the label
jQuery('.woof_qt_checkbox_label').off();
jQuery('label.woof_qt_checkbox_label').on('click', function () {
if (jQuery(this).prev().find('.woof_qt_checkbox').is(':checked')) {
jQuery(this).prev().find('.woof_qt_checkbox').trigger('ifUnchecked');
jQuery(this).prev().removeClass('checked');
} else {
jQuery(this).prev().find('.woof_qt_checkbox').trigger('ifChecked');
jQuery(this).prev().addClass('checked');
}
return false;
});
/***/
} else {
jQuery('.woof_qt_checkbox').on('change', function (event) {
var slug = jQuery(this).attr('data-tax');
if (jQuery(this).is(':checked')) {
jQuery(this).attr("checked", true);
if (woof_qt_current_values.add_filter[slug] == undefined) {
woof_qt_current_values.add_filter[slug] = [];
}
if (jQuery(this).hasClass("meta_" + slug)) {
if (woof_qt_current_values.meta_filter[slug] == undefined) {
woof_qt_current_values.meta_filter[slug] = {value: [], type: ""};
}
woof_qt_current_values.meta_filter[slug]['value'].push(jQuery(this).val());
if (jQuery(this).val() == "meta_exist") {
woof_qt_current_values.meta_filter[slug]['type'] = 'exist';
} else {
woof_qt_current_values.meta_filter[slug]['type'] = 'exact';
}
} else {
woof_qt_current_values.add_filter[slug].push(jQuery(this).val());
}
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
} else {
jQuery(this).attr("checked", false);
if (jQuery(this).hasClass("meta_" + slug)) {
if (woof_qt_current_values.meta_filter[slug] == undefined) {
woof_qt_current_values.meta_filter[slug] = {value: [], type: ""};
}
var temp_array = woof_qt_current_values.meta_filter[slug]['value'];
woof_qt_delete_element_array(temp_array, jQuery(this).val());
if (temp_array) {
woof_qt_current_values.meta_filter[slug]['value'] = temp_array;
} else {
delete woof_qt_current_values.meta_filter[slug];
}
} else {
var temp_array = woof_qt_current_values.add_filter[slug];
woof_qt_delete_element_array(temp_array, jQuery(this).val());
if (temp_array) {
woof_qt_current_values.add_filter[slug] = temp_array;
}
}
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
}
});
}
}
function woof_qt_reset_checkbox() {
var radio = jQuery('.woof_qt_checkbox');
if (radio) {
radio.attr("checked", false);
radio.parents('.woof_qt_item_container').find('.checked').removeClass('checked');
}
}
/*
*
* radio
*
*/
/*init radio*/
function woof_qt_init_radio() {
if (icheck_skin != 'none') {
jQuery('.woof_qt_radio').iCheck('destroy');
jQuery('.woof_qt_radio').iCheck({
radioClass: 'iradio_' + icheck_skin.skin + '-' + icheck_skin.color,
});
jQuery('.woof_qt_radio').off('ifChecked');
jQuery('.woof_qt_radio').on('ifChecked', function (event) {
jQuery(this).attr("checked", true);
var slug = jQuery(this).attr('data-tax');
if (woof_qt_current_values.add_filter[slug] == undefined) {
woof_qt_current_values.add_filter[slug] = [];
}
woof_qt_current_values.add_filter[slug] = [jQuery(this).val()]
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
});
} else {
jQuery('.woof_qt_radio').on('change', function (event) {
jQuery(this).attr("checked", true);
var slug = jQuery(this).attr('data-tax');
if (woof_qt_current_values.add_filter[slug] == undefined) {
woof_qt_current_values.add_filter[slug] = [];
}
woof_qt_current_values.add_filter[slug] = [jQuery(this).val()]
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
});
}
jQuery('.woof_qt_radio_reset').on('click', function () {
var slug = jQuery(this).attr('data-tax');
jQuery(this).parents('.woof_qt_item_container').find('.checked').removeClass('checked');
jQuery(this).parents('.woof_qt_item_container').find('input[type=radio]').removeAttr('checked');
woof_qt_current_values.add_filter[slug] = [];
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
});
}
function woof_qt_reset_radio() {
var radio = jQuery('.woof_qt_radio');
if (radio) {
radio.attr("checked", false);
radio.parents('.woof_qt_item_container').find('.checked').removeClass('checked');
}
}
/*
*
* drop-downs
*
*/
/*init drop-downs*/
function woof_qt_init_select() {
if (woof_select_type == 'chosen') {
jQuery("select.woof_qt_select").chosen();
} else if (woof_select_type == 'selectwoo') {
jQuery("select.woof_qt_select").selectWoo();
}
jQuery('select.woof_qt_select').change(function () {
var tax_id = jQuery(this).val();
var slug = jQuery(this).attr('data-tax');
var tax_ids = [];
if (Array.isArray(tax_id)) {
tax_ids = tax_id;
} else if (tax_id != -1) {
tax_ids[0] = tax_id;
}
//meta filter
if (jQuery(this).hasClass("meta_" + slug)) {
woof_qt_current_values.meta_filter[slug] = {type: 'exact', value: tax_ids};
} else {
woof_qt_current_values.add_filter[slug] = tax_ids;
}
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
});
}
/* reset drop-down */
function woof_qt_reset_select() {
if (woof_select_type == 'chosen') {
jQuery('select.woof_qt_select').val('').trigger("chosen:updated");
} else if (woof_select_type == 'selectwoo') {
jQuery('select.woof_qt_select').val('-1').trigger('change');
} else {
jQuery('select.woof_qt_select option:selected').each(function () {
this.selected = false;
});
}
}
/*
*
* text search
*
*/
/* init text search */
function woof_init_text_search() {
jQuery('#woof_quick_search_form').keyup(function () {
var text = jQuery(this).val();
woof_qt_current_values.text_search = text.trim();
woof_qt_curr_page = 0;/*reset pagination*/
woof_quick_search_draw();
});
}
/*
*
* RESET
*
*/
/*init filter reset */
function woof_qt_reset_init() {
jQuery('.woof_qt_reset_filter_btn').on('click', function () {
woof_qt_current_values.add_filter = {};
woof_qt_current_values.meta_filter = {};
jQuery('#woof_quick_search_form').val('');
woof_qt_curr_page = 0;/*reset pagination*/
woof_qt_current_values.max_price = null;
woof_qt_current_values.max_price = null;
woof_qt_current_values.text_search = "";
woof_qt_reset_radio();
woof_qt_reset_checkbox();
woof_qt_reset_select();
woof_qt_reset_ion_sliders();
woof_qt_reset_meta_ion_sliders();
woof_quick_search_draw();
});
}
function woof_qt_reset_btn_state(show) {
if (show) {
jQuery('.woof_qt_reset_filter_btn').show();
} else {
jQuery('.woof_qt_reset_filter_btn').hide();
}
}
/*
*
* Additional function!!!
*
*/
/* delete from array */
function woof_qt_delete_element_array(arr, value) {
var idx = arr.indexOf(value);
if (idx != -1) {
return arr.splice(idx, 1);
}
return false;
}
/* string format */
if (!String.format) {
String.format = function (format) {
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/{(\d+)}/g, function (match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}
/* Number format https://gist.github.com/xiel/5688446 */
function woof_number_format(number, decimals, decPoint, thousandsSep) {
decimals = decimals || 0;
number = parseFloat(number);
if (!decPoint || !thousandsSep) {
decPoint = '.';
thousandsSep = ',';
}
var roundedNumber = Math.round(Math.abs(number) * ('1e' + decimals)) + '';
var numbersString = decimals ? roundedNumber.slice(0, decimals * -1) : roundedNumber;
var decimalsString = decimals ? roundedNumber.slice(decimals * -1) : '';
var formattedNumber = "";
while (numbersString.length > 3) {
formattedNumber = thousandsSep + numbersString.slice(-3)+ formattedNumber;
numbersString = numbersString.slice(0, -3);
}
var fix_num = numbersString + formattedNumber;
if (fix_num == "") {
fix_num = "0";
}
return (number < 0 ? '-' : '') + fix_num + (decimalsString ? (decPoint + decimalsString) : '');
}
/* Cuts very long strings */
function woof_cut_words(phrase, w_length) {
if (phrase.length > w_length) {
phrase = phrase.substr(0, w_length);
phrase += '...';
}
return phrase;
}
/* Get text of the notices */
function woof_qt_get_notice(type) {
switch (type) {
case'no_template':
return '<div class="notice woof_qt_notice">Notice: Problems with the template or maybe you entered the template names incorrectly. Wrong structure <a href="#">shortcode [woof_quick_search_results]</a> </div>';
break;
case'no_shortcode':
return '<div class="notice woof_qt_notice">Notice: To work with the advanced filter, you must use a <a href="#">shortcode [woof_quick_search_results]</a> </div>';
break;
default:
return "<div class='notice woof_qt_notice'>Something wrong!!!</div>";
}
}
/* parse term logic */
function woof_qt_parse_term_logic(term_str) {
var term_logic = {};
var temp_arr = [];
if (term_str == undefined || term_str.lenght) {
return term_logic;
}
temp_arr = term_str.split(',');
jQuery.each(temp_arr, function (i, item) {
var logic_arr = item.split(':');
if (logic_arr.length == 2) {
term_logic[logic_arr[0]] = logic_arr[1];
}
});
return term_logic;
}
/*
*
* File load
*
*/
function woof_load_serch_data() {
jQuery.getJSON(wooftextfilelink.link, function (data) {
data_text = data
}).done(function () {
console.log("File downloaded!");
jQuery('#woof_quick_search_form').trigger("keyup");
});
}
function woof_init_default_serch_data() {
jQuery.getJSON(wooftextfilelink.link, function (data) {
init_text_filter_form(wooftextfilelink.link, data);
}).done(function () {
console.log("File downloaded!");
});
}
/*
*
* Start!!!
*
*/
var woof_qt_form = jQuery('#woof_quick_search_form');
if (woof_qt_form.length) {
woof_qt_target = woof_qt_form.attr('data-target-link')
if (woof_qt_target != "_blank" && woof_qt_target != "_self") {
woof_qt_target = "_blank";
}
if (woof_qt_form.attr('data-extended') != 0) {
woof_qt_term_logic = woof_qt_parse_term_logic(woof_qt_form.attr('data-term_logic'));
woof_qt_tax_logic = woof_qt_form.attr('data-tax_logic');
if (woof_qt_tax_logic != 'AND' && woof_qt_tax_logic != 'OR') {
woof_qt_tax_logic = 'AND';
}
woof_qt_group_text_logic = woof_qt_form.attr('data-text_group_logic');
if (woof_qt_group_text_logic != 'AND' && woof_qt_group_text_logic != 'OR') {
woof_qt_tax_logic = 'AND';
}
init_text_filter_content();
if (woof_qt_form.attr('data-preload') == 1) {
woof_load_serch_data();
}
} else {
woof_init_default_serch_data();
}
}