diff --git a/js/app/views/CatalogUI.js b/js/app/views/CatalogUI.js
index d40610d..311f840 100644
--- a/js/app/views/CatalogUI.js
+++ b/js/app/views/CatalogUI.js
@@ -161,6 +161,17 @@ Ext.define('amdaUI.CatalogUI', {
                     timeTabNode.editInModule();
                 });
     },
+       // Convert UTC date to client local date 
+    convertUTCDateToLocalDate: function (date) {
+        var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);
+
+        var offset = date.getTimezoneOffset() / 60;
+        var hours = date.getHours();
+
+        newDate.setHours(hours - offset);
+
+        return newDate;
+    },
     onAfterInit: function (result, e)
     {
         var me = this;
@@ -699,7 +710,7 @@ Ext.define('amdaUI.CatalogUI', {
     init: function (config)
     {
         this.object = config.object;
-
+        this.object.set('created', this.convertUTCDateToLocalDate(this.object.get('created')));
         this.fieldName = new Ext.form.field.Text({
             fieldLabel: 'Name',
             allowBlank: false,
diff --git a/js/app/views/TimeTableUI.js b/js/app/views/TimeTableUI.js
index f4d9cb1..8adfe27 100755
--- a/js/app/views/TimeTableUI.js
+++ b/js/app/views/TimeTableUI.js
@@ -9,63 +9,63 @@
  */
 
 Ext.define('amdaUI.TimeTableUI', {
-	extend: 'Ext.container.Container',
-	alias: 'widget.panelTimeTable',
-
-	requires: [
-		'Ext.ux.grid.FiltersFeature',
-		'Ext.ux.grid.filter.DateFilter',
-		'Ext.ux.grid.filter.NumericFilter',
-		'amdaUI.OperationsTT',
-		'amdaUI.StatisticalPlug',
-		'Ext.grid.plugin.BufferedRenderer'
-	],
-
-	statics: {
-		COL_TO_HIDE : 'colToHide'
-	},
-
-	status: null,
-
-	constructor: function(config) {
-		this.init(config);
-	 	this.callParent(arguments);
-	 	// load object into view
-	 	this.loadObject();
-	},
-
-	/**
-	 * set the current editing object
-	 * this method will be used on timetable edition when this win is already opened
-	 */
-	setObject : function (object)
-	{
-		// set object
-		this.object = object;
-
-		// load object into view
-		this.loadObject();
-
-		// show the default duration column
-		this.TTGrid.headerCt.getGridColumns();
-
-		Ext.Array.each(this.TTGrid.headerCt.getGridColumns(), function(item,index,all){
-			// if item is the default duration column
-			if ( item.id == amdaUI.TimeTableUI.COL_TO_HIDE+'2' ) {
-				// show this column
-				item.show();
-			}
-		});
+    extend: 'Ext.container.Container',
+    alias: 'widget.panelTimeTable',
+
+    requires: [
+        'Ext.ux.grid.FiltersFeature',
+        'Ext.ux.grid.filter.DateFilter',
+        'Ext.ux.grid.filter.NumericFilter',
+        'amdaUI.OperationsTT',
+        'amdaUI.StatisticalPlug',
+        'Ext.grid.plugin.BufferedRenderer'
+    ],
+
+    statics: {
+        COL_TO_HIDE: 'colToHide'
+    },
+
+    status: null,
+
+    constructor: function (config) {
+        this.init(config);
+        this.callParent(arguments);
+        // load object into view
+        this.loadObject();
+    },
+
+    /**
+     * set the current editing object
+     * this method will be used on timetable edition when this win is already opened
+     */
+    setObject: function (object)
+    {
+        // set object
+        this.object = object;
+
+        // load object into view
+        this.loadObject();
+
+        // show the default duration column
+        this.TTGrid.headerCt.getGridColumns();
+
+        Ext.Array.each(this.TTGrid.headerCt.getGridColumns(), function (item, index, all) {
+            // if item is the default duration column
+            if (item.id == amdaUI.TimeTableUI.COL_TO_HIDE + '2') {
+                // show this column
+                item.show();
+            }
+        });
         // fire the refresh event (to statistical plugin)
         this.fireEvent("refresh");
-	// global event
-	myDesktopApp.EventManager.fireEvent("refresh");
-	},
-
-	/**
-	 * load object timetable into this view
-	 */
-	loadObject : function(){
+        // global event
+        myDesktopApp.EventManager.fireEvent("refresh");
+    },
+
+    /**
+     * load object timetable into this view
+     */
+    loadObject: function () {
         // load object into form
         this.formPanel.getForm().loadRecord(this.object);
 
@@ -74,351 +74,366 @@ Ext.define('amdaUI.TimeTableUI', {
         //
         var me = this;
 
-        var onAfterInit = function(result, e) {
-        	if (!result || !result.success)
-        	{
-        		if (result.message)
-        			myDesktopApp.errorMsg(result.message);
-        		else
-        			myDesktopApp.errorMsg('Unknown error during cache initialisation');
-        		return;
-        	}
+        var onAfterInit = function (result, e) {
+            if (!result || !result.success)
+            {
+                if (result.message)
+                    myDesktopApp.errorMsg(result.message);
+                else
+                    myDesktopApp.errorMsg('Unknown error during cache initialisation');
+                return;
+            }
 
-        	me.TTGrid.getSelectionModel().deselectAll();
+            me.TTGrid.getSelectionModel().deselectAll();
 
-        	// clear filters
-        	me.TTGrid.getStore().clearFilter(true);
-		me.TTGrid.filters.clearFilters();
+            // clear filters
+            me.TTGrid.getStore().clearFilter(true);
+            me.TTGrid.filters.clearFilters();
 
-    		//clear sort
-        	me.TTGrid.getStore().sorters.clear();
-        	//me.TTGrid.getStore().sorters = new Ext.util.MixedCollection();
+            //clear sort
+            me.TTGrid.getStore().sorters.clear();
+            //me.TTGrid.getStore().sorters = new Ext.util.MixedCollection();
 
-        	//set cache token to the Time Table object
-        	me.object.set('cacheToken', result.token);
+            //set cache token to the Time Table object
+            me.object.set('cacheToken', result.token);
 
-        	me.TTGrid.getStore().load();
+            me.TTGrid.getStore().load();
 
-        	me.status = result.status;
+            me.status = result.status;
 
-        	//Statistical plugin
-        	me.fireEvent("refresh");
+            //Statistical plugin
+            me.fireEvent("refresh");
         };
 
         if (this.object.get('fromPlugin'))
         {
-        	if (this.object.get('objFormat') && this.object.get('objFormat') != '')
-        	{
-        		//From uploaded file
-        		AmdaAction.initObjectCacheFromUploadedFile(this.object.get('objName'), this.object.get('objFormat'), false, onAfterInit);
-        	}
-        	else
-        	{
-        		//From tmp object (ie Search result)
-        		AmdaAction.initObjectCacheFromTmpObject(this.object.get('folderId'), this.object.get('objName'), false, onAfterInit);
-        	}
-        }
-        else if(this.object.get('relatedCatalogId') != '')
+            if (this.object.get('objFormat') && this.object.get('objFormat') != '')
+            {
+                //From uploaded file
+                AmdaAction.initObjectCacheFromUploadedFile(this.object.get('objName'), this.object.get('objFormat'), false, onAfterInit);
+            } else
+            {
+                //From tmp object (ie Search result)
+                AmdaAction.initObjectCacheFromTmpObject(this.object.get('folderId'), this.object.get('objName'), false, onAfterInit);
+            }
+        } else if (this.object.get('relatedCatalogId') != '')
+        {
+            var pathern = this.object.get('relatedCatalogId').split('_')[0];
+            catType = '';
+            if (pathern == 'cat')
+                catType = ' catalog';
+            if (pathern == 'sharedcatalog')
+                catType = 'sharedcatalog';
+            AmdaAction.initObjectCacheFromCatalog(this.object.get('relatedCatalogId'), catType, onAfterInit);
+        } else
         {
-                              var pathern=this.object.get('relatedCatalogId').split('_')[0] ;
-                              catType='';
-                               if(pathern=='cat')
-                                   catType=' catalog' ;
-                               if(pathern=='sharedcatalog')
-                                   catType='sharedcatalog' ;
-                               AmdaAction.initObjectCacheFromCatalog(this.object.get('relatedCatalogId'), catType, onAfterInit);
+            var typeTT = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id).linkedNode.data.nodeType;
+            if (this.object.get('id') == '')
+            {
+                //Init empty cache
+                AmdaAction.initObjectCache(false, 0, onAfterInit);
+            } else
+            {
+                //From existing TT file
+                AmdaAction.initObjectCacheFromObject(this.object.get('id'), typeTT, onAfterInit);
+            }
         }
-       else
+    },
+
+    /**
+     * update this.object from form
+     */
+    updateObject: function ()
+    {
+        this.updateCount();
+
+        // get the basic form
+        var basicForm = this.formPanel.getForm();
+        var updateStatus = true;
+
+        var fieldsWithoutName = basicForm.getFields().items;
+        Ext.Array.each(fieldsWithoutName, function (item, index, allItems) {
+            if (item !== this.fieldName) {
+                if (!item.isValid()) {
+                    // set update isn't allowed
+                    updateStatus = false;
+                }
+            }
+        }, this);
+        // if the update is allowed
+        if (updateStatus) {
+            /// real object update
+            // update TimeTable object with the content of form
+            basicForm.updateRecord(this.object);
+        }
+        // return the update status
+        return updateStatus;
+    },
+
+    updateCount: function ()
+    {
+        this.object.set('nbIntervals', this.TTGrid.getStore().getTotalCount());
+        this.formPanel.getForm().findField('nbIntervals').setValue(this.object.get('nbIntervals'));
+    },
+
+    /*
+     * save method called by Save button
+     */
+    saveProcess: function (toRename, onAfterSave, notDisplayMsg)
+    {
+        var timeTableModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
+
+        // if the name has been modified this is a creation
+        if (timeTableModule.contextNode && (timeTableModule.contextNode.data.id == 'sharedtimeTable-treeRootNode'))
+        {
+            timeTableModule.linkedNode = null;
+            timeTableModule.createLinkedNode();
+            timeTableModule.createObject(this.object.getJsonValues());
+            var ttobj = timeTableModule.linkedNode.get('object');
+            // synchronisation of objects
+            this.object = ttobj;
+            timeTableModule.linkedNode.create();
+        } else if (this.fclose()) /*TimeTable object has been modified*/
         {
-        	var typeTT = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id).linkedNode.data.nodeType;
-        	if (this.object.get('id') == '')
-        	{
-        		//Init empty cache
-        		AmdaAction.initObjectCache(false,0,onAfterInit);
-        	}
-        	else
-        	{
-        		//From existing TT file
-        		AmdaAction.initObjectCacheFromObject(this.object.get('id'), typeTT, onAfterInit);
-        	}
+            if (this.object.isModified('name') || this.object.get('fromPlugin'))
+            {
+                // if object already has an id : it's a 'rename' of an existing TimeTable
+                if (this.object.get('id'))
+                {
+                    // the context Node is the parent node of current edited one
+                    var contextNode = timeTableModule.linkedNode.parentNode;
+                    // link a new node to the TimeTableModule
+                    timeTableModule.createLinkedNode();
+                    // set the contextNode
+                    timeTableModule.linkedNode.set('contextNode', contextNode);
+                    // create a new object linked
+                    timeTableModule.createObject(this.object.getJsonValues());
+
+                    var ttobj = timeTableModule.linkedNode.get('object');
+                    // synchronisation of objects
+                    this.object = ttobj;
+
+                    if (toRename)
+                        timeTableModule.linkedNode.toRename = true;
+                }
+                timeTableModule.linkedNode.create({callback: function ($action) {
+                        if (timeTableModule.linkedNode.get('object').get('fromPlugin'))
+                            timeTableModule.linkedNode.get('object').set('fromPlugin', false);
+                        timeTableModule.linkedNode.update({callback: function () {
+                                if (onAfterSave)
+                                    onAfterSave();
+                            }, scope: this});
+                    },
+                    scope: this});
+            } else {
+                //update
+                timeTableModule.linkedNode.update({callback: function () {
+                        if (onAfterSave)
+                            onAfterSave();
+                    }, scope: this});
+            }
         }
-	},
-
-	/**
-	* update this.object from form
-	*/
-	updateObject : function()
-	{
-		this.updateCount();
-
-		// get the basic form
-		var basicForm = this.formPanel.getForm();
-		var updateStatus = true;
-
-		var fieldsWithoutName = basicForm.getFields().items;
-		Ext.Array.each(fieldsWithoutName, function(item, index,allItems){
-			if(item !== this.fieldName) {
-				if (!item.isValid()) {
-					// set update isn't allowed
-					updateStatus = false;
-				}
-			}
-		}, this);
-		// if the update is allowed
-		if (updateStatus) {
-		/// real object update
-		// update TimeTable object with the content of form
-			basicForm.updateRecord(this.object);
-		}
-		// return the update status
-		return updateStatus;
-	},
-
-	updateCount : function()
-	{
-		this.object.set('nbIntervals',this.TTGrid.getStore().getTotalCount());
-		this.formPanel.getForm().findField('nbIntervals').setValue(this.object.get('nbIntervals'));
-	},
-
-	/*
-	 * save method called by Save button
-	 */
-	saveProcess : function(toRename,onAfterSave, notDisplayMsg)
-	{
-		var timeTableModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
-
-		// if the name has been modified this is a creation
-		if (timeTableModule.contextNode &&  (timeTableModule.contextNode.data.id == 'sharedtimeTable-treeRootNode'))
-		{
-			timeTableModule.linkedNode = null;
-			timeTableModule.createLinkedNode();
-			timeTableModule.createObject(this.object.getJsonValues());
-			var ttobj = timeTableModule.linkedNode.get('object');
-			// synchronisation of objects
-			this.object = ttobj;
-			timeTableModule.linkedNode.create();
-		}
-		else  if (this.fclose()) /*TimeTable object has been modified*/
-		{
-			if (this.object.isModified('name') || this.object.get('fromPlugin'))
-			{
-				// if object already has an id : it's a 'rename' of an existing TimeTable
-				if (this.object.get('id'))
-				{
-					// the context Node is the parent node of current edited one
-					var contextNode = timeTableModule.linkedNode.parentNode;
-					// link a new node to the TimeTableModule
-					timeTableModule.createLinkedNode();
-					// set the contextNode
-					timeTableModule.linkedNode.set('contextNode',contextNode);
-					// create a new object linked
-					timeTableModule.createObject(this.object.getJsonValues());
-
-					var ttobj = timeTableModule.linkedNode.get('object');
-					// synchronisation of objects
-					this.object = ttobj;
-
-					if (toRename) timeTableModule.linkedNode.toRename = true;
-				}
-				timeTableModule.linkedNode.create({callback : function ($action) {
-					if (timeTableModule.linkedNode.get('object').get('fromPlugin'))
-						timeTableModule.linkedNode.get('object').set('fromPlugin',false);
-					timeTableModule.linkedNode.update({ callback  : function() {if (onAfterSave) onAfterSave();}, scope : this});},
-					scope : this});
-			} else {
-				//update
-				timeTableModule.linkedNode.update({ callback  : function() {if (onAfterSave) onAfterSave();}, scope : this});
-			}
-		}
-	},
-
-	/**
-	 * overwrite metod called by Save button
-	 */
-	overwriteProcess : function(btn)
-	{
-		if (btn == 'cancel') return;
-
-		this.fieldName.clearInvalid();
-		this.saveProcess(true);
-
-	},
-
-	addInterval : function(start, stop)
-	{
-		var row = this.TTGrid.getStore().getTotalCount();
-		var me = this;
-		this.TTGrid.getSelectionModel().deselectAll();
-		AmdaAction.addCacheInterval({'start' : start, 'stop' : stop, 'index' : row},function (result, e) {
-			this.status = result.status;
-		if (!this.TTGrid.getStore().loading) {
-        		this.TTGrid.getStore().reload({
-        			callback : function(records, options, success) {
-        				me.TTGrid.getView().bufferedRenderer.scrollTo(row, false, function() {
-        					me.TTGrid.getView().select(row);
-        				}, me);
-        			}
-        		});
-		}
-		}, this);
-	},
-                     generateCAT : function(id)
-                     {
-                      if(this.fclose()){
-                        Ext.Msg.confirm('Generate CAT', 'Current Time Table has been modified.\nDo you want to save it to include these changes in the generated Catalog ?' ,
-                        function (btn, text){
-                         if (btn == 'yes'){
-                          // mark this.closed as true before the call to close() as that will fire the beforeclose event again
-                          if(this.object.get('id') ==""){
-                              // case of creation of catalog
-                          this.saveTT(this.createCAT(this.object.get('id')));
-                      }else{
-                          // case existing catalog
-                          this.saveProcess(false,this.createCAT(this.object.get('id')));
-                      }
-                          return;
-                          }
-                           }, this);
-
-                     }else{
-                         this.createCAT(this.object.get('id'));
-                         return;
-                     }
-                     },
-                     createCAT : function(id)
-                     {
-                         Ext.Msg.prompt('Create catalog', 'Enter the number of columns:', function(btn, text){
-                                        if (btn == 'ok'){
-                                                var catObj=Ext.create('amdaModel.Catalog');
-                                                var catNode=Ext.create('amdaModel.CatalogNode',{leaf : true});
-                                                catObj.set('relatedTimeTableId',  id);
-                                                creatDate=new Date(this.object.get('created'));
-                                                date=Ext.Date.format(creatDate,'Y-m-d\\TH:i:s');
-                                                descr='Generated by CDPP/Amda Time Table Module \n'+ 'From Time Table: '+this.object.get('name')+'\nOn: '+date+'\n';
-                                                catObj.set('description', descr+this.object.get('description'));
-                                                var nbParam = parseInt(text);
-                                                if ((nbParam <= 0) || (nbParam > 100)) {
-                                                        nbParam = 1;
-                                                }
-                                                catObj.set('nbParameters', nbParam);
-                                                catNode.set('object',catObj);
-                                                var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID);
-                                                var catRootNode = explorerTree.getRootNode().findChild('id', 'catalog-treeRootNode', true);
-                                                 amdaModel.InteractiveNode.preloadNodes(catRootNode.getRootNode(),
-			function()
-			{
-				// edit newNode into Parameter Module with node as contextNode
-				catNode.editInModule();
-			});
-                                        }
-                                }, this);
-                     },
-                     saveTT  : function(OnAfterSave)
-                     {
-                         if (this.updateObject()){
-                            		var basicForm = this.formPanel.getForm();
-                            		// if there's at least one record in the store of TTGrid
-                            		if (this.TTGrid.getStore().getTotalCount()>0) {
-                            			// update TimeTable object which the content of form
-                            			basicForm.updateRecord(this.object);
-
-                            			var me = this;
-                            			this.checkIntervalsStatusForSave(function () {
-                            				//Name validation
-                            				var ttModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
-                            				if (!ttModule)
-                            					return;
-                            				ttModule.linkedNode.isValidName(me.fieldName.getValue(), function (res) {
-        			                    		if (!res)
-        			                    		{
-        			                    			me.fieldName.validFlag = 'Error during object validation';
-        			                    			myDesktopApp.errorMsg(me.fieldName.validFlag);
-        			                    			me.fieldName.validate();
-        			                    			return;
-        			                    		}
-
-        			                    		if (!res.valid)
-        			                    		{
-        			                    			if (res.error)
-        			                    			{
-        			                    				if (res.error.search('subtree') != -1) {
-        			                    					Ext.MessageBox.show({title:'Warning',
-        			                    						msg: res.error+'<br/>Do you want to overwrite it?',
-        			                    						width: 300,
-        			                    						buttons: Ext.MessageBox.OKCANCEL,
-        			                    						fn : me.overwriteProcess,
-        			                    						icon: Ext.MessageBox.WARNING,
-        			                    						scope : me
-        			                    					});
-        			                    					me.fieldName.validFlag = true;
-        			                    				}
-        			                    				else
-        			                    					me.fieldName.validFlag = res.error;
-        			                    			}
-        			                    			else
-        			                    			{
-        			                    				me.fieldName.validFlag = 'Invalid object name';
-        			                    				myDesktopApp.errorMsg(me.fieldName.validFlag);
-        			                    			}
-        			                    			me.fieldName.validate();
-        			                    			return;
-        			                    		}
-
-        			                    		me.fieldName.validFlag = true;
-        			                    		me.fieldName.validate();
-        			                    		me.saveProcess(false);
-        			                    	});
-                            			});
-  				              } else {
-  				                // warning:
-  				                Ext.Msg.alert('No intervals', 'Your time table is invalid, <br>you must have at least one interval');
-  				              }
-                                        }
-                     },
-
-	init : function(config)
-	{
-	    this.object =   config.object;
-
-	    this.fieldName = new Ext.form.field.Text({
-                fieldLabel: 'Name*',
-                allowBlank : false,
-                stripCharsRe: /(^\s+|\s+$)/g,
-                emptyText: 'Please no spaces!',
-                name: 'name',
-                anchor: '100%',
-                validateOnChange: false,
-                validateOnBlur: false,
-                validFlag: false,
-	            validator : function() {
-	            	return this.validFlag;
-	            }
-	    });
-
-	    this.formPanel = new Ext.form.Panel({
-            bodyStyle: {background : '#dfe8f6'},
+    },
+
+    /**
+     * overwrite metod called by Save button
+     */
+    overwriteProcess: function (btn)
+    {
+        if (btn == 'cancel')
+            return;
+
+        this.fieldName.clearInvalid();
+        this.saveProcess(true);
+
+    },
+
+    addInterval: function (start, stop)
+    {
+        var row = this.TTGrid.getStore().getTotalCount();
+        var me = this;
+        this.TTGrid.getSelectionModel().deselectAll();
+        AmdaAction.addCacheInterval({'start': start, 'stop': stop, 'index': row}, function (result, e) {
+            this.status = result.status;
+            if (!this.TTGrid.getStore().loading) {
+                this.TTGrid.getStore().reload({
+                    callback: function (records, options, success) {
+                        me.TTGrid.getView().bufferedRenderer.scrollTo(row, false, function () {
+                            me.TTGrid.getView().select(row);
+                        }, me);
+                    }
+                });
+            }
+        }, this);
+    },
+    generateCAT: function (id)
+    {
+        if (this.fclose()) {
+            Ext.Msg.confirm('Generate CAT', 'Current Time Table has been modified.\nDo you want to save it to include these changes in the generated Catalog ?',
+                    function (btn, text) {
+                        if (btn == 'yes') {
+                            // mark this.closed as true before the call to close() as that will fire the beforeclose event again
+                            if (this.object.get('id') == "") {
+                                // case of creation of catalog
+                                this.saveTT(this.createCAT(this.object.get('id')));
+                            } else {
+                                // case existing catalog
+                                this.saveProcess(false, this.createCAT(this.object.get('id')));
+                            }
+                            return;
+                        }
+                    }, this);
+
+        } else {
+            this.createCAT(this.object.get('id'));
+            return;
+        }
+    },
+    createCAT: function (id)
+    {
+        Ext.Msg.prompt('Create catalog', 'Enter the number of columns:', function (btn, text) {
+            if (btn == 'ok') {
+                var catObj = Ext.create('amdaModel.Catalog');
+                var catNode = Ext.create('amdaModel.CatalogNode', {leaf: true});
+                catObj.set('relatedTimeTableId', id);
+                creatDate = new Date(this.object.get('created'));
+                date = Ext.Date.format(creatDate, 'Y-m-d\\TH:i:s');
+                descr = 'Generated by CDPP/Amda Time Table Module \n' + 'From Time Table: ' + this.object.get('name') + ' which was generated on: ' + date + '\n';
+                catObj.set('description', descr + this.object.get('description'));
+                var nbParam = parseInt(text);
+                if ((nbParam <= 0) || (nbParam > 100)) {
+                    nbParam = 1;
+                }
+                catObj.set('nbParameters', nbParam);
+                catNode.set('object', catObj);
+                var explorerTree = Ext.getCmp(amdaUI.ExplorerUI.RESRC_TAB.TREE_ID);
+                var catRootNode = explorerTree.getRootNode().findChild('id', 'catalog-treeRootNode', true);
+                amdaModel.InteractiveNode.preloadNodes(catRootNode.getRootNode(),
+                        function ()
+                        {
+                            // edit newNode into Parameter Module with node as contextNode
+                            catNode.editInModule();
+                        });
+            }
+        }, this);
+    },
+    saveTT: function (OnAfterSave)
+    {
+        if (this.updateObject()) {
+            var basicForm = this.formPanel.getForm();
+            // if there's at least one record in the store of TTGrid
+            if (this.TTGrid.getStore().getTotalCount() > 0) {
+                // update TimeTable object which the content of form
+                basicForm.updateRecord(this.object);
+
+                var me = this;
+                this.checkIntervalsStatusForSave(function () {
+                    //Name validation
+                    var ttModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
+                    if (!ttModule)
+                        return;
+                    ttModule.linkedNode.isValidName(me.fieldName.getValue(), function (res) {
+                        if (!res)
+                        {
+                            me.fieldName.validFlag = 'Error during object validation';
+                            myDesktopApp.errorMsg(me.fieldName.validFlag);
+                            me.fieldName.validate();
+                            return;
+                        }
+
+                        if (!res.valid)
+                        {
+                            if (res.error)
+                            {
+                                if (res.error.search('subtree') != -1) {
+                                    Ext.MessageBox.show({title: 'Warning',
+                                        msg: res.error + '<br/>Do you want to overwrite it?',
+                                        width: 300,
+                                        buttons: Ext.MessageBox.OKCANCEL,
+                                        fn: me.overwriteProcess,
+                                        icon: Ext.MessageBox.WARNING,
+                                        scope: me
+                                    });
+                                    me.fieldName.validFlag = true;
+                                } else
+                                    me.fieldName.validFlag = res.error;
+                            } else
+                            {
+                                me.fieldName.validFlag = 'Invalid object name';
+                                myDesktopApp.errorMsg(me.fieldName.validFlag);
+                            }
+                            me.fieldName.validate();
+                            return;
+                        }
+
+                        me.fieldName.validFlag = true;
+                        me.fieldName.validate();
+                        me.saveProcess(false);
+                    });
+                });
+            } else {
+                // warning:
+                Ext.Msg.alert('No intervals', 'Your time table is invalid, <br>you must have at least one interval');
+            }
+        }
+    },
+    
+       // Convert UTC date to client local date 
+    convertUTCDateToLocalDate: function (date) {
+        var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);
+
+        var offset = date.getTimezoneOffset() / 60;
+        var hours = date.getHours();
+
+        newDate.setHours(hours - offset);
+
+        return newDate;
+    },
+
+    init: function (config)
+    {
+        this.object = config.object;
+        this.object.set('created', this.convertUTCDateToLocalDate(this.object.get('created')));
+
+        this.fieldName = new Ext.form.field.Text({
+            fieldLabel: 'Name*',
+            allowBlank: false,
+            stripCharsRe: /(^\s+|\s+$)/g,
+            emptyText: 'Please no spaces!',
+            name: 'name',
+            anchor: '100%',
+            validateOnChange: false,
+            validateOnBlur: false,
+            validFlag: false,
+            validator: function () {
+                return this.validFlag;
+            }
+        });
+
+        this.formPanel = new Ext.form.Panel({
+            bodyStyle: {background: '#dfe8f6'},
             id: 'formTimeTable',
             flex: 4,
-            model : 'amdaModel.TimeTable',
-            trackResetOnLoad : true, // reset to the last loaded record
-            border : false,
-            fieldDefaults: { labelWidth: 80 },
+            model: 'amdaModel.TimeTable',
+            trackResetOnLoad: true, // reset to the last loaded record
+            border: false,
+            fieldDefaults: {labelWidth: 80},
             items: [
                 this.fieldName,
                 {
                     xtype: 'fieldcontainer',
                     layout: 'hbox',
-                    fieldLabel:'Creation date',
+                    fieldLabel: 'Creation date',
                     items: [
                         {
-                            xtype:'datefield', width: 180,
+                            xtype: 'datefield', width: 180,
                             name: 'created', disabled: true,
                             hideTrigger: true, format: 'Y/m/d H:i:s'
                         },
-                        { xtype:'component', width: 20 },
-                        { xtype:'displayfield', value: 'Intervals:', width: 50 },
-                        { xtype:'component', width: 8 },
-                        { xtype:'textfield', name: 'nbIntervals', disabled: true, width: 70 }
+                        {xtype: 'component', width: 20},
+                        {xtype: 'displayfield', value: 'Intervals:', width: 50},
+                        {xtype: 'component', width: 8},
+                        {xtype: 'textfield', name: 'nbIntervals', disabled: true, width: 70}
                     ]
                 },
                 {
@@ -437,154 +452,152 @@ Ext.define('amdaUI.TimeTableUI', {
 
         });
 
-	    var store = Ext.create('Ext.data.Store', {
-	        model: 'amdaModel.Interval',
-	        autoDestroy: false,
-	        pageSize : 200,
-		  buffered : true,
-	      autoLoad: true,
-	      purgePageCount: 0,
-	 	remoteSort: true,
-	        listeners: {
-	            load: function(store,records) {
-
- 	              //  alert('nb of records in store:'+records.length );
-                        myDesktopApp.EventManager.fireEvent('refresh');
-                        this.TTGrid.getView().refresh();
-                        this.TTGrid.getSelectionModel().refresh();
-                        this.updateCount();
-                        //Statistical plugin
-             		   	this.fireEvent("refresh");
-	            },
-	            prefetch : function(store, records, successful, operation, eOpts) {
-	            	if (operation && (operation.action == 'read'))
-	            	{
-	            		if (operation.response && operation.response.result && operation.response.result.success)
-	            			this.status = operation.response.result.status;
-	            	}
-	            },
-	            remove: function(store) {
-	            	this.updateCount();
-	            	//Statistical plugin
-         		   	this.fireEvent("refresh");
-	            },
-	            add:  function(store) {
-	            	this.updateCount();
-	            	//Statistical plugin
-         		   	this.fireEvent("refresh");
-	            },
-	            datachanged: function(store){
-	            	this.updateCount();
-	            	//Statistical plugin
-         		   	this.fireEvent("refresh");
-	    		},
-	            scope : this
-	        }
-	    });
-
-	    var filters = {
-	        ftype: 'filters',
-	        encode: true, // json encode the filter query
-	        local: false,   // defaults to false (remote filte
-	        filters: [
-                { type: 'numeric', dataIndex: 'durationHour'},
-                { type: 'numeric', dataIndex: 'durationMin'},
-                { type: 'numeric', dataIndex: 'durationSec'},
-                { type: 'date', dataIndex: 'start',  dateFormat: 'Y-m-d'},
-                { type: 'date', dataIndex: 'stop',  dateFormat: 'Y-m-d' }
+        var store = Ext.create('Ext.data.Store', {
+            model: 'amdaModel.Interval',
+            autoDestroy: false,
+            pageSize: 200,
+            buffered: true,
+            autoLoad: true,
+            purgePageCount: 0,
+            remoteSort: true,
+            listeners: {
+                load: function (store, records) {
+
+                    //  alert('nb of records in store:'+records.length );
+                    myDesktopApp.EventManager.fireEvent('refresh');
+                    this.TTGrid.getView().refresh();
+                    this.TTGrid.getSelectionModel().refresh();
+                    this.updateCount();
+                    //Statistical plugin
+                    this.fireEvent("refresh");
+                },
+                prefetch: function (store, records, successful, operation, eOpts) {
+                    if (operation && (operation.action == 'read'))
+                    {
+                        if (operation.response && operation.response.result && operation.response.result.success)
+                            this.status = operation.response.result.status;
+                    }
+                },
+                remove: function (store) {
+                    this.updateCount();
+                    //Statistical plugin
+                    this.fireEvent("refresh");
+                },
+                add: function (store) {
+                    this.updateCount();
+                    //Statistical plugin
+                    this.fireEvent("refresh");
+                },
+                datachanged: function (store) {
+                    this.updateCount();
+                    //Statistical plugin
+                    this.fireEvent("refresh");
+                },
+                scope: this
+            }
+        });
+
+        var filters = {
+            ftype: 'filters',
+            encode: true, // json encode the filter query
+            local: false, // defaults to false (remote filte
+            filters: [
+                {type: 'numeric', dataIndex: 'durationHour'},
+                {type: 'numeric', dataIndex: 'durationMin'},
+                {type: 'numeric', dataIndex: 'durationSec'},
+                {type: 'date', dataIndex: 'start', dateFormat: 'Y-m-d'},
+                {type: 'date', dataIndex: 'stop', dateFormat: 'Y-m-d'}
             ]
-	    };
-
-	    var cellEditing = Ext.create('Ext.grid.plugin.CellEditing',{
-	    		onEditComplete : function(ed, value, startValue) {
-	    	        var me = this,
-	    	            activeColumn = me.getActiveColumn(),
-	    	            context = me.context,
-	    	            record;
-
-	    	        if (activeColumn) {
-	    	            record = context.record;
-
-	    	            me.setActiveEditor(null);
-	    	            me.setActiveColumn(null);
-	    	            me.setActiveRecord(null);
-
-	    	            context.value = value;
-	    	            if (!me.validateEdit()) {
-	    	                me.editing = false;
-	    	                return;
-	    	            }
-
-	    	            // Only update the record if the new value is different than the
-	    	            // startValue. When the view refreshes its el will gain focus
-	    	            if (!record.isEqual(value, startValue)) {
-	    	            	var obj = {
-                        'cacheId' : record.get('cacheId'),
-                        'isCatalog' : false,
-                        'data' : {}
-                      };
-                      obj['data'][activeColumn.dataIndex] = value;
-
-	    	            	//context.grid.getSelectionModel().deselectAll();
-	    	            	//Interval is modified on the server side
-	    	            	me.editing = true;
-
-	    	            	AmdaAction.modifyCacheInterval(obj, function (result, e) {
-
-	    	            		var ttModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
-                    			if (ttModule)
-                    				ttModule.getUiContent().status = result.status;
-					if (!context.store.loading) {
-                    				context.grid.getSelectionModel().deselectAll();
-	    	            			context.store.reload({
-	                        			callback : function(records, options, success) {
-	                        				context.view.bufferedRenderer.scrollTo(context.rowIdx, true, function() {
-	                        					me.fireEvent('edit', me, context);
-	                        					me.editing = false;
-	                        				}, me);
-	                        			}
-	                        		});
-					}
-					else {
-						me.editing = false;
-					}
-	                        }, this);
-	    	            }
-	    	            else
-	    	            	me.editing = false;
-	    	        }
-	    	    }
-
-	    });
-
-	    this.TTGrid =  Ext.create('Ext.grid.Panel', {
-	        store : store,
-	        features: [filters],
-	        columnLines: true,
-		selModel: {pruneRemoved: false},
-	        columns: [
+        };
+
+        var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
+            onEditComplete: function (ed, value, startValue) {
+                var me = this,
+                        activeColumn = me.getActiveColumn(),
+                        context = me.context,
+                        record;
+
+                if (activeColumn) {
+                    record = context.record;
+
+                    me.setActiveEditor(null);
+                    me.setActiveColumn(null);
+                    me.setActiveRecord(null);
+
+                    context.value = value;
+                    if (!me.validateEdit()) {
+                        me.editing = false;
+                        return;
+                    }
+
+                    // Only update the record if the new value is different than the
+                    // startValue. When the view refreshes its el will gain focus
+                    if (!record.isEqual(value, startValue)) {
+                        var obj = {
+                            'cacheId': record.get('cacheId'),
+                            'isCatalog': false,
+                            'data': {}
+                        };
+                        obj['data'][activeColumn.dataIndex] = value;
+
+                        //context.grid.getSelectionModel().deselectAll();
+                        //Interval is modified on the server side
+                        me.editing = true;
+
+                        AmdaAction.modifyCacheInterval(obj, function (result, e) {
+
+                            var ttModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
+                            if (ttModule)
+                                ttModule.getUiContent().status = result.status;
+                            if (!context.store.loading) {
+                                context.grid.getSelectionModel().deselectAll();
+                                context.store.reload({
+                                    callback: function (records, options, success) {
+                                        context.view.bufferedRenderer.scrollTo(context.rowIdx, true, function () {
+                                            me.fireEvent('edit', me, context);
+                                            me.editing = false;
+                                        }, me);
+                                    }
+                                });
+                            } else {
+                                me.editing = false;
+                            }
+                        }, this);
+                    } else
+                        me.editing = false;
+                }
+            }
+
+        });
+
+        this.TTGrid = Ext.create('Ext.grid.Panel', {
+            store: store,
+            features: [filters],
+            columnLines: true,
+            selModel: {pruneRemoved: false},
+            columns: [
                 {
-                	xtype: 'rownumberer',
-                	width: 50,
-                	renderer: function(value, metaData, record, row, col, store, gridView){
-                		var msg = record.index + 1;
-                		if (record.get('isNew') || record.get('isModified'))
-                		{
-                			msg += ' *';
-                			metaData.style = 'font-weight: bold'
-                		}
-               	      	return msg;
+                    xtype: 'rownumberer',
+                    width: 50,
+                    renderer: function (value, metaData, record, row, col, store, gridView) {
+                        var msg = record.index + 1;
+                        if (record.get('isNew') || record.get('isModified'))
+                        {
+                            msg += ' *';
+                            metaData.style = 'font-weight: bold'
+                        }
+                        return msg;
                     }
                 },
                 {
-                    header: 'Start Time', dataIndex: 'start',  width: 120,
-                    editor: { xtype:'datefield', allowBlank:false, hideTrigger: true,  format : 'Y-m-d\\TH:i:s'},
-                    renderer: function(value){
+                    header: 'Start Time', dataIndex: 'start', width: 120,
+                    editor: {xtype: 'datefield', allowBlank: false, hideTrigger: true, format: 'Y-m-d\\TH:i:s'},
+                    renderer: function (value) {
                         if (value != null) {
-                            if(Ext.isDate(value)){
+                            if (Ext.isDate(value)) {
                                 return Ext.Date.format(value, 'Y-m-d\\TH:i:s');
                             } else {
-                                return Ext.Date.format(new Date (value), 'Y-m-d\\TH:i:s');
+                                return Ext.Date.format(new Date(value), 'Y-m-d\\TH:i:s');
                             }
                         } else {
                             return value;
@@ -593,13 +606,13 @@ Ext.define('amdaUI.TimeTableUI', {
                 },
                 {
                     header: 'Stop Time', dataIndex: 'stop', width: 120,
-                    editor: { xtype: 'datefield', allowBlank: false, hideTrigger: true,  format : 'Y-m-d\\TH:i:s'},
-                    renderer: function(value) {
+                    editor: {xtype: 'datefield', allowBlank: false, hideTrigger: true, format: 'Y-m-d\\TH:i:s'},
+                    renderer: function (value) {
                         if (value != null) {
-                            if(Ext.isDate(value)){
+                            if (Ext.isDate(value)) {
                                 return Ext.Date.format(value, 'Y-m-d\\TH:i:s');
                             } else {
-                                return Ext.Date.format(new Date (value), 'Y-m-d\\TH:i:s');
+                                return Ext.Date.format(new Date(value), 'Y-m-d\\TH:i:s');
                             }
                         } else {
                             return value;
@@ -607,19 +620,19 @@ Ext.define('amdaUI.TimeTableUI', {
                     }
                 },
                 {
-                    header: 'Duration (hour)',  width: 120, dataIndex: 'durationHour',
-                    id: amdaUI.TimeTableUI.COL_TO_HIDE+'1',
+                    header: 'Duration (hour)', width: 120, dataIndex: 'durationHour',
+                    id: amdaUI.TimeTableUI.COL_TO_HIDE + '1',
                     hidden: true,
-                    renderer: function(value) {
-                        return Ext.util.Format.number(value,'0.00');
+                    renderer: function (value) {
+                        return Ext.util.Format.number(value, '0.00');
                     },
                     listeners: {
-                        beforeshow : function(){
-                            Ext.Array.each(this.ownerCt.getGridColumns(), function(item,index,all){
+                        beforeshow: function () {
+                            Ext.Array.each(this.ownerCt.getGridColumns(), function (item, index, all) {
                                 // if item is a column to hide automatically
-                                if ( Ext.util.Format.substr(item.id, 0, amdaUI.TimeTableUI.COL_TO_HIDE.length) == amdaUI.TimeTableUI.COL_TO_HIDE ) {
+                                if (Ext.util.Format.substr(item.id, 0, amdaUI.TimeTableUI.COL_TO_HIDE.length) == amdaUI.TimeTableUI.COL_TO_HIDE) {
                                     // if item isn't the column which is being declared and is not hidden
-                                    if ( item.id != amdaUI.TimeTableUI.COL_TO_HIDE+'1' && !item.isHidden() ){
+                                    if (item.id != amdaUI.TimeTableUI.COL_TO_HIDE + '1' && !item.isHidden()) {
                                         // hide this column
                                         item.hide();
                                     }
@@ -629,18 +642,18 @@ Ext.define('amdaUI.TimeTableUI', {
                     }
                 },
                 {
-                	header: 'Duration (min)',  width: 120, dataIndex: 'durationMin',
-                	id: amdaUI.TimeTableUI.COL_TO_HIDE+'2',
-                	renderer: function(value) {
-                		return Ext.util.Format.number(value,'0.00');
-                	},
+                    header: 'Duration (min)', width: 120, dataIndex: 'durationMin',
+                    id: amdaUI.TimeTableUI.COL_TO_HIDE + '2',
+                    renderer: function (value) {
+                        return Ext.util.Format.number(value, '0.00');
+                    },
                     listeners: {
-                        beforeshow : function(){
-                            Ext.Array.each(this.ownerCt.getGridColumns(), function(item,index,all){
+                        beforeshow: function () {
+                            Ext.Array.each(this.ownerCt.getGridColumns(), function (item, index, all) {
                                 // if item is a column to hide automatically
-                                if ( Ext.util.Format.substr(item.id, 0, amdaUI.TimeTableUI.COL_TO_HIDE.length) == amdaUI.TimeTableUI.COL_TO_HIDE ) {
+                                if (Ext.util.Format.substr(item.id, 0, amdaUI.TimeTableUI.COL_TO_HIDE.length) == amdaUI.TimeTableUI.COL_TO_HIDE) {
                                     // if item isn't the column which is being declared and is not hidden
-                                    if ( item.id != amdaUI.TimeTableUI.COL_TO_HIDE+'2' && !item.isHidden() ){
+                                    if (item.id != amdaUI.TimeTableUI.COL_TO_HIDE + '2' && !item.isHidden()) {
                                         // hide this column
                                         item.hide();
                                     }
@@ -650,19 +663,19 @@ Ext.define('amdaUI.TimeTableUI', {
                     }
                 },
                 {
-                    header: 'Duration (sec)',  width: 120, dataIndex: 'durationSec',
-                    id: amdaUI.TimeTableUI.COL_TO_HIDE+'3',
+                    header: 'Duration (sec)', width: 120, dataIndex: 'durationSec',
+                    id: amdaUI.TimeTableUI.COL_TO_HIDE + '3',
                     hidden: true,
-                    renderer: function(value) {
-                        return Ext.util.Format.number(value,'0.00');
+                    renderer: function (value) {
+                        return Ext.util.Format.number(value, '0.00');
                     },
                     listeners: {
-                        beforeshow : function(){
-                            Ext.Array.each(this.ownerCt.getGridColumns(), function(item,index,all){
+                        beforeshow: function () {
+                            Ext.Array.each(this.ownerCt.getGridColumns(), function (item, index, all) {
                                 // if item is a column to hide automatically
-                                if ( Ext.util.Format.substr(item.id, 0, amdaUI.TimeTableUI.COL_TO_HIDE.length) == amdaUI.TimeTableUI.COL_TO_HIDE ) {
+                                if (Ext.util.Format.substr(item.id, 0, amdaUI.TimeTableUI.COL_TO_HIDE.length) == amdaUI.TimeTableUI.COL_TO_HIDE) {
                                     // if item isn't the column which is being declared and is not hidden
-                                    if ( item.id != amdaUI.TimeTableUI.COL_TO_HIDE+'3' && !item.isHidden() ){
+                                    if (item.id != amdaUI.TimeTableUI.COL_TO_HIDE + '3' && !item.isHidden()) {
                                         // hide this column
                                         item.hide();
                                     }
@@ -674,92 +687,92 @@ Ext.define('amdaUI.TimeTableUI', {
             ],
             frame: true,
             dockedItems: [{
-                xtype: 'toolbar',
-                items: [{
-                    iconCls: 'icon-add',
-                    scope: this,
-                    handler: function(){
-                        cellEditing.cancelEdit();
-
-                        var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
-                        var row = 0;
-                        if (selection)
-                        	row = store.indexOf(selection) + 1;
-                        this.TTGrid.getSelectionModel().deselectAll();
-
-                        var me = this;
-                        AmdaAction.addCacheInterval({'index' : row}, function (result, e) {
-                        	this.status = result.status;
-				if (!this.TTGrid.getStore().loading) {
-                        		this.TTGrid.getStore().reload({
-                        			callback : function(records, options, success) {
-                        				me.TTGrid.getView().bufferedRenderer.scrollTo(row, false, function() {
-                        					me.TTGrid.getView().select(row);
-                        					cellEditing.startEditByPosition({row: row, column: 1});
-                        				}, me);
-                        			}
-                        		});
-				}
-                        }, this);
-                    }
-                }, {
-                    iconCls: 'icon-delete',
-                    disabled: true,
-                    itemId: 'delete',
-                    scope: this,
-                    handler:  function(){
-                        var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
-                        if (selection) {
-                        	var rowId = selection.get('cacheId');
-                        	this.TTGrid.getSelectionModel().deselectAll();
-                        	AmdaAction.removeTTCacheIntervalFromId(rowId, false, function (result, e) {
-                        		this.status = result.status;
-				if (!this.TTGrid.getStore().loading) {
-                            		this.TTGrid.getStore().reload();
-				}
-                            }, this);
+                    xtype: 'toolbar',
+                    items: [{
+                            iconCls: 'icon-add',
+                            scope: this,
+                            handler: function () {
+                                cellEditing.cancelEdit();
+
+                                var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
+                                var row = 0;
+                                if (selection)
+                                    row = store.indexOf(selection) + 1;
+                                this.TTGrid.getSelectionModel().deselectAll();
+
+                                var me = this;
+                                AmdaAction.addCacheInterval({'index': row}, function (result, e) {
+                                    this.status = result.status;
+                                    if (!this.TTGrid.getStore().loading) {
+                                        this.TTGrid.getStore().reload({
+                                            callback: function (records, options, success) {
+                                                me.TTGrid.getView().bufferedRenderer.scrollTo(row, false, function () {
+                                                    me.TTGrid.getView().select(row);
+                                                    cellEditing.startEditByPosition({row: row, column: 1});
+                                                }, me);
+                                            }
+                                        });
+                                    }
+                                }, this);
+                            }
+                        }, {
+                            iconCls: 'icon-delete',
+                            disabled: true,
+                            itemId: 'delete',
+                            scope: this,
+                            handler: function () {
+                                var selection = this.TTGrid.getView().getSelectionModel().getSelection()[0];
+                                if (selection) {
+                                    var rowId = selection.get('cacheId');
+                                    this.TTGrid.getSelectionModel().deselectAll();
+                                    AmdaAction.removeTTCacheIntervalFromId(rowId, false, function (result, e) {
+                                        this.status = result.status;
+                                        if (!this.TTGrid.getStore().loading) {
+                                            this.TTGrid.getStore().reload();
+                                        }
+                                    }, this);
+                                }
+                            }
+                        },
+                        '->',
+                        {
+                            text: 'Clear Filters',
+                            scope: this,
+                            handler: function () {
+                                this.TTGrid.getStore().clearFilter(true);
+                                this.TTGrid.filters.clearFilters();
+                            }
                         }
-                    }
-                },
-                '->',
-                {
-                    text: 'Clear Filters',
-                    scope: this,
-                    handler: function () {
-                    	this.TTGrid.getStore().clearFilter(true);
-			this.TTGrid.filters.clearFilters();
-                    }
-                }
-                ]
-            }],
-            plugins: [ cellEditing, {ptype : 'bufferedrenderer'} ],
-            listeners : {
-                scope : this,
-                edit : function(editor,e) {
+                    ]
+                }],
+            plugins: [cellEditing, {ptype: 'bufferedrenderer'}],
+            listeners: {
+                scope: this,
+                edit: function (editor, e) {
                     if (e.record.get('stop') != null && e.record.get('start') != null) {
-                        e.record.set('durationHour', (e.record.get('stop') - e.record.get('start'))/3600000.0);
-                        e.record.set('durationMin', (e.record.get('stop') - e.record.get('start'))/60000.0);
-                        e.record.set('durationSec', (e.record.get('stop') - e.record.get('start'))/1000.0);
+                        e.record.set('durationHour', (e.record.get('stop') - e.record.get('start')) / 3600000.0);
+                        e.record.set('durationMin', (e.record.get('stop') - e.record.get('start')) / 60000.0);
+                        e.record.set('durationSec', (e.record.get('stop') - e.record.get('start')) / 1000.0);
                         //  send refresh event to statistical plugin
                         this.fireEvent("refresh");
                     }
                 }
             }
-	    });
+        });
 
-	    this.TTGrid.getSelectionModel().on('selectionchange', function(selModel,selections){
-	        this.TTGrid.down('#delete').setDisabled(selections.length === 0);
+        this.TTGrid.getSelectionModel().on('selectionchange', function (selModel, selections) {
+            this.TTGrid.down('#delete').setDisabled(selections.length === 0);
         }, this);
 
-	    var myConf = {
-	        layout: 'border',
-	        defaults: { layout: 'fit', border: false },
-	        items : [
+        var myConf = {
+            layout: 'border',
+            defaults: {layout: 'fit', border: false},
+            items: [
                 {
                     xtype: 'form',
                     region: 'center',
                     buttonAlign: 'left',
-                    bodyStyle: {background : '#dfe8f6'},
+                    bodyStyle: {background: '#dfe8f6'},
                     padding: '5 5 5 5',
                     layout: {type: 'hbox', pack: 'start', align: 'stretch'},
                     items: [
@@ -783,108 +796,108 @@ Ext.define('amdaUI.TimeTableUI', {
                             padding: '0 0 5 15',
                             flex: 4,
                             layout: 'fit',
-                            items: [ this.TTGrid ]
+                            items: [this.TTGrid]
                         }
                     ],
-                    fbar:[
+                    fbar: [
                         {
                             xtype: 'button',
                             text: 'Save',
                             width: 65,
-                            scope : this,
+                            scope: this,
                             handler: function () {
-                            	this.saveTT();
-                           }
-                        },{
+                                this.saveTT();
+                            }
+                        }, {
                             xtype: 'button',
                             text: 'Reset',
                             width: 65,
                             scope: this,
-                            handler: function() {
-	                        	var ttModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
-	    					    ttModule.createLinkedNode();
-	    					    ttModule.createObject();
-	    					    this.setObject(ttModule.getLinkedNode().get('object'));
+                            handler: function () {
+                                var ttModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.tt.id);
+                                ttModule.createLinkedNode();
+                                ttModule.createObject();
+                                this.setObject(ttModule.getLinkedNode().get('object'));
                             }
-                        },{
+                        }, {
                             xtype: 'button',
                             text: 'Generate Catalog',
                             width: 120,
                             scope: this,
-                            handler: function() {
+                            handler: function () {
                                 this.generateCAT(this.object.get('id'));
                             }
                         }
                     ]
                 },
                 {
-		  xtype: 'panel', region: 'south',
-		  title: 'Information',
-		  collapsible: true,
-		  collapseMode: 'header',
-		  height: 100,
-		  autoHide: false,
-		  iconCls: 'icon-information',
-		  bodyStyle: 'padding:5px',
-		  loader: {
-		    autoLoad: true,
-		    url: helpDir+'timetableHOWTO'
-		  }
+                    xtype: 'panel', region: 'south',
+                    title: 'Information',
+                    collapsible: true,
+                    collapseMode: 'header',
+                    height: 100,
+                    autoHide: false,
+                    iconCls: 'icon-information',
+                    bodyStyle: 'padding:5px',
+                    loader: {
+                        autoLoad: true,
+                        url: helpDir + 'timetableHOWTO'
+                    }
                 }
             ],
-            plugins: [ {ptype: 'statisticalPlugin'} ]
-	    };
-
-	    Ext.apply (this , Ext.apply (arguments, myConf));
-	},
-
-	checkIntervalsStatusForSave : function(onStatusOk) {
-		if (this.status == null)
-			return;
-
-		if (this.status.nbValid <= 0)
-		{
-			myDesktopApp.errorMsg('Your time table is invalid, <br>you must have at least one valid interval');
-			return;
-		}
-
-		var msg = '';
-		if (this.status.nbInvalid > 0)
-			msg += 'There are some invalid intervals. Only valid intervals will be saved!<br/>';
-		if (this.status.nbFiltered > 0)
-			msg += 'There are some filtered intervals. Filtered intervals will not be saved!<br/>';
-		if (msg != '')
-		{
-			msg += 'Do you want to continue?';
-			Ext.Msg.show({
-				title:'Warning!',
-				msg: msg,
-				buttons: Ext.Msg.OKCANCEL,
-				fn: function(btnId){
-					if (btnId==='cancel'){
-						// cancel the save action
-					} else {
-						onStatusOk();
-					}
-				},
-				scope: this,
-				icon: Ext.Msg.WARNING
-			});
-			return;
-		}
-
-		onStatusOk();
-	},
-
-	/**
-	 * Check if changes were made before closing window
-	 * @return true if changes
-	 */
-	fclose : function() {
-		if (this.status == null)
-			return false;
-
-		var isDirty = this.formPanel.getForm().isDirty() || (this.status.isModified) || (this.status.nbModified > 0) || (this.status.nbNew > 0);
-		return isDirty;
-	}
+            plugins: [{ptype: 'statisticalPlugin'}]
+        };
+
+        Ext.apply(this, Ext.apply(arguments, myConf));
+    },
+
+    checkIntervalsStatusForSave: function (onStatusOk) {
+        if (this.status == null)
+            return;
+
+        if (this.status.nbValid <= 0)
+        {
+            myDesktopApp.errorMsg('Your time table is invalid, <br>you must have at least one valid interval');
+            return;
+        }
+
+        var msg = '';
+        if (this.status.nbInvalid > 0)
+            msg += 'There are some invalid intervals. Only valid intervals will be saved!<br/>';
+        if (this.status.nbFiltered > 0)
+            msg += 'There are some filtered intervals. Filtered intervals will not be saved!<br/>';
+        if (msg != '')
+        {
+            msg += 'Do you want to continue?';
+            Ext.Msg.show({
+                title: 'Warning!',
+                msg: msg,
+                buttons: Ext.Msg.OKCANCEL,
+                fn: function (btnId) {
+                    if (btnId === 'cancel') {
+                        // cancel the save action
+                    } else {
+                        onStatusOk();
+                    }
+                },
+                scope: this,
+                icon: Ext.Msg.WARNING
+            });
+            return;
+        }
+
+        onStatusOk();
+    },
+
+    /**
+     * Check if changes were made before closing window
+     * @return true if changes
+     */
+    fclose: function () {
+        if (this.status == null)
+            return false;
+
+        var isDirty = this.formPanel.getForm().isDirty() || (this.status.isModified) || (this.status.nbModified > 0) || (this.status.nbNew > 0);
+        return isDirty;
+    }
 });
--
libgit2 0.21.2