// paging.js 
// list of page number links determine which page to show
// code by CN

function isDefined(property) {
  return (typeof property != 'undefined');
}

/**********************************************************************
   Paging initialization
 *********************************************************************/

var paging = [];

function pagingInit() {
   if (isDefined(document.getElementsByTagName)) {
      var uls = document.getElementsByTagName('ul');
      for (var ulIndex = uls.length - 1; ulIndex >= 0; ulIndex--) {
         var ulElement = uls[ulIndex];
         
         // paging links
         if (ulElement.className.indexOf('paging-links-') > -1) {
         
            // get id of paging system from classname  
            var className = ulElement.className;
            var startOfPagingClass = className.indexOf('paging-links-') + 13;
            var endOfPagingClass = className.indexOf(' ', startOfPagingClass);
            var pagingId = 'paging-' + ((endOfPagingClass > -1) ? className.substring(startOfPagingClass, endOfPagingClass) : className.substring(startOfPagingClass));

            // if this is the first set of links for this paging system, create entry in paging array
            if (!paging[pagingId]) {
               paging[pagingId] = {
                  pagingId : pagingId, 
                  links    : [],
                  pages    : []
               };
            }

            for (var liIndex = ulElement.childNodes.length - 1; liIndex >= 0; liIndex--) {
               var liItem = ulElement.childNodes[liIndex];
               if (liItem.nodeType != 1) continue;
               
               // add list item to the links array for the paging system entry
               paging[pagingId].links.push(liItem);
               
               // store a reference to this paging system in the list item
               liItem.paging = paging[pagingId];
               
               liItem.onclick = function() {
                  
                  // hide all paging pages
                  for (var pageIndex = this.paging.pages.length - 1; pageIndex >= 0; pageIndex--) {
                     var page = this.paging.pages[pageIndex];
                     page.className = page.className.replace(/current/, '');
                  }
                  
                  // show current page
                  document.getElementById(this.paging.pagingId + this.innerHTML.replace(/\s/g, '')).className += ' current';
                  
                  // set all links as not active
                  for (var pageIndex = this.paging.links.length - 1; pageIndex >= 0; pageIndex--) {
                     var link = this.paging.links[pageIndex];
                     link.className = link.className.replace(/current/, '');
                  }
                  
                  // set current link as active
                  this.className += ' current';
               };
            }
         }

         // paging pages
         else if (ulElement.className.indexOf('paging-') > -1) {
         
            // get id of paging system from classname  
            var className = ulElement.className;
            var startOfPagingClass = className.indexOf('paging-') + 7;
            var endOfPagingClass = className.indexOf(' ', startOfPagingClass);
            var pagingId = 'paging-' + className.substring(startOfPagingClass, endOfPagingClass);

            // if this is the first page for this paging system, create entry in paging array
            if (!paging[pagingId]) {
               paging[pagingId] = {
                  pagingId : pagingId,
                  links    : [],
                  pages    : []
               };
            }

            // add this page to the paging system entry
            paging[pagingId].pages.push(ulElement);
         }
      }
   }
}


// call pagingInit when document finishes loading
if (isDefined(window.addEventListener)) {
   window.addEventListener('load', pagingInit, false);
}
else if (isDefined(window.attachEvent)) {
   window.attachEvent('onload', pagingInit);
}

