﻿(function ($) {
	
	$.sitemap = function (options) {
		return $.sitemap.impl.init(options);
	};
	
	$.fn.sitemap = function (options) {
		return $.sitemap.impl.init(this, options);
	};
	
	/*
	 * default options
	 */
	$.sitemap.defaults = {
	    ceiling: 600
	};
	
	$.sitemap.impl = {
		
		/*
		 * options
		 */
		opts: null,
		
		/*
		 * helper
		 */
		helper: {},
		
		/*
		 * Init
		 */
		init: function (template, options) {
            
            var self = this;
            
            this.opts = $.extend({}, $.sitemap.defaults, options);
            
            self.helper.template = template;
            self.helper.sitemap = template.find('.sitemap');
            self.helper.list = template.find('.ul-1');
            return;
            self.layout();
            
			return self;
		},
		
		/*
		 * Layout
		 */
		layout: function () {
		    
		    var self = this;
		    var $columns = $('<ul>');
		    var $column = $('<li>');
		    var H = 0;
		    
		    $column
		        .addClass('column')
		        ;
		    
		    self.helper.list.children()
                .each(function(i, li){
                    
                    var $li = $(li);
                    var h = $li.height();
                    
                    if (H + h > self.opts.ceiling)
                    {
                        $columns
                            .append($column.clone())
                            ;
                        
                        $column
                            .empty()
                            ;
                        
                        H = 0;
                    }
                    
                    H += h;
                    
                    $column
                        .append($li.clone())
                        ;
                    
                    if (i + 1 == self.helper.list.children().length)
                        $columns
                            .append($column.clone())
                            ;
                    
                })
                ;
		    
		    self.helper.list
		        .css({
		            display: 'none'
		        })
		        ;
		    
		    $columns
		        .addClass('column-set')
		        .appendTo(self.helper.sitemap)
		        ;
		    
		    return;
		}
		
	};
})(jQuery);