/*
	Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dojox.grid.compat._grid.selection"]){
dojo._hasResource["dojox.grid.compat._grid.selection"]=true;
dojo.provide("dojox.grid.compat._grid.selection");
dojo.declare("dojox.grid.selection",null,{constructor:function(_1){
this.grid=_1;
this.selected=[];
},multiSelect:true,selected:null,updating:0,selectedIndex:-1,onCanSelect:function(_2){
return this.grid.onCanSelect(_2);
},onCanDeselect:function(_3){
return this.grid.onCanDeselect(_3);
},onSelected:function(_4){
return this.grid.onSelected(_4);
},onDeselected:function(_5){
return this.grid.onDeselected(_5);
},onChanging:function(){
},onChanged:function(){
return this.grid.onSelectionChanged();
},isSelected:function(_6){
return this.selected[_6];
},getFirstSelected:function(){
for(var i=0,l=this.selected.length;i<l;i++){
if(this.selected[i]){
return i;
}
}
return -1;
},getNextSelected:function(_9){
for(var i=_9+1,l=this.selected.length;i<l;i++){
if(this.selected[i]){
return i;
}
}
return -1;
},getSelected:function(){
var _c=[];
for(var i=0,l=this.selected.length;i<l;i++){
if(this.selected[i]){
_c.push(i);
}
}
return _c;
},getSelectedCount:function(){
var c=0;
for(var i=0;i<this.selected.length;i++){
if(this.selected[i]){
c++;
}
}
return c;
},beginUpdate:function(){
if(this.updating==0){
this.onChanging();
}
this.updating++;
},endUpdate:function(){
this.updating--;
if(this.updating==0){
this.onChanged();
}
},select:function(_11){
this.unselectAll(_11);
this.addToSelection(_11);
},addToSelection:function(_12){
_12=Number(_12);
if(this.selected[_12]){
this.selectedIndex=_12;
}else{
if(this.onCanSelect(_12)!==false){
this.selectedIndex=_12;
this.beginUpdate();
this.selected[_12]=true;
this.grid.onSelected(_12);
this.endUpdate();
}
}
},deselect:function(_13){
_13=Number(_13);
if(this.selectedIndex==_13){
this.selectedIndex=-1;
}
if(this.selected[_13]){
if(this.onCanDeselect(_13)===false){
return;
}
this.beginUpdate();
delete this.selected[_13];
this.grid.onDeselected(_13);
this.endUpdate();
}
},setSelected:function(_14,_15){
this[(_15?"addToSelection":"deselect")](_14);
},toggleSelect:function(_16){
this.setSelected(_16,!this.selected[_16]);
},insert:function(_17){
this.selected.splice(_17,0,false);
if(this.selectedIndex>=_17){
this.selectedIndex++;
}
},remove:function(_18){
this.selected.splice(_18,1);
if(this.selectedIndex>=_18){
this.selectedIndex--;
}
},unselectAll:function(_19){
for(var i in this.selected){
if((i!=_19)&&(this.selected[i]===true)){
this.deselect(i);
}
}
},shiftSelect:function(_1b,_1c){
var s=(_1b>=0?_1b:_1c),e=_1c;
if(s>e){
e=s;
s=_1c;
}
for(var i=s;i<=e;i++){
this.addToSelection(i);
}
},clickSelect:function(_20,_21,_22){
this.beginUpdate();
if(!this.multiSelect){
this.select(_20);
}else{
var _23=this.selectedIndex;
if(!_21){
this.unselectAll(_20);
}
if(_22){
this.shiftSelect(_23,_20);
}else{
if(_21){
this.toggleSelect(_20);
}else{
this.addToSelection(_20);
}
}
}
this.endUpdate();
},clickSelectEvent:function(e){
this.clickSelect(e.rowIndex,e.ctrlKey,e.shiftKey);
},clear:function(){
this.beginUpdate();
this.unselectAll();
this.endUpdate();
}});
}
