//
// WEIGHT
//

var excludedCounties = ["09", "37"];

function cFloat(value) {
	value = value.replace(",", ".");
	
	return parseFloat(value);
}

/*
function cBool(value) {
	console.log("cBool");
	
	value = value == "true";
	
	console.log("Value: " + value);
	
	return value;
}
*/

function validateCountyCodes() {
	var scc = $("#SenderCountyCode").val();
	var rcc = $("#ReceiverCountyCode").val();

	if(scc == "" || rcc == "" || jQuery.inArray(scc, excludedCounties) != -1 || jQuery.inArray(rcc, excludedCounties) != -1)
		return false;
	
	return true;
}

function setWeight() {
	var weight = sumWeight();
	
	$("#total-weight").text(weight || 0);
}

function sumWeight() {
	var weight = 0;
	
	var product = $("#Product").val();	
	
	if(product == "Övrigt Bussgods") {
		//var advanced = ($("#AdvancedPackage").is(':checked') || $("#AdvancedPackage:hidden").val());
		var advanced = false;
		
		if($("#AdvancedPackage:hidden").length > 0) {
			advanced = $("#AdvancedPackage").val();
		}
		else {
			advanced = $("#AdvancedPackage").is(':checked');
		}
		
		if(advanced) {
			weight = cFloat($("#TotalWeight").val());
		}
		else {
			var packages = $("#Packages").val();
			
			for(var i = 1; i <= packages; i++) {
				var w = cFloat($("#Weight_" + i).val());
				
				weight += w;
			}
		}
	}
	else {
		weight = cFloat($("#FixedWeight").val());
	}
	
	return weight;
}

//
// VOLUME
//

function setVolume() {
	var volume = sumVolume();
	
	$("#total-volume").text(volume || 0);
}

function sumVolume() {
	var volume = 0;
	
	var product = $("#Product").val();
	
	if(product == "Övrigt Bussgods") {		
		//var advanced = ($("#AdvancedPackage").is(':checked') || $("#AdvancedPackage:hidden").val());
		var advanced = false;
		
		if($("#AdvancedPackage:hidden").length > 0) {
			advanced = $("#AdvancedPackage").val();
		}
		else {
			advanced = $("#AdvancedPackage").is(':checked');
		}
	
		if(advanced) {
			volume = cFloat($("#TotalVolume").val());
		}
		else {
			var packages = $("#Packages").val();
			
			for(var i = 1; i <= packages; i++) {
				var length = cFloat($("#Length_" + i).val());
				var width = cFloat($("#Width_" + i).val());
				var height = cFloat($("#Height_" + i).val());
				
				volume += (length / 100) * (width / 100) * (height / 100);
			}
		}
	}
	
	if(volume > 0) {
		volume = Math.round(volume * 1000) / 1000;	
	}
	
	return volume;
}

//
// FEES
//

function getFees() {
	var valid = false;
	
	if(!$("#UseCOD").is(":checked") || ($("#UseCOD").is(":checked") && $("#CODSum").val() > 0)) {		
		// CountyCodes	
		valid = validateCountyCodes();
		
		if(valid) {
			// Form
			valid = $("#Waybill").validate().silentCheckForm("get-fees");
			
			if(valid) {
				var feeCode = "";
				if ($("#Product").val() != "Övrigt Bussgods") {
					feeCode = $("#Product").val();
				}
				
				var params = {
					fromCounty: $("#FromCounty").val(),
					fromCity: $("#SenderCityCode").val(),
					toCity: $("#ReceiverCityCode").val(),
					weight: sumWeight(),
					volume: sumVolume(),
					customer: $("#Customer").val(),
					codSum: parseInt($("#CODSum").val()) || 0,
					shipmentFeeCode: feeCode
				};		
				
				$.ajax({
					type: "POST",
					url: "/Waybill/json/GetFees.asp",
					cache: false,
					data: jQuery.param(params),
					dataType: "json",
					success: function(data, textStatus, jqXHR) {				
						processFeeResult(data)
					},
					error: function(jqXHR, textStatus, errorThrown) {
						//alert("Ett fel uppstod när priserna skulle hämtas.");
						valid = false;
					}										
				});
			}
			else {
				//console.log("Invalid: Form");
			}
		}
		else {
			//console.log("Invalid: CountyCodes");
		}
	}
	else {
		valid = true;
	}	
	
	if(!valid) {
		$("#prio-row").toggle(false);
		$("#warranty-row").toggle(false);
		$("#delivery-row").toggle(false);
		$("#cod-row").toggle(false);
		
		$("#shipment-fee").val(0);
		$("#total-fee").text(formatCurrency(0));		
	}
}

