﻿/*
* 	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',
			minElements: 6
		};

		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');

			// Below line added by Mike Joseph on 11/18... only perform if there are more than 6 elements
			if (totalListElements > settings.minElements) 
			{
				// -------- 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);
