var uncolorLabels = function (formData, jqForm, options) {
	$("#button").attr("disabled", "disabled");
	$("#error-message").hide();
	$("label[for=id_first_name]").css('color', 'black');
	$("label[for=id_last_name]").css('color', 'black');
	$("label[for=id_co]").css('color', 'black');
	$("label[for=id_address]").css('color', 'black');
	$("label[for=id_zip]").css('color', 'black');
	$("label[for=id_city]").css('color', 'black');
}

var processDiscountResponse = function (data) {
    if (data["success"]) {
        discount = data["discount"];
        $("#id_coupon").val(data["coupon_code"]);
    }
    $(".productprice").each(modifyProductPrice);
    updateAllCosts();
}

var modifyProductPrice = function() {
    var oldPrice = parseInt($(this).html());
    var newPrice = Math.round(oldPrice - oldPrice * discount / 100.0);
    var newHtml = "<s>" + oldPrice + " kr</s><br/>" + newPrice + " kr";
    $(this).html(newHtml); 
}

var processResponse = function (data) {
	$("#button").removeAttr("disabled");
	if (data["success"]) {
		var form = $("#redirect-form");
		form.attr("action", data["redirect_to"]);
		$("#order-number").val(data["order_number"]);
        discount = 0;
		form.submit();
	} else {
		if (data["message"] != undefined) {
			$("#error-message").text(data["message"]).show();
		}
		var errors = data["errors"];
		if (errors["first_name"] != undefined) {
			$("label[for=id_first_name]").css('color', 'red');
		}
		if (errors["last_name"] != undefined) {
			$("label[for=id_last_name]").css('color', 'red');
		}
		if (errors["co"] != undefined) {
			$("label[for=id_co]").css('color', 'red');
		}
		if (errors["address"] != undefined) {
			$("label[for=id_address]").css('color', 'red');
		}
		if (errors["zip"] != undefined) {
			$("label[for=id_zip]").css('color', 'red');
		}
		if (errors["city"] != undefined) {
			$("label[for=id_city]").css('color', 'red');
		}
		if (errors["email"] != undefined) {
			$("label[for=id_email]").css('color', 'red');
		}
	}
}

var get_discount = function (coupon_code) {
    var data = new Object();
    data.coupon_code = coupon_code;
    var options = {
			success: processDiscountResponse,
			url: '/shop/get-discount-ajax/',
			type: 'post',
            data: data,
			dataType: 'json'
	};
    $.ajax(options);
}

var numberOfProductsForFreeShipping = 3;
var defaultShippingCost = 49;
var productsInfo = {
		1: 99,2: 199,3: 299,4: 149
};
var currentProductQuantities = {
		1: 0,2: 0,3: 0,4: 0
};
var numberOfProducts = 4;
var discount = 0;

function updateAllCosts() {
	var productsCost = 0;
	var shippingCost = 0;
	var totalCost = 0;
	var totalCount = 0;
        var discount_sum = 0;

	for (i in productsInfo) {
                cost = productsInfo[i] * currentProductQuantities[i];
		productsCost += cost;
                if (discount) {
                    cost_discounted = Math.round(productsInfo[i] - productsInfo[i] * discount / 100.0);
                    discount_sum += (productsInfo[i] - cost_discounted) * currentProductQuantities[i];
                    totalCost += cost_discounted * currentProductQuantities[i];
                }
                else {
                    totalCost += cost;
                }
		totalCount += currentProductQuantities[i]
	}
	if (productsCost && totalCount < numberOfProductsForFreeShipping) {
		shippingCost = defaultShippingCost;
	}

	var free = false;
	if (!shippingCost && productsCost) {
	    shippingCost = "Gratis";
	    free = true;
	} 
        else {
            totalCost += shippingCost;
	}

	$("#products-cost").text(productsCost.toString());
	if (free) {
		$("#shipping-cost").text(shippingCost.toString());
	} else {
		$("#shipping-cost").text(shippingCost.toString() + " kr");
	}
        if (discount && discount_sum)
        {
            $("#discount-row").css("display", "");
            $("#discount-cost").text(discount_sum.toString() + " kr");
        }
        else {
            $("#discount-row").css("display", "none");
        }
	$("#total-cost").text(totalCost.toString());
}

function onQuantityChange(product, selectElem) {
	selectElem = $(selectElem);
	currentProductQuantities[product] = parseInt(selectElem.val());
	updateAllCosts();
}

$(document).ready(function () {
	var options = {
			beforeSubmit: uncolorLabels,
			success: processResponse,
			url: '/shop/make-order-ajax/',
			type: 'post',
			dataType: 'json'
	};
	
	$('#order-form').ajaxForm(options);
	for (i = 0; i < numberOfProducts; i++) {
		var productID = parseInt($("#id_form-" + i.toString() + "-product").val());
		var selectElem = $("#id_form-" + i.toString() + "-quantity");
		var selectedNumber = parseInt(selectElem.val());
		currentProductQuantities[productID] = selectedNumber;
	}
	updateAllCosts();
});

