/*
---
description: List Columnator Class. Takes a single list and converts it into multiple columns

license: MIT-style

authors:
- Matthew Wells

requires:
- core/1.2.1:*

provides: [List_Columnator]

...
*/

var List_Columnator = new Class({

	Implements: [Options],
	
	options: {
		columns: 3,
		style:'vertical',
		colClass: 'column'
	},
	
	initialize: function(list, options)
	{
		this.setOptions(options);
		this.list = document.id(list);
		if(!this.list || !this.list.getChildren().length){
			return;
		}
		this.columns = [];
		this.generate();
		this.list.dispose();
	},
	
	generate: function()
	{
		for(var i=0;i<this.options.columns;i++){
			var col = new Element("ul",{'class':this.options.colClass + ' col-'+(i+1)});
			this.columns[i] = col;
			col.adopt(this.get_items(this.options.style,i)).inject(this.list, 'before');
		}
	},

	get_items:function(style, i)
	{
		if (style == 'horizontal') {
			/*var c = 0;
			var filtered = this.list.getChildren().filter(function(item, index) {
				c++;
				if (c == i+1) c = 1;
				return c == i;
			},this);*/
		} else {
			var num = Math.ceil(this.list.getChildren().length / this.options.columns);
			var filtered = this.list.getChildren().slice(i*num,(i*num) + num);
		}
		return filtered.map(Element.clone);
	}
});
