// ------------------------------------------------------------------- // Virtual Pagination Script- By Dynamic Drive, available at: http://www.dynamicdrive.com // Updated: Nov 21st, 2008 to v2.0 // ** Adds ability to define multiple pagination DIVs (the secondary DIVs mirror primary DIV's contents) // ** Last viewed page persistence, so last viewed page can be remembered/ recalled within browser session. // ** Improvements to instance.navigate() to select a page using an arbitrary link or inside another script. // ** Ability to select a page using a URL parameter (ie: target.htm?virtualpiececlass=index). // Updated: Oct 19th, 2009 to v2.1 // ** New wraparound:true/false option added, which when false disables moving back/forth beyond first and last content, respectively // // PUBLIC: virtualpaginate() // Main Virtual Paginate Object function. // ------------------------------------------------------------------- document.write('') function virtualpaginate(config){ //config: {piececlass:, piececontainer:, pieces_per_page:, defaultpage:, wraparound:, persist} this.piececlass=config.piececlass var elementType=(typeof config.piececontainer=="undefined")? "div" : config.piececontainer //The type of element used to divide up content into pieces. Defaults to "div" this.pieces=virtualpaginate.collectElementbyClass(config.piececlass, elementType) //get total number of divs matching class name //Set this.chunksize: 1 if "chunksize" param is undefined, "chunksize" if it's less than total pieces available, or simply total pieces avail (show all) this.chunksize=(typeof config.pieces_per_page=="undefined")? 1 : (config.pieces_per_page>0 && config.pieces_per_page0)? this.currentpage-1 : (this.currentpage==0)? this.pagecount-1 : 0 else if (keyword=="next") this.currentpage=(this.currentpage=showstartindex && i<=showendindex) this.pieces[i].style.display="block" else this.pieces[i].style.display="none" } if (this.persist){ //if persistence enabled virtualpaginate.setCookie("dd_"+this.piececlass, this.currentpage) } if (this.cpspan.length>0){ //if element and populates it with sequential pagination links // paginate_paginate_build_flatview()- Parses the modified element and assigns click behavior to the pagination links // paginate_build_selectmenu(paginatedropdown)- Accepts an empty SELECT element and turns it into pagination menu // paginate_build_regularlinks(paginatelinks)- Accepts a collection of links and screens out/ creates pagination out of ones with specific "rel" attr // paginate_build_cpinfo(cpspan)- Accepts element and displays current page info (ie: Page 1/4) // ------------------------------------------------------------------- virtualpaginate.prototype.paginate_build=function(divid, divpos, optnavtext){ var instanceOfBox=this var paginatediv=document.getElementById(divid) if (this.chunksize==this.pieces.length){ //if user has set to display all pieces at once, no point in creating pagination div paginatediv.style.display="none" return } var paginationcode=paginatediv.innerHTML //Get user defined, "unprocessed" HTML within paginate div if (paginatediv.getElementsByTagName("select").length>0) //if there's a select menu in div this.paginate_build_selectmenu(paginatediv.getElementsByTagName("select")[0], divpos, optnavtext) if (paginatediv.getElementsByTagName("a").length>0) //if there are links defined in div this.paginate_build_regularlinks(paginatediv.getElementsByTagName("a")) var allspans=paginatediv.getElementsByTagName("span") //Look for span tags within passed div for (var i=0; i'+anchortext[i]+' ' //build pagination link using custom anchor text else flatviewhtml+=''+(i+1)+' ' //build pagination link using auto incremented sequential number instead } flatviewcontainer.innerHTML=flatviewhtml this.paginate_build_flatview(flatviewcontainer, divpos, anchortext) } virtualpaginate.prototype.paginate_build_flatview=function(flatviewcontainer, divpos, anchortext){ var instanceOfBox=this var flatviewhtml="" this.flatviewlinks[divpos]=flatviewcontainer.getElementsByTagName("a") for (var i=0; i