/*
	Plugin created by Etienne TREMEL for BSO - November 2011
*/

(function($){
	$.fn.cleanColumn = function(options) {
		
		var defaults = {
			itemToFetch:'a',
			columnWrapper:'<div class="col" />',
			listWrapper:'<ul />',
		   	itemWrapper:'<li />',
			nColumn:4,
			spaceBetweenColumn:'10px'
		};
		
		var options = $.extend(defaults, options);
		
		var columnWrapper = options.columnWrapper;
		var itemToFetch = options.itemToFetch;
		var listWrapper = options.listWrapper;
		var itemWrapper = options.itemWrapper;
		var nColumn = options.nColumn;
		var spaceBetweenColumn = options.spaceBetweenColumn;
		
		var container = $(this);
		var wrapper = $('<div class="columns" />');
		
		var containerWidth = $(this).width();
		
		if(nColumn==1) {
			var nSpaceToRemove = 0;
		} else if(nColumn==2) {
			var nSpaceToRemove = 1;
		} else {
			var nSpaceToRemove = 2;
		}
		
		var columnWidth = parseInt((containerWidth/nColumn) - parseInt(spaceBetweenColumn)*(nColumn-nSpaceToRemove));
		
		var listElements = [];

		var init = function() {
			container.find(itemToFetch).each(function(index, item) {
				listElements.push($(item));
			});
			generateList();
		};
		
		var generateList = function() {
			var nElementPerColumn = parseInt(listElements.length/nColumn);
			
			for(var i=0; i<nColumn; i++) {
				var column = $(columnWrapper);
				
				if(i==0) {
					marginLeft=0;
				} else {
					marginLeft=spaceBetweenColumn;
				}
				
				column.css({
					width:columnWidth+'px',
					float:'left',
					marginLeft:marginLeft
				});
				
				var items = $(listWrapper);
				for(var j=i*nElementPerColumn; j<i*nElementPerColumn+nElementPerColumn; j++) {
					var item = $(itemWrapper).wrapInner($(listElements[j]));
					items.append(item);
				}
				column.append(items);
				$(wrapper).append(column);
			}
			
			container.html($(wrapper));
		};
		
		init();
		
	}
})(jQuery);
