/*
 *   easyListSplitter 1.0.2 - jQuery Plugin
 *  written by Andrea Cima Serniotti  
 *  http://www.madeincima.eu
 *
 *  Copyright (c) 2010 Andrea Cima Serniotti (http://www.madeincima.eu)
 *  Dual licensed under the MIT (MIT-LICENSE.txt)
 *  and GPL (GPL-LICENSE.txt) licenses.
 *
 *  Built for jQuery library
 *  http://jquery.com
 *
 */
 
 /*
  To activate the plugin add the following code to your own js file:
  
  $('.your-list-class-name').easyListSplitter({ 
      colNumber: 3,
      direction: 'horizontal'
  });
  
 */

var j = 1;
 
(function(jQuery) {
  jQuery.fn.easyListSplitter = function(options) {
  
  var defaults = {      
    colNumber: 2, // Insert here the number of columns you want. Consider that the plugin will create the number of cols requested only if there are enough items in the list.
    direction: 'vertical'
  };
      
  this.each(function() {
    
    var obj = jQuery(this);
    var settings = jQuery.extend(defaults, options);
    var totalListElements = jQuery(this).children('li').size();
    var baseColItems = Math.ceil(totalListElements / settings.colNumber);
    var listClass = jQuery(this).attr('class');
    
    // -------- Create List Elements given colNumber ------------------------------------------------------------------------------
    
    for (i=1;i<=settings.colNumber;i++)
    {  
      if(i==1){
        jQuery(this).addClass('listCol1').wrap('<div class="listContainer'+j+'"></div>');
      } else if(jQuery(this).is('ul')){ // Check whether the list is ordered or unordered
        jQuery(this).parents('.listContainer'+j).append('<ul class="listCol'+i+'"></ul>');
      } else{
        jQuery(this).parents('.listContainer'+j).append('<ol class="listCol'+i+'"></ol>');
      }
        jQuery('.listContainer'+j+' > ul,.listContainer'+j+' > ol').addClass(listClass);
    }
    
    var listItem = 0;
    var k = 1;
    var l = 0;  
    
    if(settings.direction == 'vertical'){ // -------- Append List Elements to the respective listCol  - Vertical -------------------------------
      
      jQuery(this).children('li').each(function(){
        listItem = listItem+1;
        if (listItem > baseColItems*(settings.colNumber-1) ){
          jQuery(this).parents('.listContainer'+j).find('.listCol'+settings.colNumber).append(this);
        } 
        else {
          if(listItem<=(baseColItems*k)){
            jQuery(this).parents('.listContainer'+j).find('.listCol'+k).append(this);
          } 
          else{
            jQuery(this).parents('.listContainer'+j).find('.listCol'+(k+1)).append(this);
            k = k+1;
          }
        }
      });
      
      jQuery('.listContainer'+j).find('ol,ul').each(function(){
        if(jQuery(this).children().size() == 0) {
        jQuery(this).remove();
        }
      });  
      
    } else{  // -------- Append List Elements to the respective listCol  - Horizontal ----------------------------------------------------------
      
      jQuery(this).children('li').each(function(){
        l = l+1;

        if(l <= settings.colNumber){
          jQuery(this).parents('.listContainer'+j).find('.listCol'+l).append(this);
          
        } else {
          l = 1;
          jQuery(this).parents('.listContainer'+j).find('.listCol'+l).append(this);
        }        
      });
    }
    
    jQuery('.listContainer'+j).find('ol:last,ul:last').addClass('last'); // Set class last on the last UL or OL  
    j = j+1;
    
  });
  };
})(jQuery);

