YAHOO.namespace("youporn.tabpaginator");

YAHOO.youporn.tabpaginator = function () {
	var paginator;
	var param;
	
	return {
		init: function(content_el, paginator_el, rows_per_page, total_records, video_id, base_url) {
			param = {
				content_el: content_el,
				video_id: video_id,
				base_url: base_url
			};

			paginator = new YAHOO.widget.Paginator({
				rowsPerPage: rows_per_page,
				totalRecords: total_records,
				containers: [ paginator_el ],
				template: "<div class=\"PreviousPageLink\">{PreviousPageLink}</div> <strong>{CurrentPageReport}</strong> <div class=\"NextPageLink\">{NextPageLink}</div>",
				pageReportTemplate: "Page {currentPage} of {totalPages}",
				previousPageLinkLabel: "&#171; Previous",
				nextPageLinkLabel: "Next &#187;"
			});
	
			paginator.subscribe('changeRequest', this.handlePagination);
			paginator.render();
			
			YAHOO.util.Dom.addClass(paginator_el, 'hidden');
		},
		
		handlePagination: function(newState) {
			var url = param.base_url + '/' + param.video_id + '?ajax=1&page=' + newState.page;
			var transaction = YAHOO.util.Connect.asyncRequest('GET', url, {
				success: function(o) {
					try { 
						var data = YAHOO.lang.JSON.parse(o.responseText);
						
						if (data.num_related > 0) {
							var el = YAHOO.util.Dom.get(param.content_el);
							if (el) {
								el.innerHTML = data.html;
								YAHOO.youporn.thumbchange.register(data.num_related, 'related');
							}
						}
						
						paginator.setState(newState);
					} 
					catch (e) {}
				},
				
				failure: function(o) {},
				
				timeout: 15000			
			}); 	
		}
	};
}();

