
/* Zrodla tej funkcji pochodza ze skryptu phpMyAdmin */ 

/** 
* Sets/unsets the pointer and marker in browse mode 
* 
* @param   object   the table row 
* @param   string   the action calling this script (over, out or click) 
* @param   string   the default background color 
* @param   string   the color to use for mouseover 
* @param   string   the color to use for marking a row 
* 
* @return  boolean  whether pointer is set or not 
*/ 
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 


