var chaseElement = 'mouseChaser';
var xOff = 0;
var yOff = 24;

function add_amount_to_field(field, amount)
{
  new_value = parseInt(field.value) + amount;
  if (new_value < 0)
  {
    new_value = 0;
  }

  field.value = new_value;
}

function showCouponConflict() {
  new Ajax.Request('/cart/coupon_conflicts', {
    method: 'get',
    onCreate: function() {
      facebox.loading();
    },
    onComplete: function(transport) {
      facebox.reveal(transport.responseText, null);
      new Effect.Appear(facebox.facebox, { duration: 0.3 });
    }
  });
}

function mouseX(event) {
  if (!event) event = window.event;
  if (event.pageX) return event.pageX;
  else if (event.clientX) return event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); else return 0;
}

function mouseY(event) {
  if (!event) event = window.event;
  if (event.pageY) return event.pageY;
  else if (event.clientY)return event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return 0;
}

function follow(event) {
  var obj = $(chaseElement).style;
  obj.visibility = 'visible';
  obj.left = (parseInt(mouseX(event))+xOff) + 'px';
  obj.top = (parseInt(mouseY(event))+yOff) +'px';
}

document.onmousemove = follow;

function submitEnter(field, event) {
  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (event) keycode = event.which;
  else return true;

  if (keycode == 13) {
  field.form.submit();
  return false;
  } else return true;
}

// Using this to prevent users from prematurely searching with the quick search
function noenter(e) {
  var k = e.keyCode || e.which;
  return k != 13;
}
  
/* internationalization: state input selector */
function updateStateInput(country) {
  if (country.value == 'US')  {
    $('state_field').setAttribute('size', 2);
  } else {
    $('state_field').setAttribute('size', 24);
  }
}

function submitSearch(event, link)
{
  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (event) keycode = event.which;
  else return true;
  
  if (keycode == 13)
  {
    link.onclick();
    return false;
  }
  else
  {
    return true;
  }
}


function modifyDisplayedPrice(selectElem, product_id)
{
  selectedValues = selectElem.value.split("|");
  variant_id = selectedValues[0];
  qty = selectedValues[1];
  price = selectedValues[2];

  $('price_' + product_id).innerHTML = price;
  $('qty_' + product_id).innerHTML = qty;

  new Effect.Highlight('variants_' + product_id);
}

function addMultipleDescriptorVariantToCart(product_id)
{
  selectedValues = $('variant_select_' + product_id).value.split("|");
  variant_id = selectedValues[0];
  
  new Ajax.Request('/cart/add/' + product_id + '?vid=' + variant_id, {asynchronous:true, evalScripts:true});
}


Position.Center = function(element, parent) {
        var w, h, pw, ph;
        var d = Element.getDimensions(element);
        w = d.width;
        h = d.height;
        Position.prepare();
        if (!parent) {
                var ws = Position.GetWindowSize();
                pw = ws[0];
                ph = ws[1];
        } else {
                pw = parent.offsetWidth;
                ph = parent.offsetHeight;
        }
        element.style.top = (ph/2) - (h/2) -  Position.deltaY + "px";
        element.style.left = (pw/2) - (w/2) -  Position.deltaX + "px";
}

/* end */

function spinner(dom_id) {
  $(dom_id).innerHTML = "<img src=\"/images/spinner.gif\" />"
  $(dom_id).show();
}

// Effects Treasure Chest
Effect.Transitions.slowstop = function(pos) {
  return 1-Math.pow(0.5,20*pos);
}

Effect.PhaseIn = function(element) {
  element = $(element);
  new Effect.BlindDown(element, arguments[1] || {});
  new Effect.Appear(element, arguments[2] || arguments[1] || {});
}

Effect.PhaseOut = function(element) {
  element = $(element);
  new Effect.Fade(element, arguments[1] || {});
  new Effect.BlindUp(element, arguments[2] || arguments[1] || {});
}

Effect.Phase = function(element) {
  element = $(element);
  if (element.style.display == 'none')
    new Effect.PhaseIn(element, arguments[1] || {}, arguments[2] || arguments[1] || {});
  else new Effect.PhaseOut(element, arguments[1] || {}, arguments[2] || arguments[1] || {});
}

// Used on the address sections of quick checkout
function fillAddressForm(theForm, selectBox) {
  current_value = selectBox.value;
  
  elems = new Array(8);
  if (current_value == "-1") {
    for(var i = 0; i < 8; i++) {
      elems[i] = "";
    }
  } else {
    elems = current_value.split("|");
  }
  
  // Set the fields.
  theForm.elements["address_id"].value = elems[0];
  theForm.elements["address[company]"].value = elems[1];
  theForm.elements["address[address1]"].value = elems[2];
  theForm.elements["address[address2]"].value = elems[3];
  theForm.elements["address[city]"].value = elems[4];
  theForm.elements["address[state]"].value = elems[5];
  theForm.elements["address[country]"].value = elems[6];
  theForm.elements["address[postal_code]"].value = elems[7];
  
  if (current_value == "-1") {
    theForm.elements["address[company]"].focus();
  }
}

function changeCardForm(selectBox) {
  current_value = selectBox.value;
  
  if (current_value == "-1") {
    $('card_payment_card_id').value = "";
    $('card_optional_fields').show();
  } else {
    $('card_payment_card_id').value = current_value;
    $('card_optional_fields').hide();
  }
}

function submitCheckoutForm(buttonRef) {
  buttonRef.onclick = function() { return false; }
  
  // Submit the form.
  $('place_order_form').onsubmit();
  
  html = "<img src=\"/images/spinner.gif\" /> <p><strong>submitting order...</strong></p>"
  insert = new Insertion.Bottom($('submit_order_bottom'), html);
  
  return true;
}
