<?php
/**
 * WooCommerce helpers
 *
 * @package Salient WordPress Theme
 * @subpackage helpers
 * @version 10.5
 */

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

// Admin notice for left over unneeded template files.
if ( class_exists( 'WooCommerce' ) && is_admin() && file_exists( NECTAR_THEME_DIRECTORY . '/woocommerce/cart/cart.php' ) ) {
	include NECTAR_THEME_DIRECTORY . '/nectar/woo/admin-notices.php';
}


// Load product quickview.
$nectar_quick_view_in_use = 'false';

if ( class_exists( 'WooCommerce' ) ) {
	
	$nectar_quick_view = ( ! empty( $nectar_options['product_quick_view'] ) && $nectar_options['product_quick_view'] === '1' ) ? true : false;
	
	if ( $nectar_quick_view ) {
		$nectar_quick_view_in_use = 'true';
		require_once NECTAR_THEME_DIRECTORY . '/nectar/woo/quick-view.php';
	}
	
}

$main_shop_layout      = ( ! empty( $nectar_options['main_shop_layout'] ) ) ? $nectar_options['main_shop_layout'] : 'no-sidebar';
$single_product_layout = ( ! empty( $nectar_options['single_product_layout'] ) ) ? $nectar_options['single_product_layout'] : 'no-sidebar';

remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );

// needed to let WooCommerce know Salient has theme options for columns
if ( function_exists( 'is_customize_preview' ) ) {
	if ( $woocommerce && is_customize_preview() ) {
		add_filter( 'loop_shop_columns', 'nectar_shop_loop_columns' );
	}
}


if ( !function_exists( 'nectar_shop_wrapper_start' ) ) {
	function nectar_shop_wrapper_start() {
		echo '<div class="container-wrap" data-midnight="dark"><div class="container main-content"><div class="row"><div class="nectar-shop-header">';
		do_action( 'nectar_shop_header_markup' );
		echo '</div>';
	}
}

if ( !function_exists( 'nectar_shop_wrapper_end' ) ) {
	function nectar_shop_wrapper_end() {
		echo '</div></div></div>';
		do_action( 'nectar_shop_fixed_social' );
	}
}


if ( !function_exists( 'nectar_shop_wrapper_start_sidebar_left' ) ) {
	function nectar_shop_wrapper_start_sidebar_left() {

		echo '<div class="container-wrap" data-midnight="dark"><div class="container main-content"><div class="nectar-shop-header">';
		do_action( 'nectar_shop_header_markup' );
		echo '</div><div class="row"><div id="sidebar" class="col span_3 col">';
		if ( function_exists( 'dynamic_sidebar' ) ) {
			dynamic_sidebar( 'woocommerce-sidebar' );
		}
		echo '</div><div class="post-area col span_9 col_last">';
	}
}

if ( !function_exists( 'nectar_shop_wrapper_end_sidebar_left' ) ) {
	function nectar_shop_wrapper_end_sidebar_left() {
		echo '</div></div></div></div>';
			do_action( 'nectar_shop_fixed_social' );
	}
}

if ( !function_exists( 'nectar_shop_wrapper_start_sidebar_right' ) ) {
	function nectar_shop_wrapper_start_sidebar_right() {
		echo '<div class="container-wrap" data-midnight="dark"><div class="container main-content"><div class="nectar-shop-header">';
		do_action( 'nectar_shop_header_markup' );
		echo '</div><div class="row"><div class="post-area col span_9">';
	}
}

if ( !function_exists( 'nectar_shop_wrapper_end_sidebar_right' ) ) {
	function nectar_shop_wrapper_end_sidebar_right() {
			echo '</div><div id="sidebar" class="col span_3 col_last">';
		if ( function_exists( 'dynamic_sidebar' ) ) {
			dynamic_sidebar( 'woocommerce-sidebar' );
		}
		echo '</div></div></div></div>';
			do_action( 'nectar_shop_fixed_social' );
	}
}

