function virtualpaginate(className, chunksize, elementType, ltc, ap, an, ln)
{
this.chunksize=chunksize;
this.listToCollect=ltc;
this.anchorsPrevious=ap;
this.anchorsNext=an;
this.labelNumber=ln;
//alert(this.labelNumber);
var elementType=(typeof elementType=="undefined")? "div" : elementType 
this.pieces=virtualpaginate.collectElementbyClass(className, elementType) //get total number of divs matching class name
this.pagecount=Math.ceil(this.pieces.length/this.chunksize) //calculate number of "pages" needed to show the divs
this.totalStories=virtualpaginate.collectElementbyClass(this.listToCollect, "tr");
this.showpage(-1) //show no pages (aka hide all)
this.currentpage=0 //Having hidden all pages, set currently visible page to 1st page
//alert(this.currentpage);
this.showpage(this.currentpage) //Show first page}
}


function navigatePages()
{
  var numberOfPages=document.getElementsByTagName("tr").length;
  var pagesToDisplay=5;
  var batches=1;
  if ( numberOfPages >= pagesToDisplay)
  {
  	  if ( (numberOfPages % pagesToDisplay)==0)
	  {
	     batches=numberOfPages/pagesToDisplay;
	  }
	  else
	  {
	     batches=Math.floor(numberOfPages/pagesToDisplay)+1;
	  }
  }  
}

virtualpaginate.collectElementbyClass=function(classname, element)//Returns an array containing DIVs with specified classname
{
//alert(classname);
var classnameRE=new RegExp("(^|\\s+)"+classname+"($|\\s+)", "i") //regular expression to screen for classname within element
var pieces=[]
var alltags=document.getElementsByTagName(element)
for (var i=0; i<alltags.length; i++){
if (typeof alltags[i].className=="string" && alltags[i].className.search(classnameRE)!=-1)
pieces[pieces.length]=alltags[i]
}
return pieces
}


virtualpaginate.prototype.paginate_build_regularlinks=function(paginatelinks)
{
var instanceOfBox=this
	for (var i=0; i<paginatelinks.length; i++)
	{
		var currentpagerel=paginatelinks[i].getAttribute("rel")
		if (currentpagerel=="previous" || currentpagerel=="next" || currentpagerel=="first" || currentpagerel=="last") 
		{
			paginatelinks[i].onclick=function()
			{
				instanceOfBox.navigate(this.getAttribute("rel"))
				return false
			}
		}
	}
}

virtualpaginate.prototype.showpage=function(pagenumber)
{
var totalitems=this.pieces.length //total number of broken up divs
var showstartindex=pagenumber*this.chunksize //array index of div to start showing per pagenumber setting
var showendindex=showstartindex+this.chunksize-1 //array index of div to stop showing after per pagenumber setting
for (var i=0; i<totalitems; i++){
//alert ("I is: "+i+ "SSI: " + showstartindex +"SEI: "+showendindex);
if (i>=showstartindex && i<=showendindex)
this.pieces[i].style.display="block"
else
this.pieces[i].style.display="none"
}
this.currentpage=parseInt(pagenumber)
}


virtualpaginate.prototype.buildpagination=function(divid){
//alert(divid);
var instanceOfBox=this
var paginatediv=document.getElementById(divid)
var paginationcode=paginatediv.innerHTML //Get user defined, "unprocessed" HTML within paginate div
//alert(paginatediv.getElementsByTagName("a").length);
if (paginatediv.getElementsByTagName("a").length>0) //if there are links defined in div
this.paginate_build_regularlinks(paginatediv.getElementsByTagName("a"))
this.paginatediv=paginatediv
}


virtualpaginate.prototype.navigate=function(keyword)
{
if (keyword=="previous")
this.currentpage=(this.currentpage>0)? this.currentpage-1 : (this.currentpage==0)? this.pagecount-1 : 0
else if (keyword=="next")
this.currentpage=(this.currentpage<this.pagecount-1)? this.currentpage+1 : 0
else if (keyword=="first")
this.currentpage=0
else if (keyword=="last")
this.currentpage=this.pieces.length-1
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);

	if ( this.currentpage == 0 )
	{
		if (this.labelNumber=="labelNumberPress")
		{
				document.getElementById(this.labelNumber).style.marginLeft="393px";
				document.getElementById(this.labelNumber).style.marginRight="3px";			
				document.getElementById(this.anchorsNext).style.marginLeft="1px";
				document.getElementById(this.anchorsNext).style.marginRight="3px";
				document.getElementById(this.anchorsPrevious).style.display="none";		
				document.getElementById(this.anchorsNext).style.display="inline";
		}
		else if(this.labelNumber=="labelNumberAwards")
		{
				document.getElementById(this.labelNumber).style.marginLeft="431px";
				document.getElementById(this.labelNumber).style.marginRight="3px";
				document.getElementById(this.anchorsNext).style.marginLeft="1px";
				document.getElementById(this.anchorsNext).style.marginRight="3px";
				document.getElementById(this.anchorsPrevious).style.display="none";		
				document.getElementById(this.anchorsNext).style.display="inline";		
		}
	}
	else
	{
		if (this.labelNumber=="labelNumberPress")
		{
			document.getElementById(this.anchorsPrevious).style.marginLeft="365px";
		    if(browser=="Microsoft Internet Explorer")
			{
				document.getElementById(this.anchorsPrevious).style.marginRight="5px";
			}
			else
			{
				document.getElementById(this.anchorsPrevious).style.marginRight="1px";	
			}
			document.getElementById(this.labelNumber).style.marginLeft="1px";
    		document.getElementById(this.labelNumber).style.marginRight="1px";
			document.getElementById(this.anchorsNext).style.marginLeft="1px";
			document.getElementById(this.anchorsNext).style.marginRight="3px";
			document.getElementById(this.anchorsPrevious).style.display="inline";
			document.getElementById(this.anchorsNext).style.display="inline";
		}
		else if(this.labelNumber=="labelNumberAwards")
		{
			document.getElementById(this.anchorsPrevious).style.marginLeft="403px";
		    if(browser=="Microsoft Internet Explorer")
			{
				document.getElementById(this.anchorsPrevious).style.marginRight="5px";
			}
			else
			{
				document.getElementById(this.anchorsPrevious).style.marginRight="1px";
			}
				document.getElementById(this.labelNumber).style.marginLeft="1px";
    			document.getElementById(this.labelNumber).style.marginRight="1px";
				document.getElementById(this.anchorsNext).style.marginLeft="1px";
				document.getElementById(this.anchorsNext).style.marginRight="3px";
				document.getElementById(this.anchorsPrevious).style.display="inline";
				document.getElementById(this.anchorsNext).style.display="inline";

		}
//		display:inline;margin-right:0px;margin-left:10px;
	}
	if ( this.currentpage == (this.pieces.length -1 ) )
	{
		document.getElementById(this.anchorsNext).style.display="none";
	}
	else
	{
	//	document.getElementById(this.anchorsNext).style.display="inline";
	}

initNumber=(this.currentpage * 5)+1;
if (this.currentpage != (this.pieces.length -1 ))
finalNumber=initNumber+4;
else
finalNumber=this.totalStories.length;
document.getElementById(this.labelNumber).innerHTML=initNumber + " - " +finalNumber+ " of "+ this.totalStories.length+" ";
this.showpage(this.currentpage)
}
