diff --git a/web/org.openbravo.userinterface.smartclient/isomorphic/client/widgets/Calendar.js b/web/org.openbravo.userinterface.smartclient/isomorphic/client/widgets/Calendar.js
--- a/web/org.openbravo.userinterface.smartclient/isomorphic/client/widgets/Calendar.js
+++ b/web/org.openbravo.userinterface.smartclient/isomorphic/client/widgets/Calendar.js
@@ -8013,12 +8013,12 @@
     },
 
 
-    parentResized : function () {
-        this.Super('parentResized', arguments);
-        // need to resize the event window here (columns are usually auto-fitting, so the 
-        // available space probably changed if the calendar as a whole changed size)
-        if (this.event) this.calendarView.sizeEventCanvas(this);
-    },
+    //parentResized : function () {
+    //    this.Super('parentResized', arguments);
+    //    // need to resize the event window here (columns are usually auto-fitting, so the 
+    //    // available space probably changed if the calendar as a whole changed size)
+    //    if (this.event) this.calendarView.sizeEventCanvas(this);
+    //},
     
     destroy : function () {
         if (!this.calendar.useEventCanvasRolloverControls && this._rolloverControls) {
diff --git a/web/org.openbravo.userinterface.smartclient/isomorphic/client/widgets/CalendarView.js b/web/org.openbravo.userinterface.smartclient/isomorphic/client/widgets/CalendarView.js
--- a/web/org.openbravo.userinterface.smartclient/isomorphic/client/widgets/CalendarView.js
+++ b/web/org.openbravo.userinterface.smartclient/isomorphic/client/widgets/CalendarView.js
@@ -1486,10 +1486,9 @@
         data.setProperty("_tagged", false);
         data.setProperty("_overlapProps", null);
         data.setProperty("_slotNum", null);
-        
-        var laneNames = useLanes && this.lanes ? this.lanes.getProperty(cal.laneNameField) : [];
-
-        //this.forceDataSort(d)
+
+        // use the existing getLaneMap() helper to get visible lanes
+        var laneNames = useLanes && cal.lanes ? isc.getKeys(cal.getLaneMap()) : [];
 
         for (var i=0; i<dataLen; i++) {
             var event = data.get(i);
@@ -2399,12 +2398,12 @@
             ;
             
             if (alreadyVisible) {
-                // if an event is already in the _drawnEvents array, ignore it and remove it
-                // from the clearThese array
+                // if an event is already in the _drawnEvents array, remove it from the 
+                // clearThese array
                 clearThese.remove(event);
-                if (this.isGrouped) {
-                    // if we're grouped and the canvas was already visible, we need to 
-                    // reposition it, in case an earlier group node was expanded or collapsed
+                if (this.isGrouped || this.useEventCanvasPool) {
+                    // if the view is grouped or using the eventCanvasPool, reposition and
+                    // redraw the canvas
                     var canvas = this.getCurrentEventCanvas(event);
                     this.sizeEventCanvas(canvas, true);
                 }
diff --git a/web/org.openbravo.userinterface.smartclient/isomorphic/system/development/ISC_Calendar.js b/web/org.openbravo.userinterface.smartclient/isomorphic/system/development/ISC_Calendar.js
--- a/web/org.openbravo.userinterface.smartclient/isomorphic/system/development/ISC_Calendar.js
+++ b/web/org.openbravo.userinterface.smartclient/isomorphic/system/development/ISC_Calendar.js
@@ -107,7 +107,7 @@
 _16[_7.laneNameField]=_20[_7.laneNameField];if(this.eventsOverlap(_16,_20,_4)){_10.add(_20)}}
 return _10},isc.A.eventsOverlap=function isc_CalendarView_eventsOverlap(_1,_2,_3){var a=_1,b=_2,_6=this.calendar,_7=_6.startDateField,_8=_6.endDateField;if(_3&&a[_6.laneNameField]!=b[_6.laneNameField])return false;if(this.isTimelineView()){if(a[_6.leadingDateField]&&b[_6.leadingDateField])_7=_6.leadingDateField;if(a[_6.trailingDateField]&&b[_6.trailingDateField])_8=_6.trailingDateField}
 var _9=a[_7],_10=a[_8]||_6.getEventEndDate(a),_11=b[_7],_12=b[_8]||_6.getEventEndDate(b);if(_6.equalDatesOverlap&&_6.allowEventOverlap){if((_9<_11&&_10>=_11&&_10<=_12)||(_9<=_12&&_10>_12)||(_9<=_11&&_10>=_12)||(_9>=_11&&_10<=_12)){return true}else{return false}}else{if(_11<_10&&_12>_9)return true;return false}});isc.evalBoundary;isc.B.push(isc.A.updateEventRange=function isc_CalendarView_updateEventRange(_1,_2){if(!isc.isAn.Object(_2))_2=this.overlapRanges.ranges[_2];var _3=_2.events;_3.remove(_1);this.updateOverlapRanges(_3)},isc.A.updateOverlapRanges=function isc_CalendarView_updateOverlapRanges(_1){var _2=this.calendar,_3=_1||_2.data,_4=this.overlapRanges||[],_5=_3.getLength(),_6=this.isTimelineView()||(this.isDayView()&&_2.showDayLanes),_7=!this.isTimelineView(),_8=[],_9=this.startDate,_10=this.endDate;if(isc.isA.ResultSet(_3)){_3=_3.allRows}
-_3.setProperty("$122k",false);_3.setProperty("$646",null);_3.setProperty("$126u",null);var _11=_6&&this.lanes?this.lanes.getProperty(_2.laneNameField):[];for(var i=0;i<_5;i++){var _13=_3.get(i);if(_13.$122k)continue;if(_6&&!_11.contains(_13[_2.laneNameField])){continue}
+_3.setProperty("$122k",false);_3.setProperty("$646",null);_3.setProperty("$126u",null);var _11=_6&&_2.lanes?isc.getKeys(_2.getLaneMap()):[];for(var i=0;i<_5;i++){var _13=_3.get(i);if(_13.$122k)continue;if(_6&&!_11.contains(_13[_2.laneNameField])){continue}
 _13.$122k=true;_13.$646={};var _14=false,_15={};_15[_2.startDateField]=_2.getEventStartDate(_13)
 _15[_2.endDateField]=_2.getEventEndDate(_13);if(_6)_15[_2.laneNameField]=_15.lane=_13[_2.laneNameField];_15.events=[];var _16=this.findOverlappingEvents(_13,_13,true,_6,_3);if(_16&&_16.length>0){_15.totalSlots=_16.length;var _17=_15.totalSlots;var _18=1;for(var j=0;j<_16.length;j++){var _20=_16[j],_21=_2.getEventStartDate(_20),_22=_2.getEventStartDate(_20);if(_21<_15[_2.startDateField])
 _15[_2.startDateField]=_21;if(_22>_15[_2.endDateField])
@@ -162,7 +162,7 @@
 var _10=this.getCellDate(_8,_4),_11=this.getCellDate(_9,_5);return[_10,_11]},isc.A.getVisibleRowRange=function isc_CalendarView_getVisibleRowRange(){if(!this.renderEventsOnDemand){return[0,this.data.getLength()]}
 return this.getVisibleRows()},isc.A.getVisibleColumnRange=function isc_CalendarView_getVisibleColumnRange(){if(!this.renderEventsOnDemand){return[0,this.fields.getLength()]}
 return this.body.getVisibleColumns()},isc.A.refreshVisibleEvents=function isc_CalendarView_refreshVisibleEvents(_1){if(!this.body||!this.body.isDrawn())return;if(!this.$128q){this.refreshEvents();return}
-_1=_1||this.getVisibleEvents();this.sortForRender(_1);var _2=[];var _3=_1.getLength();var _4=this.useEventCanvasPool?this.$128q.duplicate():[],_2=[];this.logDebug('refreshing visible events','calendar');for(var i=0;i<_3;i++){var _6=_1.get(i),_7=this.$128q.contains(_6);if(_7){_4.remove(_6);if(this.isGrouped){var _8=this.getCurrentEventCanvas(_6);this.sizeEventCanvas(_8,true)}
+_1=_1||this.getVisibleEvents();this.sortForRender(_1);var _2=[];var _3=_1.getLength();var _4=this.useEventCanvasPool?this.$128q.duplicate():[],_2=[];this.logDebug('refreshing visible events','calendar');for(var i=0;i<_3;i++){var _6=_1.get(i),_7=this.$128q.contains(_6);if(_7){_4.remove(_6);if(this.isGrouped||this.useEventCanvasPool){var _8=this.getCurrentEventCanvas(_6);this.sizeEventCanvas(_8,true)}
 continue}
 _2.add(_6)}
 if(this.isGrouped||(this.useEventCanvasPool&&this.eventCanvasPoolingMode=="viewport"))
@@ -538,7 +538,7 @@
 return _1},isc.A.getHoverHTML=function isc_EventCanvas_getHoverHTML(){return this.calendar.getEventHoverHTML(this.event,this,this.calendarView)},isc.A.shouldShowCloseButton=function isc_EventCanvas_shouldShowCloseButton(){return this.showCloseButton!=false},isc.A.shouldShowContextButton=function isc_EventCanvas_shouldShowContextButton(){return this.showContextButton!=false},isc.A.getRolloverControls=function isc_EventCanvas_getRolloverControls(){return null},isc.A.renderEvent=function isc_EventCanvas_renderEvent(_1,_2,_3,_4,_5){if(isc.isA.Number(_3)&&isc.isA.Number(_4)){this.resizeTo(Math.round(_3),Math.round(_4))}
 if(isc.isA.Number(_1)&&isc.isA.Number(_2)){this.moveTo(Math.round(_2),Math.round(_1))}
 this.checkStyle();if(!this.parentElement.isDrawn())return;if(!this.isDrawn())this.draw();this.show();if(_5)this.sendToBack();else this.bringToFront()},isc.A.checkStyle=function isc_EventCanvas_checkStyle(){var _1=this.calendar.getEventCanvasStyle(this.event,this.calendarView);if(_1!=this.styleName)this.setEventStyle(_1)},isc.A.click=function isc_EventCanvas_click(){this.calendar.$129v(this)},isc.A.mouseUp=function isc_EventCanvas_mouseUp(){return isc.EH.STOP_BUBBLING},isc.A.mouseDown=function isc_EventCanvas_mouseDown(){if(this.dragTarget)this.dragTarget.eventCanvas=this;this.calendar.eventDialog.hide();return isc.EH.STOP_BUBBLING},isc.A.mouseOver=function isc_EventCanvas_mouseOver(){if(!this.showRolloverControls||!this.calendar.useEventCanvasRolloverControls)return;if(this.$129e&&this.$129e.length>0){var _1=isc.EH.lastEvent.target;if(_1==this||_1.eventCanvas==this)return}
-this.calendar.showEventCanvasRolloverControls(this)},isc.A.mouseOut=function isc_EventCanvas_mouseOut(){if(!this.showRolloverControls||!this.calendar.useEventCanvasRolloverControls)return;var _1=isc.EH.lastEvent.target;if(_1&&(_1.eventCanvas==this||_1==isc.Hover.hoverCanvas))return;this.calendar.hideEventCanvasRolloverControls(this)},isc.A.parentResized=function isc_EventCanvas_parentResized(){this.Super('parentResized',arguments);if(this.event)this.calendarView.sizeEventCanvas(this)},isc.A.destroy=function isc_EventCanvas_destroy(){if(!this.calendar.useEventCanvasRolloverControls&&this.$129e){for(var i=this.$129e.length-1;i>=0;i--){var _2=this.$129e[i];this.$129e.removeAt(i);this.removeChild(_2);_2.destroy();_2=null}}});isc.B._maxIndex=isc.C+32;isc.defineClass("ZoneCanvas","EventCanvas");isc.A=isc.ZoneCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.headerPosition="footer";isc.A.showHeader=false;isc.A.showBody=false;isc.A.canEdit=false;isc.A.canDrag=false;isc.A.canDragReposition=false;isc.A.canDragResize=false;isc.A.canRemove=false;isc.A.showRolloverControls=false;isc.B.push(isc.A.initWidget=function isc_ZoneCanvas_initWidget(){this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;this.Super("initWidget",arguments)},isc.A.getInnerHTML=function isc_ZoneCanvas_getInnerHTML(){var _1=isc.StringBuffer.create();_1.append("<div class='",this.getHeaderStyle(),"' style='position:absolute;bottom:0;width:100%;'>",this.event.name,"</div>");var _2=_1.release();return _2},isc.A.setEvent=function isc_ZoneCanvas_setEvent(_1,_2,_3,_4){this.event=_1;this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;var _5=this.calendar;_2=_2||_5.getZoneCanvasStyle(_1,this.calendarView);this.setEventStyle(_2,_3,_4)},isc.A.click=function isc_ZoneCanvas_click(){if(this.calendar.zoneClick)this.calendar.zoneClick(this.event,this.calendarView.viewName)},isc.A.getHoverHTML=function isc_ZoneCanvas_getHoverHTML(){return this.calendar.getZoneHoverHTML(this.event,this,this.calendarView)},isc.A.checkStyle=function isc_ZoneCanvas_checkStyle(){});isc.B._maxIndex=isc.C+6;isc.defineClass("IndicatorCanvas","EventCanvas");isc.A=isc.IndicatorCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.headerPosition="none";isc.A.showHeader=false;isc.A.showBody=false;isc.A.canEdit=false;isc.A.canDrag=false;isc.A.canDragReposition=false;isc.A.canDragResize=false;isc.A.canRemove=false;isc.A.showRolloverControls=false;isc.B.push(isc.A.initWidget=function isc_IndicatorCanvas_initWidget(){this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;this.Super("initWidget",arguments)},isc.A.getInnerHTML=function isc_IndicatorCanvas_getInnerHTML(){var _1=isc.StringBuffer.create();_1.append("<div class='",this.getHeaderStyle(),"' style='position:absolute;bottom:0;width:100%;'>",this.event.name,"</div>");var _2=_1.release();return _2},isc.A.setEvent=function isc_IndicatorCanvas_setEvent(_1,_2,_3,_4){this.event=_1;this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;var _5=this.calendar;_2=_2||_5.getIndicatorCanvasStyle(_1,this.calendarView);this.setEventStyle(_2,_3,_4)},isc.A.click=function isc_IndicatorCanvas_click(){if(this.calendar.indicatorClick)this.calendar.indicatorClick(this.event,this.calendarView.viewName)},isc.A.getHoverHTML=function isc_IndicatorCanvas_getHoverHTML(){return this.calendar.getIndicatorHoverHTML(this.event,this,this.calendarView)},isc.A.checkStyle=function isc_IndicatorCanvas_checkStyle(){});isc.B._maxIndex=isc.C+6;isc.AutoTest.customizeCalendar();isc.ClassFactory.defineClass("Timeline","Calendar");isc.A=isc.Timeline.getPrototype();isc.A.showTimelineView=true;isc.A.showDayView=false;isc.A.showWeekView=false;isc.A.showMonthView=false;isc.A.showControlBar=false;isc.A.labelColumnWidth=75;isc.A.sizeEventsToGrid=false;isc.A.eventDragGap=0;isc._nonDebugModules=(isc._nonDebugModules!=null?isc._nonDebugModules:[]);isc._nonDebugModules.push('Calendar');isc.checkForDebugAndNonDebugModules();isc._moduleEnd=isc._Calendar_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Calendar module init time: '+(isc._moduleEnd-isc._moduleStart)+'ms','loadTime');delete isc.definingFramework;if(isc.Page)isc.Page.handleEvent(null,"moduleLoaded",{moduleName:'Calendar',loadTime:(isc._moduleEnd-isc._moduleStart)});}else{if(window.isc&&isc.Log&&isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Calendar'.");}
+this.calendar.showEventCanvasRolloverControls(this)},isc.A.mouseOut=function isc_EventCanvas_mouseOut(){if(!this.showRolloverControls||!this.calendar.useEventCanvasRolloverControls)return;var _1=isc.EH.lastEvent.target;if(_1&&(_1.eventCanvas==this||_1==isc.Hover.hoverCanvas))return;this.calendar.hideEventCanvasRolloverControls(this)},isc.A.destroy=function isc_EventCanvas_destroy(){if(!this.calendar.useEventCanvasRolloverControls&&this.$129e){for(var i=this.$129e.length-1;i>=0;i--){var _2=this.$129e[i];this.$129e.removeAt(i);this.removeChild(_2);_2.destroy();_2=null}}});isc.B._maxIndex=isc.C+32;isc.defineClass("ZoneCanvas","EventCanvas");isc.A=isc.ZoneCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.headerPosition="footer";isc.A.showHeader=false;isc.A.showBody=false;isc.A.canEdit=false;isc.A.canDrag=false;isc.A.canDragReposition=false;isc.A.canDragResize=false;isc.A.canRemove=false;isc.A.showRolloverControls=false;isc.B.push(isc.A.initWidget=function isc_ZoneCanvas_initWidget(){this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;this.Super("initWidget",arguments)},isc.A.getInnerHTML=function isc_ZoneCanvas_getInnerHTML(){var _1=isc.StringBuffer.create();_1.append("<div class='",this.getHeaderStyle(),"' style='position:absolute;bottom:0;width:100%;'>",this.event.name,"</div>");var _2=_1.release();return _2},isc.A.setEvent=function isc_ZoneCanvas_setEvent(_1,_2,_3,_4){this.event=_1;this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;var _5=this.calendar;_2=_2||_5.getZoneCanvasStyle(_1,this.calendarView);this.setEventStyle(_2,_3,_4)},isc.A.click=function isc_ZoneCanvas_click(){if(this.calendar.zoneClick)this.calendar.zoneClick(this.event,this.calendarView.viewName)},isc.A.getHoverHTML=function isc_ZoneCanvas_getHoverHTML(){return this.calendar.getZoneHoverHTML(this.event,this,this.calendarView)},isc.A.checkStyle=function isc_ZoneCanvas_checkStyle(){});isc.B._maxIndex=isc.C+6;isc.defineClass("IndicatorCanvas","EventCanvas");isc.A=isc.IndicatorCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.headerPosition="none";isc.A.showHeader=false;isc.A.showBody=false;isc.A.canEdit=false;isc.A.canDrag=false;isc.A.canDragReposition=false;isc.A.canDragResize=false;isc.A.canRemove=false;isc.A.showRolloverControls=false;isc.B.push(isc.A.initWidget=function isc_IndicatorCanvas_initWidget(){this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;this.Super("initWidget",arguments)},isc.A.getInnerHTML=function isc_IndicatorCanvas_getInnerHTML(){var _1=isc.StringBuffer.create();_1.append("<div class='",this.getHeaderStyle(),"' style='position:absolute;bottom:0;width:100%;'>",this.event.name,"</div>");var _2=_1.release();return _2},isc.A.setEvent=function isc_IndicatorCanvas_setEvent(_1,_2,_3,_4){this.event=_1;this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;var _5=this.calendar;_2=_2||_5.getIndicatorCanvasStyle(_1,this.calendarView);this.setEventStyle(_2,_3,_4)},isc.A.click=function isc_IndicatorCanvas_click(){if(this.calendar.indicatorClick)this.calendar.indicatorClick(this.event,this.calendarView.viewName)},isc.A.getHoverHTML=function isc_IndicatorCanvas_getHoverHTML(){return this.calendar.getIndicatorHoverHTML(this.event,this,this.calendarView)},isc.A.checkStyle=function isc_IndicatorCanvas_checkStyle(){});isc.B._maxIndex=isc.C+6;isc.AutoTest.customizeCalendar();isc.ClassFactory.defineClass("Timeline","Calendar");isc.A=isc.Timeline.getPrototype();isc.A.showTimelineView=true;isc.A.showDayView=false;isc.A.showWeekView=false;isc.A.showMonthView=false;isc.A.showControlBar=false;isc.A.labelColumnWidth=75;isc.A.sizeEventsToGrid=false;isc.A.eventDragGap=0;isc._nonDebugModules=(isc._nonDebugModules!=null?isc._nonDebugModules:[]);isc._nonDebugModules.push('Calendar');isc.checkForDebugAndNonDebugModules();isc._moduleEnd=isc._Calendar_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Calendar module init time: '+(isc._moduleEnd-isc._moduleStart)+'ms','loadTime');delete isc.definingFramework;if(isc.Page)isc.Page.handleEvent(null,"moduleLoaded",{moduleName:'Calendar',loadTime:(isc._moduleEnd-isc._moduleStart)});}else{if(window.isc&&isc.Log&&isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Calendar'.");}
 
 /*
 
diff --git a/web/org.openbravo.userinterface.smartclient/isomorphic/system/modules-debug/ISC_Calendar.js b/web/org.openbravo.userinterface.smartclient/isomorphic/system/modules-debug/ISC_Calendar.js
--- a/web/org.openbravo.userinterface.smartclient/isomorphic/system/modules-debug/ISC_Calendar.js
+++ b/web/org.openbravo.userinterface.smartclient/isomorphic/system/modules-debug/ISC_Calendar.js
@@ -1524,9 +1524,8 @@
         data.setProperty("_overlapProps", null);
         data.setProperty("_slotNum", null);
 
-        var laneNames = useLanes && this.lanes ? this.lanes.getProperty(cal.laneNameField) : [];
-
-        //this.forceDataSort(d)
+        // use the existing getLaneMap() helper to get visible lanes
+        var laneNames = useLanes && cal.lanes ? isc.getKeys(cal.getLaneMap()) : [];
 
         for (var i=0; i<dataLen; i++) {
             var event = data.get(i);
@@ -2436,12 +2435,12 @@
             ;
 
             if (alreadyVisible) {
-                // if an event is already in the _drawnEvents array, ignore it and remove it
-                // from the clearThese array
+                // if an event is already in the _drawnEvents array, remove it from the 
+                // clearThese array
                 clearThese.remove(event);
-                if (this.isGrouped) {
-                    // if we're grouped and the canvas was already visible, we need to
-                    // reposition it, in case an earlier group node was expanded or collapsed
+                if (this.isGrouped || this.useEventCanvasPool) {
+                    // if the view is grouped or using the eventCanvasPool, reposition and
+                    // redraw the canvas
                     var canvas = this.getCurrentEventCanvas(event);
                     this.sizeEventCanvas(canvas, true);
                 }
@@ -13659,12 +13658,12 @@
     },
 
 
-    parentResized : function () {
-        this.Super('parentResized', arguments);
-        // need to resize the event window here (columns are usually auto-fitting, so the
-        // available space probably changed if the calendar as a whole changed size)
-        if (this.event) this.calendarView.sizeEventCanvas(this);
-    },
+    //parentResized : function () {
+    //    this.Super('parentResized', arguments);
+    //    // need to resize the event window here (columns are usually auto-fitting, so the
+    //    // available space probably changed if the calendar as a whole changed size)
+    //    if (this.event) this.calendarView.sizeEventCanvas(this);
+    //},
 
     destroy : function () {
         if (!this.calendar.useEventCanvasRolloverControls && this._rolloverControls) {
diff --git a/web/org.openbravo.userinterface.smartclient/isomorphic/system/modules/ISC_Calendar.js b/web/org.openbravo.userinterface.smartclient/isomorphic/system/modules/ISC_Calendar.js
--- a/web/org.openbravo.userinterface.smartclient/isomorphic/system/modules/ISC_Calendar.js
+++ b/web/org.openbravo.userinterface.smartclient/isomorphic/system/modules/ISC_Calendar.js
@@ -83,7 +83,7 @@
 _16[_7.laneNameField]=_20[_7.laneNameField];if(this.eventsOverlap(_16,_20,_4)){_10.add(_20)}}
 return _10},isc.A.eventsOverlap=function isc_CalendarView_eventsOverlap(_1,_2,_3){var a=_1,b=_2,_6=this.calendar,_7=_6.startDateField,_8=_6.endDateField;if(_3&&a[_6.laneNameField]!=b[_6.laneNameField])return false;if(this.isTimelineView()){if(a[_6.leadingDateField]&&b[_6.leadingDateField])_7=_6.leadingDateField;if(a[_6.trailingDateField]&&b[_6.trailingDateField])_8=_6.trailingDateField}
 var _9=a[_7],_10=a[_8]||_6.getEventEndDate(a),_11=b[_7],_12=b[_8]||_6.getEventEndDate(b);if(_6.equalDatesOverlap&&_6.allowEventOverlap){if((_9<_11&&_10>=_11&&_10<=_12)||(_9<=_12&&_10>_12)||(_9<=_11&&_10>=_12)||(_9>=_11&&_10<=_12)){return true}else{return false}}else{if(_11<_10&&_12>_9)return true;return false}});isc.evalBoundary;isc.B.push(isc.A.updateEventRange=function isc_CalendarView_updateEventRange(_1,_2){if(!isc.isAn.Object(_2))_2=this.overlapRanges.ranges[_2];var _3=_2.events;_3.remove(_1);this.updateOverlapRanges(_3)},isc.A.updateOverlapRanges=function isc_CalendarView_updateOverlapRanges(_1){var _2=this.calendar,_3=_1||_2.data,_4=this.overlapRanges||[],_5=_3.getLength(),_6=this.isTimelineView()||(this.isDayView()&&_2.showDayLanes),_7=!this.isTimelineView(),_8=[],_9=this.startDate,_10=this.endDate;if(isc.isA.ResultSet(_3)){_3=_3.allRows}
-_3.setProperty("$122k",false);_3.setProperty("$646",null);_3.setProperty("$126u",null);var _11=_6&&this.lanes?this.lanes.getProperty(_2.laneNameField):[];for(var i=0;i<_5;i++){var _13=_3.get(i);if(_13.$122k)continue;if(_6&&!_11.contains(_13[_2.laneNameField])){continue}
+_3.setProperty("$122k",false);_3.setProperty("$646",null);_3.setProperty("$126u",null);var _11=_6&&_2.lanes?isc.getKeys(_2.getLaneMap()):[];for(var i=0;i<_5;i++){var _13=_3.get(i);if(_13.$122k)continue;if(_6&&!_11.contains(_13[_2.laneNameField])){continue}
 _13.$122k=true;_13.$646={};var _14=false,_15={};_15[_2.startDateField]=_2.getEventStartDate(_13)
 _15[_2.endDateField]=_2.getEventEndDate(_13);if(_6)_15[_2.laneNameField]=_15.lane=_13[_2.laneNameField];_15.events=[];var _16=this.findOverlappingEvents(_13,_13,true,_6,_3);if(_16&&_16.length>0){_15.totalSlots=_16.length;var _17=_15.totalSlots;var _18=1;for(var j=0;j<_16.length;j++){var _20=_16[j],_21=_2.getEventStartDate(_20),_22=_2.getEventStartDate(_20);if(_21<_15[_2.startDateField])
 _15[_2.startDateField]=_21;if(_22>_15[_2.endDateField])
@@ -138,7 +138,7 @@
 var _10=this.getCellDate(_8,_4),_11=this.getCellDate(_9,_5);return[_10,_11]},isc.A.getVisibleRowRange=function isc_CalendarView_getVisibleRowRange(){if(!this.renderEventsOnDemand){return[0,this.data.getLength()]}
 return this.getVisibleRows()},isc.A.getVisibleColumnRange=function isc_CalendarView_getVisibleColumnRange(){if(!this.renderEventsOnDemand){return[0,this.fields.getLength()]}
 return this.body.getVisibleColumns()},isc.A.refreshVisibleEvents=function isc_CalendarView_refreshVisibleEvents(_1){if(!this.body||!this.body.isDrawn())return;if(!this.$128q){this.refreshEvents();return}
-_1=_1||this.getVisibleEvents();this.sortForRender(_1);var _2=[];var _3=_1.getLength();var _4=this.useEventCanvasPool?this.$128q.duplicate():[],_2=[];this.logDebug('refreshing visible events','calendar');for(var i=0;i<_3;i++){var _6=_1.get(i),_7=this.$128q.contains(_6);if(_7){_4.remove(_6);if(this.isGrouped){var _8=this.getCurrentEventCanvas(_6);this.sizeEventCanvas(_8,true)}
+_1=_1||this.getVisibleEvents();this.sortForRender(_1);var _2=[];var _3=_1.getLength();var _4=this.useEventCanvasPool?this.$128q.duplicate():[],_2=[];this.logDebug('refreshing visible events','calendar');for(var i=0;i<_3;i++){var _6=_1.get(i),_7=this.$128q.contains(_6);if(_7){_4.remove(_6);if(this.isGrouped||this.useEventCanvasPool){var _8=this.getCurrentEventCanvas(_6);this.sizeEventCanvas(_8,true)}
 continue}
 _2.add(_6)}
 if(this.isGrouped||(this.useEventCanvasPool&&this.eventCanvasPoolingMode=="viewport"))
@@ -514,7 +514,7 @@
 return _1},isc.A.getHoverHTML=function isc_EventCanvas_getHoverHTML(){return this.calendar.getEventHoverHTML(this.event,this,this.calendarView)},isc.A.shouldShowCloseButton=function isc_EventCanvas_shouldShowCloseButton(){return this.showCloseButton!=false},isc.A.shouldShowContextButton=function isc_EventCanvas_shouldShowContextButton(){return this.showContextButton!=false},isc.A.getRolloverControls=function isc_EventCanvas_getRolloverControls(){return null},isc.A.renderEvent=function isc_EventCanvas_renderEvent(_1,_2,_3,_4,_5){if(isc.isA.Number(_3)&&isc.isA.Number(_4)){this.resizeTo(Math.round(_3),Math.round(_4))}
 if(isc.isA.Number(_1)&&isc.isA.Number(_2)){this.moveTo(Math.round(_2),Math.round(_1))}
 this.checkStyle();if(!this.parentElement.isDrawn())return;if(!this.isDrawn())this.draw();this.show();if(_5)this.sendToBack();else this.bringToFront()},isc.A.checkStyle=function isc_EventCanvas_checkStyle(){var _1=this.calendar.getEventCanvasStyle(this.event,this.calendarView);if(_1!=this.styleName)this.setEventStyle(_1)},isc.A.click=function isc_EventCanvas_click(){this.calendar.$129v(this)},isc.A.mouseUp=function isc_EventCanvas_mouseUp(){return isc.EH.STOP_BUBBLING},isc.A.mouseDown=function isc_EventCanvas_mouseDown(){if(this.dragTarget)this.dragTarget.eventCanvas=this;this.calendar.eventDialog.hide();return isc.EH.STOP_BUBBLING},isc.A.mouseOver=function isc_EventCanvas_mouseOver(){if(!this.showRolloverControls||!this.calendar.useEventCanvasRolloverControls)return;if(this.$129e&&this.$129e.length>0){var _1=isc.EH.lastEvent.target;if(_1==this||_1.eventCanvas==this)return}
-this.calendar.showEventCanvasRolloverControls(this)},isc.A.mouseOut=function isc_EventCanvas_mouseOut(){if(!this.showRolloverControls||!this.calendar.useEventCanvasRolloverControls)return;var _1=isc.EH.lastEvent.target;if(_1&&(_1.eventCanvas==this||_1==isc.Hover.hoverCanvas))return;this.calendar.hideEventCanvasRolloverControls(this)},isc.A.parentResized=function isc_EventCanvas_parentResized(){this.Super('parentResized',arguments);if(this.event)this.calendarView.sizeEventCanvas(this)},isc.A.destroy=function isc_EventCanvas_destroy(){if(!this.calendar.useEventCanvasRolloverControls&&this.$129e){for(var i=this.$129e.length-1;i>=0;i--){var _2=this.$129e[i];this.$129e.removeAt(i);this.removeChild(_2);_2.destroy();_2=null}}});isc.B._maxIndex=isc.C+32;isc.defineClass("ZoneCanvas","EventCanvas");isc.A=isc.ZoneCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.headerPosition="footer";isc.A.showHeader=false;isc.A.showBody=false;isc.A.canEdit=false;isc.A.canDrag=false;isc.A.canDragReposition=false;isc.A.canDragResize=false;isc.A.canRemove=false;isc.A.showRolloverControls=false;isc.B.push(isc.A.initWidget=function isc_ZoneCanvas_initWidget(){this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;this.Super("initWidget",arguments)},isc.A.getInnerHTML=function isc_ZoneCanvas_getInnerHTML(){var _1=isc.StringBuffer.create();_1.append("<div class='",this.getHeaderStyle(),"' style='position:absolute;bottom:0;width:100%;'>",this.event.name,"</div>");var _2=_1.release();return _2},isc.A.setEvent=function isc_ZoneCanvas_setEvent(_1,_2,_3,_4){this.event=_1;this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;var _5=this.calendar;_2=_2||_5.getZoneCanvasStyle(_1,this.calendarView);this.setEventStyle(_2,_3,_4)},isc.A.click=function isc_ZoneCanvas_click(){if(this.calendar.zoneClick)this.calendar.zoneClick(this.event,this.calendarView.viewName)},isc.A.getHoverHTML=function isc_ZoneCanvas_getHoverHTML(){return this.calendar.getZoneHoverHTML(this.event,this,this.calendarView)},isc.A.checkStyle=function isc_ZoneCanvas_checkStyle(){});isc.B._maxIndex=isc.C+6;isc.defineClass("IndicatorCanvas","EventCanvas");isc.A=isc.IndicatorCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.headerPosition="none";isc.A.showHeader=false;isc.A.showBody=false;isc.A.canEdit=false;isc.A.canDrag=false;isc.A.canDragReposition=false;isc.A.canDragResize=false;isc.A.canRemove=false;isc.A.showRolloverControls=false;isc.B.push(isc.A.initWidget=function isc_IndicatorCanvas_initWidget(){this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;this.Super("initWidget",arguments)},isc.A.getInnerHTML=function isc_IndicatorCanvas_getInnerHTML(){var _1=isc.StringBuffer.create();_1.append("<div class='",this.getHeaderStyle(),"' style='position:absolute;bottom:0;width:100%;'>",this.event.name,"</div>");var _2=_1.release();return _2},isc.A.setEvent=function isc_IndicatorCanvas_setEvent(_1,_2,_3,_4){this.event=_1;this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;var _5=this.calendar;_2=_2||_5.getIndicatorCanvasStyle(_1,this.calendarView);this.setEventStyle(_2,_3,_4)},isc.A.click=function isc_IndicatorCanvas_click(){if(this.calendar.indicatorClick)this.calendar.indicatorClick(this.event,this.calendarView.viewName)},isc.A.getHoverHTML=function isc_IndicatorCanvas_getHoverHTML(){return this.calendar.getIndicatorHoverHTML(this.event,this,this.calendarView)},isc.A.checkStyle=function isc_IndicatorCanvas_checkStyle(){});isc.B._maxIndex=isc.C+6;isc.AutoTest.customizeCalendar();isc.ClassFactory.defineClass("Timeline","Calendar");isc.A=isc.Timeline.getPrototype();isc.A.showTimelineView=true;isc.A.showDayView=false;isc.A.showWeekView=false;isc.A.showMonthView=false;isc.A.showControlBar=false;isc.A.labelColumnWidth=75;isc.A.sizeEventsToGrid=false;isc.A.eventDragGap=0;isc._nonDebugModules=(isc._nonDebugModules!=null?isc._nonDebugModules:[]);isc._nonDebugModules.push('Calendar');isc.checkForDebugAndNonDebugModules();isc._moduleEnd=isc._Calendar_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Calendar module init time: '+(isc._moduleEnd-isc._moduleStart)+'ms','loadTime');delete isc.definingFramework;if(isc.Page)isc.Page.handleEvent(null,"moduleLoaded",{moduleName:'Calendar',loadTime:(isc._moduleEnd-isc._moduleStart)});}else{if(window.isc&&isc.Log&&isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Calendar'.");}
+this.calendar.showEventCanvasRolloverControls(this)},isc.A.mouseOut=function isc_EventCanvas_mouseOut(){if(!this.showRolloverControls||!this.calendar.useEventCanvasRolloverControls)return;var _1=isc.EH.lastEvent.target;if(_1&&(_1.eventCanvas==this||_1==isc.Hover.hoverCanvas))return;this.calendar.hideEventCanvasRolloverControls(this)},isc.A.destroy=function isc_EventCanvas_destroy(){if(!this.calendar.useEventCanvasRolloverControls&&this.$129e){for(var i=this.$129e.length-1;i>=0;i--){var _2=this.$129e[i];this.$129e.removeAt(i);this.removeChild(_2);_2.destroy();_2=null}}});isc.B._maxIndex=isc.C+32;isc.defineClass("ZoneCanvas","EventCanvas");isc.A=isc.ZoneCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.headerPosition="footer";isc.A.showHeader=false;isc.A.showBody=false;isc.A.canEdit=false;isc.A.canDrag=false;isc.A.canDragReposition=false;isc.A.canDragResize=false;isc.A.canRemove=false;isc.A.showRolloverControls=false;isc.B.push(isc.A.initWidget=function isc_ZoneCanvas_initWidget(){this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;this.Super("initWidget",arguments)},isc.A.getInnerHTML=function isc_ZoneCanvas_getInnerHTML(){var _1=isc.StringBuffer.create();_1.append("<div class='",this.getHeaderStyle(),"' style='position:absolute;bottom:0;width:100%;'>",this.event.name,"</div>");var _2=_1.release();return _2},isc.A.setEvent=function isc_ZoneCanvas_setEvent(_1,_2,_3,_4){this.event=_1;this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;var _5=this.calendar;_2=_2||_5.getZoneCanvasStyle(_1,this.calendarView);this.setEventStyle(_2,_3,_4)},isc.A.click=function isc_ZoneCanvas_click(){if(this.calendar.zoneClick)this.calendar.zoneClick(this.event,this.calendarView.viewName)},isc.A.getHoverHTML=function isc_ZoneCanvas_getHoverHTML(){return this.calendar.getZoneHoverHTML(this.event,this,this.calendarView)},isc.A.checkStyle=function isc_ZoneCanvas_checkStyle(){});isc.B._maxIndex=isc.C+6;isc.defineClass("IndicatorCanvas","EventCanvas");isc.A=isc.IndicatorCanvas.getPrototype();isc.B=isc._allFuncs;isc.C=isc.B._maxIndex;isc.D=isc._funcClasses;isc.D[isc.C]=isc.A.Class;isc.A.headerPosition="none";isc.A.showHeader=false;isc.A.showBody=false;isc.A.canEdit=false;isc.A.canDrag=false;isc.A.canDragReposition=false;isc.A.canDragResize=false;isc.A.canRemove=false;isc.A.showRolloverControls=false;isc.B.push(isc.A.initWidget=function isc_IndicatorCanvas_initWidget(){this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;this.Super("initWidget",arguments)},isc.A.getInnerHTML=function isc_IndicatorCanvas_getInnerHTML(){var _1=isc.StringBuffer.create();_1.append("<div class='",this.getHeaderStyle(),"' style='position:absolute;bottom:0;width:100%;'>",this.event.name,"</div>");var _2=_1.release();return _2},isc.A.setEvent=function isc_IndicatorCanvas_setEvent(_1,_2,_3,_4){this.event=_1;this.showCloseButton=false;this.canDragReposition=false;this.canDragResize=false;var _5=this.calendar;_2=_2||_5.getIndicatorCanvasStyle(_1,this.calendarView);this.setEventStyle(_2,_3,_4)},isc.A.click=function isc_IndicatorCanvas_click(){if(this.calendar.indicatorClick)this.calendar.indicatorClick(this.event,this.calendarView.viewName)},isc.A.getHoverHTML=function isc_IndicatorCanvas_getHoverHTML(){return this.calendar.getIndicatorHoverHTML(this.event,this,this.calendarView)},isc.A.checkStyle=function isc_IndicatorCanvas_checkStyle(){});isc.B._maxIndex=isc.C+6;isc.AutoTest.customizeCalendar();isc.ClassFactory.defineClass("Timeline","Calendar");isc.A=isc.Timeline.getPrototype();isc.A.showTimelineView=true;isc.A.showDayView=false;isc.A.showWeekView=false;isc.A.showMonthView=false;isc.A.showControlBar=false;isc.A.labelColumnWidth=75;isc.A.sizeEventsToGrid=false;isc.A.eventDragGap=0;isc._nonDebugModules=(isc._nonDebugModules!=null?isc._nonDebugModules:[]);isc._nonDebugModules.push('Calendar');isc.checkForDebugAndNonDebugModules();isc._moduleEnd=isc._Calendar_end=(isc.timestamp?isc.timestamp():new Date().getTime());if(isc.Log&&isc.Log.logIsInfoEnabled('loadTime'))isc.Log.logInfo('Calendar module init time: '+(isc._moduleEnd-isc._moduleStart)+'ms','loadTime');delete isc.definingFramework;if(isc.Page)isc.Page.handleEvent(null,"moduleLoaded",{moduleName:'Calendar',loadTime:(isc._moduleEnd-isc._moduleStart)});}else{if(window.isc&&isc.Log&&isc.Log.logWarn)isc.Log.logWarn("Duplicate load of module 'Calendar'.");}
 /*
  * Isomorphic SmartClient
  * Version v10.0d_2014-02-13 (2014-02-13)