if ( !function_exists( 'nectar_shop_wrapper_start_fullwidth' ) ) {
	function nectar_shop_wrapper_start_fullwidth() {

		echo '<div class="container-wrap" data-midnight="dark"><div class="container main-content"><div class="row"><div class="full-width-content nectar-shop-outer"><div class="nectar-shop-header">';
		do_action( 'nectar_shop_header_markup' );
		echo '</div>';
	}
}

if ( !function_exists( 'nectar_shop_wrapper_end_fullwidth' ) ) {
	function nectar_shop_wrapper_end_fullwidth() {
		echo '</div></div></div></div>';
	}
}


if ( ! function_exists( 'nectar_shop_loop_columns' ) ) {
	function nectar_shop_loop_columns() {
		return 3; // 3 products per row
	}
}

if ( ! function_exists( 'nectar_shop_loop_columns_std' ) ) {
	function nectar_shop_loop_columns_std() {
		return 4; // 3 products per row
	}
}

// change header
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
add_filter( 'woocommerce_show_page_title', '__return_false' );
add_filter( 'woocommerce_breadcrumb_defaults', 'nectar_change_breadcrumb_delimiter' );

if ( !function_exists( 'nectar_change_breadcrumb_delimiter' ) ) {
	function nectar_change_breadcrumb_delimiter( $defaults ) {
		$defaults['delimiter'] = ' <i class="fa fa-angle-right"></i> ';
		return $defaults;
	}
}


if ( $woocommerce ) {
	add_action( 'wp', 'nectar_woo_shop_markup' );

	// alter gallery thumbnail width
	add_action( 'after_setup_theme', 'nectar_custom_gallery_thumb_woocommerce_theme_support' );
	
	if ( !function_exists( 'nectar_custom_gallery_thumb_woocommerce_theme_support' ) ) {
		function nectar_custom_gallery_thumb_woocommerce_theme_support() {
			add_theme_support(
				'woocommerce',
				array(
					'gallery_thumbnail_image_width' => 150,
				)
			);
		}
	}

}

