/*
 * 	easyListSplitter 0.1 - 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:
	
	jQuery('.your-list-class-name').listColumnizer({ 
			colNumber: 3
	});
	
 */

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.
	};
			
	this.each(function() {
		
		var obj = jQuery(this);
		var settings = jQuery.extend(defaults, options);
		var totalListElements = jQuery(this).find('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);
		}
		
		// -------- Append List Elements to the respective listCol ----------------------------------------------------------------------
		
		var listItem = 0;
		var k = 1;		
		
		jQuery(this).find('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();
			}
		});	
		
		jQuery('.listContainer'+j).find('ol:last,ul:last').addClass('last'); // Set class last on the last UL or OL
		
		j = j+1;
		
	});
	};
})(jQuery);