intSaveNo = -1;
function createPaging(){
	if(typeof arrAllDivElements == "undefined"){
		arrAllDivElements = document.getElementsByTagName("div");
	}
	var oDiv;
	for(var i=0; i<arrAllDivElements.length; i++){
		oDiv = arrAllDivElements[i];
		if(oDiv.className.search(/paging-container/i) != -1){
			new PagingObject(oDiv, "paging-item");
		}
	}
}

var arrPagingObjects = new Array();
PagingObject.prototype.getResults = PagingObjectGetResults;
PagingObject.prototype.getPreviousLinks = PagingObjectGetPreviousLinks;
PagingObject.prototype.getNextLinks = PagingObjectGetNextLinks;
PagingObject.prototype.getPagingLists = PagingObjectGetPagingLists;
PagingObject.prototype.addPagingFunctionality = PagingObjectAddPagingFunctionality;
PagingObject.prototype.selectPagingLink = PagingObjectSelectPagingLink;
PagingObject.prototype.showPage = PagingObjectShowPage;
function PagingObject(oElm, strClassName){
	this.oElm = oElm;
	this.strContainerClassName = oElm.className;
	this.hitsPerPage = (this.strContainerClassName.search(/hits-per-page-\d+/) != -1)? this.strContainerClassName.replace(/.*hits-per-page-(\d+).*/, "$1") : 10;
	this.strPagingItemNodeName = (this.strContainerClassName.search(/paging-items-nodename-\w+/) != -1)? this.strContainerClassName.replace(/.*paging-items-nodename-(\w+).*/, "$1") :  "div";
	this.strClassName = strClassName;
	this.strClassNameForPagingItems = (this.strPagingItemNodeName == "tr")? "display-table-row" : "display-block";
	this.pagingObjectIndex = arrPagingObjects.length;
	this.results = this.getResults(this.strClassName);
	this.noOfPages = Math.ceil(this.results.length / this.hitsPerPage);
	this.previousLinks = this.getPreviousLinks();
	this.nextLinks = this.getNextLinks("next");
	this.pagingLists = this.getPagingLists(this.strClassName);
	this.addPagingFunctionality(); // Lägger till/tar bort knapparna för de olika sidorna...
	// Hantering av fredrik@dropit
	if (this.currentPageNo != parseInt(this.currentPageNo)) {
	    this.currentPageNo = 0;
	}
	this.showPage(this.currentPageNo);
	arrPagingObjects.push(this);
}
function PagingObjectGetResults(){
	return getElementsByClassName(this.oElm, this.strPagingItemNodeName, this.strClassName);
}
function PagingObjectGetPreviousLinks(){	
	return getElementsByClassName(this.oElm, "a", "previous");
}
function PagingObjectGetNextLinks(){
	return getElementsByClassName(this.oElm, "a", "next");
}
function PagingObjectGetPagingLists(){	
	return getElementsByClassName(this.oElm, "ul", "paging-links");
}
function PagingObjectAddPagingFunctionality(){
	var bHidePaging = (this.noOfPages == 1)? true : false;
	if(bHidePaging){
		var arrPagingLinksContainers = getElementsByClassName(this.oElm, "div", "paging-results");
		for(var i=0; i<arrPagingLinksContainers.length; i++){
			arrPagingLinksContainers[i].className = "display-none";
		}
	}
	else{	
		var oPagingLink;
		for(var i=0; i<this.previousLinks.length; i++){
			oPagingLink = this.previousLinks[i];
			oPagingLink.className += " previous-link-" + this.pagingObjectIndex;
			oPagingLink.onclick = function (oEvent){			
				var oEvent = (typeof oEvent != "undefined")? oEvent : event;
				oEvent.returnValue = false;
				if(oEvent.preventDefault){
					oEvent.preventDefault();
				}
				var intPagingObjectIndex = this.className.replace(/paging-link-previous-v2/gi, '').replace(/paging-link-next-v2/gi, '').replace(/\D*/g, "");
				var oPagingObject = arrPagingObjects[intPagingObjectIndex];
				if(oPagingObject.currentPageNo > 0){
					oPagingObject.showPage(oPagingObject.currentPageNo - 1);
					try{window.scrollTo(0, $("div.paging-container").offset().top);}catch(e) {}
				}
			}		
		}
		var oPagingLink;
		for(var i=0; i<this.nextLinks.length; i++){
			oPagingLink = this.nextLinks[i];
			oPagingLink.className += " next-link-" + this.pagingObjectIndex;
			oPagingLink.onclick = function (oEvent){							
				var oEvent = (typeof oEvent != "undefined")? oEvent : event;
				oEvent.returnValue = false;
				if(oEvent.preventDefault){
					oEvent.preventDefault();
				}
				var intPagingObjectIndex = this.className.replace(/paging-link-previous-v2/gi, '').replace(/paging-link-next-v2/gi, '').replace(/\D*/g, "");
				var oPagingObject = arrPagingObjects[intPagingObjectIndex];
				if(oPagingObject.currentPageNo < (oPagingObject.noOfPages - 1)){
					oPagingObject.showPage(oPagingObject.currentPageNo + 1);
					try{window.scrollTo(0, $("div.paging-container").offset().top);}catch(e) {}
				}			
			}		
		}
		
		var oList,
		    arrListItems,
		    arrPagingLinks,		
		    oLink,
		    strClassName;
		for(var i=0; i<this.pagingLists.length; i++){
			oList = this.pagingLists[i];
			oList.className += " paging-list-" + this.pagingObjectIndex;
			arrPagingLinks = oList.getElementsByTagName("a");
			for(var j=0; j<arrPagingLinks.length; j++){
				oLink = arrPagingLinks[j];
				strClassName = oLink.className + ((oLink.className.length > 0)? " " : "");
				oLink.className = strClassName + "list-item-paging-" + j;
				oLink.onclick = function (oEvent){
					var oEvent = (typeof oEvent != "undefined")? oEvent : event;
					oEvent.returnValue = false;
					if(oEvent.preventDefault){
						oEvent.preventDefault();
					}
					var intPageToGoTo = parseInt(this.className.replace(/\D*/g, ""), 10);
					var intPagingObjectIndex = this.parentNode.parentNode.className.replace(/\D*/g, "");
					var oPagingObject = arrPagingObjects[intPagingObjectIndex];
					oPagingObject.showPage(intPageToGoTo);
					try{window.scrollTo(0, $("div.paging-container").offset().top);}catch(e) {}
					//window.location.hash = 'paging-anchor';
				}
			}
		}
	}
}
// ---
function PagingObjectSelectPagingLink(intPageNo){
	var arrPagingLinks,
	    oLink,
	    strClassName;
	for(var i=0; i<this.pagingLists.length; i++){
		arrPagingLinks = this.pagingLists[i].getElementsByTagName("a");
		for(var j=0; j<arrPagingLinks.length; j++){
			oLink = arrPagingLinks[j];
			strClassName = oLink.className;
			oLink.className = (j == intPageNo)? (strClassName + " selected") : strClassName.replace(/\s?selected/g, "");
		}
	}
}
// ---

