var a1 = {};

a1.catalogue = {};

a1.getContactURL = function() {
	return $('#sitenav li').find(":contains('Contact')").attr('href');
}

/** 
 * When stock changes i.e. gets loaded
 * @param {Object} aListner
 */
a1.catalogue.addStockChangeListner = function(aListner) {
	ak.listners.add('_stockChangeListenrs', aListner);
}

a1.catalogue._stockChanged = function(prodObjectId) {
	ak.listners.fire('_stockChangeListenrs', prodObjectId);
}

/**
 * Listners for basket change i.e. when a product is added or removed from the basket
 * @param {Object} aListner
 */
a1.catalogue.addBasketChangeListner = function(aListner){
	ak.listners.add('_basketChangeListenrs', aListner);
}

a1.catalogue._basketChanged = function(prodObjectId) {
	ak.listners.fire('_basketChangeListenrs', prodObjectId);
}


a1.catalogue.setProductStock = function (productStock) {
	ak.logger.debug(['Applying product stock', productStock]);
	//add sold to title if stock discontinued
	if (productStock.stock_discontinued) {
		var prodHeading = $('#product_detail h1')[0];
		if (!prodHeading.innerHTML.match(/sold/)) {
			prodHeading.innerHTML = prodHeading.innerHTML + '&nbsp;<span class="sold">Sold</span>';
		}
	}
	
	//show stock details
	var stockH = $('#stock_h')[0];
	var stockM = $('#stock_m')[0];
	var stockMsg = '';
	if (!productStock.stock_discontinued) {
		if ( productStock.stock_type == 'Regular' || (productStock.investment === 1) ) {
			stockH.innerHTML = 'In Stock';
			stockM.innerHTML = stockMsg ? stockMsg : 
				'This product will be despatched within 5 working days after payment is cleared.';
			return;
		} else if ( productStock.stock_level == null || productStock.stock_level == ''  ) {
			stockH.innerHTML = '';
			stockM.innerHTML = stockMsg ? stockMsg : 
				'';
			return;
		} else if ( productStock.stock_level > 0 ) {
			stockH.innerHTML = 'In Stock';
			stockM.innerHTML = stockMsg ? stockMsg : 
				'Our records indicate that this item is currently in stock, however it may have been sold in store recently therefore we do not guarantee that it will be available for you. If on receiving the payment the item is no longer in stock you will be eligible for a full refund. You may call us to check the availability before making the payment. This product will be despatched within 3 working day after payment is cleared.';
			return;
		}
	}
	stockH.innerHTML = 'SOLD';
	stockM.innerHTML = '';
	$('#add_to_basket_opt').hide();
}

a1.catalogue.loadProductStock = function (prodObjectId) {
	if (!$('.product #buy').length) { //not on product page
		ak.logger.debug(['loadProductStock:', 'not on product page']);
		return;
	}
	
	function _ajaxLoadProductStockReturn(data) {
		eval('var data = ' + data);
		var productStock = data;
		if (typeof productStock != 'object') {
			ak.logger.error(['Unknown stock format', data]);
			return;
		} else {
			ak.logger.debug(['loadProductStock:', 'stock loaded', data]);
			if (!a1.catalogue.stock) {
				a1.catalogue.stock = {};
			}
			a1.catalogue.stock[prodObjectId] = productStock;
			a1.catalogue.setProductStock(productStock);
			a1.catalogue._stockChanged(prodObjectId);
		}
	}
	
	if (a1.catalogue.stock && a1.catalogue.stock[prodObjectId]) {
		ak.logger.debug(['loadProductStock:', 'stock already loaded']);
		_ajaxLoadProductStockReturn(a1.catalogue.stock[prodObjectId]);
		return;
	}
	ak.logger.debug(['loadProductStock:', 'loading...']);
	$.ajax({
		type:'GET',
		success:_ajaxLoadProductStockReturn,
		url:a1.servicesURL + '?site=a1jewellers&name=catalogue.productStock&prodObjectId=' + prodObjectId,
		dataType:'text',
		error: function() { ak.logger.error('there was an error loading the stock'); }
	});
}