if ( !function_exists( 'nectar_woo_shop_markup' ) ) {
	
	function nectar_woo_shop_markup() {

		global $single_product_layout;
		global $main_shop_layout;
		global $woocommerce;

		if ( $woocommerce && ! is_product() ) {
			remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
		}

		// page header
		if ( is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy() ) {

			add_action( 'woocommerce_before_main_content', 'salient_shop_header', 10 );

			if ( ! function_exists( 'salient_shop_header' ) ) {
				function salient_shop_header() {
					global $woocommerce;
					// page header for main shop page
					if ( $woocommerce && version_compare( $woocommerce->version, '3.0', '>=' ) ) {
						nectar_page_header( wc_get_page_id( 'shop' ) );
					} else {
						nectar_page_header( woocommerce_get_page_id( 'shop' ) );
					}
				}
			}

			if ( ! function_exists( 'salient_woo_shop_title' ) ) {
				function salient_woo_shop_title() {
					echo '<h1 class="page-title">';
					woocommerce_page_title();
					echo '</h1>';
				}
			}

			if ( $woocommerce && version_compare( $woocommerce->version, '3.0', '>=' ) ) {
				$header_title    = get_post_meta( wc_get_page_id( 'shop' ), '_nectar_header_title', true );
				$header_bg_color = get_post_meta( wc_get_page_id( 'shop' ), '_nectar_header_bg_color', true );
				$header_bg_image = get_post_meta( wc_get_page_id( 'shop' ), '_nectar_header_bg', true );
			} else {
				$header_title    = get_post_meta( woocommerce_get_page_id( 'shop' ), '_nectar_header_title', true );
				$header_bg_color = get_post_meta( woocommerce_get_page_id( 'shop' ), '_nectar_header_bg_color', true );
				$header_bg_image = get_post_meta( woocommerce_get_page_id( 'shop' ), '_nectar_header_bg', true );
			}

			if ( is_shop() ) {
				if ( empty( $header_bg_color ) && empty( $header_bg_image ) ) {
					add_action( 'nectar_shop_header_markup', 'salient_woo_shop_title', 10 );
				}
			} elseif ( is_product_category() ) {

				$cate          = get_queried_object();
				$t_id          = ( property_exists( $cate, 'term_id' ) ) ? $cate->term_id : '';
				$product_terms = get_option( "taxonomy_$t_id" );

				$using_cat_bg = ( ! empty( $product_terms['product_category_image'] ) ) ? true : false;

				if ( empty( $header_bg_color ) && empty( $header_bg_image ) && ! $using_cat_bg ) {
					add_action( 'nectar_shop_header_markup', 'salient_woo_shop_title', 10 );
				}
			} elseif ( is_product_tag() || is_product_taxonomy() ) {

				if ( empty( $header_bg_color ) && empty( $header_bg_image ) ) {
					add_action( 'nectar_shop_header_markup', 'salient_woo_shop_title', 10 );
				}
			}


			add_action( 'nectar_shop_header_markup', 'woocommerce_catalog_ordering', 10 );
			add_action( 'nectar_shop_header_markup', 'woocommerce_result_count', 10 );
			add_action( 'nectar_shop_header_markup', 'woocommerce_breadcrumb', 10 );

		}

		// no sidebar shop single
		if ( is_product() && $single_product_layout != 'right-sidebar' && is_product() && $single_product_layout != 'left-sidebar' ) {
			remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
			add_action( 'woocommerce_before_main_content', 'nectar_shop_wrapper_start', 10 );
			add_action( 'woocommerce_after_main_content', 'nectar_shop_wrapper_end', 10 );

			add_filter( 'loop_shop_columns', 'nectar_shop_loop_columns_std' );
		}

		// no sidebar shop
		if ( is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy() ) {
			if ( $main_shop_layout != 'right-sidebar' && $main_shop_layout != 'left-sidebar' && $main_shop_layout != 'fullwidth' ) {
				remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
				add_action( 'woocommerce_before_main_content', 'nectar_shop_wrapper_start', 10 );
				add_action( 'woocommerce_after_main_content', 'nectar_shop_wrapper_end', 10 );

				add_filter( 'loop_shop_columns', 'nectar_shop_loop_columns_std' );
			}

			if ( $main_shop_layout === 'fullwidth' ) {
				add_filter( 'loop_shop_columns', 'nectar_shop_loop_columns_std' );
			}
		}

		// using sidebar
		if ( is_shop() || is_product_category() || is_product_tag() || is_product() || is_product_taxonomy() ) {

			$nectar_shop_layout = ( is_product() ) ? $single_product_layout : $main_shop_layout;

			if ( $nectar_shop_layout === 'right-sidebar' ) {

				remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );

				add_action( 'woocommerce_before_main_content', 'nectar_shop_wrapper_start_sidebar_right', 10 );
				add_action( 'woocommerce_after_main_content', 'nectar_shop_wrapper_end_sidebar_right', 10 );

				add_filter( 'loop_shop_columns', 'nectar_shop_loop_columns' );

			} elseif ( $nectar_shop_layout === 'left-sidebar' ) {

				remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );

				add_action( 'woocommerce_before_main_content', 'nectar_shop_wrapper_start_sidebar_left', 10 );
				add_action( 'woocommerce_after_main_content', 'nectar_shop_wrapper_end_sidebar_left', 10 );

				add_filter( 'loop_shop_columns', 'nectar_shop_loop_columns' );
			} elseif ( $nectar_shop_layout === 'fullwidth' ) {

				remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );

				add_action( 'woocommerce_before_main_content', 'nectar_shop_wrapper_start_fullwidth', 10 );
				add_action( 'woocommerce_after_main_content', 'nectar_shop_wrapper_end_fullwidth', 10 );

			}
		}

	}

}




add_theme_support( 'woocommerce' );

/* custom gallery thumb size */
if ( $woocommerce ) {
	add_filter( 'woocommerce_gallery_thumbnail_size', 'nectar_woocommerce_gallery_thumbnail_size' );
}