function processFeeResult(fees) {
	$("#shipment-fee").val(fees.ShipmentFee);
	
	$("#prio-fee").attr("data-fee", fees.PrioFee).text(formatCurrency(fees.PrioFee));
	$("#warranty-fee").attr("data-fee", fees.WarrantyFee).text(formatCurrency(fees.WarrantyFee));	
	var deliveryFee = formatCurrency($("#AdditionalService_2").is(":checked") ? fees.WarrantyDeliveryFee : fees.DeliveryFee);	
	$("#delivery-fee").attr("data-fee", fees.DeliveryFee).attr("data-warranty-fee", fees.WarrantyDeliveryFee).text(deliveryFee);
	$("#cod-fee").attr("data-fee", fees.CODFee).text(formatCurrency(fees.CODFee));
	
	var includedProduct = parseInt(fees.IncludedProduct);
	
	switch(includedProduct) {
		case 2:
			$("#AdditionalService_1").attr("checked", true).attr("disabled", true);
			$("#AdditionalService_2").attr("checked", false).attr("disabled", true);
			$("#AdditionalService_3").attr("checked", true).attr("disabled", true);
			$("#UseCOD").attr("checked", false).attr("disabled", true);
			break;
		case 3:
			$("#AdditionalService_1").attr("checked", false).attr("disabled", true);
			$("#AdditionalService_2").attr("checked", true).attr("disabled", true);
			$("#AdditionalService_3").attr("checked", true).attr("disabled", true);
			$("#UseCOD").attr("checked", false).attr("disabled", true);			
			break;
		default:		
			if(parseInt($("#IncludedProduct").val()) !== 0) {
				$("#AdditionalService_1").attr("checked", false).attr("disabled", false);
				$("#AdditionalService_2").attr("checked", false).attr("disabled", false);
				$("#AdditionalService_3").attr("checked", false).attr("disabled", false);
				$("#UseCOD").attr("checked", false).attr("disabled", false);
			}
			break;
	}
	
	$("#IncludedProduct").val(includedProduct);
	
	sumFees();								
}

function sumFees() {
	var totalFee = 0;
	
	totalFee = parseFloat($("#shipment-fee").val()) || 0;
	
	// Prio
	var prioFee = parseFloat($("#prio-fee").attr("data-fee")) || 0;
	
	$("#prio-row").toggle((prioFee > 0));

	if($("#AdditionalService_1").is(":checked"))
		totalFee += prioFee;
	
	// Warranty
	var warrantyFee = parseFloat($("#warranty-fee").attr("data-fee")) || 0;

	$("#warranty-row").toggle((warrantyFee > 0));

	if($("#AdditionalService_2").is(":checked"))
		totalFee += warrantyFee;
	
	// Delivery
	var deliveryFee = parseFloat($("#AdditionalService_2").is(":checked") ? $("#delivery-fee").attr("data-warranty-fee") : $("#delivery-fee").attr("data-fee")) || 0;
	
	$("#delivery-row").toggle((deliveryFee > 0));
		
	if($("#AdditionalService_3").is(":checked"))
		totalFee += deliveryFee;
	
	// COD
	var codFee = parseFloat($("#cod-fee").attr("data-fee")) || 0;
	
	$("#cod-row").toggle((codFee > 0));
			
	if($("#UseCOD").is(":checked"))
		totalFee += codFee;		

	// Total
	$("#total-fee").text(formatCurrency(totalFee));
	$("#TotalFee").val(totalFee);
}

//
// MISC
//

function trimX() {
	var value = $(this).val();
	
	value = value.replace(/[\s-]/g, "");
	
	$(this).val(value);
}

function formatCurrency(value) {
	var currencyTemplate = "{0} kr";

	return currencyTemplate.replace("{0}", value);
}