a1.catalogue.setProductBasketOptions = function ( prodInBasket, productStock ) {	
	var addOpt = $('#add_to_basket_opt');
	var viewOpt = $('#view_basket_opt');
	var checkoutOpt = $('#checkout_opt');
	var removeOpt = $('#remove_from_basket_opt');
	ak.logger.debug(['Setting product options', prodInBasket, productStock]);
	if (productStock.stock_discontinued&& !(a1.catalogue.stock[prodObjectId].investment === 1)) {
		ak.logger.debug(['Stock discontinued']);
		addOpt.hide();
		viewOpt.hide();
		checkoutOpt.hide();
		removeOpt.hide;
	} else if (prodInBasket) {
		addOpt.hide();
		viewOpt.show();
		checkoutOpt.show();
		removeOpt.show();
	} else {
		addOpt.show();
		viewOpt.hide();
		checkoutOpt.hide();
		removeOpt.hide();
	}		
}

a1.catalogue.loadProductBasketOptions = function (prodObjectId) {	
	if (!$('#product #buy').length) { //not on product page
		ak.logger.debug(['loadProductBasketOptions', 'not on product page']);
		return;
	}
	if ((!a1.catalogue.stock || !a1.catalogue.stock[prodObjectId])) {  //except bullions
		ak.logger.debug(['loadProductBasketOptions', 'Stock not loaded yet']);
		return a1.catalogue.loadProductStock(a1.catalogue.stock);
	}
	
	function _ajaxLoadProductBasketOptionsReturn(data) {
		try {
			ak.logger.debug(['loadProductBasketOptions', 'basket loaded', 'data']);
			var inBasket = parseInt(data);
		} catch (ex) {
			ak.logger.error(['Unable to check if product is in basket', data]);
			return;
		}
		a1.catalogue.setProductBasketOptions(inBasket, a1.catalogue.stock[prodObjectId])
	}
	
	if (a1.catalogue.basket && a1.catalogue.basket.items) {
		ak.logger.debug(['loadProductBasketOptions', 'Basket already loaded']);
		a1.catalogue.setProductBasketOptions(
				a1.catalogue.basket.items[prodObjectId], 
				a1.catalogue.stock[prodObjectId]
			);
	} else {
		ak.logger.debug(['loadProductBasketOptions', 'loading...']);
		ak.logger.info(a1.servicesURL + '?site=a1jewellers&name=catalogue.inBasket&prodObjectId=' + prodObjectId + '&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp());
		$.ajax({
				type:'GET',
				success:_ajaxLoadProductBasketOptionsReturn,
				url:a1.servicesURL + '?site=a1jewellers&name=catalogue.inBasket&prodObjectId=' + prodObjectId + '&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp(),
				dataType:'text',
				error: function() { ak.logger.error('there was an error loading item in basket status'); }
			});
	}
}

a1.catalogue.addProductToBasket = function(prodObjectId) {
	function _ajaxAddProductToBasketReturn(data) {
		if (data.trim().replace(/<[^>]+>/, '') == '1') {
			a1.catalogue.cart = null;
			a1.catalogue._basketChanged(prodObjectId);
		} else {
			ak.logger.error(['Failed to add product to cart', data]);
		}
	}
	ak.logger.info(a1.servicesURL + '?site=a1jewellers&name=catalogue.add2cart&prodObjectId=' + prodObjectId + '&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp());
	$.ajax({
			type:'GET',
			success:_ajaxAddProductToBasketReturn,
			url:a1.servicesURL + '?site=a1jewellers&name=catalogue.add2cart&prodObjectId=' + prodObjectId + '&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp(),
			dataType:'text',
			error: function() { ak.logger.error('there was an error adding object to basket'); }
		});
}

a1.catalogue.removeProductFromBasket = function(prodObjectId) {
	function _ajaxRemoveProductFromBasketReturn(data) {
		if (data.trim() == '1') {
			a1.catalogue.cart = null;
			a1.catalogue._basketChanged(prodObjectId);
		} else {
			ak.logger.error(['Failed to remove product from cart', data]);
		}
	}
	ak.logger.info(a1.servicesURL + '?site=a1jewellers&name=catalogue.removeFromCart&prodObjectId=' + prodObjectId + '&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp());
	$.ajax({
			type:'GET',
			success:_ajaxRemoveProductFromBasketReturn,
			url:a1.servicesURL + '?site=a1jewellers&name=catalogue.removeFromCart&prodObjectId=' + prodObjectId + '&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp(),
			dataType:'text',
			error: function() { ak.logger.error('there was an error removing object from cart'); }
		});
}

a1.catalogue.hasMiniBasket = function(){
	return $('#mini_basket').length != 0;
}

a1.catalogue.hasMainBasket = function(){
	return $('#basket').length != 0;
}

a1.catalogue.hasBasket = function () {
	return $('#mcItemsContainer').length || $('#b_items').length;
}

a1.catalogue.loadMiniBasketItems = function() {
	
	if (!a1.catalogue.basketWrap) {
		a1.catalogue.basketWrap = $('#mini_basket').show();
		if (a1.catalogue.basketWrap.length) {
			a1.catalogue.basketWrap.html('<p><span class="items">Shopping bag:<br /><b>0 items</b></span><span class="total">&pound;0.00</span></p>').click(function(){ document.location.href = 'http://www.a1jewellers.com/products/basket/'; });
		}
	}

	if (!a1.catalogue.basketWrap.length) {
		return;
	}

	function _ajaxLoadMiniBasketItemsReturn(data) {
		eval('var data = ' + data);
		if (typeof data == 'object' && data.items && data.items.length) {
			$('.items b', a1.catalogue.basketWrap).html(data.items.length + ' item' + (data.items.length > 1 ? 's' : ''));
			$('.total', a1.catalogue.basketWrap).html('&pound;'+data.totals.amount_exec_deliv);
			if (!a1.catalogue.cart) {
				a1.catalogue.cart = data;
			}
		} else {
			$('.items b', a1.catalogue.basketWrap).html('0 items');
			$('.total', a1.catalogue.basketWrap).html('&pound;0.00');
			a1.catalogue.cart = null;
		}
		return;
		$('#mcItemsContainer .loading').css('display', 'none');
		$('#mcItemsContainer').css('background-color', '#FFE2C5');
		var noItemsMsg = $('#mcItemsContainer .no-items');
		if (typeof data == 'object' ) {
			if (data.items && data.items.length) {
				var mcItems = $('#mcItemsContainer .items');
				var mcTotals = $('#mc_totals');
				var basketHTML = '';
				
				//items
				for (var i = 0; i < data.items.length; i++) {
					basketHTML += '<div class="item">';
					basketHTML += '<input type="text" name="quantity[' + data.items[i].cart_item_id + ']" value="' + 
							data.items[i].prod_quantity + '" '+ (data.frozen ? 'disabled style="background:#ddd;"' : '') +'/>';
					basketHTML += '<p><a class="mcItemName" href="' + ak.siteHomeHREF + 'products/search.php?q=A1' + data.items[i].prod_id + '">' + data.items[i].prod_name + ' ' + ' (A1' + data.items[i].prod_id + '):</a>&nbsp;<span class="mcItemDiscription">' + data.items[i].prod_description.replace(/<[^>]+>/g, '') + '</span></p>';
					if (!data.frozen) {
						basketHTML += '<input name="A1' + data.items[i].prod_id + '" type="image" ' +
						'onclick="a1.catalogue.removeProductFromBasket(' +
						data.items[i].object_id +
						'); return false;" ' +
						'src="' +
						ak.graphicsPath +
						'collections/images/a1_general/remove.png" alt="Remove this product from basket" ' +
						'title="Remove this product from basket"/>';
					}
					basketHTML += '</div>';
				}
				mcItems.html(basketHTML);
				
				//totals
				mcTotals.html('<span class="mcHeadings">Total</span>' +
				'<span class="mcTotalPriceIncVAT">&pound;' +
				data.totals.amount_exec_deliv +
				'</span>');
				
				noItemsMsg.css('display', 'none');
				mcItems.css('display', '');
				mcTotals.css('display', '');
				$('#basket_opts').css('display', '');
				if (data.frozen) {
					$('#basket_opts').html('<p>Above items are being processed<br/>You may <a href="JavaScript:' +
							'document.location.href=document.location.href + ' + 
							'(document.location.search.match(/\\?/) ? \'&\' : \'?\') + ' + 
							'\'srset=1\'"><b>start another order</b></a></p>');
				}
				if (!a1.catalogue.cart) {
					a1.catalogue.cart = data;
				}
			} else {
				$('#basket_opts').css('display', 'none');
				$('#mcItemsContainer .items').css('display', 'none');
				$('#mc_totals').css('display', 'none');
				noItemsMsg.css('display', '');
				noItemsMsg.html('<p>There are no items in your basket!</p>');
				a1.catalogue.cart = null;
			}
		} else {
			$('#basket_opts').css('display', 'none');
			$('#mcItemsContainer .items').css('display', 'none');
			$('#mc_totals').css('display', 'none');
			noItemsMsg.css('display', '');
			noItemsMsg.html('<p>There was an error loading your shopping basket! Please <a href="/contact/">contact us</a> or try again later</p>');
			a1.catalogue.cart = null;
		}
	}
	
	if (a1.catalogue.cart) {
		_ajaxLoadMiniBasketItemsReturn(a1.catalogue.cart);
	} else {
		$.ajax({
			type: 'GET',
			success: _ajaxLoadMiniBasketItemsReturn,
			url: a1.servicesURL + '?site=a1jewellers&name=catalogue.getBasketItems&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp(),
			dataType: 'text',
			error: function(){
				ak.logger.error('there was an error loading mini basket items');
			}
		});
	}
}

a1.catalogue.updateBasketItems = function(aForm) {
	if (!a1.catalogue.hasBasket()) {
		return;
	}	
	
	function _ajaxUpdateBasketItemsReturn() {
		a1.catalogue.cart = null; //clear previous data
		//if on product page then use product id
		var prodOpt = $('#add_to_basket_opt a');
		var bits = prodOpt.length ? prodOpt[0].href.match(/\(([0-9]+)\)/) : [];
		if (bits.length == 2) {
			a1.catalogue._basketChanged(bits[1]);
		} else {
			a1.catalogue._basketChanged();
		}
	}
	
	var basketInputs = aForm.elements;
	var postData = {};
	
	for (var i=0; i<basketInputs.length; i++) {
		if (basketInputs[i].type == 'text') {
			postData[basketInputs[i].name] = basketInputs[i].value; 
		}
	}
	
	$.ajax({
			type:'POST',
			success:_ajaxUpdateBasketItemsReturn,
			url:a1.servicesURL + '?site=a1jewellers&name=catalogue.updateCart&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp(),
			data:postData,
			dataType:'text',
			error: function() { ak.logger.error('there was an error updating mini basket items'); }
		});
}

a1.catalogue.loadBasketItems = function() {
	if (!a1.catalogue.hasMainBasket()) {
		return;
	}
	
	function _ajaxLoadBasketItemsReturn(data) {
		eval( 'var data = ' + data );
		var loadingEl = $('#b_items .loading');
		loadingEl.css('display', 'none');
		loadingEl.css('background-color', '#FFE2C5');
		var noItemsMsg = $('#b_items .no-items');
		if (typeof data == 'object' ) {
			if (data.items && data.items.length) {
				var mcItems = $('#b_items table')[0];
				var basketHTML = '';
				var aRow = null;
				var aCell = null;
				
				//delete existing items
				$('#b_items tr.item').remove();
				
				//items
				for (var i = 0; i < data.items.length; i++) {
					aRow = mcItems.insertRow(mcItems.rows.length); //add a row to table
					aRow.className = 'item';
					//quantity					
					aCell = aRow.insertCell(0);
					aCell.innerHTML = '<input type="text" name="quantity[' + data.items[i].cart_item_id + ']" value="' + 
							data.items[i].prod_quantity + '"  ' + 
							(data.frozen ? 'disabled style="background:#ddd;"' : '') +'/>';
					
					//description
					aCell = aRow.insertCell(1);
					aCell.innerHTML = data.items[i].html;
					
					//stock hint
					aCell = aRow.insertCell(2);
					basketHTML += '<td>'+data.items[i].stock_hint+'</td>';
					
					//price
					aCell = aRow.insertCell(3);
					aCell.innerHTML = '&pound;'+data.items[i].prod_price;
					
					//total price
					aCell = aRow.insertCell(4);
					aCell.innerHTML = '&pound;'+(data.items[i].prod_quantity * data.items[i].prod_price);
					if (!data.frozen) {
						//remove button
						aCell = aRow.insertCell(5);
						aCell.innerHTML = '<input name="A1' + data.items[i].prod_id + '" type="image" ' +
						'onclick="a1.catalogue.removeProductFromBasket(' +
						data.items[i].object_id +
						'); return false;" ' +
						'src="' +
						ak.graphicsPath +
						'collections/images/a1_general/remove.png" alt="Remove this product from basket" ' +
						'title="Remove this product from basket"/>';
					}
				}
				
				//totals
				$('.sbDeliveryCharge').html('&pound;' + data.totals.delivery_charge.numFormat(2));
				$('.sbTotalPriceIncVAT').html('&pound;' + data.totals.amount_inc_vat.numFormat(2));
				$('.sbVAT').html('&pound;' + data.totals.amount_vat.numFormat(2));
				
				
				noItemsMsg.css('display', 'none');
				$('#b_totals').css('display', '');
				$('#b_opts').css('display', '').appendTo($('#b_opts').parent().parent());

				if (data.frozen) {
					$('#b_opts').html('<p>Above items are being processed<br/>You may <a href="JavaScript:' +
							'document.location.href=document.location.href + ' + 
							'(document.location.search.match(/\\?/) ? \'&\' : \'?\') + ' + 
							'\'srset=1\'"><b>start another order</b></a></p>');
				}
				
				a1.catalogue.cart = data;
			} else {
				$('#b_items tr.item').remove();
				$('#b_totals').remove();
				$('#b_opts').remove();
				$('#b_items .items').css('display', 'none');
				$('#mc_totals').css('display', 'none');
				noItemsMsg.css('display', '');
				noItemsMsg.html('<p>There are no items in your basket!</p>');
				a1.catalogue.cart = null;
			}
		} else {
			$('#b_opts').css('display', 'none');
			$('#b_items .items').css('display', 'none');
			$('#mc_totals').css('display', 'none');
			noItemsMsg.css('display', '');
			noItemsMsg.html('<p>There was an error loading your shopping basket! Please <a href="/contact/">contact us</a> or try again later</p>');
			a1.catalogue.cart = null;
		}
	}
	
	$.ajax({
			type:'GET',
			success:_ajaxLoadBasketItemsReturn,
			url:a1.servicesURL + '?site=a1jewellers&name=catalogue.getBasketItems&getHTML=1&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp(),
			dataType:'text',
			error: function() { ak.logger.error('there was an error loading mini basket items'); }
		});
}

a1.catalogue.loadPayPalCheckout = function(data){
	
	if (data.items.length) {
		var gcHTML = '<h1>Checkout</h1><p>please click on the PayPal checkout link below to continue; You will be taken to the PayPal checkout system where you can make a secure payment for this order.</p>'; 
		if (document.location.host.match(/cms\.|\.dev/) && 1==0) { //development so use sandbox
			gcHTML += '<form method="POST" action="https://www.sandbox.paypal.com/uk/cgi-bin/webscr">';
		} else {
			gcHTML += '<form method="POST" action="https://www.paypal.com/cgi-bin/webscr">';
		}
				
		for (var i=0; i<data.items.length; i++) {
			gcHTML += '<input type="hidden" name="item_name_'+(i+1)+'" value="'+data.items[i].prod_name+' A1'+data.items[i].prod_id+'">';
			gcHTML += '<input type="hidden" name="item_price_'+(i+1)+'" value="'+(parseFloat(data.items[i].prod_price) / (parseFloat(data.tax_rate) + 1))+'">';			
		}
		gcHTML += '<input type="hidden" name="cmd" value="_cart">';
		gcHTML += '<input type="hidden" name="upload" value="1">'; 
		gcHTML += '<input type="hidden" name="business" value="amanank@yahoo.com">';
		
		gcHTML += '<div class="gc-image"><input type="image" name="PayPal Checkout" alt="Fast checkout through PayPal" src="http://images.paypal.com/images/x-click-but5.gif" height="52" width="150"/></div>';
		gcHTML += '</form>';
	
		$('#g_checkout').html(gcHTML);
	} else {
		$('#g_checkout').html('<h1>Checkout</h1><p>There are no items in your basket; Please add some items to your basket before begining the checkout process.</p>');
	}
}

a1.catalogue.loadGoogleCheckout = function(){
	function _ajaxLoadGoogleCheckoutReturn(data) {
		a1.catalogue.loadPayPalCheckout(data);
		return;
		if (data.items.length) {
			var gcHTML = '<h1>Checkout</h1><p>Please click on the google checkout link below to continue; You will be taken to the google checkout system where you can make a secure payment for this order.</p>'; 
			if (document.location.host.match(/cms\.|\.dev/)) { //development so use sandbox
				gcHTML += '<form method="POST" action="https://sandbox.google.com/checkout/cws/v2/Merchant/' + data.sandbox_merchant_id + '/checkoutForm" accept-charset="utf-8">';
			} else {
				gcHTML += '<form method="POST" action="https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/' + data.merchant_id + '" accept-charset="utf-8">';
			}
					
			for (var i=0; i<data.items.length; i++) {
				gcHTML += '<input type="hidden" name="item_merchant_id_'+(i+1)+'" value="A1'+data.items[i].prod_id+'">';
				gcHTML += '<input type="hidden" name="item_name_'+(i+1)+'" value="'+data.items[i].prod_name+' A1'+data.items[i].prod_id+'">';
				gcHTML += '<input type="hidden" name="item_description_'+(i+1)+'" value="'+data.items[i].prod_description+'">';
				gcHTML += '<input type="hidden" name="item_price_'+(i+1)+'" value="'+(parseFloat(data.items[i].prod_price) / (parseFloat(data.tax_rate) + 1))+'">';
				gcHTML += '<input type="hidden" name="item_quantity_'+(i+1)+'" value="'+data.items[i].prod_quantity+'">';
				gcHTML += '<input type="hidden" name="item_currency_'+(i+1)+'" value="GBP">';
			}
			gcHTML += '<input type="hidden" name="checkout-flow-support.merchant-checkout-flow-support.edit-cart-url" value="' + document.location.href.replace(/checkout.*$/, '') + '"/>'; 
			gcHTML += '<input type="hidden" name="checkout-flow-support.merchant-checkout-flow-support.tax-tables.default-tax-table.tax-rules.default-tax-rule-1.tax-area.world-area"/>';
			gcHTML += '<input type="hidden" name="checkout-flow-support.merchant-checkout-flow-support.tax-tables.default-tax-table.tax-rules.default-tax-rule-1.rate" value="'+data.tax_rate+'"/>'; 
			gcHTML += '<input type="hidden" name="checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.name" value="Royal Mail Registered UK Only"/>';
			gcHTML += '<input type="hidden" name="checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price" value="'+data.totals.delivery_charge+'"/>';
			gcHTML += '<input type="hidden" name="checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price.currency" value="GBP"/>';
			
			gcHTML += '<div class="gc-image"><input type="image" name="Google Checkout" alt="Fast checkout through Google" src="http://checkout.google.com/buttons/checkout.gif?merchant_id='+data.merchant_id+'&w=180&h=46&style=white&variant=text&loc=en_US" height="46" width="180"/></div>';
			gcHTML += '</form>';

			$('#g_checkout').html(gcHTML);
		} else {
			$('#g_checkout').html('<h1>Checkout</h1><p>There are no items in your basket; Please add some items to your basket before begining the checkout process.</p>');
		}
	}
	
	if (a1.catalogue.cart) {
		_ajaxLoadGoogleCheckoutReturn(a1.catalogue.cart);
	} else {
		$.ajax({
			type: 'GET',
			success: _ajaxLoadGoogleCheckoutReturn,
			url: a1.servicesURL + '?site=a1jewellers&name=catalogue.getBasketItems&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp(),
			dataType: 'json',
			error: function(){
				ak.logger.error('there was an error loading mini basket items');
			}
		});
	}	
}

a1.catalogue.loadSecureTradingCheckout = function(){
//	$('#g_checkout').html('<h1>Checkout</h1><p>Our online payment facility is currently unavailable; please call us or try again in a few days...</p>');
//	return;
	
	function _ajaxLoadCheckoutReturn(data) {
		eval('var data = '+data);
		if (data.items.length) {
			var gaVars = {
				utmac:pageTracker._getAccount(),
				utmn:Math.round(Math.random() * 1000000000), //increment for each image
				utmt: {
					utmtid: data.sc.order_ref,
					tran: {
						utmtto: data.totals.amount_inc_vat,
						utmtsp: data.totals.delivery_charge,
						utmttx: data.totals.amount_vat
					},
					item: {  
						utmipc:'A1' + data.items[0].prod_id,
						utmipn: data.items[0].prod_name,
						utmiva:'default',
						utmipr:data.items[0].prod_price,
						utmiqt:data.items[0].prod_quantity
					}

				},
				utmcc: '__utma%3D' + escape(ak.getCookieVal('__utma')) + '%3B%2B__utmz%3D' + escape(ak.getCookieVal('__utmz')) + '%3B'
			};
			//console.debug(gaVars);
			
			var gcHTML = '<h1>Checkout</h1><p>Please click on the Secure Trading link below to make a secure payment for your order. Delivery will be made to your billing address.</p>'; 
			
			gcHTML += '<form method="POST" action="https://securetrading.net/authorize/form.cgi" onsubmit="return a1.catalogue.freezeCart(this);">';
			gcHTML += '<input type="hidden" name="currency" value="gbp">';
			gcHTML += '<input type="hidden" name="orderref" value="'+data.sc.order_ref+'">';
			gcHTML += '<input type="hidden" name="orderinfo" value="'+data.sc.order_info+'">';
			gcHTML += '<input type="hidden" name="requiredfields" value="name,email,address,town,postcode,country,email,telephone">';
			gcHTML += '<input type="hidden" name="merchant" value="'+data.sc.merchant+'">';
			gcHTML += '<input type="hidden" name="merchantemail" value="sc.checkout@a1jewellers.com">';
			gcHTML += '<input type="hidden" name="amount" value="'+data.sc.b_amount+'">';
			gcHTML += '<input type="hidden" name="st_sitesecurity" value="'+data.sc.st_sitesecurity+'"/>';
			gcHTML += '<div class="gc-image"><input type="image" title="Continue to payment" alt="Continue to payment" src="https://securetrading.net/images/st_merchant_layered_web.gif" height="87" width="150"/></div>';
			gcHTML += '<div id="c_ldr" class="gc-image" style="display:none;"><img src="'+ak.graphicsPath+'collections/images/a1_general/loading.gif" /><p>Processing Please Wait...</p></div>';

			var gaURL = 'http://www.google-analytics.com/__utm.gif?utmwv=5.1.4&utms=1' 
				+ '&utmhn=www.a1jewellers.com&utmcs=ISO-8859-1&utmul=en-gb&utmdt=WorldPay' 
				+ '&utmp=worldPay_orderConfirm.html';

			gcHTML += '<input type="hidden" name="ga_tag" value="'+gaURL+'&utmn='
					+ gaVars.utmn+'&utmac='+gaVars.utmac+'&utmcc='+gaVars.utmcc+'&utmu=D~"/>';
			gcHTML += '<input type="hidden" name="ga_trans" value="'+gaURL+'&utmn='
					+ gaVars.utmn+'&utmac='+gaVars.utmac+'&utmcc='+gaVars.utmcc
					+ '&utmt=tran&utmtid='+gaVars.utmt.utmtid+'&utmtto='+gaVars.utmt.tran.utmtto
					+ '&utmtsp='+gaVars.utmt.tran.utmtsp+'&utmttx='+gaVars.utmt.tran.utmttx+'&utmu=D~"/>';
			for (var i=0; i<data.items.length; i++) {
				gcHTML += '<input type="hidden" name="ga_item'+i+'" value="'+gaURL+'&utmn='
					+ gaVars.utmn+'&utmac='+gaVars.utmac+'&utmcc='+gaVars.utmcc
					+ '&utmt=item&utmtid='+gaVars.utmt.utmtid+'&utmtto='+gaVars.utmt.tran.utmtto
					+ '&utmtsp='+gaVars.utmt.tran.utmtsp+'&utmttx='+gaVars.utmt.tran.utmttx
					+ '&utmipn='+data.items[i].prod_name+'&utmu=D~"/>';
	
			}
			
			gcHTML += '</form>';

			$('#g_checkout').html(gcHTML);
		} else {
			$('#g_checkout').html('<h1>Checkout</h1><p>There are no items in your basket; Please add some items to your basket before begining the checkout process.</p>');
		}
	}
	
	if (a1.catalogue.cart) {
		_ajaxLoadCheckoutReturn(a1.catalogue.cart);
	} else {
		$.ajax({
			type: 'GET',
			success: _ajaxLoadCheckoutReturn,
			url: a1.servicesURL + '?site=a1jewellers&name=catalogue.getBasketItems&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp(),
			dataType: 'text',
			error: function(){
				ak.logger.error('there was an error loading mini basket items');
			}
		});
	}	
}  

a1.catalogue.freezeCart = function (cForm) {
	function _showError() {
		$('#c_ldr p').html('There was an error processing your order. Please try again later');
		$('#c_ldr IMG').css({'display':'none'});
	}
	
	
	function _ajaxReturn(data) {
		if (data == 1) {
			this.submit();
		} else {
			_showError();
		}
	}
	
	$('#c_ldr').css({'display':'block'});
	$.ajax({
			type: 'GET',
			success: _ajaxReturn,
			url: a1.servicesURL + '?site=a1jewellers&name=catalogue.freezeCart&u_sid=' + ak.sessionId + '&t=' + ak.utils.unixTimeStamp(),
			dataType: 'text',
			context: cForm,
			error: function(){
				ak.logger.error('there was an error freezing cart');
				_showError();
			}
		});
	return false;
}

