function paginateList(listId,pageSize){
   if(!document.getElementById || !document.createElement) return;
   var list = document.getElementById(listId);
   var items = list.getElementsByTagName("LI");
   if(items.length > pageSize){
      var pageCount = Math.ceil(items.length / pageSize);
      var lastPage = pageCount-1;
      var currentPage = 0;
      for(var i = 0; i < items.length; i++){
         if(items[i].className == "active"){
            var defaultPage = Math.floor(i / pageSize);
            break;
         }   
      }
      
      if(!defaultPage) defaultPage = 0;
      
      var setPage = function(page){
         if(page >= 0 && page <= lastPage){
            currentPage = page;
            var pageDisplay = currentPage + 1;
            var pageStart = page * pageSize;
            var pageEnd = pageStart + pageSize - 1;
            for(i = 0; i < items.length; i++){
               items[i].style.display = (i >= pageStart && i <= pageEnd) ? "block" : "none";
            }
            refreshLinks();
         }
      }

      // update button states
      var refreshLinks = function(){
         while(pagination.hasChildNodes()) pagination.removeChild(pagination.firstChild);         
         if(currentPage == 0) pagination.appendChild(createDisabledLink("edelliset", "prev"));
                         else pagination.appendChild(createLink("edelliset", "prev", currentPage-1));
         pagination.appendChild(document.createTextNode(" "));
         pagination.appendChild(createIndicator(currentPage, pageCount));
         pagination.appendChild(document.createTextNode(" "));
         if(currentPage == lastPage) pagination.appendChild(createDisabledLink("seuraavat", "next"));
                                else pagination.appendChild(createLink("seuraavat", "next", currentPage+1));
      }
     
      var createLink = function(txt,cl,page){
         var l = document.createElement("A");
         l.innerHTML = txt;
         l.className = cl;
         l.href = "javascript:void(0);";
         l.onclick = function(){ setPage(page); this.blur(); }
         return l;
      }

      var createDisabledLink = function(txt,cl){
         var dl = document.createElement("SPAN");
         dl.innerHTML = txt;
         dl.className = cl;
         return dl;
      }

      var createIndicator = function(cur,tot){
         cur++;
         var ind = document.createElement("SPAN");
         ind.innerHTML = cur + "/" + tot;
         ind.className = 'indicator';
         return ind;
      }
      
      var pagination = document.createElement("div");
      pagination.className = "listPagination";
      list.parentNode.insertBefore(pagination,list);
     
      setPage(defaultPage);
   }
}

function enablePopups(){
   if(!document.getElementsByTagName) return;
   var linkElements = document.getElementsByTagName("A");
   for(var i = 0; i < linkElements.length; i++){
      var r = linkElements[i].rel;
      if(r.indexOf("external")!=-1){
         linkElements[i].onclick = function(){ return openPopup(this.href); }
      }
   }
}

function openPopup(address){
   var newWindow = window.open(address,'external');
   if(window.focus) newWindow.focus();
   return false;
}

window.onload = function(){
   enablePopups();
}