if ( !function_exists( 'nectar_woocommerce_gallery_thumbnail_size' ) ) {
	function nectar_woocommerce_gallery_thumbnail_size() {
		return 'nectar_small_square';
	}
}


if ( $woocommerce && function_exists('nectar_remove_categories_count') ) {
	add_filter( 'woocommerce_layered_nav_count', 'nectar_remove_categories_count' );
}

add_filter( 'woocommerce_pagination_args', 'nectar_override_pagination_args' );
if ( !function_exists( 'nectar_override_pagination_args' ) ) {
	function nectar_override_pagination_args( $args ) {
		$args['prev_text'] = __( 'Previous', 'salient' );
		$args['next_text'] = __( 'Next', 'salient' );
		return $args;
	}
}

if ( $woocommerce && version_compare( $woocommerce->version, '3.0', '>=' ) ) {
	add_filter( 'woocommerce_add_to_cart_fragments', 'nectar_add_to_cart_fragment' );
} else {
	add_filter( 'add_to_cart_fragments', 'nectar_add_to_cart_fragment' );
}


// update the cart with ajax
if ( !function_exists( 'nectar_add_to_cart_fragment' ) ) {
	function nectar_add_to_cart_fragment( $fragments ) {
		global $woocommerce;
		ob_start();
		$fragments['a.cart-parent'] = ob_get_clean();
		return $fragments;
	}
}

// change summary html markup to fit responsive
if ( empty( $nectar_options['product_tab_position'] ) || $nectar_options['product_tab_position'] === 'in_sidebar' ) {
	add_action( 'woocommerce_before_single_product_summary', 'nectar_woocommerce_summary_div', 35 );
	add_action( 'woocommerce_after_single_product_summary', 'nectar_woocommerce_close_div', 4 );
}

if ( !function_exists( 'nectar_woocommerce_summary_div' ) ) {
	function nectar_woocommerce_summary_div() {
		echo "<div class='span_7 col col_last single-product-summary'>";
	}
}

if ( !function_exists( 'nectar_woocommerce_close_div' ) ) {
	function nectar_woocommerce_close_div() {
		echo '</div>';
	}
}

// change tab position to be inside summary
if ( empty( $nectar_options['product_tab_position'] ) || $nectar_options['product_tab_position'] === 'in_sidebar' ) {
	remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
	add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 1 );
}

// wrap single product image in an extra div
add_action( 'woocommerce_before_single_product_summary', 'nectar_woocommerce_images_div', 8 );
add_action( 'woocommerce_before_single_product_summary', 'nectar_woocommerce_close_div', 29 );

if ( !function_exists( 'nectar_woocommerce_images_div' ) ) {
	function nectar_woocommerce_images_div() {
		echo "<div class='span_5 col single-product-main-image'>";
	}
}


// display upsells and related products within dedicated div with different column and number of products
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
remove_action( 'woocommerce_after_single_product', 'woocommerce_output_related_products', 10 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );

if ( !function_exists( 'woocommerce_output_related_products' ) ) {
	function woocommerce_output_related_products() {
		$output = null;

		ob_start();
		woocommerce_related_products(
			array(
				'columns'        => 4,
				'posts_per_page' => 4,
			)
		);
		$content = ob_get_clean();
		if ( $content ) {
			$output .= $content; }

		echo '<div class="clear"></div>' . $output;
	}
}

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
remove_action( 'woocommerce_after_single_product', 'woocommerce_upsell_display', 10 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 21 );

if ( !function_exists( 'woocommerce_output_upsells' ) ) {
	function woocommerce_output_upsells() {
		
		woocommerce_upsell_display( 4, 4 );
		
	}
}


