function changeItemNumber (id) {
  var el = document.getElementById('number'+id);
  if (el) {
    var buyButton = document.getElementById('buy'+id);
    var lessButton = document.getElementById('less'+id);
    var moreButton = document.getElementById('more'+id);
    var priceEl = document.getElementById('price'+id);
    var totalEl = document.getElementById('total'+id);
    var diffEl = document.getElementById('diff'+id);
    if (el.value == '1') {
      if (lessButton) addClass(lessButton, 'one');
      if (buyButton) {
        buyButton.href = buyButton.href.replace(/PRODUCT%5B(\d+)%5D%3D\d+/, 'PRODUCT%5B$1%5D%3D1');
        buyButton.href = buyButton.href.replace(/%26UPRODUCTS%5B\d+%5D%3D0/, '');
      }
    } else {
      if (lessButton) removeClass(lessButton, 'one');
      if (buyButton) {
        buyButton.href = buyButton.href.replace(/PRODUCT%5B(\d+)%5D%3D\d+/, 'PRODUCT%5B$1%5D%3D'+el.value);
        var prodID = RegExp.$1;
        buyButton.href = buyButton.href.replace(/PRODUCT\[(\d+)\]=\d+/, 'PRODUCT[$1]='+el.value);
        var uproduct = window.uproducts && window.uproducts[prodID] ? window.uproducts[prodID] : '300150348';
        if (buyButton.href.indexOf('%26UPRODUCTS%5B'+uproduct+'%5D%3D0') == -1) {
          buyButton.href = buyButton.href.replace(/(PRODUCT%5B\d+%5D%3D\d+)/, '$1%26UPRODUCTS%5B'+uproduct+'%5D%3D0');
        }
      }
    }

    if (priceEl && totalEl && !isNaN(el.value) && !isNaN(priceEl.innerHTML)) {
      var price = Number(priceEl.innerHTML);
      if (/[^0-9.]/.test(price)) price = price.replace(/[^0-9.]+/, '.');
      var quantity = Number(el.value);
      if (shopPrices[id]) {
        for (var i = 0; i < shopPrices[id].length; i++) {
          if (quantity >= shopPrices[id][i].quantity) {
            priceEl.innerHTML = price = shopPrices[id][i].price;
            if (shopPrices[id][i].mailto && buyButton) {
              if (!shopPrices[id+'href']) shopPrices[id+'href'] = buyButton.href;
              buyButton.href = 'mailto:'+shopPrices[id][i].mailto;
              if (shopPrices[id][i].cc || shopPrices[id][i].subject || shopPrices[id][i].body) {
                  buyButton.href+='?';
                  var params = [];
                  if (shopPrices[id][i].cc) params.push('cc='+escape(shopPrices[id][i].cc));
                  if (shopPrices[id][i].subject) params.push('subject='+escape(shopPrices[id][i].subject));
                  if (shopPrices[id][i].body) params.push(escape('body='+shopPrices[id][i].body));
                  buyButton.href+=params.join('&');
              }
              buyButton.getElementsByTagName('span')[0].innerHTML = shopPrices[id+'btn'] ? shopPrices[id+'btn'].contact : 'Contact Sales';
            } else if (buyButton) {
              if (shopPrices[id+'href']) buyButton.href = shopPrices[id+'href'];
              buyButton.getElementsByTagName('span')[0].innerHTML = shopPrices[id+'btn'] ? shopPrices[id+'btn'].buy : 'Buy Now!';
            }
            break;
          }
        }
      }
      totalEl.innerHTML = (Math.round(price * quantity * 100)/100).toFixed(2);
      if (diffEl) {
        diffEl.innerHTML = (Math.round((shopPrices[id][shopPrices[id].length-1].price - price)*quantity*100)/100).toFixed(2);
      }
    }
  }
}
function setNumberHandlers (id) {
  changeItemNumber(id);
  var el = document.getElementById('number'+id);
  if (el) {
    var lessButton = document.getElementById('less'+id);
    var moreButton = document.getElementById('more'+id);
    var buyButton = document.getElementById('buy'+id);
    addEventHandler(el, 'click', function () {if (/number([0-9-]+)/.test(this.id)) {var id = RegExp.$1; changeItemNumber(id)}});
    addEventHandler(el, 'change', function () {if (/number([0-9-]+)/.test(this.id)) {var id = RegExp.$1; changeItemNumber(id)}});
    addEventHandler(el, 'blur', function () {if (/number([0-9-]+)/.test(this.id)) {var id = RegExp.$1; changeItemNumber(id)}});
    addEventHandler(el, 'focus', function () {if (/number([0-9-]+)/.test(this.id)) {var id = RegExp.$1; changeItemNumber(id)}});
    addEventHandler(el, 'click', function () {if (/number([0-9-]+)/.test(this.id)) {var id = RegExp.$1; changeItemNumber(id)}});

    addEventHandler(el, 'mouseover', function () {if (/number([0-9-]+)/.test(this.id)) {var id = RegExp.$1; changeItemNumber(id)}});
    addEventHandler(el, 'mouseout', function () {if (/number([0-9-]+)/.test(this.id)) {var id = RegExp.$1; changeItemNumber(id)}});
    if (lessButton) addEventHandler(lessButton, 'click', function () {if (/less([0-9-]+)/.test(this.id)) {var id = RegExp.$1; var el = document.getElementById('number'+id); if (isNaN(el.value) || el.value <= 1) {el.value=1} else {el.value = Number(el.value)-1} changeItemNumber(id)}});
    if (moreButton) addEventHandler(moreButton, 'click', function () {if (/more([0-9-]+)/.test(this.id)) {var id = RegExp.$1; var el = document.getElementById('number'+id); if (isNaN(el.value) || el.value < 1) {el.value=1} else {el.value = Number(el.value)+1} changeItemNumber(id)}});
    if (buyButton) addEventHandler(buyButton, 'click', function () {if (/buy([0-9-]+)/.test(this.id)) {var id = RegExp.$1; changeItemNumber(id)}});
  }
}

window.shopPrices = {};
