Index: trunk/kernel/admin_templates/incs/grid.js =================================================================== diff -u -r5006 -r5022 --- trunk/kernel/admin_templates/incs/grid.js (.../grid.js) (revision 5006) +++ trunk/kernel/admin_templates/incs/grid.js (.../grid.js) (revision 5022) @@ -1,3 +1,32 @@ +var $GridManager = new GridManager(); + +function GridManager () { + this.Grids = Grids; // get all from global variable, in future replace all references to it with $GridManager.Grids + this.AlternativeGrids = new Array(); +} + +GridManager.prototype.AddAlternativeGrid = function ($source_grid, $destination_grid, $reciprocal) +{ + if (typeof(this.AlternativeGrids[$source_grid]) == 'undefined') { + // create array if it is first alternative grid to this one + this.AlternativeGrids[$source_grid] = new Array(); + } + this.AlternativeGrids[$source_grid].push($destination_grid); + + if ($reciprocal) { + this.AddAlternativeGrid($destination_grid, $source_grid); + } +} + +GridManager.prototype.ClearAlternativeGridsSelection = function ($source_prefix) +{ + var $i = 0; + while ($i < this.AlternativeGrids[$source_prefix].length) { + this.Grids[ this.AlternativeGrids[$source_prefix][$i] ].ClearSelection(); + $i++; + } +} + function GridItem(grid, an_element, cb, item_id, class_on, class_off) { this.Grid = grid; @@ -141,8 +170,9 @@ } -function Grid(class_on, class_off, dbl_click, toolbar) +function Grid(prefix, class_on, class_off, dbl_click, toolbar) { + this.prefix = prefix; this.class_on = class_on; this.class_off = class_off; this.Items = new Array(); @@ -297,17 +327,13 @@ Grid.prototype.ClearAlternativeGridsSelection = function (called_from) { - for (var i in this.AlternativeGrids) { - this.AlternativeGrids[i].ClearSelection(null, called_from + ' -> Grid.ClearAlternativeGridsSelection'); - } + $GridManager.ClearAlternativeGridsSelection(this.prefix); } Grid.prototype.AddAlternativeGrid = function (alt_grid, reciprocal) { - this.AlternativeGrids.push(alt_grid); - if (typeof(reciprocal) != 'undefined' && reciprocal) { - alt_grid.AddAlternativeGrid(this); - } + var $dst_prefix = typeof('alt_grid') == 'string' ? alt_grid : alt_grid.prefix; + $GridManager.AddAlternativeGrid(this.prefix, $dst_prefix, reciprocal); } Grid.prototype.FirstSelected = function ()