$(document).ready(function(){
	// Root Address
	var root = "http://www.reiseland-lekona.de/";
	
	// When Javascript is activated, add JS specific content
	$(".extended").hide();
	$(".toggler").css("display", "block");
	$(".popupText").text("Mehr");
	
	// Toggler
	$(".toggler").toggle(function() {
		$(this).parent().children(".extended").slideDown(500);
		$(this).css('background-image', 'url(' + root + 'source/image/expandBtnActive.jpg)');
		$(this).children("strong").html("Zurück");
	}, function() {
		$(this).parent().children(".extended").slideUp(500);
		$(this).css('background-image', 'url(' + root + 'source/image/expandBtn.jpg)');
		$(this).children("strong").html("Mehr&hellip;");
	});
	
	// Fancybox
	$(".popup").fancybox({
		'titlePosition': 'outside',
		'padding': 0,
		'width': '75%',
		'height': '75%',
		'centerOnScroll': true,
		'overlayOpacity': 0.5,
		'overlayColor': '#4f4534',
		'type': 'iframe'
	});
	
	// Decrease the quantity of a product
	$(".f_decreaseQuantity").click(function(){
		var quantity;
		var num = $('input[name=f_numProducts]').val();
		
		if(typeof num == 'undefined') {
			quantity = parseInt($(this).parent("form").children("input[name='f_quantity']").attr("value"));
			
			if(isNaN(quantity)) {
				$(this).parent("form").children("input[name='f_quantity']").attr("value", "6");
				$(this).parent("form").children("input[name='f_quantity']").change();
			} else {
				if(quantity > 0) {
					$(this).parent("form").children("input[name='f_quantity']").attr("value", quantity-1);
					$(this).parent("form").children("input[name='f_quantity']").change();
				}
			}
		} else {
			quantity = parseInt($(this).parent(".quantity").children("input[name*='f_quantity']").attr("value"));
			
			if(isNaN(quantity)) {
				$(this).parent(".quantity").children("input[name*='f_quantity']").attr("value", "6");
				$(this).parent(".quantity").children("input[name*='f_quantity']").change();
			} else {
				if(quantity > 0) {
					$(this).parent(".quantity").children("input[name*='f_quantity']").attr("value", quantity-1);
					$(this).parent(".quantity").children("input[name*='f_quantity']").change();
				}
			}
		}
	});
	
	// Increase the quantity of the product
	$(".f_increaseQuantity").click(function(){
		var quantity;
		var num = $('input[name=f_numProducts]').val();
		
		if(typeof num == 'undefined') {
			quantity = parseInt($(this).parent("form").children("input[name='f_quantity']").attr("value"));
			
			if(isNaN(quantity)) {
				$(this).parent("form").children("input[name='f_quantity']").attr("value", "6");
				$(this).parent("form").children("input[name='f_quantity']").change();
			} else {
				if(quantity >= 0) {
					$(this).parent("form").children("input[name='f_quantity']").attr("value", quantity+1);
					$(this).parent("form").children("input[name='f_quantity']").change();
				}
			}
		} else {
			quantity = parseInt($(this).parent(".quantity").children("input[name*='f_quantity']").attr("value"));
			
			if(isNaN(quantity)) {
				$(this).parent("div").children("input[name*='f_quantity']").attr("value", "6");
				$(this).parent("div").children("input[name*='f_quantity']").change();
			} else {
				$(this).parent("div").children("input[name*='f_quantity']").attr("value", quantity+1);
				$(this).parent("div").children("input[name*='f_quantity']").change();
			}
		}
	});
	
	// Line-Through Check
	$("input[name*='f_quantity']").change(function(){
		var value = $(this).attr("value");
		if(isNaN(value)) {
			$(this).attr("value", "6");
		} else {
			var name = $(this).attr("id").split("_");
			if(parseInt(value) <= 0) {
				$(this).attr("value", "0");
				$("label[for=f_productquantity_" + name[2] + "]").css("text-decoration", "line-through");
			} else {
				$("label[for=f_productquantity_" + name[2] + "]").css("text-decoration", "none");
			}
		}
	});
	
	// Add products to shopping card
	$(".addForm").submit(function() {
		// Save form values
		var postData = "f_pid=" + $(this).children("input[name=f_pid]").val() + "&f_quantity=" + $(this).children("input[name=f_quantity]").val();
		
		// Save Url
		var url = $(this).attr("action");
		
		// Save pid
		var pid = $(this).children("input[name=f_pid]").val();
		
		// Send postData using Ajax() Function
		$.ajax({
			type:"POST",
			url:url,
			data:postData,
			success:function() {
				// Give feedback to the user
				$("input[name=f_pid][value=" + pid + "]").parent("form").children(".submit").children(".added").show().animate({
					opacity:1
				}, 250, function(){
					$(this).delay(2500).animate({
						opacity:0
					}, 1000, function(){
						$(this).hide()
					})
				});
				
				// Update basket
				$("#basketQuantity").load(root + 'system/numProducts.php');
			}
		});
		
		// Prevents the handler from beeing fired
		return false;
	});
	
	// Add Update Button to the Shopping Cart
	$("#f_update").css('border-top', '1px dotted #bfa780').html('<input type="button" id="f_updateBtn" name="f_updateBtn" value="Aktualisieren" />');
	
	// Update Button Funktionalität
	$("#f_updateBtn").click(function(){
		var numProducts = $('input[name="f_numProducts"]').val();
		var total = 0;
		if($('#f_shipping_country').val() != '') {
			var country = $('#f_shipping_country').val();
		} else {
			var country = $('#f_country').val();
		}
		
		// Einzelne Produkte aktualisieren
		for(var i = 0; i < numProducts; i++) {
			if($('#f_p_' + i).length > 0) {
				total += Math.round(parseFloat($('#f_p_' + i).children('.priceBefore').children('.value').text().replace(',', '.'))*parseInt($('input[name=f_quantity_' + i + ']').val())*100)/100;
				
				if($('input[name=f_quantity_' + i + ']').val() == 0) {
					$('#f_p_' + i).hide();
				} else {
					$('#f_p_' + i).children('.priceAfter').children('.value').text(
						(Math.round(parseFloat($('#f_p_' + i).children('.priceBefore').children('.value').text().replace(',', '.'))*parseInt($('input[name=f_quantity_' + i + ']').val())*100)/100).toFixed(2)
					);
				}
			}
		}
		
		// Save number of products
		var numProducts = $('input[name="f_numProducts"]').val();
		
		// Create Post String
		var postData = "f_numProducts=" + $('input[name="f_numProducts"]').val(); // Erstes Produkt wird direkt gespeichert
		
		// Total Quantity
		var totalQuantity = 0;
		
		for(var i = 0; i < numProducts; i++) {
			postData = postData + "&f_pid_" + i + "=" + $('input[name="f_pid_' + i + '"]').val() + "&f_quantity_" + i + "=" + $('input[name="f_quantity_' + i + '"]').val();
			if($('input[name="f_quantity_' + i + '"]').val() != undefined) {
				if($('#f_free_' + i).length == 0 || country != 'de') {
					totalQuantity += parseInt($('input[name="f_quantity_' + i + '"]').val());
				}
			}
		}
		
		// Save Url
		var url = root + 'system/update.php';
		
		// Send postData using Ajax() Function
		$.ajax({
			type:"POST",
			url:url,
			data:postData,
			success:function() {
				// Update basket
				$("#basketQuantity").load(root + 'system/numProducts.php');
			},
			error:function(e, xhr, settings, exception) {
				alert('Es ist ein unbekannter Fehler aufgetreten. Wir bitten um Entschuldigung.');
			}
		});
		
		// Subtotal, Versand und Total aktualisieren
		$('#f_subtotal .value').text(total.toFixed(2));
		
		if(country == 'de') {
			if(total >= 250) {
				$('#f_shipping .value').text("0");
			} else {
				if(totalQuantity > 0) {
					$('#f_shipping .value').text("9.90");
					total += 9.90;
				} else {
					$('#f_shipping .value').text("0");
				}
			}
		} else {
			// Per Ajax aktuelle Versandkosten laden und den Update Button erneut laden.
			$.ajax({
				type:"POST",
				url:root + 'system/updateShipping.php',
				data:"country=" + country + "&quantity=" + totalQuantity + "&subtotal=" + total,
				success:function(data) {
					//alert(data);
					//shippingCosts = jQuery.parseJSON(data);
					//alert(parseInt(shippingCosts.price) * Math.ceil(totalQuantity / parseInt(shippingCosts.quantity)));
					var shipping = data.match(/(.*)#(.*)/);
					
					$('#f_shipping .value').html(shipping[1]);
					if(shipping[2].length > 0){
						if($('#extra_note').length > 0) {
							$('#extra_note').html(shipping[2]);
						} else {
							$('p.notes').append('<span id="extra_note">' + shipping[2] + '</span>');
						}
					} else {
						$('#extra_note').empty();
					}
					//costs = data.match(/(.*,00)(.*)/);
					total += parseFloat(data);
					$('#f_total .value').text(total.toFixed(2));
				},
				error:function(e, xhr, settings, exception) {
					alert('Es ist ein unbekannter Fehler aufgetreten. Wir bitten um Entschuldigung.');
				}
			});
		}
		$('#f_total .value').text(total.toFixed(2));
	});
});
