
/*
 *  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('h3, p').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++)
        {
            var ao = ""
            if (i == 1) {
              ao="alpha";
              jQuery(this).addClass('grid_4 alpha listCol1').wrap('<div class="listContainer'+j+'"></div>');
            }
          else {
            if (i == settings.colNumber -1){
              ao =" omega";
            }
              console.log(i, jQuery(this).parents('.listContainer'+j) );
            jQuery(this).parents('.listContainer'+j).append('<div class="grid_4"+ ao +" listCol'+i+'"></div>');
            }


                jQuery('.listContainer'+j+' > ul,.listContainer'+j+' > ol').addClass(listClass);
        }*/
      for (i=1;i<=settings.colNumber;i++)
      {
          if(i==1){
              jQuery(this).addClass('listCol1 grid_4 alpha').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('<div class="listCol'+i+'"></div>');
          }
              jQuery('.listContainer'+j+' > ul,.listContainer'+j+' > div').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('h3, p').each(function(){
                listItem = listItem+1;

                    if(listItem<=(baseColItems*k) || this.nodeName == 'P'){
                        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('div').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('div:last,ul:last').addClass('omega'); // Set class last on the last UL or OL
        jQuery('.listContainer1  .grid_4').unwrap();
        j = j+1;


    });
    };
})(jQuery);


