 var marked_row = new Array;  
   
 /** 
  * 
  * @param   object    Object ??? Table ?????????????????? 
  * @param   interger  ???????? Row 
  * @param   string    ??????????????????????????? (over, out or click) 
  * @param   string    ??????????? background color 
  * @param   string    ??????????????  mouseover 
  * @param   string    ???????????????? row 
 */  
   
 function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)  
 {  
     var theCells = null;  
   
     if ((thePointerColor == '' && theMarkColor == '')  
         || 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 domDetect    = null;  
     var currentColor = null;  
     var newColor     = null;  
   
     if (typeof(window.opera) == 'undefined'  
         && typeof(theCells[0].getAttribute) != 'undefined') {  
         currentColor = theCells[0].getAttribute('bgcolor');  
         domDetect    = true;  
     }  
   
     else {  
         currentColor = theCells[0].style.backgroundColor;  
         domDetect    = false;  
     }  
   
   
     if (currentColor.indexOf("rgb") >= 0)   
     {  
         var rgbStr = currentColor.slice(currentColor.indexOf('(') + 1,  
                                      currentColor.indexOf(')'));  
         var rgbValues = rgbStr.split(",");  
         currentColor = "#";  
         var hexChars = "0123456789ABCDEF";  
         for (var i = 0; i < 3; i++)  
         {  
             var v = rgbValues[i].valueOf();  
             currentColor += hexChars.charAt(v/16) + hexChars.charAt(v%16);  
         }  
     }  
   
     if (currentColor == ''  
         || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {  
         if (theAction == 'over' && thePointerColor != '') {  
             newColor              = thePointerColor;  
         }  
         else if (theAction == 'click' && theMarkColor != '') {  
             newColor              = theMarkColor;  
             marked_row[theRowNum] = true;  
         }  
     }  
     else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()  
              && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {  
         if (theAction == 'out') {  
             newColor              = theDefaultColor;  
         }  
         else if (theAction == 'click' && theMarkColor != '') {  
             newColor              = theMarkColor;  
             marked_row[theRowNum] = true;  
         }  
     }  
     else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {  
         if (theAction == 'click') {  
             newColor              = (thePointerColor != '')  
                                   ? thePointerColor  
                                   : theDefaultColor;  
             marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])  
                                   ? true  
                                   : null;  
         }  
     }  
   
     if (newColor) {  
         var c = null;  
         if (domDetect) {  
             for (c = 0; c < rowCellsCnt; c++) {  
                 theCells[c].setAttribute('bgcolor', newColor, 0);  
             }  
         }  
         else {  
             for (c = 0; c < rowCellsCnt; c++) {  
                 theCells[c].style.backgroundColor = newColor;  
             }  
         }  
     }  
   
     return true;  
 }   
