var ShopProducts = {	

	list: new Object(),	
	currency_rate: 1,
	currency_symbol: '$',
	currency_code: '',
	
	setCurrency: function(currency_rate, currency_symbol, currency_code) {
		ShopProducts.currency_rate = currency_rate;
		ShopProducts.currency_symbol = currency_symbol;
		ShopProducts.currency_code = currency_code;
	},
	
	addVariant: function(product_id, size, colour, quantity, price, old_price) {
		if (!ShopProducts.list[product_id]) {
			ShopProducts.list[product_id] = new Array();
		}
		ShopProducts.list[product_id].push({size: size, colour: colour, quantity: quantity, price: price, old_price: old_price});	
		ShopProducts.list[product_id] = ShopProducts.list[product_id];		
	},
	
	updateSelect: function(product_id, select_to_change, select_for_comparison_index, comparison_index, index_name) {
	
		var sel = $(select_to_change);
		if (sel.tagName.toLowerCase() == 'select') {
			// Get the current value of the select
			var cur = sel.options[sel.options.selectedIndex].value;

			// Clear the select index
			sel.options.length = 0;

			// Add a lead item
			sel.options[0] = new Option('Please choose...', '');

			// Have we got a value to change it to?
			var sel_source = $(select_for_comparison_index);
			if (sel_source.options.selectedIndex == 0) {
				// List all options available here
				var listed = new Array();
				for (var i = 0, j = 1; i < ShopProducts.list[product_id].length; i++) {
					for (var k = 0, found = false; k < listed.length; k++) {
						if (listed[k] == ShopProducts.list[product_id][i][index_name]) {
							found = true;
						}
					}
					if (!found) {
						listed.push(ShopProducts.list[product_id][i][index_name]);
						sel.options[j] = new Option(ShopProducts.list[product_id][i][index_name], ShopProducts.list[product_id][i][index_name]);
						if (ShopProducts.list[product_id][i][index_name] == cur) {
							sel.options.selectedIndex = j;
						}
						j++;
					}
				}
			}
			else {
				var comparison_value = sel_source.options[sel_source.options.selectedIndex].value;

				// List filtered options
				for (var i = 0, j = 1; i < ShopProducts.list[product_id].length; i++) {
					if (ShopProducts.list[product_id][i][comparison_index] == comparison_value) {
						// Add this to the list
						sel.options[j] = new Option(ShopProducts.list[product_id][i][index_name], ShopProducts.list[product_id][i][index_name]);
						if (ShopProducts.list[product_id][i][index_name] == cur) {
							sel.options.selectedIndex = j;
						}
						j++;
					}
				}
			}
		}

		ShopProducts.checkStock(product_id);
	},
	
	checkStock: function(product_id) {

		var colour_selected = true;
		if ($('colour_'+product_id).tagName.toLowerCase() == 'select') {
			if ($('colour_'+product_id).options.selectedIndex == 0) {
				colour_selected = false;
			}
			var colour = $('colour_'+product_id).options[$('colour_'+product_id).options.selectedIndex].value;
		}
		else {
			var colour = $('colour_'+product_id).value;
		}

		var size_selected = true;
		if ($('size_'+product_id).tagName.toLowerCase() == 'select') {
			if ($('size_'+product_id).options.selectedIndex == 0) {
				size_selected = false;
			}
			var size = $('size_'+product_id).options[$('size_'+product_id).options.selectedIndex].value;
		}
		else {
			var size = $('size_'+product_id).value;
		}

		if (colour_selected && size_selected) {
			for (var i = 0; i < ShopProducts.list[product_id].length; i++) {
				if (ShopProducts.list[product_id][i].size == size && ShopProducts.list[product_id][i].colour == colour) {
					// In stock?
					if (ShopProducts.list[product_id][i].quantity < 1) {
						$('price_'+product_id).innerHTML = '<em>Sorry, this product is out of stock.</em>';
						Element.hide('add_to_basket_'+product_id);
						if ($('add_to_wishlist_'+product_id)) {
							Element.hide('add_to_wishlist_'+product_id);
						}
					}
					else {
						var calc_price = ShopProducts.list[product_id][i].price * ShopProducts.currency_rate;
						var calc_old_price = ShopProducts.list[product_id][i].old_price * ShopProducts.currency_rate;
						if (parseFloat(ShopProducts.list[product_id][i].old_price) > parseFloat(ShopProducts.list[product_id][i].price)) {
							var html = ShopProducts.currency_symbol + calc_price.toFixed(2) + ' ';
							if (ShopProducts.currency_code != "INT") {
								html += ShopProducts.currency_code;
							} 
							html += '<br /><strike>(was ' + ShopProducts.currency_symbol + ShopProducts.list[product_id][i].old_price + ' ';
							if (ShopProducts.currency_code != "INT") {
								html += ShopProducts.currency_code;
							}
							html += ')</strike>';						
							$('price_'+product_id).innerHTML = html;
						} else {						
							var html = ShopProducts.currency_symbol + calc_price.toFixed(2) + ' ';
							if (ShopProducts.currency_code != "INT") {
								html += ShopProducts.currency_code;
							}
							$('price_'+product_id).innerHTML = html;
						}
						Element.show('add_to_basket_'+product_id);
						if ($('add_to_wishlist_'+product_id)) {
							Element.show('add_to_wishlist_'+product_id);
						}
					}
				}
			}
		}
		else {
			$('price_'+product_id).innerHTML = '<em>Please choose a product type.</em>';
			Element.hide('add_to_basket_'+product_id);
			if ($('add_to_wishlist_'+product_id)) {
				Element.hide('add_to_wishlist_'+product_id);
			}
		}
	},
	
	checkOrder: function(product_id) {
		
		// Check that we have size, colour, and quantity
		var colour_selected = true;
		if ($('colour_'+product_id).tagName.toLowerCase() == 'select') {
			if ($('colour_'+product_id).options.selectedIndex == 0) {
				colour_selected = false;

				alert('Please select a product variant.');
				return false;
			}
			var colour = $('colour_'+product_id).options[$('colour_'+product_id).options.selectedIndex].value;
		}
		else {
			var colour = $('colour_'+product_id).value;
		}

		var size_selected = true;
		if ($('size_'+product_id).tagName.toLowerCase() == 'select') {
			if ($('size_'+product_id).options.selectedIndex == 0) {
				size_selected = false;

				alert('Please select a product variant.');
				return false;
			}
			var size = $('size_'+product_id).options[$('size_'+product_id).options.selectedIndex].value;
		}
		else {
			var size = $('size_'+product_id).value;
		}

		if ($('quantity_'+product_id).value) {
			var tmp = parseInt($('quantity_'+product_id).value);
			if (!isNaN(tmp)) {
				$('quantity_'+product_id).value = parseInt($('quantity_'+product_id).value);
			}
			else {
				$('quantity_'+product_id).value = 0;
			}
			var quantity = $('quantity_'+product_id).value;
		}
		else {
			var quantity = 0;
		}
		if (quantity < 1) {
			alert('Please enter a quantity to purchase.');
			return false;
		}

		// Is this a valid variant?
		var found = false;
		for (var i = 0; i < ShopProducts.list[product_id].length; i++) {
			if (ShopProducts.list[product_id][i].size == size && ShopProducts.list[product_id][i].colour == colour) {
				found = true;
				// In stock?
				if (ShopProducts.list[product_id][i].quantity < 1) {
					alert('Sorry, this product is out of stock.');
					return false;
				}
				else {
					var calc_price = ShopProducts.list[product_id][i].price * ShopProducts.currency_rate;
					var calc_old_price = ShopProducts.list[product_id][i].old_price * ShopProducts.currency_rate;				
					if (parseFloat(ShopProducts.list[product_id][i].old_price) > parseFloat(ShopProducts.list[product_id][i].price)) {
						var html = ShopProducts.currency_symbol + calc_price.toFixed(2) + ' ';
						if (ShopProducts.currency_code != "INT") {
							html += ShopProducts.currency_code;
						} 
						html += '<br /><strike>(was ' + ShopProducts.currency_symbol + ShopProducts.list[product_id][i].old_price + ' ';
						if (ShopProducts.currency_code != "INT") {
							html += ShopProducts.currency_code;
						}
						html += ')</strike>';						
						$('price_'+product_id).innerHTML = html;
					} else {						
						var html = ShopProducts.currency_symbol + calc_price.toFixed(2) + ' ';
						if (ShopProducts.currency_code != "INT") {
							html += ShopProducts.currency_code;
						}
						$('price_'+product_id).innerHTML = html;
					}
					Element.show('add_to_basket_'+product_id);
					if ($('add_to_wishlist_'+product_id)) {
						Element.show('add_to_wishlist_'+product_id);
					}
				}
			}
		}

		if (!found) {
			alert('The product you have somehow selected does not exist. Please try again');
			return false;
		}

		return true;
	},

	wishlistAdd: function(bool) {
		if (bool) {
			Element.show('wishlist_new');
		} else {
			Element.hide('wishlist_new');
		}
	}
	

}
