function setPointer(theRow, theAction, theDefaultColor, thePointerColor, theMarkColor)     
{                                                                                          
    var theCells = null;                                                                   
                                                                                           
    // 1. Pointer and mark feature are disabled or the browser can't get the               
    //    row -> exits                                                                     
    if ((thePointerColor == '' && theMarkColor == '')                                      
        || typeof(theRow.style) == 'undefined') {                                          
        return false;                                                                      
    }                                                                                      
                                                                                           
    // 2. Gets the current row and exits if the browser can't get it                       
    if (typeof(document.getElementsByTagName) != 'undefined') {                            
        theCells = theRow.getElementsByTagName('td');                                      
    }                                                                                      
    else if (typeof(theRow.cells) != 'undefined') {                                        
        theCells = theRow.cells;                                                           
    }                                                                                      
    else {                                                                                 
        return false;                                                                      
    }                                                                                      
                                                                                           
    // 3. Gets the current color...                                                        
    var rowCellsCnt  = theCells.length;                                                    
    var domDetect    = null;                                                               
    var currentColor = null;                                                               
    var newColor     = null;                                                               
    // 3.1 ... with DOM compatible browsers except Opera that does not return              
    //         valid values with "getAttribute"                                            
    if (typeof(window.opera) == 'undefined'                                                
        && typeof(theCells[0].getAttribute) != 'undefined') {                              
        currentColor = theCells[0].getAttribute('bgcolor');                                
        domDetect    = true;                                                               
    }                                                                                      
    // 3.2 ... with other browsers                                                         
    else {                                                                                 
        currentColor = theCells[0].style.backgroundColor;                                  
        domDetect    = false;                                                              
    } // end 3                                                                             
                                                                                           
    // 4. Defines the new color                                                            
    // 4.1 Current color is the default one                                                
    if (currentColor == ''                                                                 
        || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {                  
        if (theAction == 'over' && thePointerColor != '') {                                
            newColor = thePointerColor;                                                    
        }                                                                                  
        else if (theAction == 'click' && theMarkColor != '') {                             
            newColor = theMarkColor;                                                       
        }                                                                                  
    }                                                                                      
    // 4.1.2 Current color is the pointer one                                              
    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()) {                
        if (theAction == 'out') {                                                          
            newColor = theDefaultColor;                                                    
        }                                                                                  
        else if (theAction == 'click' && theMarkColor != '') {                             
            newColor = theMarkColor;                                                       
        }                                                                                  
    }                                                                                      
    // 4.1.3 Current color is the marker one                                               
    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {                   
        if (theAction == 'click') {                                                        
            newColor = (thePointerColor != '')                                             
                     ? thePointerColor                                                     
                     : theDefaultColor;                                                    
        }                                                                                  
    } // end 4                                                                             
                                                                                           
    // 5. Sets the new color...                                                            
    if (newColor) {                                                                        
        var c = null;                                                                      
        // 5.1 ... with DOM compatible browsers except Opera                               
        if (domDetect) {                                                                   
            for (c = 0; c < rowCellsCnt; c++) {                                            
                theCells[c].setAttribute('bgcolor', newColor, 0);                          
            } // end for                                                                   
        }                                                                                  
        // 5.2 ... with other browsers                                                     
        else {                                                                             
            for (c = 0; c < rowCellsCnt; c++) {                                            
                theCells[c].style.backgroundColor = newColor;                              
            }                                                                              
        }                                                                                  
    } // end 5                                                                             
                                                                                           
    return true;                                                                           
} // end of the 'setPointer()' function                                                    
