Type.registerNamespace('Devy.UI');Devy.UI.ListView=function(){Devy.UI.ListView.initializeBase(this);this._Parent=null;this._Container=null;this._ListItemsContainer=null;this._CSSClass="";this._DataSource=null;this._EditObjectCallBack=null;this._DeleteObjectCallBack=null;this._CreateListViewItemCallBack=null;this._events=null;this._initialized=false;this._Selectable=true;this._SelectedItem=null;this._MultiSelectable=false;}
Devy.UI.ListView.prototype={set_Parent:function(value){this._Parent=value;},get_Parent:function(){return this._Parent;},set_Container:function(value){this._Container=value;},get_Container:function(){return this._Container;},set_CSSClass:function(value){this._CSSClass=value;},get_CSSClass:function(){return this._CSSClass;},set_CreateListViewItemCallBack:function(value){this._CreateListViewItemCallBack=value;},get_CreateListViewItemCallBack:function(){return this._CreateListViewItemCallBack;},set_EditObjectCallBack:function(value){this._EditObjectCallBack=value;},get_EditObjectCallBack:function(){return this._EditObjectCallBack;},set_DeleteObjectCallBack:function(value){this._DeleteObjectCallBack=value;},get_DeleteObjectCallBack:function(){return this._DeleteObjectCallBack;},set_Selectable:function(value){this._Selectable=value;},get_Selectable:function(){return this._Selectable;},get_SelectedItem:function(){if(this._SelectedItem)
return this._SelectedItem.BusinessObject;else
return null;},set_MultiSelectable:function(value){this._MultiSelectable=value;},get_MultiSelectable:function(){return this._MultiSelectable;},get_SelectedItems:function(){var filas=$('li.ListViewItem',this._ListItemsContainer);var ret=[];for(var i=0;i<filas.length;i++){var checkbox=$('input.MultiSelectCheckBox',filas[i])[0];if(checkbox){var checked=Devy.Util.GetFormBooleanFieldValue(checkbox);if(checked)
ret.push(filas[i].BusinessObject.Id);}}
return ret;},MultiSelect_All:function(){var filas=$('li.ListViewItem',this._ListItemsContainer);for(var i=0;i<filas.length;i++){var checkbox=$('input.MultiSelectCheckBox',filas[i])[0];if(checkbox)
Devy.Util.SetFormBooleanFieldValue(checkbox,true);}},MultiSelect_None:function(){var filas=$('li.ListViewItem',this._ListItemsContainer);for(var i=0;i<filas.length;i++){var checkbox=$('input.MultiSelectCheckBox',filas[i])[0];if(checkbox)
Devy.Util.SetFormBooleanFieldValue(checkbox,false);}},MultiSelect_Invert:function(){var filas=$('li.ListViewItem',this._ListItemsContainer);for(var i=0;i<filas.length;i++){var checkbox=$('input.MultiSelectCheckBox',filas[i])[0];if(checkbox)
Devy.Util.SetFormBooleanFieldValue(checkbox,!Devy.Util.GetFormBooleanFieldValue(checkbox));}},MultiSelect_SelectIds:function(idsArray){if(idsArray){var filas=$('li.ListViewItem',this._ListItemsContainer);for(var i=0;i<filas.length;i++){var checkbox=$('input.MultiSelectCheckBox',filas[i])[0];if(checkbox)
Devy.Util.SetFormBooleanFieldValue(checkbox,Array.contains(idsArray,filas[i].BusinessObject.Id));}}},set_DataSource:function(value){this._DataSource=value;if(this._initialized)
this._updateRows();},get_DataSource:function(){return this._DataSource;},initialize:function(){Devy.UI.ListView.callBaseMethod(this,'initialize');this._atachEvents();this._setUpInterface();this._initialized=true;},dispose:function(){this._detachEvents();Devy.UI.ListView.callBaseMethod(this,'dispose');},_atachEvents:function(){},_detachEvents:function(){},get_events:function(){if(!this._events){this._events=new Sys.EventHandlerList();}
return this._events;},add_rowClick:function(handler){this.get_events().addHandler('rowClick',handler);},remove_rowClick:function(handler){this.get_events().removeHandler('rowClick',handler);},_raiseEvent:function(eventName,eventArgs){var handler=this.get_events().getHandler(eventName);var theEventArgs=null;if(handler){if(!eventArgs){theEventArgs=Sys.EventArgs.Empty;}
else{theEventArgs=eventArgs;}
handler(this,theEventArgs);}},_CommandsContainerNeeded:function(){return(this._EditObjectCallBack||this._DeleteObjectCallBack);},_setUpInterface:function(){this._ListItemsContainer=$('<ul class="ListView '+ this._CSSClass+'"></ul>');$(this._Container).append(this._ListItemsContainer);},_updateRows:function(){if(this._ListItemsContainer){var $_ListItemsContainer=$(this._ListItemsContainer);$_ListItemsContainer.empty();if(this._DataSource.length>0){var evenRow=false;for(i=0;i<this._DataSource.length;i++){this._printRow(this._DataSource[i],evenRow);evenRow=!evenRow;}
$_ListItemsContainer.show();}
else
$_ListItemsContainer.hide();}},_onRowDblClick:function(row){if(this._Selectable&&!this._MultiSelectable){var eventDataArgs={};eventDataArgs.BusinessObject=row.BusinessObject;eventDataArgs.Row=row;this._raiseEvent('rowClick',eventDataArgs);}},_onRowMouseOver:function(row){if(this._Selectable&&!this._MultiSelectable){if(row){$(row).addClass("CanSelect");}}},_onRowMouseOut:function(row){if(this._Selectable&&!this._MultiSelectable){if(row){$(row).removeClass("CanSelect");}}},_onRowClick:function(row){if(this._Selectable&&!this._MultiSelectable){if(row){if(!row.__Selected){if(this._SelectedItem)
$(this._SelectedItem).removeClass("Selected");this._SelectedItem=row;$(this._SelectedItem).addClass("Selected");}}}},_printRow:function(obj,evenRow){var contexto=this;var evenClass="";if(evenRow)evenClass=" even";var listItem=$('<li class="ListViewItem'+ evenClass+'"></li>');if(this._CreateListViewItemCallBack)
listItem.append(this._CreateListViewItemCallBack(obj));else
listItem.append('_CreateListViewItemCallBack is not set');if(this._CommandsContainerNeeded()){var dvCommands=$('<div class="Commands"></div>');if(this._DeleteObjectCallBack&&obj.Authorization.CanDelete){var deleteCmd=$('<a href="#" title = "Eliminar este objeto" class="Command DeleteCmd"><span> Eliminar </span></a>')[0];$addHandler(deleteCmd,"click",function(evt){evt.preventDefault();contexto._DeleteObjectCallBack(obj);});dvCommands.append(deleteCmd);}
if(this._EditObjectCallBack&&obj.Authorization.CanEdit){var editCmd=$('<a href="#"  title = "Editar este objeto" class="Command EditCmd"><span> Editar </span></a>')[0];$addHandler(editCmd,"click",function(evt){evt.preventDefault();contexto._EditObjectCallBack(obj);});dvCommands.append(editCmd);}
if(this._MultiSelectable){listItem.append('<div class="MultiSelectContainer"><input type="checkbox" class="MultiSelectCheckBox" name="chkSelected" id="chkSelected_'+ obj.Id+'" value="'+ obj.Id+'" /><label>Seleccionado</label></div>');}
listItem.append(dvCommands);}
listItem=listItem[0];listItem.BusinessObject=obj;if(!this._MultiSelectable&&this._Selectable){$addHandlers(listItem,{dblclick:function(evt){evt.preventDefault();contexto._onRowDblClick(listItem);},click:function(evt){evt.preventDefault();contexto._onRowClick(listItem);},mouseover:function(evt){evt.preventDefault();contexto._onRowMouseOver(listItem);},mouseout:function(evt){evt.preventDefault();contexto._onRowMouseOut(listItem);}});}
$(this._ListItemsContainer).append(listItem);}}
Devy.UI.ListView.registerClass('Devy.UI.ListView',Sys.Component);