if ( $woocommerce && version_compare( $woocommerce->version, '3.0', '>=' ) ) {
	add_filter( 'woocommerce_add_to_cart_fragments', 'nectar_woocommerce_header_add_to_cart_fragment' );
	if ( $nectar_theme_skin === 'material' ) {
		add_filter( 'woocommerce_add_to_cart_fragments', 'nectar_mobile_woocommerce_header_add_to_cart_fragment' );
	}
} else {
	add_filter( 'add_to_cart_fragments', 'nectar_woocommerce_header_add_to_cart_fragment' );
}

if ( !function_exists( 'nectar_woocommerce_header_add_to_cart_fragment' ) ) {
	function nectar_woocommerce_header_add_to_cart_fragment( $fragments ) {
		global $woocommerce;

		ob_start(); ?>
		<a class="cart-contents" href="<?php echo wc_get_cart_url(); ?>"><div class="cart-icon-wrap"><i class="icon-salient-cart"></i> <div class="cart-wrap"><span><?php echo esc_html( $woocommerce->cart->cart_contents_count ); ?> </span></div> </div></a>
		<?php

		$fragments['a.cart-contents'] = ob_get_clean();

		return $fragments;
	}
}

if ( !function_exists( 'nectar_mobile_woocommerce_header_add_to_cart_fragment' ) ) {
	function nectar_mobile_woocommerce_header_add_to_cart_fragment( $fragments ) {
		global $woocommerce;

		ob_start();
		?>
		<a id="mobile-cart-link" href="<?php echo wc_get_cart_url(); ?>"><i class="icon-salient-cart"></i><div class="cart-wrap"><span><?php echo esc_html( $woocommerce->cart->cart_contents_count ); ?> </span></div></a>
		<?php

		$fragments['a#mobile-cart-link'] = ob_get_clean();

		return $fragments;
	}
}


// change how many products are displayed per page
global $nectar_options;

$product_hover_alt_image      = ( ! empty( $nectar_options['product_hover_alt_image'] ) ) ? $nectar_options['product_hover_alt_image'] : 'off';
$nectar_woo_products_per_page = ( ! empty( $nectar_options['woo-products-per-page'] ) ) ? $nectar_options['woo-products-per-page'] : '12';

add_filter(
	'loop_shop_per_page',
	function( $cols ) {
		global $nectar_woo_products_per_page;
		return $nectar_woo_products_per_page;
	},
	20
);

// change the position of add to cart
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );

remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );

$product_style = ( ! empty( $nectar_options['product_style'] ) ) ? $nectar_options['product_style'] : 'classic';

if ( $product_style === 'classic' ) {
	
	add_action( 'woocommerce_before_shop_loop_item_title', 'nectar_product_thumbnail_with_cart', 10 );
} elseif ( $product_style === 'text_on_hover' ) {
	
	add_action( 'woocommerce_before_shop_loop_item_title', 'nectar_product_thumbnail_with_cart_alt', 10 );
	remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
	remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );
	add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 5 );
	add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 10 );
} 
elseif ( $product_style === 'material' ) {
	
	add_action( 'woocommerce_before_shop_loop_item_title', 'nectar_product_thumbnail_material', 10 );
	remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
	remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
} 
else {
	
	add_action( 'woocommerce_before_shop_loop_item_title', 'nectar_product_thumbnail_minimal', 10 );
	remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
	add_action( 'nectar_woo_minimal_price', 'woocommerce_template_loop_price', 5 );
	remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
	remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
}


/*add 3.0 gallery support when using default lightbox option in theme*/
$nectar_product_gal_type = ( ! empty( $nectar_options['single_product_gallery_type'] ) ) ? $nectar_options['single_product_gallery_type'] : 'default';

if ( $nectar_product_gal_type !== 'ios_slider' ) {
	add_theme_support( 'wc-product-gallery-zoom' );
	add_theme_support( 'wc-product-gallery-lightbox' );
	add_theme_support( 'wc-product-gallery-slider' );
} else {
	add_theme_support( 'wc-product-gallery-zoom' );
	add_theme_support( 'wc-product-gallery-lightbox' );
	add_theme_support( 'wc-product-gallery-slider' );
}

