/***************************************
  Columns
   @author Karl Swedberg
   @version 0.2 (08/19/2008)
   @requires jQuery v1.2.6+
  
***************************************/


;(function($) {
$.fn.columns = function(options) {
  var opts = $.extend(true, {}, $.fn.columns.defaults, options);


  return this.each(function(event) {
    var $container = $(this),
      nname = this.nodeName,
      $kids = $container.children(),
      col = 1,
      item = 1,
      items = [],
      cClass = opts.columnClass;
    
    if (opts.columnWrapper) {
      var cw = this.className ? this.className + ' ' + opts.columnWrapperClass : opts.columnWrapperClass;
      var $wrap = $(opts.columnWrapper)
        .addClass(cw + ' ' + cw + '-' + opts.columns)
        .attr('id', this.id)
        .insertBefore($container);
    }
    for (var i=0, klength = $kids.length; i < klength; i++) {
      items.push($kids[i]);
      var itemStart = (klength/opts.columns)*col;
      if (i+1 >= itemStart || i === klength-1) {
      item = Math.ceil(itemStart);  
        var $parent = $('<' + nname + ' class="' + cClass + ' ' + cClass + '-' + col + '"></' + nname + '>')
          .append($(items));
        if (i === klength-1) {
          $parent.addClass(cClass + '-last');
        }
        if (opts.columnWrapper) {
          $parent.appendTo($wrap);
        } else {
          $parent.insertBefore($container);
        }
        if ($parent[0].nodeName == 'OL' && col > 1) {
          $parent.attr('start', start);
        }
        col++;
        items = [];
      }
      var start = item+1;
    }
    
    $container.remove();


  });
};

})(jQuery);


$.fn.columns.defaults = {
  columns: 3,
  columnClass: 'floatcols',
  columnWrapper: '<div></div>', // set to null if you don't want a wrapper around all columns
  columnWrapperClass: 'column-wrapper'
};