function JSPaginator( pPageSize, pULid, pUL, pObjects, pNamedAnchor, pResultsContainer, pNothingFoundMessage, pFilter ) { this.items = null; this.parent = null; this.page = 1; this.pageSize = pPageSize; this.namedAnchor = pNamedAnchor; this.domParent = null; this.itemFilter = pFilter && typeof( pFilter ) == "function" ? pFilter : null; this.NothingFoundMessage = pNothingFoundMessage; this.ResultsContainer = pResultsContainer; if( pULid ) { pUL = document.getElementById( pParentID ); } if( pUL ) { this.parent = pUL; this.items = this.parent.getElementsByTagName( "li" ); if( this.items.length < 2 ) { if( this.ResultsContainer ) { if( document.getElementById( this.ResultsContainer ) && this.NothingFoundMessage ) { document.getElementById( this.ResultsContainer ).innerHTML = this.NothingFoundMessage; } } } } if( pObjects ) { this.items = pObjects; } JSPaginator._instance = this; } JSPaginator.GetInstance = function() { if( JSPaginator._instance ) { return JSPaginator._instance; } else { throw "Must Initialize JSPaginator Before Using It!"; } } JSPaginator.Paginate = function( pPage ) { if( ! pPage ) { pPage = JSPaginator.GetInstance().page; } JSPaginator.GetInstance().Paginate( pPage ); } JSPaginator.prototype.Paginate = function( pPage ) { if( ! pPage ) { pPage = 1; } this.page = pPage; var pageBottom = ( this.page-1 ) * this.pageSize; var pageTop = ( ( this.page ) * this.pageSize ) - 1; var itemsToUse = this.GetFilteredItems(); if( itemsToUse.length != this.items.length ) { for( var i=0; i < this.items.length; i++ ) { this.items[ i ].style.display = 'none'; } } for( var i=0; i < itemsToUse.length; i++ ) { var outOfRange = ( i < pageBottom ) || ( i > pageTop ); if( itemsToUse[ i ] ) { itemsToUse[ i ].style.display = outOfRange ? 'none' : ''; } } if( this.domParent ) { JSPaginator.WritePages(); } } JSPaginator.prototype.GetFilteredItems =function() { var itemsToUse = typeof( this.itemFilter ) == "function" ? this.itemFilter( this.items ) : this.items; return itemsToUse; } JSPaginator.ChangePage =function( pPage, pNamedAnchor ) { JSPaginator.GetInstance().Paginate( pPage ); if( JSPaginator.GetInstance().namedAnchor ) { window.location = "#" + JSPaginator.GetInstance().namedAnchor; } } JSPaginator.NextPage = function() { JSPaginator.GetInstance().Paginate( ++this.GetInstance().page ); } JSPaginator.LastPage = function() { JSPaginator.GetInstance().Paginate( --this.GetInstance().page ); } JSPaginator.HidePages = function() { if( JSPaginator.GetInstance(). domParent ) { JSPaginator.GetInstance(). domParent.style.display = 'none'; } } JSPaginator.WritePages = function( pDomParentID, pDomParent ) { if( pDomParentID ) { pDomParent = document.getElementById( pDomParentID ); } if( pDomParent || JSPaginator.GetInstance(). domParent ) { if( ! JSPaginator.GetInstance(). domParent ) { JSPaginator.GetInstance(). domParent = pDomParent; } JSPaginator.GetInstance(). domParent.style.display = ''; var html = "Number per page:"; JSPaginator.GetInstance().domParent.innerHTML = html; } } JSPaginator.HandleEnter = function( event ) { if( ! event ) event = window.event; if( event.keyCode ) keyCode = event.keyCode; else if( event.which ) keyCode = event.which; if( keyCode == 13 ) { JSPaginator.ChangePageSize(); } } JSPaginator.ChangePageSize = function() { if( document.getElementById( "JSPaginatorPageSizeChanger" ).value == "" ) { } else if( ! isNaN( document.getElementById( "JSPaginatorPageSizeChanger" ).value ) && document.getElementById( "JSPaginatorPageSizeChanger" ).value >= 1 ) { JSPaginator.GetInstance().pageSize = document.getElementById( "JSPaginatorPageSizeChanger" ).value; } JSPaginator.Paginate(); }