<!--
var savedStates=new Array();
var savedStateCount=0;

/////////////////////////////////////////////////////
// This function takes an element as a parameter and
// returns an object which contain the saved state
// of the element's background color.
/////////////////////////////////////////////////////
function saveBackgroundStyle(myElement)
{
 saved=new Object();
 saved.element=myElement;
 saved.className=myElement.className;
 saved.backgroundColor=myElement.style["backgroundColor"];
 return saved;
}

/////////////////////////////////////////////////////
// This function is used by highlightTableRow() to find table cells (TD) node
/////////////////////////////////////////////////////
function findNode(startingNode, tagName)
{
 // on Firefox, the TD node might not be the firstChild node of the TR node
 myElement=startingNode;
 var i=0;
 while (myElement && (!myElement.tagName || (myElement.tagName && myElement.tagName!=tagName)))
 {
 myElement=startingNode.childNodes[i];
 i++;
 }
 if (myElement && myElement.tagName && myElement.tagName==tagName)
 {
 return myElement;
 }
 // on IE, the TD node might be the firstChild node of the TR node
 else if (startingNode.firstChild)
 return findNode(startingNode.firstChild, tagName);
 return 0;
}

////////////////////////////////////////////////////
// This function takes an element as a parameter and
// returns an object which contain the saved state
// of the element's background color.
/////////////////////////////////////////////////////
function restoreBackgroundStyle(savedState)
{
 savedState.element.style["backgroundColor"]=savedState.backgroundColor;
 if (savedState.className)
 {
 savedState.element.className=savedState.className;
 }
}
 
function highlightTableRowVersionA(myElement, highlightColor)
{
 var i=0;
 // Restore color of the previously highlighted row
 for (i; i<savedStateCount; i++)
 {
 restoreBackgroundStyle(savedStates[i]);
 }
 savedStateCount=0;

 // If you don't want a particular row to be highlighted, set it's id to "header"
 if (!myElement || (myElement && myElement.id && myElement.id=="header") )
 return;

 // Highlight every cell on the row
 if (myElement)
 {
 var tableRow=myElement;

 // Save the backgroundColor style OR the style class of the row (if defined)
 if (tableRow)
 {
 savedStates[savedStateCount]=saveBackgroundStyle(tableRow);
 savedStateCount++;
 }

 // myElement is a <TR>, then find the first TD
 var tableCell=findNode(myElement, "TD");

 var i=0;
 // Loop through every sibling (a sibling of a cell should be a cell)
 // We then highlight every siblings
 while (tableCell)
 {
 // Make sure it's actually a cell (a TD)
 if (tableCell.tagName=="TD")
 {
 // If no style has been assigned, assign it, otherwise Netscape will
 // behave weird.
 if (!tableCell.style)
 {
  tableCell.style={};
 }
 else
 {
 savedStates[savedStateCount]=saveBackgroundStyle(tableCell);
 savedStateCount++;
 }
 // Assign the highlight color
 tableCell.style["backgroundColor"]=highlightColor;

 // Optional: alter cursor
 tableCell.style.cursor='pointer';
 i++;
 }
 // Go to the next cell in the row
 tableCell=tableCell.nextSibling;
 }
 }
} 
 //-->