From 3d26b10f0d371c8600f5a2bda278aeffb828b700 Mon Sep 17 00:00:00 2001 From: Sebastian Mendel Date: Thu, 20 Oct 2005 12:31:52 +0000 Subject: [PATCH] javascript:PMA_markRowsInit speedup --- libraries/functions.js | 130 +++++++++++++++++++---------------------- 1 file changed, 59 insertions(+), 71 deletions(-) diff --git a/libraries/functions.js b/libraries/functions.js index 308b63e67..f31b88e0e 100644 --- a/libraries/functions.js +++ b/libraries/functions.js @@ -468,82 +468,70 @@ var marked_row = new Array; * */ function PMA_markRowsInit() { - // in every table ... - var tables = document.getElementsByTagName('table'); - for (var t=0; t 0 ) { - unique_id = checkbox.id; - } else { - unique_id = checkbox.name + checkbox.value; - } - } else if ( this.id.length > 0 ) { - unique_id = this.id; - } else { - return; - } - - if ( typeof(marked_row[unique_id]) == 'undefined' || !marked_row[unique_id] ) { - marked_row[unique_id] = true; - } else { - marked_row[unique_id] = false; - } - - if ( marked_row[unique_id] ) { - this.className += ' marked'; - } else { - this.className = this.className.replace(' marked', ''); - } - - if ( checkbox && checkbox.disabled == false ) { - checkbox.checked = marked_row[unique_id]; - } + // ... add event listeners ... + // ... to highlight the row on mouseover ... + if ( navigator.appName == 'Microsoft Internet Explorer' ) { + // but only for IE, other browsers are handled by :hover in css + rows[i].onmouseover = function() { + this.className += ' hover'; } - - // ... and disable label ... - var labeltag = rows[i].getElementsByTagName('label')[0]; - if ( labeltag ) { - labeltag.onclick = function() { - return false; - } - } - // .. and checkbox clicks - var checkbox = rows[i].getElementsByTagName('input')[0]; - if ( checkbox ) { - checkbox.onclick = function() { - // opera does not recognize return false; - this.checked = ! this.checked; - } + rows[i].onmouseout = function() { + this.className = this.className.replace( ' hover', '' ); + } + } + // ... and to mark the row on click ... + rows[i].onmousedown = function() { + var unique_id; + var checkbox; + + var checkbox = this.getElementsByTagName( 'input' )[0]; + if ( checkbox && checkbox.type == 'checkbox' ) { + unique_id = checkbox.name + checkbox.value; + } else if ( this.id.length > 0 ) { + unique_id = this.id; + } else { + return; } + + if ( typeof(marked_row[unique_id]) == 'undefined' || !marked_row[unique_id] ) { + marked_row[unique_id] = true; + } else { + marked_row[unique_id] = false; + } + + if ( marked_row[unique_id] ) { + this.className += ' marked'; + } else { + this.className = this.className.replace(' marked', ''); + } + + if ( checkbox && checkbox.disabled == false ) { + checkbox.checked = marked_row[unique_id]; + } } + + // ... and disable label ... + var labeltag = rows[i].getElementsByTagName('label')[0]; + if ( labeltag ) { + labeltag.onclick = function() { + return false; + } + } + // .. and checkbox clicks + var checkbox = rows[i].getElementsByTagName('input')[0]; + if ( checkbox ) { + checkbox.onclick = function() { + // opera does not recognize return false; + this.checked = ! this.checked; + } + } } } window.onload=PMA_markRowsInit;