<?php

	global $_chosen_attributes, $wpdb, $wp;

	if (!is_post_type_archive('product') && !is_tax(get_object_taxonomies('product')))
		return;

	if (sizeof(WC()->query->unfiltered_product_ids) == 0)
		return; // None shown - return

	$min_price = isset($_GET['min_price']) ? esc_attr($_GET['min_price']) : '';
	$max_price = isset($_GET['max_price']) ? esc_attr($_GET['max_price']) : '';

	wp_enqueue_script('wc-price-slider-mod');

	// Remember current filters/search
	$fields = '';

	if (get_search_query())
		$fields .= '<input type="hidden" name="s" value="' . get_search_query() . '" />';

	if (!empty($_GET['post_type']))
		$fields .= '<input type="hidden" name="post_type" value="' . esc_attr($_GET['post_type']) . '" />';

	if (!empty ($_GET['product_cat']))
		$fields .= '<input type="hidden" name="product_cat" value="' . esc_attr($_GET['product_cat']) . '" />';

	if (!empty($_GET['product_tag']))
		$fields .= '<input type="hidden" name="product_tag" value="' . esc_attr($_GET['product_tag']) . '" />';

	if (!empty($_GET['orderby']))
		$fields .= '<input type="hidden" name="orderby" value="' . esc_attr($_GET['orderby']) . '" />';

	if ($_chosen_attributes) foreach ($_chosen_attributes as $attribute => $data) {

		$taxonomy_filter = 'filter_' . str_replace('pa_', '', $attribute);

		$fields .= '<input type="hidden" name="' . esc_attr($taxonomy_filter) . '" value="' . esc_attr(implode(',', $data['terms'])) . '" />';

		if ($data['query_type'] == 'or')
			$fields .= '<input type="hidden" name="' . esc_attr(str_replace('pa_', 'query_type_', $attribute)) . '" value="or" />';
	}

	$min = $max = 0;
	$post_min = $post_max = '';

	if (sizeof(WC()->query->layered_nav_product_ids) === 0) {
		$min = floor($wpdb->get_var(
			$wpdb->prepare('
						SELECT min(meta_value + 0)
						FROM %1$s
						LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
						WHERE ( meta_key = \'%3$s\' OR meta_key = \'%4$s\' )
						AND meta_value != ""
					', $wpdb->posts, $wpdb->postmeta, '_price', '_min_variation_price')
		));
		$max = ceil($wpdb->get_var(
			$wpdb->prepare('
						SELECT max(meta_value + 0)
						FROM %1$s
						LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
						WHERE meta_key = \'%3$s\'
					', $wpdb->posts, $wpdb->postmeta, '_price')
		));
	} else {
		$min = floor($wpdb->get_var(
			$wpdb->prepare('
						SELECT min(meta_value + 0)
						FROM %1$s
						LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
						WHERE ( meta_key =\'%3$s\' OR meta_key =\'%4$s\' )
						AND meta_value != ""
						AND (
							%1$s.ID IN (' . implode(',', array_map('absint', WC()->query->layered_nav_product_ids)) . ')
							OR (
								%1$s.post_parent IN (' . implode(',', array_map('absint', WC()->query->layered_nav_product_ids)) . ')
								AND %1$s.post_parent != 0
							)
						)
					', $wpdb->posts, $wpdb->postmeta, '_price', '_min_variation_price'
			)));
		$max = ceil($wpdb->get_var(
			$wpdb->prepare('
						SELECT max(meta_value + 0)
						FROM %1$s
						LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
						WHERE meta_key =\'%3$s\'
						AND (
							%1$s.ID IN (' . implode(',', array_map('absint', WC()->query->layered_nav_product_ids)) . ')
							OR (
								%1$s.post_parent IN (' . implode(',', array_map('absint', WC()->query->layered_nav_product_ids)) . ')
								AND %1$s.post_parent != 0
							)
						)
					', $wpdb->posts, $wpdb->postmeta, '_price'
			)));
	}

	if ($min == $max)
		return;

	if (get_option('permalink_structure') == '')
		$form_action = remove_query_arg(array('page', 'paged'), add_query_arg($wp->query_string, '', home_url($wp->request)));
	else
		$form_action = preg_replace('%\/page/[0-9]+%', '', home_url($wp->request));

	echo '<form method="get" action="' . esc_attr($form_action) . '">
				<div class="price_slider_wrapper">
					<div class="price_slider" style="display:none;"></div>
					<div class="price_slider_amount">
						<input type="text" id="min_price" name="min_price" value="' . esc_attr($min_price) . '" data-min="' . esc_attr(apply_filters('woocommerce_price_filter_widget_amount', $min)) . '" placeholder="' . __('Min price', 'woocommerce') . '" />
						<input type="text" id="max_price" name="max_price" value="' . esc_attr($max_price) . '" data-max="' . esc_attr(apply_filters('woocommerce_price_filter_widget_amount', $max)) . '" placeholder="' . __('Max price', 'woocommerce') . '" />
						<!--<button type="submit" class="button">' . __('Filter', 'woocommerce') . '</button>-->
						<div class="price_label clearfix" style="display:none;">
							<span class="from"></span><span class="to"></span>
						</div>
						' . $fields . '
						<div class="clear"></div>
					</div>
				</div>
			</form>';