if ( ! function_exists( 'nectar_product_thumbnail_with_cart' ) ) {

	function nectar_product_thumbnail_with_cart() {
		global $product;
		global $woocommerce;
		global $product_hover_alt_image;
		global $nectar_quick_view_in_use;
		?>
		
	   <div class="product-wrap">

			<a href="<?php the_permalink(); ?>">	
							<?php

							$product_second_image = null;
							if ( $product_hover_alt_image == '1' ) {

								if ( $woocommerce && version_compare( $woocommerce->version, '3.0', '>=' ) ) {
									$product_attach_ids = $product->get_gallery_image_ids();
								} else {
									$product_attach_ids = $product->get_gallery_attachment_ids();
								}

								if ( isset( $product_attach_ids[0] ) ) {
									$product_second_image = wp_get_attachment_image( $product_attach_ids[0], 'shop_catalog', false, array( 'class' => 'hover-gallery-image' ) );
								}
							}

							echo woocommerce_get_product_thumbnail() . $product_second_image;
							?>
			 </a>
			<?php
					echo '<div class="product-add-to-cart" data-nectar-quickview="' . esc_attr($nectar_quick_view_in_use) . '">';
						woocommerce_template_loop_add_to_cart();
						do_action( 'nectar_woocommerce_before_add_to_cart' );
					 echo '</div>';
			?>
		   </div>
		<?php
	}
}



if ( ! function_exists( 'nectar_product_thumbnail_material' ) ) {

	function nectar_product_thumbnail_material() {

			global $product;
			global $woocommerce;
			global $product_hover_alt_image;
		 	global $nectar_quick_view_in_use;
		?>
		
	   <div class="product-wrap">
			<?php

			$product_second_image = null;
			if ( $product_hover_alt_image == '1' ) {

				if ( $woocommerce && version_compare( $woocommerce->version, '3.0', '>=' ) ) {
					$product_attach_ids = $product->get_gallery_image_ids();
				} else {
					$product_attach_ids = $product->get_gallery_attachment_ids();
				}

				if ( isset( $product_attach_ids[0] ) ) {
					$product_second_image = wp_get_attachment_image( $product_attach_ids[0], 'shop_catalog', false, array( 'class' => 'hover-gallery-image' ) );
				}
			}

			echo '<a href="' . esc_url( get_permalink() ) . '">';
			echo woocommerce_get_product_thumbnail() . $product_second_image;
			echo '</a>';
			echo '<div class="product-meta">';
			echo '<a href="' . esc_url( get_permalink() ) . '">';
			do_action( 'woocommerce_shop_loop_item_title' );
			echo '</a>';
			do_action( 'woocommerce_after_shop_loop_item_title' );

			echo '<div class="product-add-to-cart" data-nectar-quickview="' . esc_attr($nectar_quick_view_in_use) . '">';
			  woocommerce_template_loop_add_to_cart();
					do_action( 'nectar_woocommerce_before_add_to_cart' );
			echo '</div></div>';
			?>
		   </div>
		<?php
	}
}



if ( ! function_exists( 'nectar_product_thumbnail_minimal' ) ) {

	function nectar_product_thumbnail_minimal() {

		global $product;
		global $woocommerce;
		global $product_hover_alt_image;
		 global $nectar_quick_view_in_use;
		?>
		 <div class="background-color-expand"></div>
	   <div class="product-wrap">
			<?php

			$product_second_image = null;
			if ( $product_hover_alt_image == '1' ) {

				if ( $woocommerce && version_compare( $woocommerce->version, '3.0', '>=' ) ) {
					$product_attach_ids = $product->get_gallery_image_ids();
				} else {
					$product_attach_ids = $product->get_gallery_attachment_ids();
				}

				if ( isset( $product_attach_ids[0] ) ) {
					$product_second_image = wp_get_attachment_image( $product_attach_ids[0], 'shop_catalog', false, array( 'class' => 'hover-gallery-image' ) );
				}
			}

			echo '<a href="' . esc_url( get_permalink() ) . '">';
			echo woocommerce_get_product_thumbnail() . $product_second_image;
			echo '</a>';
			echo '<div class="product-meta">';
			echo '<a href="' . esc_url( get_permalink() ) . '">';
			do_action( 'woocommerce_shop_loop_item_title' );
			echo '</a>';
			do_action( 'woocommerce_after_shop_loop_item_title' );
			echo '<div class="price-hover-wrap">';
			do_action( 'nectar_woo_minimal_price' );
			echo '<div class="product-add-to-cart" data-nectar-quickview="' . esc_attr($nectar_quick_view_in_use) . '">';
			  woocommerce_template_loop_add_to_cart();
					do_action( 'nectar_woocommerce_before_add_to_cart' );
			echo '</div></div></div>';
			?>
		   </div>
		<?php
	}
}



