/**
 * Price reloading on product page.
 *
 * Require Prototype 1.6.
 */

var gUpdatePricePath = '';

function reloadProductPrice(e) {
	var CUSTOM_FIELD = /^property_set/;
	var form = $('addToCart'), priceContainer = $('reloadPriceContainer'), submit = form.down('.submit input');
	if (!form || !priceContainer) return;
	var oldSer = form.serialize(true);
	new Form.EventObserver(form, function(e) {
		var newSer = form.serialize(true);
		var actualChange = $H(newSer).any(function(pair) {
			return CUSTOM_FIELD.test(pair.key) && pair.value != oldSer[pair.key];
		});
		if (!actualChange) return;
		new Ajax.Updater(priceContainer, gUpdatePricePath, {
			method: 'get', parameters: form.serialize(),
			onSuccess: function() {
				submit && submit.show();
				oldSer = newSer;
				(priceContainer).highlight({ duration: 1 });
			},
			onFailure: function() {
				submit && submit.hide();
				alert('Cette variante de produit n’existe pas.');
			}
		});
	});
}

document.observe('dom:loaded', function() {
	reloadProductPrice();
});
