
// shows a the rows of tables according to the pageSize and current page
function showTablePage(tableName, pageSize, page){

	var table = document.getElementById(tableName);

	// set display attribute of rows according with the page
	var rows = table.rows.length - 2; //one row for heading, one row for navigation
	for (i=1; i<=rows; i++) {
		if (i>page*pageSize && i<=(page+1)*pageSize) {
			table.rows[i].style.display='';
		} else {
			table.rows[i].style.display='none';
		}
	}

	// navigation
	var nav='';
	var pages=Math.ceil(rows/pageSize);

	var page_from;
	var page_to;

	if (pages>10){
		if (page + 10 > pages) {
			page_from = pages - 10;
			page_to = pages;
		} else {
			page_from = page;
			page_to = page + 10;
		}
	} else {
		page_from=0;
		page_to=pages;
	}

	if (pages>1) {
		for (i=page_from; i<page_to;i++){
			var pageNumber = i + 1;
			if (page==i) {
				nav = nav  + '<b>' + pageNumber + '</b>' + '&nbsp;&nbsp;';
			} else {
				nav = nav  + '<a style="text-decoration:none" href="javascript:showTablePage(\'' + tableName + '\',' + pageSize + ',' + i + ');">' + pageNumber + '</a>&nbsp;&nbsp;';
			}
		}
		if (page>0){
			prevPage = page - 1;
			nav =  '<a style="text-decoration:none" href="javascript:showTablePage(\'' + tableName + '\',' + pageSize + ',' + prevPage + ');">' + '<' + '</a>&nbsp;&nbsp;' + nav;
			nav =  '<a style="text-decoration:none" href="javascript:showTablePage(\'' + tableName + '\',' + pageSize + ',0);">' + '|<' + '</a>&nbsp;&nbsp;' + nav;
		}
		if (page<pages-1){
			var nextPage = page + 1;
			var lastPage = pages - 1;
			nav = nav  + '<a style="text-decoration:none" href="javascript:showTablePage(\'' + tableName + '\',' + pageSize + ',' + nextPage + ');">' + '>' + '</a>&nbsp;&nbsp;';
			nav = nav  + '<a style="text-decoration:none" href="javascript:showTablePage(\'' + tableName + '\',' + pageSize + ',' + lastPage + ');">' + '>|' + '</a>&nbsp;&nbsp;';
		}
		table.rows[rows+1].cells[0].innerHTML = nav;
	}
}



// According to the value of the selectall checkbox, select all or deselects all the checkboxes
function toggleSelectAll(tableName) {
	var chkSelectAll = document.getElementById('selectall-' + tableName);
	var status = chkSelectAll.checked;

	var elements = document.getElementsByTagName('input');

	for (i = 0; i < elements.length; i++) {
		if (elements[i].type == 'checkbox' && elements[i].name == ('selection-' + tableName)) {
			elements[i].checked = status;
		}
	}
}


// Except the current checkbox, deselects all the other checkboxes
function deSelectAllExcept(tableName, checkName) {
	var elements = document.getElementsByTagName('input');

	for (i = 0; i < elements.length; i++) {
		if (elements[i].type == 'checkbox' && elements[i].id != checkName && elements[i].name == ('selection-' + tableName)) {
			elements[i].checked = false;
		}
	}

	var chkSelectAll = document.getElementById('selectall-' + tableName);
	if (chkSelectAll != null) {
		chkSelectAll.checked = false;
	}
}

