﻿ $IG.Selection=function(obj,objProps,control,parentCollection){$IG.Selection.initializeBase(this,[obj,objProps,control,parentCollection]);this._selectedCellCss=this._get_clientOnlyValue("sc");this._selectedRowSelectorCss=this._get_clientOnlyValue("sr");this._selectedRowSelectorImageCss=this._get_clientOnlyValue("si");this._selectedHeaderCss=this._get_clientOnlyValue("sh");this._container=control._elements["container"];this._header=control._elements["columnHeaderRow"];this._gridElement=control._element;this._containerMouseMoveHandler=Function.createDelegate(this,this._onMousemoveHandler);this._containerMouseDownHandler=Function.createDelegate(this,this._onMousedownHandler);this._headerMouseDownHandler=Function.createDelegate(this,this._onHeaderMousedownHandler);this._documentMouseUpHandler=Function.createDelegate(this,this._onMouseupHandler);this._gridElementSelectStartHandler=Function.createDelegate(this,this._onSelectstartHandler);this._gridElementKeyDownHandler=Function.createDelegate(this,this._onKeydownHandler);this._grid._addElementEventHandler(this._container,"keydown",this._gridElementKeyDownHandler);this._grid._addElementEventHandler(this._container,"mousemove",this._containerMouseMoveHandler);this._grid._addElementEventHandler(this._container,"mousedown",this._containerMouseDownHandler);if(this._header!=null){if(this._header.length){for(var i=0;i<this._header.length;i++)this._grid._addElementEventHandler(this._header[i],"mousedown",this._headerMouseDownHandler);}else this._grid._addElementEventHandler(this._header,"mousedown",this._headerMouseDownHandler);}this._grid._addElementEventHandler(document,"mouseup",this._documentMouseUpHandler);this._grid._gridUtil._registerEventListener(this._grid,"SelectStartContainer",this._gridElementSelectStartHandler);this._mouseDown=false;this._rows=this._owner.get_rows();};$IG.Selection.prototype={get_cellClickAction:function(){return this._get_value($IG.GridSelectionProps.CellClickAction);},set_cellClickAction:function(val){this._set_value($IG.GridSelectionProps.CellClickAction,val);},get_cellSelectType:function(){return this._get_value($IG.GridSelectionProps.CellSelectType);},set_cellSelectType:function(val){this._set_value($IG.GridSelectionProps.CellSelectType,val);},get_rowSelectType:function(){return this._get_value($IG.GridSelectionProps.RowSelectType);},set_rowSelectType:function(val){this._set_value($IG.GridSelectionProps.RowSelectType,val);},get_columnSelectType:function(){return this._get_value($IG.GridSelectionProps.ColumnSelectType);},set_columnSelectType:function(val){this._set_value($IG.GridSelectionProps.ColumnSelectType,val);},get_selectedCells:function(){return this._selectedCellCollection;},get_selectedRows:function(){return this._selectedRowCollection;},get_selectedColumns:function(){return this._selectedColumnCollection;},_onHeaderMousedownHandler:function(evnt){if(evnt.button==0){var index=evnt.target.getAttribute("adr");if(index!=null){var columnSelectType=this.get_columnSelectType();if(columnSelectType!=$IG.SelectType.None){if(evnt.shiftKey&&columnSelectType==$IG.SelectType.Multiple)this._selectedColumnCollection._selectRange(index);else{this.__clearBasedOnCtrlKey(evnt.ctrlKey,"column");this._selectedColumnCollection._select(index,evnt.ctrlKey);}}}}},_onMousedownHandler:function(evnt){this._handled=null;if(evnt.button==0){this._mouseDown=true;var cell=this._grid._gridUtil.getCellFromElem(evnt.target);if(cell!=null){if(this.get_cellClickAction()==$IG.CellClickAction.Cell){var cellSelectType=this.get_cellSelectType();if(cellSelectType!=$IG.SelectType.None){var cellElem=cell.get_element();if(evnt.shiftKey&&cellSelectType==$IG.SelectType.Multiple){this.__clearBasedOnCtrlKey(evnt.ctrlKey,"cell");this._selectedCellCollection._selectRange(cell.get_index(),cellElem);}else{this.__clearBasedOnCtrlKey(evnt.ctrlKey,"cell");var row=cell.get_row();this._selectedCellCollection._select(row.get_index(),cell.get_index(),cellElem,evnt.ctrlKey);}this._handled=cellElem;}}else{var rowSelectType=this.get_rowSelectType();if(rowSelectType!=$IG.SelectType.None){if(evnt.shiftKey&&rowSelectType==$IG.SelectType.Multiple){this.__clearBasedOnCtrlKey(evnt.ctrlKey,"row");this._selectedRowCollection._selectRange(cell.get_row());}else{this.__clearBasedOnCtrlKey(evnt.ctrlKey,"row");this._selectedRowCollection._select(cell.get_row(),evnt.ctrlKey);}this._handled=cell.get_element();}}}}},_onMousemoveHandler:function(evnt){if(this._mouseDown&&!evnt.ctrlKey){var cell=this._grid._gridUtil.getCellFromElem(evnt.target);if(cell!=null){var cellElem=cell.get_element();if(this._handled==cellElem)return;if(this.get_cellClickAction()==$IG.CellClickAction.Cell&&this.get_cellSelectType()==$IG.SelectType.Multiple)this._selectedCellCollection._selectRange(cell.get_index(),cellElem);else if(this.get_cellClickAction()==$IG.CellClickAction.Row&&this.get_rowSelectType()==$IG.SelectType.Multiple)this._selectedRowCollection._selectRange(cell.get_row());this._handled=cellElem;}}},_onKeydownHandler:function(evnt){if(this._activation!=null){var key=evnt.keyCode;if(key==Sys.UI.Key.space){var cell=this._activation.get_activeCell();if(cell!=null){if(this.get_cellSelectType()==$IG.SelectType.Multiple){this.__clearBasedOnCtrlKey(evnt.ctrlKey,"cell");var row=cell.get_row();this._selectedCellCollection._select(row.get_index(),cell.get_index(),cell.get_element(),evnt.ctrlKey);}if(this.get_rowSelectType()==$IG.SelectType.Multiple){this.__clearBasedOnCtrlKey(evnt.ctrlKey,"row");this._selectedRowCollection._select(cell.get_row(),evnt.ctrlKey);}}}}},_activeCellChanged:function(args){var cell=args.cell;var cellSelectType=this.get_cellSelectType();var rowSelectType=this.get_rowSelectType();var cellClickAction=this.get_cellClickAction();var cancelUpdateCellSelection=(cellClickAction!=$IG.CellClickAction.Cell&&args.howInvoked=="mousedown")||(args.howInvoked=="rowSelector");var cancelUpdateRowSelection=(cellClickAction!=$IG.CellClickAction.Row&&args.howInvoked=="mousedown")||(args.howInvoked=="rowSelector");if(cell){if(cellSelectType!=$IG.SelectType.None&&!cancelUpdateCellSelection){if(cellSelectType==$IG.SelectType.Single||(!args.shiftKey&&!args.ctrlKey)){var row=cell.get_row();this._selectedCellCollection._select(row.get_index(),cell.get_index(),cell.get_element(),false);}else if(cellSelectType==$IG.SelectType.Multiple){if(cellClickAction==$IG.CellClickAction.Cell&&args.howInvoked=="mousedown")return;if(args.shiftKey){this._selectedCellCollection._selectRange(cell.get_index(),cell.get_element());}}}if(rowSelectType!=$IG.SelectType.None&&!cancelUpdateRowSelection){var row=cell.get_row();if(rowSelectType==$IG.SelectType.Single||(!args.shiftKey&&!args.ctrlKey)){this._selectedRowCollection._select(row,false);}else if(rowSelectType==$IG.SelectType.Multiple){if(cellClickAction==$IG.CellClickAction.Row&&args.howInvoked=="mousedown")return;if(args.shiftKey){this._selectedRowCollection._selectRange(row);}}}}},_onMouseupHandler:function(evnt){this._mouseDown=false;this._handled=null;},_onSelectstartHandler:function(evnt){var cell=this._grid._gridUtil.getCellFromElem(evnt.target);if(cell!=null)$util.cancelEvent(evnt);},_rowSelectorClicked:function(args){var evnt=args.evnt;var row=args.row;var rowSelectType=this.get_rowSelectType();if(rowSelectType!=$IG.SelectType.None){if(evnt.shiftKey&&rowSelectType==$IG.SelectType.Multiple){this.__clearBasedOnCtrlKey(evnt.ctrlKey,"row");this._selectedRowCollection._selectRange(row);}else{this.__clearBasedOnCtrlKey(evnt.ctrlKey,"row");this._selectedRowCollection._select(row,evnt.ctrlKey);}this._handled=row.get_cell(0).get_element();}},addInternalColumnSelectionChangingHandler:function(handler){this._grid._gridUtil._registerEventListener(this,"_SelectedColumnChanging",handler);},__clearAll:function(){this._selectedCellCollection.clear();this._selectedRowCollection.clear();this._selectedColumnCollection.clear();},__clearBasedOnCtrlKey:function(ctrlKey,type){if(!ctrlKey){if(type=="cell"){this._selectedRowCollection._onClear();this._selectedColumnCollection._onClear();}else if(type=="row"){this._selectedCellCollection._onClear();this._selectedColumnCollection._onClear();}else if(type=="column"){this._selectedCellCollection._onClear();this._selectedRowCollection._onClear();}}else{if(type=="cell"){if(this.get_columnSelectType()==$IG.SelectType.Single)this._selectedColumnCollection._onClear();if(this.get_rowSelectType()==$IG.SelectType.Single)this._selectedRowCollection._onClear();if(this.get_cellSelectType()==$IG.SelectType.Single){this._selectedColumnCollection._onClear();this._selectedRowCollection._onClear();}}else if(type=="row"){if(this.get_cellSelectType()==$IG.SelectType.Single)this._selectedCellCollection._onClear();if(this.get_columnSelectType()==$IG.SelectType.Single)this._selectedColumnCollection._onClear();if(this.get_rowSelectType()==$IG.SelectType.Single){this._selectedColumnCollection._onClear();this._selectedCellCollection._onClear();}}else if(type=="column"){if(this.get_cellSelectType()==$IG.SelectType.Single)this._selectedCellCollection._onClear();if(this.get_rowSelectType()==$IG.SelectType.Single)this._selectedRowCollection._onClear();if(this.get_columnSelectType()==$IG.SelectType.Single){this._selectedRowCollection._onClear();this._selectedCellCollection._onClear();}}}},_initializeComplete:function(){this._rowSelectors=this._parentCollection.getBehaviorFromInterface($IG.IRowSelectorsBehavior);if(this._rowSelectors)this._rowSelectors.addRowSelectorClickedEventHandler(Function.createDelegate(this,this._rowSelectorClicked));this._selectedRowCollection=new $IG.GridSelectedRowCollection(this._selectedCellCss,this,$IG.GridSelectionProps.SelectedRows,this._rows);this._selectedCellCollection=new $IG.GridSelectedCellCollection(this._selectedCellCss,this,$IG.GridSelectionProps.SelectedCells,this._rows);this._selectedColumnCollection=new $IG.GridSelectedColumnCollection(this._selectedCellCss,this,$IG.GridSelectionProps.SelectedColumns,this._rows);this._activation=this._grid.get_behaviors().getBehaviorFromInterface($IG.IActivationBehavior);if(this._activation)this._activation._addActiveCellChangedEventHandler(Function.createDelegate(this,this._activeCellChanged));},dispose:function(){if(!this._grid)return;this._grid._removeElementEventHandler(this._container,"mousemove",this._containerMouseMoveHandler);this._grid._removeElementEventHandler(this._container,"mousedown",this._containerMouseDownHandler);if(this._header!=null)this._grid._removeElementEventHandler(this._header,"mousedown",this._headerMouseDownHandler);this._grid._removeElementEventHandler(document,"mouseup",this._documentMouseUpHandler);this._grid._gridUtil._unregisterEventListener(this._grid,"SelectStartContainer",this._gridElementSelectStartHandler);this._gridElementSelectStartHandler=null;$IG.Selection.callBaseMethod(this,"dispose");}};$IG.Selection.registerClass('Infragistics.Web.UI.Selection',$IG.GridBehavior,$IG.ISelectionBehavior);$IG.GridSelectionCollection=function(selectedCssClass,owner,enumVal,rows){this._selectedCssClass=selectedCssClass;this._ht={};this._owner=owner;this._enumVal=enumVal;var keys=owner._get_value(enumVal);if(keys==null)this._keys=[];else this._keys=Array.clone(keys);this._rows=rows;this._grid=this._owner._owner;this._util=this._grid._gridUtil;};$IG.GridSelectionCollection.prototype={add:function(item){},addRange:function(items){if(items!=null&&items.length>0){for(var i=0;i<items.length;i++)this.add(items[i]);}},remove:function(item){},indexOf:function(item){return-1;},clear:function(){this._updateCSM();},get_length:function(){return this._keys.length;},getItem:function(index){},_get_selectType:function(){},_findElem:function(){return null;},_select:function(param1,param2,param3,param4){this._onSelect(param1,param2,param3,param4);this._updateCSM();},_onSelect:function(){},_internalSelect:function(){},_unselect:function(param1,param2,param3){this._internalUnselect(param1,param2,param3);this._updateCSM();},_internalUnselect:function(){},_onSelectRange:function(){},_selectRange:function(param1,param2,param3,param4){this._onSelectRange(param1,param2,param3,param4);this._updateCSM();},_internalSelectRange:function(){},_updateCSM:function(){this._owner._set_value(this._enumVal,this._keys);},_findRowObjFromIndex:function(rowIndex){return this._rows.get_row(rowIndex,true);}};$IG.GridSelectionCollection.registerClass('Infragistics.Web.UI.GridSelectionCollection');$IG.GridSelectedCellCollection=function(selectedCssClass,owner,enumVal,rows){$IG.GridSelectedCellCollection.initializeBase(this,[selectedCssClass,owner,enumVal,rows]);this._elems=[];this._rowElemCache=[];this._srCss=this._owner._selectedRowSelectorCss;this._siCss=this._owner._selectedRowSelectorImageCss;this._rs=this._owner._rowSelectors;for(var i in this._keys){if(!isNaN(parseInt(i))){var indexes=this._keys[i];var row=this._rows.get_rowFromIDPair(indexes[0]);if(row!=null){var elem=this._findElem(row.get_index(),indexes[1]);this._elems.push(elem);elem._igcs=true;}}}};$IG.GridSelectedCellCollection.prototype={add:function(obj){if(!obj)return;var elem=obj.get_element();var rowIndex=this._util.findRowIndexByCellElem(elem);this._internalSelect(rowIndex,obj.get_index(),elem);this._updateCSM();},remove:function(obj){if(!obj)return;var elem=obj.get_element();var index=Array.indexOf(this._elems,elem);if(index>=0){this._internalUnselect(index);while(Array.remove(this._elems,null));while(Array.remove(this._keys,null));}this._updateCSM();},indexOf:function(obj){if(!obj)return;var elem=obj.get_element();return Array.indexOf(this._elems,elem);},clear:function(){for(var i in this._elems)if(!isNaN(parseInt(i)))this._internalUnselect(i);while(Array.remove(this._elems,null));while(Array.remove(this._keys,null));$IG.GridSelectedCellCollection.callBaseMethod(this,'clear');},_get_selectType:function(){return this._owner.get_cellSelectType();},_onClear:function(){if(this._keys.length>0){var args=this._owner.__raiseClientEvent("CellSelectionChanging",$IG.CellSelectionChangingEventArgs,[this._rows,this._keys,[]]);if(args==null||!args.get_cancel()){this.clear();this._owner.__raiseClientEvent("CellSelectionChanged",$IG.CellSelectionChangedEventArgs,[this]);}}},getItem:function(index){var obj=null;var key=this._keys[index];if(key!=null){var rowObj=this._rows.get_rowFromIDPair(key[0]);obj=rowObj.get_cell(key[1]);}return obj;},_internalUnselect:function(index){var rowObj=this._owner._grid._gridUtil.getRowFromCellElem(this._elems[index]);$util.removeCompoundClass(this._elems[index],this._selectedCssClass);this._elems[index]._igcs=false;this._elems[index]=null;this._keys[index]=null;if(this._rs){this._rs.removeSelectorImage(rowObj,this._siCss);this._rs.removeSelectorClass(rowObj,this._srCss);}},_onSelect:function(rowIndex,cellIndex,elem,ctrlKey){var isSelected=elem._igcs;rowIndex=parseInt(rowIndex);if(rowIndex<0)return;if(!isSelected||!ctrlKey){if(isSelected&&this._keys.length==1)return;var newKeys=[];if(ctrlKey&&this._get_selectType()==$IG.SelectType.Multiple)newKeys=Array.clone(this._keys);newKeys.push([this._findRowObjFromIndex(rowIndex).get_idPair(),cellIndex]);var args=this._owner.__raiseClientEvent("CellSelectionChanging",$IG.CellSelectionChangingEventArgs,[this._rows,this._keys,newKeys]);if(args==null||!args.get_cancel()){if(!ctrlKey||this._get_selectType()==$IG.SelectType.Single)this.clear();this._internalSelect(rowIndex,cellIndex,elem);this._owner.__raiseClientEvent("CellSelectionChanged",$IG.CellSelectionChangedEventArgs,[this]);}}else if(isSelected&&ctrlKey){var count=this._keys.length;for(var i=0;i<count;i++){var row=this._rows.get_rowFromIDPair(this._keys[i][0]);if(row.get_index()==rowIndex&&this._keys[i][1]==cellIndex){var newKeys=Array.clone(this._keys);Array.removeAt(newKeys,i);var args=this._owner.__raiseClientEvent("CellSelectionChanging",$IG.CellSelectionChangingEventArgs,[this._rows,this._keys,newKeys]);if(args==null||!args.get_cancel()){this._internalUnselect(i);while(Array.remove(this._elems,null));while(Array.remove(this._keys,null));this._owner.__raiseClientEvent("CellSelectionChanged",$IG.CellSelectionChangedEventArgs,[this]);}return;}}}},_internalSelect:function(rowIndex,cellIndex,elem){if(rowIndex==-1)return;if(!elem._igcs){var row=this._findRowObjFromIndex(rowIndex);var idPair=row.get_idPair();this._ht["r"+rowIndex+"c"+cellIndex]=elem;this._elems.push(elem);elem.className+=" "+this._selectedCssClass;elem._igcs=true;this._keys.push([idPair,cellIndex]);if(this._rs){this._rs.addSelectorImage(row,this._siCss);this._rs.addSelectorClass(row,this._srCss);}}},_onSelectRange:function(cellIndex,cellElem){var rowIndex=this._util.findRowIndexByCellElem(cellElem);var args=this._owner.__raiseClientEvent("CellSelectionChanging",$IG.CellSelectionChangingEventArgs,[this._rows,this._keys,null,cellIndex,rowIndex]);if(args==null||!args.get_cancel()){this._internalSelectRange(cellIndex,cellElem);this._owner.__raiseClientEvent("CellSelectionChanged",$IG.CellSelectionChangedEventArgs,[this]);}},_internalSelectRange:function(cellIndex,cellElem){var startCell=null;var startRow=0;if(this._keys.length>0){var row=this._rows.get_rowFromIDPair(this._keys[0][0]);if(row!=null)startRow=row.get_index();startCell=this._keys[0][1];}else{var rowIndex=this._util.findRowIndexByCellElem(cellElem);this._internalSelect(rowIndex,cellIndex,cellElem);return;}var endCell=parseInt(cellIndex);var endRow=parseInt(this._util.findRowIndexByCellElem(cellElem));var startCellVisibleIdx=null;var endCellVisibleIdx=null;if(startCell!=null)startCellVisibleIdx=this._grid.get_columns().get_column(startCell).get_visibleIndex();if(endCell!=null)endCellVisibleIdx=this._grid.get_columns().get_column(endCell).get_visibleIndex();if(startCellVisibleIdx!=null&&endCellVisibleIdx!=null&&startCellVisibleIdx>endCellVisibleIdx){var endIdx=endCellVisibleIdx;endCellVisibleIdx=startCellVisibleIdx;startCellVisibleIdx=endIdx;}if(endRow<startRow){var endR=endRow;endRow=startRow;startRow=endR;}for(var i in this._keys){if(!isNaN(parseInt(i))){var key=this._keys[i];var rowObj=this._rows.get_rowFromIDPair(key[0]);if(rowObj!=null){var row=rowObj.get_index();var cell=this._grid.get_columns().get_column(key[1]).get_visibleIndex();if(row<startRow||row>endRow)this._internalUnselect(i);else if(cell<startCellVisibleIdx||cell>endCellVisibleIdx)this._internalUnselect(i);}}}while(Array.remove(this._elems,null));while(Array.remove(this._keys,null));for(var i=startRow;i<=endRow;i++){for(var j=startCellVisibleIdx;j<=endCellVisibleIdx;j++){var adr=this._util._getColumnAdrFromVisibleIndex(j);var elem=this._findElem(i,adr);this._internalSelect(i,adr,elem);}}},_findElem:function(rowIndex,cellIndex){var elem=this._ht["r"+rowIndex+"c"+cellIndex];if(!elem){var rowObj=this._findRowObjFromIndex(rowIndex);var visibleIndex=this._grid.get_columns().get_column(cellIndex).get_visibleIndex();this._ht["r"+rowIndex+"c"+cellIndex]=elem=this._util.getCellElemFromIndex(rowObj,visibleIndex);}return elem;}};$IG.GridSelectedCellCollection.registerClass('Infragistics.Web.UI.GridSelectedCellCollection',$IG.GridSelectionCollection);$IG.GridSelectedRowCollection=function(selectedCssClass,owner,enumVal,rows){$IG.GridSelectedRowCollection.initializeBase(this,[selectedCssClass,owner,enumVal,rows]);this._srCss=this._owner._selectedRowSelectorCss;this._siCss=this._owner._selectedRowSelectorImageCss;this._rs=this._owner._rowSelectors;for(var i in this._keys){if(!isNaN(parseInt(i))){var row=this._resolveRowFromKeyIndex(i);if(row!=null)this._ht[row.get_index()]=true;}}};$IG.GridSelectedRowCollection.prototype={add:function(obj){if(!obj)return;this._internalSelect(obj);this._updateCSM();},remove:function(obj){if(!obj)return;var index=this.indexOf(obj);if(index>=0){this._internalUnselect(index);while(Array.remove(this._keys,null));}this._updateCSM();},indexOf:function(obj){if(!obj)return-1;for(var i in this._keys){if(!isNaN(parseInt(i))){if(obj==this._resolveRowFromKeyIndex(i))return i;}}return-1;},clear:function(){for(var i in this._keys)if(!isNaN(parseInt(i)))this._internalUnselect(i);while(Array.remove(this._keys,null));$IG.GridSelectedRowCollection.callBaseMethod(this,'clear');},_get_selectType:function(){return this._owner.get_rowSelectType();},_onClear:function(){if(this._keys.length>0){var args=this._owner.__raiseClientEvent("RowSelectionChanging",$IG.RowSelectionChangingEventArgs,[this._rows,this._keys,[]]);if(args==null||!args.get_cancel()){this.clear();this._owner.__raiseClientEvent("RowSelectionChanged",$IG.RowSelectionChangedEventArgs,[this]);}}},getItem:function(index){return this._resolveRowFromKeyIndex(index);},_internalUnselect:function(index){var rowObj=this._resolveRowFromKeyIndex(index);var cellCount=rowObj.get_cellCount();var cellOffset=this._grid._get_cellIndexOffset();for(var j=cellOffset;j<cellOffset+cellCount;j++)$util.removeCompoundClass(rowObj._get_cellElementByIndex(rowObj.get_element(),j),this._selectedCssClass);if(this._rs){this._rs.removeSelectorImage(rowObj,this._siCss);this._rs.removeSelectorClass(rowObj,this._srCss);}var row=this._resolveRowFromKeyIndex(index);if(row!=null)this._ht[row.get_index()]=null;this._keys[index]=null;},_onSelect:function(rowObj,ctrlKey){var key=parseInt(rowObj.get_index());var isSelected=this._ht[key];if(!isSelected||!ctrlKey){if(isSelected&&this._keys.length==1)return;var newKeys=[];if(ctrlKey&&this._get_selectType()==$IG.SelectType.Multiple)newKeys=Array.clone(this._keys);newKeys.push(rowObj.get_idPair());var args=this._owner.__raiseClientEvent("RowSelectionChanging",$IG.RowSelectionChangingEventArgs,[this._rows,this._keys,newKeys]);if(args==null||!args.get_cancel()){if(!ctrlKey||this._get_selectType()==$IG.SelectType.Single)this.clear();this._internalSelect(rowObj);this._owner.__raiseClientEvent("RowSelectionChanged",$IG.RowSelectionChangedEventArgs,[this]);}}else if(isSelected&&ctrlKey){var count=this._keys.length;for(var i=0;i<count;i++){var row=this._resolveRowFromKeyIndex(i);if(row!=null){if(row.get_index()==key){var newKeys=Array.clone(this._keys);Array.removeAt(newKeys,i);var args=this._owner.__raiseClientEvent("RowSelectionChanging",$IG.RowSelectionChangingEventArgs,[this._rows,this._keys,newKeys]);if(args==null||!args.get_cancel()){this._internalUnselect(i);while(Array.remove(this._keys,null));this._owner.__raiseClientEvent("RowSelectionChanged",$IG.RowSelectionChangedEventArgs,[this]);}return;}}}}},_internalSelect:function(rowObj){if(this._grid._get_auxRowIndex(rowObj,null)!=-1||rowObj==null)return;if(!this._owner._activation)this._grid._element.focus();var key=parseInt(rowObj.get_index());if(!this._ht[key]){var cellCount=rowObj.get_cellCount();var cellOffset=this._grid._get_cellIndexOffset();for(var j=cellOffset;j<cellOffset+cellCount;j++)rowObj._get_cellElementByIndex(rowObj.get_element(),j).className+=" "+this._selectedCssClass;if(this._rs){this._rs.addSelectorImage(rowObj,this._siCss);this._rs.addSelectorClass(rowObj,this._srCss);}this._keys.push(rowObj.get_idPair());this._ht[key]=true;}},_onSelectRange:function(rowObj){var args=this._owner.__raiseClientEvent("RowSelectionChanging",$IG.RowSelectionChangingEventArgs,[this._rows,this._keys,null,rowObj]);if(args==null||!args.get_cancel()){this._internalSelectRange(rowObj);this._owner.__raiseClientEvent("RowSelectionChanged",$IG.RowSelectionChangedEventArgs,[this]);}},_internalSelectRange:function(rowObj){var startRow=0;if(this._keys.length>0){var row=this._resolveRowFromKeyIndex(0);if(row!=null)startRow=row.get_index();}else{this._internalSelect(rowObj);return;}var endRow=parseInt(rowObj.get_index());for(var i in this._keys){if(!isNaN(parseInt(i))){var row=this._resolveRowFromKeyIndex(i);if(row!=null){var key=row.get_index();if(key<startRow||key>endRow)this._internalUnselect(i);}}}while(Array.remove(this._keys,null));if(startRow==endRow)this._internalSelect(this._rows.get_row(startRow));else if(startRow<endRow){for(var i=startRow;i<=endRow;i++)this._internalSelect(this._rows.get_row(i,true));}else{for(var i=startRow;i>=endRow;i--)this._internalSelect(this._rows.get_row(i,true));}},_resolveRowFromKeyIndex:function(index){var key=this._keys[index];if(key)return this._rows.get_rowFromIDPair(key);return null;}};$IG.GridSelectedRowCollection.registerClass('Infragistics.Web.UI.GridSelectedRowCollection',$IG.GridSelectionCollection);$IG.GridSelectedColumnCollection=function(selectedCssClass,owner,enumVal,rows){$IG.GridSelectedColumnCollection.initializeBase(this,[selectedCssClass,owner,enumVal,rows]);this._sh=this._owner._selectedHeaderCss;for(var i in this._keys){if(!isNaN(parseInt(i))){this._ht[this._keys[i]]=true;}}};$IG.GridSelectedColumnCollection.prototype={add:function(obj){if(!obj)return;this._internalSelect(parseInt(obj.get_index()));this._updateCSM();},remove:function(obj){if(!obj)return;var length=this._rows.get_length();var key=parseInt(obj.get_index());var index=Array.indexOf(this._keys,key);if(index>=0){this._internalUnselect(index,length);while(Array.remove(this._keys,null));}this._updateCSM();},indexOf:function(obj){if(!obj)return;var key=parseInt(obj.get_index());return Array.indexOf(this._keys,key);},clear:function(){var rowCount=this._rows.get_length();for(var i in this._keys)if(!isNaN(parseInt(i)))this._internalUnselect(i,rowCount);while(Array.remove(this._keys,null));$IG.GridSelectedColumnCollection.callBaseMethod(this,'clear');},_get_selectType:function(){return this._owner.get_columnSelectType();},_onClear:function(){if(this._grid._gridUtil._fireEvent(this,"_SelectedColumnChanging",null)){return;}if(this._keys.length>0){var args=this._owner.__raiseClientEvent("ColumnSelectionChanging",$IG.ColumnSelectionChangingEventArgs,[this._grid,this._keys,[]]);if(args==null||!args.get_cancel()){this.clear();this._owner.__raiseClientEvent("ColumnSelectionChanged",$IG.ColumnSelectionChangedEventArgs,[this]);}}},getItem:function(index){var obj=null;var key=this._keys[index];if(key!=null)obj=this._grid._columns._getObjectByAdr(key);return obj;},_internalUnselect:function(index,rowCount){var columnIndex=this._keys[index];var column=this._grid.get_columns().get_column(columnIndex);var visibleIndex=column.get_visibleIndex();for(var j=0;j<rowCount;j++){var rowObj=this._findRowObjFromIndex(j,true);if(rowObj){var elem=this._util.getCellElemFromIndex(rowObj,visibleIndex);if(elem)$util.removeCompoundClass(elem,this._selectedCssClass);}}var elem=column._headerElement;if(elem)$util.removeCompoundClass(elem,this._sh);this._ht[this._keys[index]]=null;this._keys[index]=null;},_onSelect:function(index,ctrlKey){if(this._grid._gridUtil._fireEvent(this._owner,"_SelectedColumnChanging",null)){return;}var isSelected=this._ht[index];if(!isSelected||!ctrlKey){var newKeys=[];if(ctrlKey&&this._get_selectType()==$IG.SelectType.Multiple)newKeys=Array.clone(this._keys);newKeys.push([index]);var args=this._owner.__raiseClientEvent("ColumnSelectionChanging",$IG.ColumnSelectionChangingEventArgs,[this._grid,this._keys,newKeys]);if(args==null||!args.get_cancel()){if(!ctrlKey||this._get_selectType()==$IG.SelectType.Single)this.clear();this._internalSelect(index);this._owner.__raiseClientEvent("ColumnSelectionChanged",$IG.ColumnSelectionChangedEventArgs,[this]);}}else if(isSelected&&ctrlKey){var count=this._keys.length;for(var i=0;i<count;i++){if(this._keys[i]==index){var newKeys=Array.clone(this._keys);Array.removeAt(newKeys,i);var args=this._owner.__raiseClientEvent("ColumnSelectionChanging",$IG.ColumnSelectionChangingEventArgs,[this._grid,this._keys,newKeys]);if(args==null||!args.get_cancel()){this._internalUnselect(i,this._rows.get_length());while(Array.remove(this._keys,null));this._owner.__raiseClientEvent("ColumnSelectionChanged",$IG.ColumnSelectionChangedEventArgs,[this]);}return;}}}},_internalSelect:function(index){index=parseInt(index);if(!this._ht[index]){var columnIndex=this._keys[index];var rowCount=this._rows.get_length();var column=this._grid.get_columns().get_column(index);var visibleIndex=column.get_visibleIndex();for(var i=0;i<rowCount;i++){var rowObj=this._findRowObjFromIndex(i);if(rowObj){var elem=this._util.getCellElemFromIndex(rowObj,visibleIndex);if(elem)elem.className+=" "+this._selectedCssClass;}}var elem=column._headerElement;if(elem)$util.addCompoundClass(elem,this._sh);this._keys.push(index);this._ht[index]=true;}},_onSelectRange:function(index){if(this._grid._gridUtil._fireEvent(this._owner,"_SelectedColumnChanging",null)){return;}var args=this._owner.__raiseClientEvent("ColumnSelectionChanging",$IG.ColumnSelectionChangingEventArgs,[this._grid,this._keys,null,index]);if(args==null||!args.get_cancel()){this._internalSelectRange(index);this._owner.__raiseClientEvent("ColumnSelectionChanged",$IG.ColumnSelectionChangedEventArgs,[this]);}},_internalSelectRange:function(index){var startColumn=0;if(this._keys.length>0)startColumn=this._keys[0];else{this._internalSelect(index);return;}var endColumn=index;var startColumnVisibleIdx=null;var endColumnVisibleIdx=null;if(startColumn!=null)startColumnVisibleIdx=this._grid.get_columns().get_column(startColumn).get_visibleIndex();if(endColumn!=null)endColumnVisibleIdx=this._grid.get_columns().get_column(endColumn).get_visibleIndex();if(startColumnVisibleIdx!=null&&endColumnVisibleIdx!=null&&startColumnVisibleIdx>endColumnVisibleIdx){var endIdx=endColumnVisibleIdx;endColumnVisibleIdx=startColumnVisibleIdx;startColumnVisibleIdx=endIdx;}var rowCount=this._rows.get_length();for(var i in this._keys){if(!isNaN(parseInt(i))){var key=this._keys[i];if(key<startColumnVisibleIdx||key>endColumnVisibleIdx)this._internalUnselect(i,rowCount);}}while(Array.remove(this._keys,null));if(startColumnVisibleIdx==endColumnVisibleIdx)this._internalSelect(startColumnVisibleIdx);else if(startColumnVisibleIdx<endColumnVisibleIdx){for(var i=startColumnVisibleIdx;i<=endColumnVisibleIdx;i++)this._internalSelect(i);}else{for(var i=startColumnVisibleIdx;i>=endColumnVisibleIdx;i--)this._internalSelect(i);}}};$IG.GridSelectedColumnCollection.registerClass('Infragistics.Web.UI.GridSelectedColumnCollection',$IG.GridSelectionCollection);$IG.GridSelectionProps=new function(){this.CellClickAction=[$IG.GridBehaviorProps.Count+0,0];this.CellSelectType=[$IG.GridBehaviorProps.Count+1,1];this.RowSelectType=[$IG.GridBehaviorProps.Count+2,0];this.ColumnSelectType=[$IG.GridBehaviorProps.Count+3,0];this.SelectedCells=[$IG.GridBehaviorProps.Count+4,null];this.SelectedRows=[$IG.GridBehaviorProps.Count+5,null];this.SelectedColumns=[$IG.GridBehaviorProps.Count+6,null];this.Count=$IG.GridBehaviorProps.Count+7;};$IG.CellClickAction=function(){};$IG.CellClickAction.prototype={Cell:0,Row:1};$IG.CellClickAction.registerEnum("Infragistics.Web.UI.CellClickAction");$IG.SelectType=function(){};$IG.SelectType.prototype={None:0,Single:1,Multiple:2};$IG.SelectType.registerEnum("Infragistics.Web.UI.SelectType");$IG.CellSelectionChangingEventArgs=function(params){$IG.CellSelectionChangingEventArgs.initializeBase(this);this._rows=params[0];this._keys=Array.clone(params[1]);this._newCollection=null;if(params[2]!=null)this._newCollection=new $IG.GridCellReadOnlyCollection(params[2],this._rows);;this._cellIndex=params[3];this._rowIndex=params[4];this._collection=new $IG.GridCellReadOnlyCollection(this._keys,this._rows);};$IG.CellSelectionChangingEventArgs.prototype={getCurrentSelectedCells:function(){return this._collection;},getNewSelectedCells:function(){if(this._newCollection==null){var startCell=null;var startRow=0;if(this._keys.length>0){var row=this._rows.get_rowFromIDPair(this._keys[0][0]);if(row!=null)startRow=row.get_index();startCell=this._keys[0][1];}else{var newKeys=Array.clone(this._keys);newKeys.push([this._rowIndex,this._cellIndex]);return this._newCollection=new $IG.GridCellReadOnlyCollection(newKeys,this._rows);}var endCell=parseInt(this._cellIndex);var endRow=parseInt(this._rowIndex);var newKeys=[];if(startCell>endCell){var temp=endCell;endCell=startCell;startCell=temp;}if(startRow>endRow){var temp=endRow;endRow=startRow;startRow=temp;}for(var i=startRow;i<=endRow;i++){for(var j=startCell;j<=endCell;j++)newKeys.push([this._rows.get_row(i).get_idPair(),j]);}this._newCollection=new $IG.GridCellReadOnlyCollection(newKeys,this._rows);}return this._newCollection;}};$IG.CellSelectionChangingEventArgs.registerClass('Infragistics.Web.UI.CellSelectionChangingEventArgs',$IG.CancelEventArgs);$IG.CellSelectionChangedEventArgs=function(params){$IG.CellSelectionChangedEventArgs.initializeBase(this);this._collection=params[0];};$IG.CellSelectionChangedEventArgs.prototype={getSelectedCells:function(){return this._collection;}};$IG.CellSelectionChangedEventArgs.registerClass('Infragistics.Web.UI.CellSelectionChangedEventArgs',$IG.EventArgs);$IG.RowSelectionChangingEventArgs=function(params){$IG.RowSelectionChangingEventArgs.initializeBase(this);this._rows=params[0];this._keys=Array.clone(params[1]);this._newCollection=null;if(params[2]!=null)this._newCollection=new $IG.GridRowReadOnlyCollection(params[2],this._rows);;this._rowObj=params[3];this._collection=new $IG.GridRowReadOnlyCollection(this._keys,this._rows);};$IG.RowSelectionChangingEventArgs.prototype={getCurrentSelectedRows:function(){return this._collection;},getNewSelectedRows:function(){if(this._newCollection==null){var startRow=0;if(this._keys.length>0){var row=this._rows.get_rowFromIDPair(this._keys[0]);if(row!=null)startRow=row.get_index();}else{var newKeys=Array.clone(this._keys);newKeys.push(this._rowObj.get_idPair());return this._newCollection=new $IG.GridRowReadOnlyCollection(newKeys,this._rows);}var endRow=parseInt(this._rowObj.get_index());var newKeys=[];if(startRow>endRow){var temp=endRow;endRow=startRow;startRow=temp;}for(var i=startRow;i<=endRow;i++){newKeys.push(this._rows.get_row(i).get_idPair());}this._newCollection=new $IG.GridRowReadOnlyCollection(newKeys,this._rows);}return this._newCollection;}};$IG.RowSelectionChangingEventArgs.registerClass('Infragistics.Web.UI.RowSelectionChangingEventArgs',$IG.CancelEventArgs);$IG.RowSelectionChangedEventArgs=function(params){$IG.RowSelectionChangedEventArgs.initializeBase(this);this._collection=params[0];};$IG.RowSelectionChangedEventArgs.prototype={getSelectedRows:function(){return this._collection;}};$IG.RowSelectionChangedEventArgs.registerClass('Infragistics.Web.UI.RowSelectionChangedEventArgs',$IG.EventArgs);$IG.ColumnSelectionChangingEventArgs=function(params){$IG.ColumnSelectionChangingEventArgs.initializeBase(this);this._grid=params[0];this._keys=Array.clone(params[1]);this._newCollection=null;if(params[2]!=null)this._newCollection=new $IG.GridColumnReadOnlyCollection(params[2],this._grid);;this._columnIndex=params[3];this._collection=new $IG.GridColumnReadOnlyCollection(this._keys,this._grid);};$IG.ColumnSelectionChangingEventArgs.prototype={getCurrentSelectedColumns:function(){return this._collection;},getNewSelectedColumns:function(){if(this._newCollection==null){var startColumn=0;if(this._keys.length>0)startColumn=this._keys[0];else{var newKeys=Array.clone(this._keys);newKeys.push(this._columnIndex);return this._newCollection=new $IG.GridColumnReadOnlyCollection(newKeys,this._grid);}var endColumn=this._columnIndex;var newKeys=[];if(startColumn>endColumn){var temp=endColumn;endColumn=startColumn;startColumn=temp;}for(var i=startColumn;i<=endColumn;i++)newKeys.push(i);this._newCollection=new $IG.GridColumnReadOnlyCollection(newKeys,this._grid);}return this._newCollection;}};$IG.ColumnSelectionChangingEventArgs.registerClass('Infragistics.Web.UI.ColumnSelectionChangingEventArgs',$IG.CancelEventArgs);$IG.ColumnSelectionChangedEventArgs=function(params){$IG.ColumnSelectionChangedEventArgs.initializeBase(this);this._collection=params[0];};$IG.ColumnSelectionChangedEventArgs.prototype={getSelectedColumns:function(){return this._collection;}};$IG.ColumnSelectionChangedEventArgs.registerClass('Infragistics.Web.UI.ColumnSelectionChangedEventArgs',$IG.EventArgs);$IG.GridCellReadOnlyCollection=function(keys,rows){this._keys=keys;this._rows=rows;};$IG.GridCellReadOnlyCollection.prototype={getCell:function(index){var obj=null;var key=this._keys[index];if(key!=null){var rowObj=this._rows.get_rowFromIDPair(key[0]);if(rowObj!=null)obj=rowObj.get_cell(key[1]);}return obj;},get_length:function(){return this._keys.length;}};$IG.GridCellReadOnlyCollection.registerClass('Infragistics.Web.UI.GridCellReadOnlyCollection');$IG.GridRowReadOnlyCollection=function(keys,rows){this._keys=keys;this._rows=rows;};$IG.GridRowReadOnlyCollection.prototype={getRow:function(index){var obj=null;var key=this._keys[index];if(key!=null){return this._rows.get_rowFromIDPair(key);}return obj;},get_length:function(){return this._keys.length;}};$IG.GridRowReadOnlyCollection.registerClass('Infragistics.Web.UI.GridRowReadOnlyCollection');$IG.GridColumnReadOnlyCollection=function(keys,grid){this._keys=keys;this._grid=grid;};$IG.GridColumnReadOnlyCollection.prototype={getColumn:function(index){var obj=null;var key=this._keys[index];if(key!=null){if(key!=null)obj=this._grid._columns._getObjectByAdr(key);}return obj;},get_length:function(){return this._keys.length;}};$IG.GridColumnReadOnlyCollection.registerClass('Infragistics.Web.UI.GridColumnReadOnlyCollection'); 
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();