function focus(elem) {
  $(elem).focus();
}

function focus_login() {
  var email = $('session_email');
  if (email.value.length > 0) {
    focus('session_password');
  } else {
    focus(email);
  }
}

function current_order_form(form) {
  new Ajax.Request(form.action, { parameters: form.serialize(),
    onFailure: function() {
      alert('Oops an error occured with your last action. This page will be reloaded.')
      location.reload();
    },
    onSuccess: function() {
      form.enable();
    }
  });
  
  form.disable();
  
  return false;
}

function product_list_form(form, add) {
  if (!!add) {
    var params = $H(form.serialize(true));
    var value = add.value;
    // IE sucks, can't understand button.value!
    if (Prototype.Browser.IE) value = add.up('tr').id.match(/_(\d+)/)[1];
    params.set(add.name, value);
  } else {
    var params = form.serialize();
    var checkboxes = form.select('input[type="checkbox"][name="product_id[]"]').select(function(elem) { return elem.checked; })
    if (checkboxes.length == 0) return false;
  }

  new Ajax.Request(form.action, { parameters: params,
    onFailure: function() {
      alert('Oops an error occured with your last action. This page will be reloaded.')
      location.reload();
    }
  });

  if (!!add) {
    // Highlight newly added rows.
    add.up('tr').addClassName('inorder');
  } else {
    // Highlight newly added rows, uncheck, cleanup "select all" checkbox.
    checkboxes.each(function(elem) {
      elem.up('tr').addClassName('inorder');
      elem.checked = false;
    });
    form.down('input#select_all').checked = false;
  }

  return false;
}

function swap_order_save_image(elem) {
  var submit = $('order_save');

  if (elem.checked) {
    submit.src = submit.src.replace(/order_save\./, 'order_confirm.');
  } else {
    submit.src = submit.src.replace(/order_confirm\./, 'order_save.');
  }
}

function swap_product_image(elem) {
  var image = $('product_image');
  var id = elem.href.match(/image=(\d+)/)[1];
  
  $('assets').childElements().each(function(a) {
    a.removeClassName('selected');
  });
  
  image.src = image.src.replace(/\/\d+\//, '/' + id + '/');
  
  $(elem).addClassName('selected');
  
  return false;
}

function cycle(collection) {
  var count = 1;
  var elem, className;
  for (var i = 0; i < collection.length; i++) {
    elem = collection[i];

    // Skip hidden elements.
    if (!elem.visible()) continue;

    // Skip grouping rows and reset counter.
    if (elem.hasClassName('grouping')) {
      count = 1;
      continue;
    }

    className = count % 2 == 1 ? 'odd' : 'even';
    elem.removeClassName('odd').removeClassName('even').addClassName(className);
    count++;
  }
}
