(function($) {
		  
	$.fn.Paginate = function(options){

		var defaults = {				
			step: 5,
			delay: 100,
			ajax: false,
			script: '',
			page_preload: 2,
			controlsPrev: 'prev',
			controlsNext: 'next',
			controlsStrana: 'strana'
		}; 
		
		var options = $.extend(defaults, options); 
		var step = options.step;
		var lower, upper;
		var children = $(this).children();
		var count = children.length;
		var obj, next, prev, strana;		
		var page = 1;
		var pages = Math.floor(count/step);
		var maxPage = 0;
		obj = this;
		
		
		if (options.ajax) {

			  
			  $.ajax({
			  url: options.script+'&count=1',
 			  dataType: 'json',
			  async: false,
  			   success: function(data) {
  					var items = [];
				  	$.each(data, function(key, val) {
						    count = val;
					});
					}
			});

			  pages = Math.ceil(count/step);
			  if (pages != '' || pages>0) {obj.parent().show()};
		}		  
  
						
		function show(){
			if (options.ajax && options.page_preload < page && page > maxPage && pages > 0) {
					nacti();
			};
			
			if (page > maxPage) maxPage = page;
			
			lower = ((page-1) * step);
			upper = lower+step;
			
		
			$(strana).text(page + ' / ' + pages);
			children = $(obj).children();
			$(children).each(function(i){
				var child = $(this);
				child.hide();
				if(i>=lower && i<upper) child.show() ; 
				if(upper >= count) { next.hide(); } else { next.show(); };
				if(lower >= 1) { prev.show(); } else { prev.hide(); };
				
			});	
			
		};
		
		function nacti() {
			$(children).each(function(i){
				$(this).hide();
			});
						
			$('<div class="loading"></div>').appendTo(obj);
			$.get(options.script+'&page='+page, function(data) { $(obj).append(data);$(".paginate .loading").remove();});
		};
		
		
		// nacte se jen jednou
		this.each(function(){ 
			//if(count>step){
				if((count/step) > pages) pages++;
				
				var tl_prev = $('<div class="'+ options.controlsPrev +'"></div>').insertBefore(obj);
				var tl_next = $('<div class="'+ options.controlsNext +'"></div>').insertAfter(obj);
				strana = $('<div class="'+ options.controlsStrana +'">' + page + ' / ' + pages + ' </div>').insertAfter(obj);
				
					prev = $('<div class="prev-in"></div>')
						.hide()
						.appendTo(tl_prev)
						.click(function(){
							page--;
							show();
						});

					next = $('<div class="next-in"></div>')
						.hide()
						.appendTo(tl_next)
						.click(function(){
							page++;
							show();
						});
			
				show();
			//};
		});	
		
	};	

})(jQuery);