function PagingObjectShowPage(intPageNo){
	//Save and Read of page number 
	var savedPageNo = document.getElementById("savedPageNo");
	if (savedPageNo) {
		if (intSaveNo==-1 && savedPageNo.value != '-1')	{
			this.currentPageNo = parseInt(savedPageNo.value);
		}
		else {
			this.currentPageNo = intPageNo;
			savedPageNo.value = intPageNo;
		}
		intSaveNo = this.currentPageNo;
	}
	else {
		this.currentPageNo = intPageNo;
	}
	
	this.selectPagingLink(this.currentPageNo);
	var oDiv;
	var intStartHitToShow = this.currentPageNo * this.hitsPerPage;
	var intEndHitToShow = (parseInt(this.currentPageNo, 10) + 1) * this.hitsPerPage;
	var 
	    strClassName,
	    oResult,
	    oParentNode,
	    oContainer,
	    oHeading,
	    bShowHeading,
	    oPrevSib;
	
	//Visar hotell <literal id="paging-first-visible-hotel" /> - <literal id="paging-last-visible-hotel" /> av <literal id="paging-total-no-of-hotels" />
	var firstVisible = document.getElementById("paging-first-visible-hotel");
	if (firstVisible) {
	    firstVisible.innerHTML = intStartHitToShow + 1;
	}
	var lastVisible = document.getElementById("paging-last-visible-hotel");
	if (lastVisible) {
	    lastVisible.innerHTML = Math.min(intEndHitToShow, this.results.length);
	}
	var totalHits = document.getElementById("paging-total-no-of-hotels");
	if (totalHits) {
	    totalHits.innerHTML = this.results.length;
	}		
	
	for(var i=0; i<this.results.length; i++){
		oResult = this.results[i];		
		strClassName = (i >= intStartHitToShow && i < intEndHitToShow)? this.strClassNameForPagingItems : "display-none";
		oResult.className = oResult.className.replace(/\s?display\-(block|table-row|none)/g, "") + " " + strClassName;
		if(oResult.className.search(/last/i) != -1){
			oContainer = oResult.parentNode;
			oHeading = oContainer.previousSibling;
			bShowHeading = false;
			if(oResult.className.search(/display-block/i)!= -1){
				bShowHeading = true;
			}
			else{
				oPrevSib = oResult.previousSibling;
				while(oPrevSib){
					if(oPrevSib.className && oPrevSib.className.search(/display-block/i)!= -1){
						bShowHeading = true;
						oPrevSib = null;
						break;
					}
					else{
						oPrevSib = oPrevSib.previousSibling;
					}
				}
			}			
			strClassName = (bShowHeading)? "display-block" : "display-none";			
			oContainer.className = oContainer.className.replace(/\s?display\-(block|none)/g, "") + " " + strClassName;
			if (oHeading && oHeading.className) {
			    oHeading.className = strClassName;
			}
		}	
	}

	oPreviousTop = document.getElementById('paging-link-previous-top');
	oNextTop = document.getElementById('paging-link-next-top');
	oPreviousBottom = document.getElementById('paging-link-previous-bottom');
	oNextBottom = document.getElementById('paging-link-next-bottom');
	if ((!oPreviousTop && !oNextTop && !oPreviousBottom && !oNextBottom) && (oContainer)) {
		var arrAllPreviousV2 = getElementsByClassName(oContainer, "a", "paging-link-previous-v2");
		oPreviousTop = arrAllPreviousV2[0];
		oPreviousBottom = arrAllPreviousV2[1];
		var arrAllNextV2 = getElementsByClassName(oContainer, "a", "paging-link-next-v2");
		oNextTop = arrAllNextV2[0];
		oNextBottom = arrAllNextV2[1];
	}
	if (oPreviousTop && oNextTop && oPreviousBottom && oNextBottom) {
		if (intPageNo === 0) {
			oPreviousTop.className += ' visibility-hidden';
			oPreviousBottom.className += ' visibility-hidden';
		}
		else if (intPageNo > 0) {
			oPreviousTop.className = oPreviousTop.className.replace(/ visibility-hidden/g, '');
			oPreviousBottom.className = oPreviousBottom.className.replace(/ visibility-hidden/g, '');
		}
		if (this.results.length > intEndHitToShow) {
			oNextTop.className = oNextTop.className.replace(/ visibility-hidden/g, '');
			oNextBottom.className = oNextBottom.className.replace(/ visibility-hidden/g, '');
		}
		else if (this.results.length <= intEndHitToShow) {
			oNextTop.className += ' visibility-hidden';
			oNextBottom.className += ' visibility-hidden';
		}
	}
}
// ---
