Index: trunk/grails-app/controllers/PersonController.groovy
===================================================================
--- trunk/grails-app/controllers/PersonController.groovy	(revision 135)
+++ trunk/grails-app/controllers/PersonController.groovy	(revision 136)
@@ -39,5 +39,5 @@
 	/**
 	 * Person delete action. Before removing an existing person,
-	 * he should be removed from those authorities which he is involved.
+	 * they should be removed from those authorities which they are involved.
 	 */
 	def delete = {
Index: trunk/grails-app/controllers/TaskRecurringScheduleDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskRecurringScheduleDetailedController.groovy	(revision 135)
+++ trunk/grails-app/controllers/TaskRecurringScheduleDetailedController.groovy	(revision 136)
@@ -1,3 +1,4 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+import org.codehaus.groovy.runtime.TimeCategory
 
 class TaskRecurringScheduleDetailedController extends BaseController {
@@ -66,5 +67,7 @@
                 }
             }
-            taskRecurringScheduleInstance.properties = params
+//             taskRecurringScheduleInstance.properties = params
+            setUpdateProperties()
+                    
             if(!taskRecurringScheduleInstance.hasErrors() && taskRecurringScheduleInstance.save()) {
                 flash.message = "TaskRecurringSchedule ${params.id} updated"
@@ -104,8 +107,4 @@
 		else {
 			
-			taskRecurringScheduleInstance.nextDueDate = new Date()
-				
-// 			taskRecurringScheduleInstance.nextDueDate = calculateNextDueDate(new Date()) 
-			
 			if(!taskRecurringScheduleInstance.hasErrors() && taskRecurringScheduleInstance.save()) {
 				
@@ -127,22 +126,47 @@
 
     }
-	
-// 	private Date calculateNextDueDate(nextDue) {
-// // 		def now = new Date()
-// // 		def calculatedDays = new Integer()
-// // 		def nextDue = new Date()
-// 				
-// // 		switch (period) {
-// // 			case "Day(s)":
-// // 				calculatedDays = period
-// // 				nextDue = now + calculatedDays
-// // 			case "Week(s)":
-// // 				calculatedDays = period * 7
-// // 				nextDue = now + calculatedDays
-// // // 			default:
-// // 		}
-// 		nextDue = nextDue + 1
-// 		return nextDue
-// 	}
-	
+                
+    private setUpdateProperties() {
+        def originalStartDate = taskRecurringScheduleInstance.startDate
+        
+        if(taskRecurringScheduleInstance.startDate == params.startDate) {
+            taskRecurringScheduleInstance.properties = params
+        }
+        else {
+            taskRecurringScheduleInstance.properties = params
+            taskRecurringScheduleInstance.nextTargetStartDate = params.startDate
+        }
+        
+    }
+
+/*    
+    private Date calculateNextDueDate(recurEvery, period, startDate) {
+        def nextDue = new Date()
+        
+        switch (period) {
+            case "Day(s)":
+                use(TimeCategory) {
+                    nextDue = startDate + recurEvery.days
+                }
+                return nextDue
+            case "Week(s)":
+                use(TimeCategory) {
+                    nextDue = startDate + recurEvery.weeks
+                }
+                return nextDue
+            case "Month(s)":
+                use(TimeCategory) {
+                    nextDue = startDate + recurEvery.months
+                }
+                return nextDue
+            case "Year(s)":
+                use(TimeCategory) {
+                    nextDue = startDate + recurEvery.years
+                }
+                return nextDue
+            default:
+                return nextDue
+        }
+        
+    }*/
 }
