
$(document).ready(function () {
	
	// mini basket
	var mini_basket = $("#mini_basket");
	if (mini_basket.length > 0) {
		$("#mini_basket").load("dynamic/mini-basket.php");
	}
	// main basket
	var main_basket = $("#main_basket");
	if (main_basket.length > 0) {
		loadBasket('');
	}
	
	// thankyou page
	if ($("#clear_basket").val() == "yes") {
		$.ajax({
			url: 'dynamic/clear-basket.php',
			success: function(data) { }
		});
	}
	
	// checkout
	/*
	var checkout = $("#checkout_area");
	if (checkout.length > 0) {
		loadCheckout();
	}
	
	var country = $("#country");
	if (country.length > 0) {
		$.get("dynamic/country-list.php", function(data, success) {
			$("#country").html(data);
			//
			country = $("#del_country");
			if (country.length > 0) {
				$("#del_country").html(data);
			}
			//
			updateDeliveryCost();
		});
	}
	*/
	var checkout = $("#checkout_area");
	if (checkout.length > 0) {
		updateDeliveryCost();
	}
	
	// Comment on checkout
	$("#comment").keyup(function () {
		var com = $("#comment").val();
		if (com.length > 100) {
			com = com.substr(0, 100);
			$("#comment").val(com);
		}
	});
	
	// Check out
	$("#btn_checkout").click(function () {
		var submit = false;
		//
		if (formValidate()) {
			if (!$("#terms").get(0).checked) {
				alert ("You must agree to the Terms and Conditions before we are able to accept your order.");
			} else {
				var submit = true;
			}
		}
			
		if (submit) {
			// clear basket
			/*
			$.ajax({
				url: 'dynamic/clear-basket.php',
				success: function(data) {
					$("#checkout_form").submit();
				}
			});
			*/
			$("#checkout_form").submit();
		}
	});
	
	$("#btn_test").click(function () {
		if (formValidate()) {
			$("#checkout_form").get(0).action = "dynamic/dummy-bebc.php";
			$("#checkout_form").submit();
		}
	});		
	
	// basket add
	$(".basket_add").click (function() {
		var isbn = $(this).get(0).id;
		//
		$("#mini_basket").load("dynamic/mini-basket.php", {'isbn': isbn}, function() {
			var msg = "Book " + isbn + " has been added to your basket";
			alert (msg, "Basket");
		});
		
		return false;
	});
	
	// country change
	$("#country").change (function() {
		if ($("#delivery_address_flag").get(0).checked) {
			updateDeliveryCost();
		}
	});
	$("#del_country").change (function() {
		updateDeliveryCost();
	});
	
	// checkout delivery address
	$("#delivery_address_flag").click (function() {
		var elm = $("#delivery_address_flag");
		if (elm.get(0).checked) {
			$("#delivery_div").hide();
			//
			$("#delivery_div *").each (function() {
				if ($(this).get(0).tagName == "INPUT") {
					$(this).val("");
				}				
			});
		} else {
			$("#delivery_div").show();
		}
		updateDeliveryCost();
	});
	
	function formValidate() {
		var msg = "";
		//
		msg += checkField("salutation", "Salutation");
		msg += checkField("first_name", "First name");
		msg += checkField("last_name", "Last name");
		msg += checkField("email", "Email address");
		msg += checkField("addr1", "First line of address");
		msg += checkField("town", "Town");
		msg += checkField("country", "Country");
		msg += checkField("postcode", "Postcode");
		// Check email
		email = $("#email").val();
		if (email != "") {
			if (!validateEmail(email)) {
				msg += "\r\n - valid email address.";
			}
		}
		
		//
		if (!$("#delivery_address_flag").get(0).checked) {
			//
			msg += checkField("del_salutation", "Delivery Salutation");
			msg += checkField("del_first_name", "Delivery first name");
			msg += checkField("del_last_name", "Delivery last name");
			msg += checkField("del_addr1", "Delivery first line of address");
			msg += checkField("del_town", "Delivery town");
			msg += checkField("del_country", "Delivery country");
			msg += checkField("del_postcode", "Delivery postcode");
		}
		//
		if (msg != "") {
			msg = "Unable to proceed without the following information:" + msg;
			alert (msg);
			return false;
		} 
		return true;
	}

	// validate email
	function validateEmail(email) {
	   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	   if(reg.test(email) == false) {
	      return false;
	   }
	   return true;
	}	
	
	// calculate delivery cost
	function updateDeliveryCost() 
	{
		//
		var country = "";
		if ($("#delivery_address_flag").length > 0) {
			if ($("#delivery_address_flag").get(0).checked) {
				country = $("#country").val();
			} else {
				country = $("#del_country").val();
			}
		} else {
			country = $("#country").val();
		}
		//
		$("#delivery_cost").html("Checking...");
		$("#total_with_delivery").html("");
		//
		$.post("dynamic/delivery-charge.php", {'country': country}, function(data) {
			$("#vat_total").html(data.vat);
			$("#delivery_cost").html("&pound;" + data.delivery);
			$("#postage_charge").val(data.delivery);
			$("#btn_checkout").removeAttr('disabled');
			//
			if (data.vat_flag) {
				$(".book_vat").show();
				$("#vat_row").show();
			} else {
				$(".book_vat").hide();
				$("#vat_row").hide();
			}
			//
			$("#total_with_delivery").html("&pound;" + data.total);
			$("#total").val(data.total);
		}, "json");
	}
	
	//*** Load the basket
	function loadBasket(list)
	{
		var json = eval('({' + list + '})');
		//
		$("#main_basket").load("dynamic/main-basket.php", json, function() {
			
			// basket update
			$("#basket_update").click (function() {
				var list = "";
				
				$(".qty_field").each (function() {
					if (list != "") {
						list += ", ";
					}
					list += $(this).get(0).id;					
					list += " : "; 				
					list += $(this).val();
				});
				//
				loadBasket(list);
				return false;
			});
			
			// remove item
			$(".basket_remove").click (function() {
				var id = $(this).get(0).id;
				var remove = '"remove" : ' +  id;
				loadBasket(remove);
				return false;
			});
			
			// check out
			$("#btn_basket_checkout").click (function() {
				location.href = "checkout.php";
				return false;
			});	

			// Delivery country select
			$("#country").change (function() {
				updateDeliveryCost();
			});
		});
	}
	
	// *** Load Checkout
	function loadCheckout() 
	{
		$("#checkout_area").load("dynamic/checkout-info.php", function() {
			$("#btn_checkout").removeAttr('disabled');
			
						
		});
	}

	
	function checkField (field, warning) {
		if ($("#" + field).val() == "") {
			return "\r\n - " + warning;
		}
		return "";
	}
});
