Cufon.replace('h1, h2, h3, h4, h5, .button');

$(document).ready(function(){
	
	// Newsletter email entry
	
	$("#newsletter input").blur(function(){
		if( !$(this).val() ){ $(this).addClass("empty").val("enter email address"); }
	}).focus(function(){
		if( $(this).hasClass("empty") ){ $(this).removeClass("empty").val(""); }
	}).blur();
	
	// Newsletter signup
	
	$("#newsletter").submit(function(){
		
		$("a.nl_back").live("click", function(){
			$("#newsletter").css("height", "auto").find("*").show();
			$("#newsletterStatus").hide();
		});
		
		$("#newsletter").height( $("#newsletter").height() ).find("*").hide();
		$("#newsletterStatus").html('Submitting...').show();
		
		$.ajax({
			type: "POST",
			url: "newsletter_signup/",
			data: {
				email: $("#newsletter_email").val()
			},
			success: function( data, textStatus, XMLHttpRequest ){
				if( data == "1" ){
					$("#newsletterStatus").html('Thanks for subscribing!').show();
				}else{
					$("#newsletterStatus").html('<span style="color: #bb1600;">Email address invalid. Please <a href="javascript:;" class="nl_back" style="color: #7c1700;">go back</a> and try again.</span>').show();
				}
			},
			error: function(){
				$("#newsletterStatus").html('<span style="color: #bb1600;">An error has occured. Please <a href="javascript:;" class="nl_back" style="color: #7c1700;">go back</a> and try again.</span>').show();
			}
		});
		
	});
	
	$("#newsletter a").click(function(){
		$("#newsletter").submit();
	});
	
	// Category selection sync
	
	$("ul.grid_categories a, ul.menu_categories a").hover(function(){
		$( "li."+$(this).parent("li").attr("class") ).children("a").addClass( "hovered" );
	},function(){
		$( "li."+$(this).parent("li").attr("class") ).children("a").removeClass( "hovered" );
	});
	
	// Basket "update" button highlight
	
	$("#basket_form input.qty").keypress(function(){
		$("#update_qty_btn").addClass("sel_orange").removeClass("sel_grey");
	});
	
	// Checkout
	
	if( $("#checkout_form").length == 1 ){
		
		$("#addresses_same_checkbox").click(function(){
			if( $(this).is(":checked") ){
				$("#checkout_billing").height( $("#checkout_billing").height() );
				$("#checkout_billing div.address_fields").hide();
				$("#addresses_same_note").show();
			}else{
				$("#checkout_billing div.address_fields").show();
				$("#addresses_same_note").hide();
			}
		});
		
		$("#payment_cardtype").click(function(){
			if( $(this).val() == "VISA" ){
				$("#start_date_field").hide();
				$("#issue_number_field").hide();
			}else if( $(this).val() == "DELTA" ){
				$("#start_date_field").hide();
				$("#issue_number_field").hide();
			}else if( $(this).val() == "UKE" ){
				$("#start_date_field").show();
				$("#issue_number_field").hide();
			}else if( $(this).val() == "MC" ){
				$("#start_date_field").hide();
				$("#issue_number_field").hide();
			}else if( $(this).val() == "SWITCH" ){
				$("#start_date_field").show();
				$("#issue_number_field").show();
			}
		});
		
		$("a.ajax_back").live("click", function(){
			$("#pay_now .buttons").fadeIn( 500 );
			$("#pay_now .status").fadeOut( 500 );
		});
		
		$("#checkout_form").submit(function(){
			
			if( $("#pay_now .buttons").not(":visible").length == 1 ){
				return;
			}
			
			$("#checkout_form .checkout_field_error").removeClass("checkout_field_error");
			
			$("#pay_now .buttons").fadeOut( 500 );
			$("#pay_now .status").html("Please wait, processing...").fadeIn( 500 );
			
			$.ajax({
				url: "checkout",
				data: $(this).serialize(),
				type: "post",
				dataType: "json",
				success: function( json ){
					//alert(json);
					$("#pay_now .status").html( json.message );
					if( json.code === 20 ){
						
					}else if( json.code === 10 ){
						for( field in json.fields ){
							$("#checkout_form *[name=" + json.fields[field] + "]").closest("div.field").find("label").addClass("checkout_field_error");
						}
					}else if( json.code === 0 ){
						window.location = "http://candyhero.com/checkout-complete";
					}
				},
				error: function(){
					//alert(2);
				}
			});
			
			return false;
		});
		
	}
	
	// Quick Add
	
	$("ul.grid_products li").live("mouseenter",function(){
		var quickAdd = $(this).find(".quickAdd");
		$(this).addClass("hovered");
	});
	
	$("ul.grid_products li").live("mouseleave",function(){
		var quickAdd = $(this).find(".quickAdd");
		$(this).removeClass("hovered");
		if( !quickAdd.hasClass("focused") && quickAdd.hasClass("editing") ){
			quickAdd.addClass("w_status");
		}
	});
	
	$(".quickAdd input.qty").live("focus",function(){
		var quickAdd = $(this).closest(".quickAdd");
		quickAdd.addClass("focused");
	}).live("blur",function(){
		var quickAdd = $(this).closest(".quickAdd");
		quickAdd.removeClass("focused");
		if( quickAdd.hasClass("editing") && !quickAdd.closest("li").hasClass("hovered") ){
			quickAdd.addClass("w_status");
		}
	});
	
	$("a.quickChange").live("click",function(){
		var quickAdd = $(this).closest(".quickAdd");
		quickAdd.removeClass("w_status");
		return false;
	});
	
	$(".quickAddButton").live("click",function(){
		
		var quickAdd = $(this).closest(".quickAdd");
		quickAdd.find(".qty").blur();
		quickAdd.find(".status").html( "Adding..." );
		quickAdd.addClass("w_status");
		
		$.ajax({
			url: "quick-add",
			data: {
				product: quickAdd.closest("li").attr("data-product-id"),
				qty: quickAdd.find(".add .qty").val(),
				basket_action_type: "add",
				json: 1
			},
			type: "post",
			dataType: "json",
			success: function( json ){
				if( json.qty > 0 ){
					quickAdd.removeClass("adding").addClass("editing");
				}
				quickAdd.find(".status").html( json.status );
				$("#basketContents").html( json.basketContents );
				quickAdd.find(".edit .qty").val( json.qty );
			},
			error: function(jqXHR, textStatus, errorThrown){
				//alert(errorThrown);
			}
		});
		
		return false;
	});
		
	$(".quickUpdateButton").live("click",function(){
		
		var quickAdd = $(this).closest(".quickAdd");
		quickAdd.find(".qty").blur();
		quickAdd.find(".status").html( "Adding..." );
		quickAdd.addClass("w_status");
		
		$.ajax({
			url: "quick-add",
			data: {
				product: quickAdd.closest("li").attr("data-product-id"),
				qty: quickAdd.find(".edit .qty").val(),
				basket_action_type: "updatesingle",
				json: 1
			},
			type: "post",
			dataType: "json",
			success: function( json ){
				quickAdd.find(".status").html( json.status );
				$("#basketContents").html( json.basketContents );
				quickAdd.find(".edit .qty").val( json.qty );
				if( json.qty == 0 ){
					quickAdd.find(".add .qty").val("1");
					quickAdd.removeClass("editing").addClass("adding");
				}
			},
			error: function(jqXHR, textStatus, errorThrown){
				//alert(errorThrown);
			}
		});
		
		return false;
	});
	
	// Search
	
	$("input[data-inline-tip]").focus(function(){
		if( $(this).hasClass("empty") ){
			$(this).removeClass("empty").val("");
		}
	}).blur(function(){
		if( $(this).val() == "" ){
			$(this).addClass("empty").val( $(this).attr("data-inline-tip") );
		}
	}).blur();
	
	var s_cache_left = "";
	var s_cache_content = "";
	
	var s_xhr = false;
	var s_timeout = false;
	
	var s_last = "";
	
	$("#searchBox").keyup(function(){
		if( $(this).val() === s_last ){ return; }else{ s_last = $(this).val(); }
		if( s_xhr !== false ){
			s_xhr.abort();
			s_xhr = false;
		}
		if( s_timeout !== false ){
			clearTimeout( s_timeout );
			s_timeout = false;
		}
		
		if( $(this).val() == "" ){
			$("#topBanner").removeClass("_searching");
			$("#leftCategories").html( s_cache_left );
			$("#content").html( s_cache_content );
			Cufon.refresh();
		}else{
			if( s_cache_left == "" ){
				s_cache_left = $("#leftCategories").html();
				s_cache_content = $("#content").html();
			}
			if( !$("#topBanner").hasClass("_searching") ){
				$("#topBanner").addClass("_searching");
				$("#leftCategories").html('<h3>Searching tags...</h3>');
				$("#content").html('<div class="content"><h1>Searching products...</h1><p>Please wait...</p></div>');
			}
			
			s_timeout = setTimeout(function(){
				s_xhr = $.ajax({
					url: "search",
					data: {
						s: $("#searchBox").val(),
						json: 1
					},
					type: "get",
					dataType: "json",
					success: function( json ){
						$("#content").html( json.content );
						$("#leftCategories").html( json.left );
						Cufon.refresh();
					},
					error: function(jqXHR, textStatus, errorThrown){
						alert(errorThrown);
					}
				});
			},
			300);
		}
	});
	
});