if ( ! function_exists( 'nectar_product_thumbnail_with_cart_alt' ) ) {

	function nectar_product_thumbnail_with_cart_alt() {
		?>
		
	   <div class="product-wrap">
			<?php
			global $product;
			global $woocommerce;
			global $product_hover_alt_image;
			global $nectar_quick_view_in_use;

			$product_second_image = null;
			if ( $product_hover_alt_image == '1' ) {

				if ( $woocommerce && version_compare( $woocommerce->version, '3.0', '>=' ) ) {
					$product_attach_ids = $product->get_gallery_image_ids();
				} else {
					$product_attach_ids = $product->get_gallery_attachment_ids();
				}

				if ( isset( $product_attach_ids[0] ) ) {
					$product_second_image = wp_get_attachment_image( $product_attach_ids[0], 'shop_catalog', false, array( 'class' => 'hover-gallery-image' ) );
				}
			}

			echo woocommerce_get_product_thumbnail() . $product_second_image;
			?>

			   <div class="bg-overlay"></div>
			   <a href="<?php the_permalink(); ?>" class="link-overlay"></a>
			   <div class="text-on-hover-wrap">
				<?php do_action( 'woocommerce_after_shop_loop_item_title' ); ?>
				<?php

				if ( $woocommerce && version_compare( $woocommerce->version, '3.0', '>=' ) ) {
					echo '<div class="categories">' . wc_get_product_category_list( $product->get_id() ) . '</div>';
				} else {
					echo '<div class="categories">' . $product->get_categories() . '</div>';
				}

				?>
			</div> 
			
			<?php do_action( 'nectar_woocommerce_before_add_to_cart' ); ?>


		   </div>
		   <a href="<?php the_permalink(); ?>"><?php do_action( 'woocommerce_shop_loop_item_title' ); ?></a>
		<?php
		woocommerce_template_loop_add_to_cart();
	}
}


if ( !function_exists( 'nectar_header_cart_output' ) ) {
	
	function nectar_header_cart_output() {
		global $woocommerce;
		global $nectar_options;

		$header_format         = ( ! empty( $nectar_options['header_format'] ) ) ? $nectar_options['header_format'] : 'default';
		$userSetSideWidgetArea = ( ! empty( $nectar_options['header-slide-out-widget-area'] ) && $header_format !== 'left-header' ) ? $nectar_options['header-slide-out-widget-area'] : 'off';

		ob_start();

		if ( $woocommerce ) {

				$nav_cart_style = ( ! empty( $nectar_options['ajax-cart-style'] ) ) ? $nectar_options['ajax-cart-style'] : 'default';
			?>
				
			<div class="cart-outer" data-user-set-ocm="<?php echo esc_attr( $userSetSideWidgetArea ); ?>" data-cart-style="<?php echo esc_attr( $nav_cart_style ); ?>">
				<div class="cart-menu-wrap">
					<div class="cart-menu">
						<a class="cart-contents" href="<?php echo wc_get_cart_url(); ?>"><div class="cart-icon-wrap"><i class="icon-salient-cart"></i> <div class="cart-wrap"><span><?php echo esc_html( $woocommerce->cart->cart_contents_count ); ?> </span></div> </div></a>
					</div>
				</div>
				
				<div class="cart-notification">
					<span class="item-name"></span> <?php echo esc_html__( 'was successfully added to your cart.', 'salient' ); ?>
				</div>
				
				<?php
				if ( $nav_cart_style != 'slide_in' ) {
					// Check for WooCommerce 2.0 and display the cart widget
					if ( version_compare( WOOCOMMERCE_VERSION, '2.0.0' ) >= 0 ) {
						the_widget( 'WC_Widget_Cart' );
					} else {
						the_widget( 'WooCommerce_Widget_Cart', 'title= ' );
					}
				}
				?>
					
			</div>
				
			<?php
		}

		$captured_cart_content = ob_get_clean();
		return $captured_cart_content;

	}
}

