﻿// Class ResultsPane
// Base class: AjaxPane


// mapState : MapState Object - passed to results snippet
// resultsSelectBox : Selector - filters results

BenefulMap.PaginationPane = BenefulMap.AjaxPane.extend({
	init: function(snippet, pane, mapState, paginationLinks) {
        var slug = "pagination";
        
        var params = {
            p: mapState.getPage(),
            t: mapState.getTotalSpots()
        }
        
        this._super(snippet, pane, params, slug);
        this.mapState = mapState;
        this.paginationLinks = paginationLinks;
        
        this.updatePaginationListener();
	},
	getMapState: function() {
	   return this.mapState;
	},
	setMapState: function(mapState) {
	   this.mapState = mapState;
	},
	updateMapState: function(mapState) {
	   var params = {};
	   params.p = mapState.getPage();
	   params.t = mapState.getTotalSpots();
	   this.setParams(params);
	   
	   this.setMapState(mapState);
	},
	getPaginationLinks: function() {
	   return this.paginationLinks;
	},
	populatedListener: function() {
	   var self = this;
	   $(document).bind('populated.' + this.getSlug(), function(event) {
	       console.info("Pane " + self.getSlug() + " populated");
	       self.paginationLinksListener();
   	  });
	},
	updatePaginationListener: function() {
	    var self = this;
	    $(document).bind('pagination.update', function(event, mapState) {
    		self.updatePagination(mapState);;
    	});
	},
	updatePagination: function(mapState) {
	   	this.updateMapState(mapState);
		this.populate()
	},
	paginationLinksListener: function() {
	    var links = this.getPaginationLinks();
	    var mapState = this.getMapState();
	    var self = this;
	    
	    $(links).unbind();
        $(links).bind( 'click', function(event) {
            event.preventDefault();
            var pageNum = $(this).attr('href').split("#")[1].replace("page","");
            mapState.setPage(pageNum);
			mapState.setGoButtonClicked(false);
            self.updatePagination(mapState);
            $(document).trigger('results.update', [mapState]);
        });
	}
});




