/**
 * Sets/unsets the pointer in browse mode
 *
 * @param object the table row
 * @param object the color to use for this row
 * @param object the background color
 *
 * @return boolean whether pointer is set or not
 */
function setPointer(theRow, thePointerColor, theNormalBgColor) {
	var theCells = null;
	
	if(theNormalBgColor.indexOf('#') == -1) theNormalBgColor = '#'+theNormalBgColor;

	if (thePointerColor == '' || typeof(theRow.style) == 'undefined') {
		return false;
	}
	if (typeof(document.getElementsByTagName) != 'undefined') {
		theCells = theRow.getElementsByTagName('td');
	} else if (typeof(theRow.cells) != 'undefined') {
		theCells = theRow.cells;
	} else {
		return false;
	}
	
	var rowCellsCnt = theCells.length;
	var currentColor = null;
	var newColor = null;
	// Opera does not return valid values with "getAttribute"
	if (typeof(window.opera) == 'undefined' && typeof(theCells[0].getAttribute) != 'undefined' && typeof(theCells[0].getAttribute) != 'undefined') {
		currentColor = theCells[0].getAttribute('bgcolor');
		if(currentColor == null) newColor = thePointerColor;
		else newColor = (currentColor.toLowerCase() == thePointerColor.toLowerCase())  ? theNormalBgColor : thePointerColor;
		for (var c = 0; c < rowCellsCnt; c++) {
			theCells[c].setAttribute('bgcolor', newColor, 0);
		} // end for
	} else {
		currentColor = theCells[0].style.backgroundColor;
		newColor = (currentColor.toLowerCase() == thePointerColor.toLowerCase())  ? theNormalBgColor : thePointerColor;
		for (var c = 0; c < rowCellsCnt; c++) {
			theCells[c].style.backgroundColor = newColor;
		}
	}
	return true;
} // end of the 'setPointer()' function
