/*
* 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('
');
} else if(jQuery(this).is('ul')){ // Check whether the list is ordered or unordered
jQuery(this).parents('.listContainer'+j).append('');
} else{
jQuery(this).parents('.listContainer'+j).append('
');
}
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);