function pager() {
    this.selected = 0;
    this.lastpage = 0;
    this.visiblePagers = 0;             //Páratlannak kell lenni
    this.prefixes = new Array( '' );    //Pagerek prefixe. Ha allul és fellül is van pager akkor 'top_', 'bottom_'
    this.pagePrefix = '';               //A page-ek prefixe, ha több pager van egy oldalon pl 'offers_'
}

pager.prototype = {

    //Oldalszámok megjelenítése / elrejtése
    setPager: function( num, show, active, prefixes ) {
        if ( prefixes == null ) {
            prefixes = new Array( '' );
        }

        //Minden ide tartozó pagert frissít
        for ( s in this.prefixes ) {
            this.getPagerObj( num, active, this.prefixes[s] ).style.display = show ? 'inline' :  'none';            
        }
    },

    //Oldalszám objektumának visszaadása
    getPagerObj: function( num, active, prefix ) {
        var pager = prefix + 'pager_' + ( active ? 'active_' : ''  ) + num;
        return document.getElementById( pager );
    },


    //Következő oldal elrejtése/megjelenítése
    setNextPager: function( show ) {
        //Fellüldefiniálandó függvény
    },

    //Előző oldal elrejtése/megjelenítése
    setPrevPager: function( show ) {
        //Fellüldefiniálandó függvény
    },

    //Egy adott oldal elrejtése/megjelenítése
    //Ha init = true akkor a setup hívta meg, nem kell anim
    setPage: function( page, show, init ) {
        if ( !init ) this.beforeSetPage( page, show );
        document.getElementById( this.pagePrefix + 'page_' + page ).style.display = show ? 'block' :  'none';
        if ( !init ) this.afterSetPage( page, show );
    },

    //A lapváltás után hívja meg
    afterSetPage: function( page, show ) {
        //Fellüldefiniálandó függvény
    },

    //A lapváltás előtt hívja meg
    beforeSetPage: function( page, show ) {
        //Fellüldefiniálandó függvény
    },

    //Init
    setup: function( pages ) {
        this.lastpage = pages-1;

        //Lapok elrejtése
		for ( i=1; i<pages ; i++ ) {
			this.setPage( i, false, true );
		}

        //Első lap megjelenítése
        this.setPage( 0, true, true );
        this.selected = 0;

        //Kell-e Google Pager
        if ( this.visiblePagers != 0 ) {
            this.setGooglePager();
        } else {
            for ( i = 0; i <= this.lastpage; i++) {
                if ( i == this.selected ) {
                    this.setPager( i, false, false );
                    this.setPager( i, true, true );
                } else {
                    this.setPager( i, true, false );
                    this.setPager( i, false, true );
                }
            }
        }

        //Előző/következő oldal linkjeinek eltüntetése/megjelenítése
        if ( this.selected == 0 ) {
            this.setPrevPager( false );
        } else {
            this.setPrevPager( true );            
        }

        if ( this.selected == this.lastpage ) {
            this.setNextPager( false );
        } else {
            this.setNextPager( true );            
        }
    },


    //Google Pager Beállítása
    setGooglePager: function() {
        var c1 = this.visiblePagers - 1;
        var c2 = c1 / 2;
        var page_start = this.selected-c2 > 0 ? (this.selected+c2 < this.lastpage ? this.selected-c2 : ( this.lastpage-c1 > 0 ? this.lastpage-c1 : 0 ) ) : 0;
        var page_end = page_start + c1 < this.lastpage ? page_start + c1 : this.lastpage ;

        //Az összes oldalszám elrejtése
        for (i = 0; i <= this.lastpage; i++) {
            this.setPager( i, false, true);
            this.setPager( i, false, false);
        }

        //A látható oldalszámok megjelenítése
        for (i = page_start; i <= page_end; i++) {
            if ( i == this.selected ) {
                this.setPager( i, true, true );
            } else {
                this.setPager( i, true, false );
            }
        }

    },

    //Következő oldal
    next: function() {
        if ( this.selected !== this.lastpage ) {
            this.jumpToPage( this.selected+1 );
        }
    },

    //Előző oldal
    prev: function() {
        if ( this.selected !== 0 ) {
            this.jumpToPage( this.selected-1 );
        }
    },

    //Adott oldalara ugratás
    jumpToPage: function( page ) {

        //Oldal váltás
        this.setPage( this.selected, false, false );
        this.setPage( page, true, false );

        //Pagerek alaphelyzetbe állítása
        this.setPager( this.selected, false, true );
        this.setPager( this.selected, true, false );

        this.selected = page;

        //Kell-e Google Pager
        if ( this.visiblePagers != 0 ) {
            this.setGooglePager();
        } else {
            this.setPager( this.selected, false, false );
            this.setPager( this.selected, true, true );
        }

        //Előző/következő oldal linkjeinek eltüntetése/megjelenítése
        if ( this.selected == 0 ) {
            this.setPrevPager( false );
        } else {
            this.setPrevPager( true );            
        }

        if ( this.selected == this.lastpage ) {
            this.setNextPager( false );
        } else {
            this.setNextPager( true );            
        }

    }
}
