/**
 * 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();
});
