GCR_JS.cardSorter = function(container, arrays) {
  
  var container = $(container);
  var arrays = arrays;
  var prefix = 'card_';
  
  var doSort = function(sortArray) {
    for (var i = 0; i < sortArray.length; i++) {
      container.insert({ bottom: $(prefix + sortArray[i]) });
    }
  }
  
  $('sort_by').observe('change', function(event) {
    doSort(arrays[$F('sort_by')]);
  });
  
}

GCR_JS.cartScroller = function(container) {
  var container = $(container);
  container.absolutize();
  var positionedOffset = container.positionedOffset();
  var offset = container.cumulativeOffset();
  var fixed = false;
  var margin = 50;
  Element.observe(document, 'dom:loaded', function(event) {
    Element.observe(window, 'scroll', function(event) {
      if (fixed) {
        if (document.viewport.getScrollOffsets().top < offset.top - margin) {
          container.setStyle({position: 'absolute', left: positionedOffset.left + 'px', top: positionedOffset.top + 'px'});
          fixed = false;
        }
      } else {
        if (container.viewportOffset().top < margin) {
          container.setStyle({position: 'fixed', left: offset.left + 'px', top: margin + 'px'});
          fixed = true;
        }
      }
    });
  });
  
}
