function popupCalculator(sku, existingQuantity) {
	$("#dialog").popup({
		title:'How many rolls?',
		cssClass:'calculator-popup',
		url:$.mapPath("calculator/calculator?sku=" + sku), 
		show: function() {
			$("fieldset.calculation").hide();
			$("fieldset.calculator-save").hide();
		
			$("a.calculate").click(function() {
				var validator = $("form#popup-calculator").validate({ignore:'[name=name]'});
				validator.form();
				
				if (validator.element("#height") && validator.element("#width")) {
					var sku = $("input#sku").val();
					var existingQty = existingQuantity;
					
					var successHandler = function(data) {
						var rolls = data.rolls;
						var cost = data.cost;
						var total = data.total;
						
						$("fieldset.calculation span.number").text(rolls);
						$("fieldset.calculation span.cost").html(cost);
						$("fieldset.calculation span.total").html(total);
						
						var addToBasketLink = $("fieldset.calculation a.calculator-basket");
						addToBasketLink.attr("href", $.mapPath("basket/add?sku=" + sku + "&quantity=" + (rolls - existingQty)));
						
						// clear room error
						$("fieldset.calculator-save label.error[for=name]").remove();
						
						$("fieldset.calculation").show();
						$("fieldset.calculator-save").show();
					}; 
					$.getJSON( $.mapPath('calculator/calculate'), {
					    sku: sku,
					    width: $("#width").val(),
					    height: $("#height").val()
						},
						successHandler
						);	
				}
				return false;
			});
		},
		callback:function() {
			refreshRoomList();
			return false;
		}
	});
}
$(document).ready(function() {
	$("a#calc-room").click(function() {
		var sku = $("meta[name=sku]").attr("content");
		if (sku) {
			popupCalculator(sku, 0);
		}
		return false;
		});

	$("a.basket-roll-calculator").click(function() {
		var sku = $(this).parents("li").find("input[name=item]").val();
		if (sku) {
			var existingQty = parseInt($(this).parents("li").find("input[name=quantity]").val(),10);
			popupCalculator(sku, existingQty);
		}
		return false;
		});
});
