﻿/* Webfusion Store Front End Logic */


Store = {};

(function($) {

	$.extend(Store, {
		basket: null,

		renderBasket: function() {
			if (Store.basket.TotalQuantity > 0)
				$(".basket").html("<a href='/basket.aspx'>Basket</a> - " + Store.basket.TotalQuantity + " Item(s) | £" + $.formatNumber(Store.basket.TotalPriceIncTax, 2) + "");
			else
				$(".basket").html("Your basket is empty.");
		},

		getBasket: function() {

			// Call back to the server
			$.call({
				url: "/WebServices/Low/FusionWebService.asmx/Invoke",
				data: { entity: "StoreBasket", method: "GetBasket", parameters: {} },
				success: function(xhr) {
					Store.basket = xhr.d;
					Store.renderBasket();
				}
			});
		},

		insertBasketProduct: function(productId) {

			// Get and check the quantity
			var q_ctrl = document.getElementById("q_" + productId);
			var quantity = q_ctrl.selectedIndex + 1;
			if (isNaN(quantity) || quantity <= 0) {
				alert("Please enter a valid quantity.");
				return;
			}

			// Get and check the attributes
			var attributes = [];
			var productAttributeValues = "";
			var cancel = false;
			$(".a_" + productId).each(function(index, element) {
				if (cancel) return;
				if (element.value == '') {
					alert("There are options/variations you need to choose from before this product can be added to the order.");
					cancel = true;
					return;
				}
				var value = parseInt(element.value);
				if (!isNaN(value)) {
					productAttributeValues += value + ",";
				}
			});
			if (cancel)
				return;

			// Call back to the server
			$.call({
				url: "/WebServices/Low/FusionWebService.asmx/Invoke",
				data: { entity: "StoreBasketProduct", method: "Insert", parameters:
					{
						BasketId: Store.basket ? Store.basket.Id : 0,
						ProductId: productId,
						Quantity: quantity,
						ProductAttributeValues: productAttributeValues
					}
				},
				success: function(xhr) {
					//Store.getBasket(); // This should be returned by the insert method??
					//$(".checkoutconfirm").show();
					//$('html, body').animate({scrollTop: 1}, 500);
					$.redirectTo('/basket.aspx#anchor');
				}
			});
		}
	});
	$(".checkoutconfirm").hide();

})(jQuery);



Blog = {};

(function($) {

	$.extend(Blog, {
		// Set this to the initial number of entries on the page
		numEntries: 5,
		// Set this to the number of entries added per page
		entriesPerPage: 5,

		morePosts: function() {
			var self = this;
			$.call({
				url: "/WebServices/Low/FusionWebService.asmx/Invoke",
				data: { entity: "BlogEntry", method: "PresentNextPage", parameters:
					{
						month: 0,
						year: 0,
						skip: self.numEntries
					}
				},
				success: function(xhr) {
					if (!xhr.d || !xhr.d.More) {
						$("#morePostsMarker").hide();
					}
					if (xhr.d) {
						$("<div>" + xhr.d.Content + "</div>").hide().insertBefore("#morePostsMarker").slideDown('slow');
					}
					self.numEntries += self.entriesPerPage;
				}
			});
		}

	});

})(jQuery);