var $j = jQuery.noConflict();

function PaginationApp() {
	var self = this;
	self.page = 0;
	self.length = null;
	self.num_items = 5;
	self.num_page_entries = 5;

	self.data = new Object();
	
	var c = new ContentManager();
	
	function getPages() {
		return Math.ceil(self.length / self.num_items);
	};
	
	$j("#showcase_next").click(function() {
		self.page++;
		if(self.page == self.num_pages)
			self.page = 0;
			
		self.getPage();
	});
	
	$j("#showcase_previous").click(function() {
		if(self.page == 0)
			self.page = self.num_pages;
			
		self.page--;
		self.getPage();
	});
	
	self.getPage = function() {
		self.num_pages = getPages();
		$j("#showcase_content").html("");
		self.drawPages();
		
		var end = Math.min((self.page + 1) * self.num_items, self.length);

		for(var i = self.page * self.num_items; i < end; i++) {
			var content = c.post(self.data[i]);
			$j("#showcase_content").append($j(content));
			$j(".postbox", $j("#showcase_content")).fadeIn("slow");
		};
	};
	
	self.drawPages = function() {
		$j("#showcase_page_num").html("");
		
		var half = Math.ceil(self.num_page_entries / 2);
		var limit = self.num_pages - self.num_page_entries;
		
		var start = self.page > half ? Math.max(Math.min(self.page - half, limit), 0) : 0;
		var end = self.page > half ? Math.min(self.page + half, self.num_pages) : Math.min(self.num_page_entries, self.num_pages);

		for(var i = start; i < end; i++) {
			var page = "<a id='" + i + "' class='page_link'>" + (i + 1) + "</a>";

			$j("#showcase_page_num").append(page + " ");
			
			//setLink($j(page));
		};
		
		self.setPage(self.page);
		setLink();
	};
	
	self.setPage = function(id) {
		//var object = "#" + id;
		//$j(object, $j("#showcase_page_num")).removeClass().addClass('selected');
		
		$j(".page_link").each(function(i) {
			if (this.id == id) {
				$j(this).removeClass().addClass('selected');
			};
		});
	};
	
	self.newItem = function(n) {
		var content;
		if (self.page == 0) {
			for (var i = 0; i < n; i++) {
				content = c.post(self.data[i]);
				addItem($j(content));
			};
		};
	};
	
	function setLink() {
		$j(".page_link").each(function(i) {
			$j(this).click(function() {
				//$j.log(this.id);
				self.page = Number(this.id);
				self.getPage();
			});
		});
/*
		var object = "#" + item.attr('id');
		
		$j(object, $j("#showcase_page_num")).click(function() {
			$j.log(this.id);
			self.page = Number(this.id);
			self.getPage();
		});
*/
	};
	
	function addItem(item) {
		$j("#showcase_content").prepend($j(item));
		$j(item, $j("#showcase_content")).fadeIn(function() {
			$j(".postbox:last", $j("#showcase_content")).fadeOut(function() {
				$j(this).remove();
			});
		});
	};
};