var StepPager = new Class({
	options: {
		nextClass		: null, //string con el class del next.
		previousClass	: null, //string con el class del previous.
		container	: null, //string con el id del container.
		url			: null, //url donde se hace el request del HTML que genera el paginado.
		count		: null,
		user        : null,
		pagesize    : null,
		currentPage : null,
		LBL_NEXT	: "&lt;" + jsLang.LBL_BEFORE_PAGE,
		LBL_PREVIOUS: jsLang.LBL_NEXT_PAGE + "&gt;",
		onClick		: Class.empty,
		onComplete	: Class.empty 		
	},
	initialize: function (options) {
		this.options	= options;
		this.setOptions(options);
		this.addEvents();
	},
	addEvents: function () {
		var me = this;
		$$(this.options.previousClass).addEvent('click', function(){
			me.getPrevPage(me.options.currentPage);
		});
		
		$$(this.options.nextClass).addEvent('click', function(){
			me.getNextPage(me.options.currentPage);
		});
	},
	getNextPage: function (number) {
		number++;
		var me = this;
		if(number==1){
			$$(this.options.previousClass).setStyle('display','none');
		}else{
			$$(this.options.previousClass).setStyle('display','block');	
		}
		if(number==me.lastPage()){
			$$(this.options.nextClass).setStyle('display','none');
		}else{
			$$(this.options.nextClass).setStyle('display','block');
		}
		me.options.currentPage = number;
		var json = {'u': me.options.user, 'l':number};
		var jsonRequest = new Json.Remote(me.options.url, { 
				onComplete	:	function (json){
					
					if (json.status == '1'){
						$(me.options.container).setHTML(json.html);
					}else{
						alert(json.msg);	
					}
				},
				onFailure	:	function () {
					alert("Error intente nuevamente");
				}
			}).send(json);

		this.fireEvent('onComplete');
	},
	getPrevPage: function (number) {
		number--;
		var me = this;
		if(number==1){
			$$(this.options.previousClass).setStyle('display','none');
		}else{
			$$(this.options.previousClass).setStyle('display','block');	
		}
		if(number==me.lastPage()){
			$$(this.options.nextClass).setStyle('display','none');
		}else{
			$$(this.options.nextClass).setStyle('display','block');
		}
		me.options.currentPage = number;
		var json = {'u': me.options.user, 'l':number};
		var jsonRequest = new Json.Remote(me.options.url, { 
				onComplete	:	function (json){
					
					if (json.status == '1'){
						$(me.options.container).setHTML(json.html);
					}else{
						alert(json.msg);	
					}
				},
				onFailure	:	function () {
					alert("Error intente nuevamente");
				}
			}).send(json);

		this.fireEvent('onComplete');
	},
	/**
	 * devuelve el numero de la ultima pagina.
	 */
	lastPage: function() {
		record_for_paging = (this.options.count / this.options.pagesize);
		if (record_for_paging > Math.floor(record_for_paging)) {
			last = (Math.floor(record_for_paging)) + 1;
		}
		else {
			last = record_for_paging;
		}
		return last;
	}
});
StepPager.implement(new Options, new Events);