Index: branches/RC/core/admin_templates/js/grid.js =================================================================== diff -u -N -r8929 -r9969 --- branches/RC/core/admin_templates/js/grid.js (.../grid.js) (revision 8929) +++ branches/RC/core/admin_templates/js/grid.js (.../grid.js) (revision 9969) @@ -115,17 +115,36 @@ } } - if ( this.Grid.MouseOverClass ) { +// if ( this.Grid.MouseOverClass ) { addEvent(this.HTMLelement, 'mouseover', function(ev) { this.GridItem.MouseOver(ev)}, true); // true for traditional event model addEvent(this.HTMLelement, 'mouseout', function(ev) { this.GridItem.MouseOut(ev)}, true); if ( this.LeftElement ) { addEvent(this.LeftElement, 'mouseover', function(ev) { this.GridItem.MouseOver(ev)}, true); addEvent(this.LeftElement, 'mouseout', function(ev) { this.GridItem.MouseOut(ev)}, true); } - } +// } } +GridItem.prototype.AddClass = function(elem, class_name) +{ + var cur_classes = elem.className; +// if (cur_classes.match(class_name)) return; + elem.className = cur_classes+' '+class_name; +// console.log('added %s to %s resulted %s', class_name, elem.id, elem.className) +} + +GridItem.prototype.RemoveClass = function(elem, class_name) +{ + var cur_classes = elem.className; +// console.log('looking for %s in %s', class_name, cur_classes) + if (!cur_classes.match(class_name)) return; + cur_classes = cur_classes.replace(class_name, ''); + cur_classes = cur_classes.replace(/[ ]+/, ' '); + elem.className = cur_classes; +// console.log('removed %s from %s resulted %s', class_name, elem.id, elem.className) +} + GridItem.prototype.DisableClicking = function () { this.HTMLelement.onclick = function(ev) { @@ -153,9 +172,11 @@ { if (this.selected) return; this.selected = true; - this.HTMLelement.className = this.class_on; + this.HTMLelement.setAttribute('_row_selected', 1) + this.AddClass(this.HTMLelement, this.class_on); if ( this.LeftElement ) { - this.LeftElement.className = this.class_on; + this.LeftElement.setAttribute('_row_selected', 1) + this.AddClass(this.LeftElement, this.class_on); } if ( isset(this.CheckBox) ) { this.CheckBox.checked = true; @@ -174,9 +195,11 @@ { if ( !this.selected && !force) return; this.selected = false; - this.HTMLelement.className = this.class_off; + this.HTMLelement.removeAttribute('_row_selected') + this.RemoveClass(this.HTMLelement, this.class_on); if ( this.LeftElement ) { - this.LeftElement.className = this.class_off; + this.LeftElement.removeAttribute('_row_selected') + this.RemoveClass(this.LeftElement, this.class_on); } if ( isset(this.CheckBox) ) { this.CheckBox.checked = false; @@ -244,16 +267,28 @@ GridItem.prototype.MouseOver = function (ev) { - this.HTMLelement.className = this.Grid.MouseOverClass; + this.HTMLelement.setAttribute('_row_highlighted', 1) + + this.AddClass(this.HTMLelement, this.Grid.MouseOverClass); + +// if (this.Grid.MouseOverClass) {this.HTMLelement.className = this.Grid.MouseOverClass;} if ( this.LeftElement ) { - this.LeftElement.className = this.Grid.MouseOverClass; + this.LeftElement.setAttribute('_row_highlighted', 1) +// if (this.Grid.MouseOverClass) this.LeftElement.className = this.Grid.MouseOverClass; + this.AddClass(this.LeftElement, this.Grid.MouseOverClass); +// this.LeftElement.className = this.LeftElement.className; // this is to make IE re-render the element } } GridItem.prototype.MouseOut = function (ev) { - this.HTMLelement.className = this.selected ? this.class_on : this.class_off; + this.HTMLelement.removeAttribute('_row_highlighted') + this.RemoveClass(this.HTMLelement, this.Grid.MouseOverClass); +// if (this.Grid.MouseOverClass) {this.HTMLelement.className = this.selected ? this.class_on : this.class_off;} if ( this.LeftElement ) { - this.LeftElement.className = this.selected ? this.class_on : this.class_off; + this.LeftElement.removeAttribute('_row_highlighted') + this.RemoveClass(this.LeftElement, this.Grid.MouseOverClass); +// if (this.Grid.MouseOverClass) this.LeftElement.className = this.selected ? this.class_on : this.class_off; +// this.LeftElement.className = this.LeftElement.className; // this is to make IE re-render the element } }