/**
 * This function writes unescaped text
 */
function text(txt) {
	document.write(unescape(txt));
}

/**
 * This function unescapes text
 */
function str(txt) {
	return unescape(txt);
}

/**
 * This function returns only digits
 */ 
function allowDigits() {
	if (window.event.keyCode < 46 || window.event.keyCode > 57) {
		window.event.keyCode = 0;
	}
}

/**
 * This function add leading zero when required
 */ 
function addLeadingZero(num) {
	if (parseInt(num) < 10)
		return "0" + num;
		
	return num;
}

/**
 * This function validates fields
 */ 
function validate(aIds) {
	try {
		for (var i = 0; i < aIds.length; i++) {
			try {
				var value = document.getElementById(aIds[i]).value;
				
				if ((value == null) || (value.replace(" ","") == "")) {
					return false;
				}
			} catch (ex) {}
		}
	} catch (ex) {}
	return true;
}

/**
 * This function disables all the buttons on the screen
 */ 
function disableButtons() {
	var eA = document.getElementsByTagName("a");
	
}

/**
 * This function handles the scrolling
 */
function initScroll(sTable, sScroll, iNum) {
	var eRows = document.getElementById(sTable).getElementsByTagName("tr");
	
	if (eRows != null) {
		var scroll = document.getElementById(sScroll);
		var rowsNum = eRows.length;

		if (rowsNum > iNum) {		
			var output = "<a href='javascript:setScroll(\"" + sTable + "\", " + iNum + ", 0);'>&lt;&lt;</a>&nbsp;&nbsp;";
			output += "<a href='javascript:scrollByAdv(\"" + sTable + "\", " + iNum + ", -1);'>&lt;</a>&nbsp;&nbsp;";
	
			var scrollNum = parseInt(rowsNum) / parseInt(iNum);
			
			var max = Math.floor(scrollNum);
			if (scrollNum == parseInt(scrollNum)) {
				max -= 1;
			}
			
			for (var i = 0; i < scrollNum; i++) {
				output += "<a href='javascript:setScroll(\"" + sTable + "\", " + iNum + ", " + i + ");'>&nbsp;<span id='scroll_" + sTable + "'>" + (i + 1) + "</span>&nbsp;</a>&nbsp;&nbsp;";
			}
			
			output += "<a href='javascript:scrollByAdv(\"" + sTable + "\", " + iNum + ", 1);'>&gt;</a>&nbsp;&nbsp;";
			output += "<a href='javascript:setScroll(\"" + sTable + "\", " + iNum + ", " + max + ");'>&gt;&gt;</a>&nbsp;&nbsp;";
			scroll.innerHTML = output;

			setScroll(sTable, iNum, 0);
		}
	}
}

/**
 * This function sets the scroll page
 */
function setScroll(sTable, iNum, iPage) {
	var eTable = document.getElementById(sTable);
	
	if (eTable != null) {
		var eRows = eTable.getElementsByTagName("tr");
		
		var start = parseInt(iNum) * parseInt(iPage);
		var end = parseInt(iNum) * (parseInt(iPage) + 1);
		
		// set visibility
		for (var iRow = 0; iRow < eRows.length; iRow++) {
			if ((iRow >= start) && (iRow < end)) {
				eRows[iRow].style.display = "";
			} else {
				eRows[iRow].style.display = "none";
			}
		}
		
		// add extra cells when required
		for (var iRow = eRows.length; iRow < end; iRow++) {
			var eTr = document.createElement("tr");
			var eTd = document.createElement("td");
			eTd.className = "regList";
			eTd.style.color = "#ffffff";
			eTd.innerHTML = ".";
			
			eTr.appendChild(eTd);
			
			eRows[0].parentElement.appendChild(eTr);
		}
		
		// set scroll num hightlight
		var eScrolls = document.getElementsByName("scroll_" + sTable);
		for (var iScroll = 0; iScroll < eScrolls.length; iScroll++) {
			if (iScroll == iPage) {
				eScrolls[iScroll].style.fontWeight = "bold";
				eScrolls[iScroll].style.fontSize = "14";
				eScrolls[iScroll].setAttribute("current", "true");
			} else {
				eScrolls[iScroll].style.fontWeight = "normal";
				eScrolls[iScroll].style.fontSize = "12";
				eScrolls[iScroll].removeAttribute("current");
			}
		} 
	}
}

/**
 * This function scrolls to the next page
 */
function scrollByAdv(sTable, iNum, iAdv) {
	var eScrolls = document.getElementsByName("scroll_" + sTable);
	var iPage = 0;
	
	for (var iScroll = 0; iScroll < eScrolls.length; iScroll++) {
		if (eScrolls[iScroll].getAttribute("current") == "true") {
			iPage = iScroll + iAdv;
		}
	}
	if ((iPage >= 0) && (iPage < eScrolls.length)) {
		setScroll(sTable, iNum, iPage);
	}
}

/**
 * This function sets the write description
 */
function getDescription(sText, brRep) {
	var escText = str(sText);
	
	while (escText.match(brRep) != null) {
		escText = escText.replace(brRep, "<br/>");
	}
	
	return escText;
}

function getLinedText(sText) {
	document.write(getDescription(sText, "-n"));
}

/**
 * This function custom escapes a text
 */
function cEscape(sText) {
	var len = sText.length;
	var rText = "";
	var iCode = "";
	
	for (var i = 0; i < len; i++) {
		rText += "-";

		iCode = sText.charCodeAt(i); 

		if ((iCode >= 48) && (iCode <=57)) {
			rText += (iCode - 48);
		} else if ((iCode >= 1488) && (iCode <=1520)) {
			rText += (iCode - 1478);
		}  
	}
	
	return rText.substring(1);
}

/**
 * This function custom unescapes a text
 */
function cUnescape(sText) {
	var parts = sText.split("-");
	var len = parts.length;
	var rText = "";
	var iNum = "";
	
	for (var i = 0; i < len; i++) {

		iNum = parts[i]; 
		
		if ((iNum >= 0) && (iNum < 10)) {
			rText += iNum;
		} else if (iNum >= 10) {
			rText += String.fromCharCode(parseInt(iNum) + 1478);
		}  
	}
	
	return rText;
}