add_action( 'wp', 'nectar_woo_social_add' );

if ( !function_exists( 'nectar_woo_social_add' ) ) {
	function nectar_woo_social_add() {

		global $nectar_options;
		global $woocommerce;

		$social_style = get_option( 'salient_social_button_style','fixed' );
		
		if ( empty( $nectar_options['product_tab_position'] ) || $nectar_options['product_tab_position'] === 'in_sidebar' ) {
				
				if( $woocommerce && $social_style === 'fixed' && is_product() ) {
					add_action( 'nectar_shop_fixed_social', 'nectar_review_quickview', 10 );
				} else {
					add_action( 'woocommerce_after_add_to_cart_form', 'nectar_review_quickview', 10 );
				}
			
		} else {
				
			if( $woocommerce && $social_style === 'fixed' && is_product() ) {
				add_action( 'nectar_shop_fixed_social', 'nectar_review_quickview', 10 );
			} else {
				add_action( 'woocommerce_single_product_summary', 'nectar_review_quickview', 100 );
			}
				
			add_action( 'woocommerce_after_single_product_summary', 'nectar_woo_clearfix', 7 );
			
		}

	}
	
}


if ( !function_exists( 'nectar_woo_clearfix' ) ) {
	function nectar_woo_clearfix() {
		echo '<div class="after-product-summary-clear"></div>';
	}
}


if ( !function_exists( 'nectar_review_quickview' ) ) {
	
	function nectar_review_quickview() {
		global $product, $nectar_options, $post;

			// Social sharting icons
			if( function_exists('nectar_social_sharing_output') ) {
				$social_style = get_option( 'salient_social_button_style','fixed' );
				if( $social_style === 'fixed' ) {
					nectar_social_sharing_output('fixed');
				} else {
					nectar_social_sharing_output('hover');
				}
			}

	}
}

// Image sizes
global $pagenow;
if ( is_admin() && isset( $_GET['activated'] ) && $pagenow === 'themes.php' ) {
	add_action( 'init', 'nectar_woocommerce_image_dimensions', 1 ); }


// Define image sizes
if ( !function_exists( 'nectar_woocommerce_image_dimensions' ) ) {
	function nectar_woocommerce_image_dimensions() {
		$catalog = array(
			'width'  => '375',
			'height' => '400',
			'crop'   => 1,
		);

		$single = array(
			'width'  => '600',
			'height' => '630',
			'crop'   => 1,
		);

		$thumbnail = array(
			'width'  => '130',
			'height' => '130',
			'crop'   => 1,
		);

		update_option( 'shop_catalog_image_size', $catalog ); // Product category thumbs
		update_option( 'shop_single_image_size', $single ); // Single product image
		update_option( 'shop_thumbnail_image_size', $thumbnail ); // Image gallery thumbs
	}
}

// Remove AJAX for products with a large amoutn of variations
if ( !function_exists( 'nectar_wc_ajax_variation_thresh' ) ) {
	function nectar_wc_ajax_variation_thresh( $qty, $product ) {
	    return 125;
	}
}
add_filter( 'woocommerce_ajax_variation_threshold', 'nectar_wc_ajax_variation_thresh', 10, 2 );
