/*======================================================================
	PRODUCT DETAIL JS
	--------------------------------------------------------------------
	Author: James Van Arsdale III
	Created: 11/7/08
----------------------------------------------------------------------*/
var frmOptions = {
	url: "/index.cfm",
	type: "post",
	dataType: "html",
	resetForm: false,
	timeout: 30000,
	beforeSubmit: validateOrder,
	success: showResponse,
	error: function(XMLHttpRequest, textStatus, errorThrown)
	{
		hideLoading();
		alert("Error\nAn error occurred and we couldn't add your items, please try again or contact us for further assistance.");
	}
};

jQuery(document).ready(function() {
	
	jQuery(".vProduct-detailPageTemplate-productContainer .vProduct-productForm-container form").submit(function() { 
		jQuery(this).ajaxSubmit(frmOptions); 
		return false;
	});
	
	jQuery(".vProduct-detailPageTemplate-productContainer .vProduct-productForm-container .cart input").click(function() {
		//jQuery(".vProduct-detailPageTemplate-productContainer .vProduct-productForm-container form").trigger("submit");
		if(!productForm.validate())
			return false;
		jQuery(".vProduct-detailPageTemplate-productContainer .vProduct-productForm-container form").submit();
		
		return false;
	 });
	
});

// pre-submit callback 
function validateOrder(formData, jqForm, options) { 
	// formData is an array; here we use $.param to convert it to a string to display it 
	// but the form plugin does this for you automatically when it submits the data 
	var queryString = jQuery.param(formData); 
	
	var orderTotal = jQuery(".vProduct-detailPageTemplate-productContainer .vProduct-productForm-container form input[name=quantity]").val();
	
	if( orderTotal > 0 )
	{
		showLoading();
		return true;
	}
	else
	{
		// this is for IE not being able to resubmit the form after the first ajax submit, unless you reselect a product in the drop down menu
		alert("Please Select A Product\nPlease select a product and quantity to add it to your Shopping Bag.");
		return false;
	}
} 
 
// post-submit callback 
function showResponse(responseTxt, statusText)  { 
	//alert('status: ' + statusText + '\n\nresponseText:' + responseTxt);	
	
	var myMessage = jQuery('.feedback', responseTxt).html();
	// get cart details.
	$.ajax({
		async: false, // set to false for testing
		url: "/index.cfm/fuseaction/cart.ajaxCartSummary",
		dataType: "html",
		cache: false,
		complete: function(XMLHttpRequest, textStatus)
		{	
			//alert('status: ' + textStatus + '\n\nresponseText:' + XMLHttpRequest.responseText);
			if ( textStatus == 'success' )
			{
				// remove old items from drop down
				jQuery("#header-container .bag li.cart ul li.cart-message").remove();
				jQuery("#header-container .bag li.cart ul li.cart-prod").remove();
				
				// if there are no items in the cart, create the nested UL
				if( jQuery("#header-container .bag li.cart:has(ul)").length < 1 )
				{
					jQuery("#header-container .bag li.cart").append("<ul><li class=\"actions\"><a href=\"/index.cfm/fuseaction/cart.view\" class=\"view-my-bag\">View My Bag</a> <a href=\"/index.cfm/fuseaction/checkout.start\" class=\"checkout\"><img src=\"/resources/dylans/images/buttons/btn_checkout-small.gif\" alt=\"Checkout\" /></a></li></ul>");
					// reinit the cart drop down now that there's a nested UL
					$("#header-container .bag li.cart:has(ul)").mouseover(function() {
						$("select").css("visibility","hidden");
						$(this).addClass("over");
					});
					$("#header-container .bag li.cart:has(ul)").mouseout(function() {
						$("select").css("visibility","visible");
						$(this).removeClass("over");
					});
					
				}

				// add newly returned items
				jQuery("#header-container .bag li.cart ul li.actions").before(XMLHttpRequest.responseText);
				jQuery("#header-container .bag li.cart ul li.cart-message").prepend("<h2>" + myMessage + "</h2>");
				jQuery("#header-container .bag li.cart ul li.cart-message").append(jQuery("#header-container .bag li.cart ul li.actions").html());
				jQuery("#header-container .bag li.cart ul li.cart-message").css("display","block");
				
				// update the item count in the util nav
				jQuery("#header-container .bag li.cart a .item-count").html("( "+jQuery("#header-container .bag li.cart ul li.cart-message input.cart-count").val()+" items )");
			
				hideLoading();
				
				// scroll to top and trigger the over state
				//jQuery(document).scrollTo("#header-container",500);
				jQuery("#header-container .bag li.cart").addClass("over");
				var temp = setTimeout('jQuery("#header-container .bag li.cart").removeClass("over")', 6000);
			}
			else
			{
				hideLoading();
				alert("Error\nWe were unable to update the Shopping Bag summary, refresh the page or visit your Shopping Bag to see your items added.");
			}
		},
		error: function()
		{
			alert("Error\nWe were unable to update the Shopping Bag summary, refresh the page or visit your Shopping Bag to see your items added.");
		}
	});
} 

function showLoading()
{
	jQuery("body").append("<div id=\"ordersave-loading\" class=\"overlay\" style=\"display: none;\"><div class=\"loading\"><h2>Adding items to your Shopping Bag</h2></div></div>");
	jQuery("#ordersave-loading").css("height",jQuery(document).height()+"px");
	jQuery("#ordersave-loading").css("width",jQuery(document).width()+"px");
	jQuery("#ordersave-loading").fadeTo("fast", 0.5);
	jQuery("#ordersave-loading").fadeTo("fast", 0, function() { jQuery("#ordersave-loading").css("display","block"); });
	jQuery("#ordersave-loading").fadeTo("slow", 0.9);
	jQuery(document).scrollTo("#header-container",500);
}

function hideLoading()
{
	jQuery("#ordersave-loading").remove();
}	

function showRatingLoading()
{
	jQuery(".vProductReview-list-reviews").append("<div id=\"ratereview-loading\" class=\"rateOverlay\" style=\"display: none;\"><div class=\"loading\"><h2>Submitting Rating.</h2></div></div>");
	jQuery("#ratereview-loading").css("height",jQuery(".vProductReview-list-reviews").height()+"px");
	jQuery("#ratereview-loading").css("width",jQuery(".vProductReview-list-reviews").width()+"px");
	jQuery("#ratereview-loading").fadeTo("fast", 0.5);
	jQuery("#ratereview-loading").fadeTo("fast", 0, function() { jQuery("#ratereview-loading").css("display","block"); });
	jQuery("#ratereview-loading").fadeTo("slow", 0.9);
}

function hideRatingLoading()
{
	jQuery("#ratereview-loading").remove();
}	
