
var deliveryCheck = {
	
	delayTimeout: false,
	
	checkPostcode: function() {

		var postcode = $("#delivery-check-postcode").attr("value").toString();
//		debug.log("string", postcode);
		var regexCheck = /^\d{3,4}$/;
		$("#delivery-check-postcode").removeClass('invalid');
		this.delayTimeout = true;
		
	    if (regexCheck.test(postcode))
		{
//			debug.log("Submitted! Validating form...");
			
			var _this = this;
			
			$.ajax({
				type: "POST",
				url: "/ajax/postcodecheck/",
				data: "postcode=" + postcode,
				
				// These two need to be functions so the response is deferred and not executed immediately
				success: this.processResponse,
				
				error: this.processError
			 });
	    }
		else
		{
	    	$(".delivery-check-results").empty().append("<span>Invalid postcode.</span>");
			$("#delivery-check-postcode").addClass('invalid');
	    }
		
		return false;
	},
	
	processResponse: function(data, textStatus, XMLHttpRequest) {
		
		var dataArr = jQuery.parseJSON(data);
		//debug.log("Response from server: " + textStatus);
//		debug.log(data, data.status);
		
		if (data.returnData.status == "success")
		{
//			debug.log("SUCCESS!");
			
			$(".delivery-check-results").empty().show().append("<span>We deliver to your postcode.</span>");
		}
		else
		{
			$(".delivery-check-results").empty().show().append("<span>Sorry, we do not deliver to your postcode.</span>");
		}
		
		//setTimeout( deliveryCheck.fadeOutResults, 10000 );
		deliveryCheck.fadeOutResults();
	},
	
	processError: function(XMLHttpRequest, textStatus, errorThrown) {
		// TODO: Display an error message that lets the customer know something went wrong
		// Ask them to try again, or contact the site owner if problems continue to occur
		//debug.log("Request failed: " + textStatus + " - " + errorThrown);
	},
	
	fadeOutResults: function() {
		
		debug.log( "timeout:", deliveryCheck.delayTimeout );
		if ( deliveryCheck.delayTimeout == true )
		{
			deliveryCheck.delayTimeout = false;
			setTimeout( deliveryCheck.fadeOutResults, 10000 );
		}
		else
		{
			$("#delivery-check-postcode").animate( { color: "#FFFFFF" }, 500 );
			setTimeout( function() {
					$("#delivery-check-postcode").val('').animate( {color: "#000000" }, 50 );
					//$("#delivery-check-postcode").focus();
				}, 700 );
			
			$(".delivery-check-results").fadeOut( 500 );
			setTimeout ( function() {
					$(".delivery-check-results").empty().show();
				}, 700 );
		}
	},
	
	connectEvents: function() {
		
		$("#delivery-check-form").submit( function( e ) {
			
			e.preventDefault();
			deliveryCheck.checkPostcode();
		});
	},
	
	init: function() {
		
		this.connectEvents();
	}
};

