function foxyshop_product_shortcode($atts, $content = null)
{
    global $product;
    $original_product = $product;
    extract(shortcode_atts(array("name" => '', "sub_frequency" => '', "variations" => ''), $atts));
    $prod = foxyshop_get_product_by_name($name);
    if (!$prod || !$name) {
        return;
    }
    if ($content == "") {
        $content = "Add To Cart";
    }
    $product = foxyshop_setup_product($prod);
    $url_extra = "";
    if ($sub_frequency) {
        $url_extra .= "&sub_frequency=" . $sub_frequency . foxyshop_get_verification("sub_frequency", $sub_frequency);
    }
    $write = '<a href="' . foxyshop_product_link("", true, $variations) . $url_extra . '" class="foxyshop_sc_product_link">' . $content . '</a>';
    $product = $original_product;
    return $write;
}
function foxyshop_addon_products($show_qty = false, $before_entry = "", $after_entry = '<div class="clr"></div>')
{
    global $foxyshop_settings, $product, $foxyshop_skip_url_link;
    if (!$foxyshop_settings['enable_addon_products'] || !$product['addon_products']) {
        return;
    }
    $original_product = $product;
    echo '<div class="foxyshop_addon_container">' . "\n";
    $args = array('post_type' => 'foxyshop_product', "post__in" => explode(",", $product['addon_products']), 'posts_per_page' => -1);
    if ($addonorder_order = get_post_meta($original_product['id'], "_addon_order", 1)) {
        add_filter('posts_orderby', 'foxyshop_addon_order');
    }
    $addonproducts = new WP_Query($args);
    if (!$product['bundled_products']) {
        $num = 2;
    } else {
        $bundled_products = explode(",", $product['bundled_products']);
        $num = count($bundled_products) + 2;
    }
    while ($addonproducts->have_posts()) {
        $addonproducts->the_post();
        //Setup
        $product = foxyshop_setup_product();
        //Check Inventory Levels
        if (isset($product['inventory_levels'][$product['code']]['count'])) {
            if ($product['inventory_levels'][$product['code']]['count'] <= 0) {
                continue;
            }
        }
        $fields = array('name', 'price', 'code', 'category', 'weight', 'discount_quantity_amount', 'discount_quantity_percentage', 'discount_price_amount', 'discount_price_percentage', 'sub_frequency', 'sub_startdate', 'sub_enddate');
        foreach ($fields as $fieldname) {
            if ($product[$fieldname]) {
                echo '<input type="hidden" class="foxyshop_addon_fields" rel="' . $num . '" originalname="' . $fieldname . foxyshop_get_verification($fieldname) . '" name="x:' . $fieldname . foxyshop_get_verification($fieldname) . '" id="' . $num . ':' . $fieldname . '_' . $product['id'] . '" value="' . esc_attr($product[$fieldname]) . '" />' . "\n";
            }
        }
        if (foxyshop_get_main_image() && version_compare($foxyshop_settings['version'], '0.7.0', ">")) {
            echo '<input type="hidden" class="foxyshop_addon_fields" rel="' . $num . '" originalname="image' . foxyshop_get_verification('image', '--OPEN--') . '" name="x:image' . foxyshop_get_verification('image', '--OPEN--') . '" id="' . $num . ':image_' . $product['id'] . '" value="' . foxyshop_get_main_image() . '" />' . "\n";
        }
        if (version_compare($foxyshop_settings['version'], '0.7.0', ">") && !isset($foxyshop_skip_url_link)) {
            echo '<input type="hidden" class="foxyshop_addon_fields" rel="' . $num . '" originalname="url' . foxyshop_get_verification('url') . '" name="x:url' . foxyshop_get_verification('url') . '" id="' . $num . ':url_' . $product['id'] . '" value="' . $product['url'] . '" />' . "\n";
        }
        //Output
        echo $before_entry;
        echo '<input type="checkbox" name="x:addon_' . $num . '" id="addon_' . $num . '" rel="' . $num . '" class="foxyshop_addon_checkbox" />';
        echo '<label for="addon_' . $num . '" class="addon_main_label">' . $product['name'] . '</label>';
        echo '<input type="hidden" name="x:addon_price_' . $num . '" id="addon_price_' . $num . '" value="' . $product['price'] . '" />';
        foxyshop_price(0, 1);
        if ($show_qty) {
            echo foxyshop_quantity(apply_filters("foxyshop_default_quantity_value", 1), "", "", $num);
        }
        echo $after_entry;
        $num++;
    }
    wp_reset_query();
    echo '</div>' . "\n";
    $product = $original_product;
    ?>
	<script type="text/javascript">
	function foxyshop_addon_enable(rel) {
		if ($("#addon_" + rel).is(":checked")) {
			jQuery(".foxyshop_addon_fields[rel='" + rel + "']").each(function() {
				jQuery(this).attr("name", rel + ":" + jQuery(this).attr("originalname"));
			});
			jQuery(".foxyshop_quantity.foxyshop_addon_fields[rel=" + rel + "]").prop("disabled", false);
		} else {
			jQuery(".foxyshop_addon_fields[rel='" + rel + "']").each(function() {
				jQuery(this).attr("name", "x:" + jQuery(this).attr("originalname"))
			});
			jQuery(".foxyshop_quantity.foxyshop_addon_fields[rel=" + rel + "]").prop("disabled", true);
		}
	}

	jQuery(document).ready(function($){
		$(".foxyshop_addon_checkbox").click(function() {
			foxyshop_addon_enable($(this).attr("rel"));
		});
		$("input.foxyshop_quantity.foxyshop_addon_fields").keyup(function() {
			$(this).val($(this).val().replace(/\D/g,''));
			$(".foxyshop_addon_checkbox").trigger("change");
		});
	});
	</script>
	<?php 
    remove_filter('posts_orderby', 'foxyshop_addon_order');
}