
function showUrl (addr, idx) {
	if (addr.indexOf("?p=") >= 0 || addr.indexOf("&p=") >= 0) {
		addr = addr.replace (/^(.*[&?]p=)[0-9]+(.*)$/, "$1" + idx + "$2");
	} else if (addr.indexOf("?") >= 0) {
		addr += "&p=" + idx;
	} else {
		addr += "?p=" + idx;
	}
	return addr;
}

function display (currentPage, i, addr) {
	display2 (currentPage, i, addr, i);
}

function display2 (currentPage, i, addr, wordToShow) {
	if (i == currentPage) {
		document.write ("<li class='current'>" + wordToShow + "</li>");
	}else if (i == "..") {
		document.write ("<li>" + wordToShow + "</li>");
	}else {
		document.write("<li><a href='" + showUrl(addr, i) + "'>" + wordToShow + "</a></li>");
	}
}

function showPaging(p, total, pageNum) {
	var pages = Math.floor((total - 1) / pageNum) + 1;
	
	var addr = "" + window.location;
	var sidx = addr.indexOf("#");
	if (sidx >= 0 ) {
		addr = addr.substr(0, sidx);
	}
	
	if (total == 0) {
		//document.write("0");
		return;
	}
	
	p = p > pages ? pages : p;
	
	//if firstpage and the only page, then don't display paging
	if (p == 1 && pages == 1) {
		return;
	}
	
	if (pages <= 7) {
		for (var i = 1; i <= pages; ++i) {
			display(p, i, addr);
		}
		return;
	}
	
	var begin = p - 2 < 1 ? 1 : p - 2;
	var end = p + 2 > pages ? pages : p + 2;
	
	var arr = [];
	
	arr.push(1);
	
	//1 .. 5 6 7 8 9
	if (begin > 2) {
		arr.push("..");
		for (var i = begin; i <= end; ++i) {
			arr.push(i);
		}
		
		//1 .. 5 6 7 8 9 .. 13
		if (end + 1 < pages) {
			arr.push("..");
			arr.push(pages);
		} else if (end + 1 == pages){
		//1 .. 5 6 7 8 9 10
			arr.push(pages);
		} else {
		//1 .. 5 6 7 8 9
		}
	} else if (begin == 2) {
		for (var i = begin; i <= end; ++i) {
			arr.push(i);
		}
		
		//1 5 6 7 8 9 .. 13
		if (end + 1 < pages) {
			arr.push("..");
			arr.push(pages);
		} else if (end + 1 == pages){
		//1 5 6 7 8 9 10
			arr.push(pages);
		} else {
		//1 5 6 7 8 9
		}
	} else {
		for (var i = 2; i <= end; ++i) {
			arr.push(i);
		}
		
		//1 5 6  .. 13
		if (end + 1 < pages) {
			arr.push("..");
			arr.push(pages);
		} else if (end + 1 == pages){
		//1 5 6  10
			arr.push(pages);
		} else {
		//1 5 6 
		}
	}
	
	if (p > 1) {
		display2 (p, p - 1, addr, "&lt;"); //prev page
	}
	
	for (var i = 0; i < arr.length; ++i) {
		display (p, arr[i], addr);
	}
	
	if (p < pages) {
		display2 (p, p + 1, addr, "&gt;"); //next page
	}

}