Index: branches/5.1.x/core/admin_templates/js/simple_grid.js =================================================================== --- branches/5.1.x/core/admin_templates/js/simple_grid.js (revision 13878) +++ branches/5.1.x/core/admin_templates/js/simple_grid.js (revision 13879) @@ -1,183 +1,178 @@ function SimpleGrid($id_prefix, $field_mask, $show_order) { this.ItemIDs = new Array (); this.NextNumber = 0; this.IDPrefix = $id_prefix; this.FieldMask = $field_mask; this.Container = this.getControl('container'); this.ShowOrder = $show_order; } SimpleGrid.prototype.registerRecord = function ($id) { var $prev_id = this.lastID(); if ($prev_id !== false) { this.getControl('button_' + $prev_id).value = '-'; } $id = parseInt($id); this.ItemIDs.push($id); if ($id < 0 && Math.abs($id) > Math.abs(this.NextNumber)) { this.NextNumber = $id; } if (this.ShowOrder) { this.getControl('number_'+$id).innerHTML = this.ItemIDs.length; } this.processRecordDependancies($id); } SimpleGrid.prototype.renumberRecords = function () { if (!this.ShowOrder) { return ; } var $i = 0; while ($i < this.ItemIDs.length) { this.getControl('number_' + this.ItemIDs[$i]).innerHTML = $i + 1; $i++; } } SimpleGrid.prototype.nextNumber = function () { return --this.NextNumber; } SimpleGrid.prototype.lastID = function () { return this.ItemIDs.length ? this.ItemIDs.slice(this.ItemIDs.length - 1)[0] : false; } SimpleGrid.prototype.toggleRecord = function ($item_id) { if (this.lastID() == $item_id) { this.addRecord(); } else { this.removeRecord($item_id); } } SimpleGrid.prototype.getControl = function ($name) { return document.getElementById(this.IDPrefix + '_' + $name); } SimpleGrid.prototype.getField = function ($id, $field_name, $prepend, $append) { $prepend = isset($prepend) ? $prepend + '_' : ''; $append = isset($append) ? '_' + $append : ''; return document.getElementById($prepend + this.FieldMask.replace('#FIELD#', $field_name).replace('#ID#', $id) + $append); } -SimpleGrid.prototype.markError = function ($item_id, $field_name, $error_found) { +SimpleGrid.prototype.markError = function ($item_id, $field_name, $error_found, $error_message) { if (!isset($error_found)) { $error_found = true; } - var $field = this.getField($item_id, $field_name); + var $field = $( this.getField($item_id, $field_name) ); + if ($error_found) { - $field.style.backgroundColor = '#EF2C2C'; + $field.css('background-color', '#EF2C2C').attr('title', $error_message === undefined ? '' : $error_message) // TODO: duplicate focus events possible on one element, fix this later - addEvent($field, 'focus', + .focus( function($e) { - if (!$e) { - $e = window.event; - } - - var $element = document.all ? $e.srcElement : $e.currentTarget; - $element.style.backgroundColor = ''; + $(this).css('background-color', '').attr('title', ''); } - ); } else { - $field.style.backgroundColor = ''; + $field.css('background-color', '').attr('title', ''); } } SimpleGrid.prototype.validateRecord = function ($item_id) { return true; } SimpleGrid.prototype.validate = function () { var $i = 0; var $is_valid = true; while ($i < this.ItemIDs.length) { if (!this.validateRecord(this.ItemIDs[$i])) { $is_valid = false; } $i++; } return $is_valid; } SimpleGrid.prototype.addRecord = function ($after_item_id) { var new_item_number = this.nextNumber(); var $item_mask = this.getControl('mask').value; var $result_html = $item_mask.replace(/#NUMBER#/g, new_item_number); var $div = document.createElement('DIV'); $div.id = this.IDPrefix + '_' + new_item_number; if ($after_item_id === undefined) { this.getControl('container').appendChild($div); } else { $('#' + jq(this.IDPrefix + '_' + $after_item_id)).after($div); } $div.innerHTML = $result_html; var $js_mask = this.getControl('js_mask').value; var result_js = $js_mask.replace(/#NUMBER#/g, new_item_number); eval(result_js); this.updateTotals(); return new_item_number; } SimpleGrid.prototype.removeRecord = function ($number) { var $index = array_search($number, this.ItemIDs); if ($index == -1) { // don't allow to delete missing rows return false; } this.getControl('container').removeChild( this.getControl($number) ); this.ItemIDs.splice($index, 1); this.renumberRecords(); this.updateTotals(); return true; } SimpleGrid.prototype.removeRecords = function () { while (this.ItemIDs.length > 0) { var $item_id = this.ItemIDs[this.ItemIDs.length - 1]; this.removeRecord($item_id); } } SimpleGrid.prototype.updateTotals = function () { // prototype } SimpleGrid.prototype.processRecordDependancies = function ($id) { // prototype } SimpleGrid.prototype.each = function($callback) { var $result = null; for (var $i = 0; $i < this.ItemIDs.length; $i++) { $result = $callback.call(this, this.ItemIDs[$i]); if ($result === false) { break; } } }