$(document).ready(function(){ oContNav.init(); }); oContNav = { pItemsPerPage : 9 , pData : new Array() , pCurrLinkIndex : -1 , init : function() { //Get list of html to write to contact nav. oContNav.pData = oContNav.importList(); //Empty content nav div. $( 'div#contentNav').empty(); //Write loading elements $( 'div#contentNav').append( '
' ); //holds content nav list $( 'div#contentNav').append( '
' ); //holds pagination interface //Get start page for pagination by index of link within list var myStartPage = Math.floor( oContNav.pCurrLinkIndex / oContNav.pItemsPerPage ); myStartPage = Math.max( 0, myStartPage ); myStartPage = Math.min( oContNav.pData.length, myStartPage ); if( isNaN( myStartPage ) ){ myStartPage = 0; }; //Use pagination plugin to setup pagination interface $("div#contNavPagination").pagination( oContNav.pData.length, { items_per_page: oContNav.pItemsPerPage, current_page: myStartPage, callback: oContNav.setContent, link_to: 'javascript:;' }); if( oContNav.pItemsPerPage >= oContNav.pData.length ){ $( 'div#contNavPagination' ).hide(); }; } , //Set content nav based on pagination index //Pagination index sent from pagination plugin setContent : function( pmPageIndex, jq ) { $( 'div#contNavList' ).html( '' ); var myStart = ( pmPageIndex ) * oContNav.pItemsPerPage; var myEnd = myStart + oContNav.pItemsPerPage; for( var i=myStart; i < myEnd; i++ ) { $( 'div#contNavList ul' ).append( oContNav.pData[i] ); };//end for } , //Returns a list of html links to write to the content nav importList : function() { //Track return list. var myReturn = new Array(); //Iterate over the top content ul $( 'ul#contentList > li' ).each( function( pmIndex ){ var myLiElement = $( this ).children( 'a:first' ); var myClass = $( this ).attr( 'class' ); var mySet = oUrlUtil.getFileName() == oUrlUtil.getFileName( myLiElement.attr( 'href' ) ); //Also track current index of page link against content nav if( mySet ) { oContNav.pCurrLinkIndex = pmIndex; myClass += ' active'; }; var myHtml = '
  • ' + myLiElement.text() + '
  • '; myReturn.push( myHtml ); //Check for sub navigation elements //Page within the sub set must be open to make the sub menu open var myArrSub = new Array(); $( this ).children( 'ul' ).children().each( function( pmSubIndex ){ var mySubLiElement = $( this ).children( 'a:first' ); var myClass = $( this ).attr( 'class' ) + " sub"; if( !mySet ){ mySet = oUrlUtil.getFileName() == oUrlUtil.getFileName( mySubLiElement.attr( 'href' ) ); //Also track current index of page link against content nav if( mySet ) { oContNav.pCurrLinkIndex = pmIndex + pmSubIndex + 1; myClass += ' activeSub'; }; };//end if var myHtmlSub = '
  • ' + mySubLiElement.text() + '
  • '; myArrSub.push( myHtmlSub ); } ); if( mySet ){ myReturn = myReturn.concat( myArrSub ); }; } ); return( myReturn ); } };//end object literal oContNav oUrlUtil = { /*Returns the filename component of the URL sent. Defaults to the current URL if no parameter sent.*/ getFileName : function( pmUrl ) { if( pmUrl == null ){ pmUrl = window.location.href }; return( pmUrl.replace(/.+[\/]([^\/]+)$/,'$1') ); }//end function getFileName };//end object literal oUrl