Index: trunk/grails-app/controllers/ReportController.groovy
===================================================================
--- trunk/grails-app/controllers/ReportController.groovy	(revision 542)
+++ trunk/grails-app/controllers/ReportController.groovy	(revision 544)
@@ -48,15 +48,5 @@
         params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
         params.currentUser = authService.currentUser
-
-        if(params.startDate == 'struct')
-            params.startDate = dateUtilService.makeDate(params.startDate_year, params.startDate_month, params.startDate_day)
-        else
-            params.startDate = dateUtilService.today-7
         params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
-
-        if(params.endDate == 'struct')
-            params.endDate = dateUtilService.makeDate(params.endDate_year, params.endDate_month, params.endDate_day)
-        else
-            params.endDate = dateUtilService.today
         params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
 
@@ -71,15 +61,5 @@
         params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
         params.currentUser = authService.currentUser
-
-        if(params.startDate == 'struct')
-            params.startDate = dateUtilService.makeDate(params.startDate_year, params.startDate_month, params.startDate_day)
-        else
-            params.startDate = dateUtilService.today-7
         params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
-
-        if(params.endDate == 'struct')
-            params.endDate = dateUtilService.makeDate(params.endDate_year, params.endDate_month, params.endDate_day)
-        else
-            params.endDate = dateUtilService.today
         params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
 
Index: trunk/grails-app/services/TaskReportService.groovy
===================================================================
--- trunk/grails-app/services/TaskReportService.groovy	(revision 542)
+++ trunk/grails-app/services/TaskReportService.groovy	(revision 544)
@@ -13,5 +13,5 @@
 //     def messageSource
 
-//     def g = new org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib()
+    def g = new org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib()
 
     def paramsMax = 100000
@@ -174,22 +174,41 @@
 
         result.taskQuery = "select distinct task " + result.taskQuery
-        result.taskList = Task.executeQuery(result.taskQuery, namedParams)
-        result.taskCount = result.taskList.size()
+        result.taskQueryList = Task.executeQuery(result.taskQuery, namedParams)
+        result.taskCount = result.taskQueryList.size()
 
         // Assets on Tasks Count.
         result.totalAssetsOnTasksCount = 0
+        result.totalDownTime = [total: 0, hours: 0, minutes:0]
         result.assetList = []
 
-        // Add or update asset details in assetList.
-        def addAssetToList = { asset, task ->
+        // Task Details
+        result.taskList = []
+
+        // Add or update lists.
+        def addToLists = { asset, task ->
 
             def downTime = 0
             def faultEntries = Entry.findAllByTaskAndEntryType(task, EntryType.read(1))
+            def causeEntries = Entry.findAllByTaskAndEntryType(task, EntryType.read(2))
+            def workDoneEntries = Entry.findAllByTaskAndEntryType(task, EntryType.read(3))
+            def taskDetails = 'Task #'+task.id+' - '+task.description+'\n'
+            faultEntries.each(){
+                taskDetails += '    Faults: '+it.comment+' - '+it.enteredBy+', '+g.formatDate(format: "EEE, dd-MMM-yyyy", date: it.dateDone)+'.\n'
+            }
+            causeEntries.each(){
+                taskDetails += '    Causes: '+it.comment+' - '+it.enteredBy+', '+g.formatDate(format: "EEE, dd-MMM-yyyy", date: it.dateDone)+'.\n'
+            }
+            workDoneEntries.each(){
+                taskDetails += '    Work Done: '+it.comment+' - '+it.enteredBy+', '+g.formatDate(format: "EEE, dd-MMM-yyyy", date: it.dateDone)+'.\n'
+            }
+
             faultEntries.each() { downTime += (it.durationHour*60 + it.durationMinute) }
+            result.totalDownTime.total += downTime
 
             def assetDetails = result.assetList.find { it.id == asset.id }
             if(assetDetails) {
                 assetDetails.immediateCalloutCount++
-                assetDetails.immediateCalloutTaskList.add(task.toString())
+                assetDetails.downTime += downTime
+                assetDetails.tasks += taskDetails
             }
             else {
@@ -198,9 +217,9 @@
                                             immediateCalloutCount: 1,
                                             downTime: downTime,
-                                            immediateCalloutTaskList: [task.toString()]]
+                                            tasks: taskDetails]
 
                 result.assetList << assetDetails
             }
-        } // addAssetToList
+        } // addAToLists
 
         // Summary Of Calculations.
@@ -213,13 +232,13 @@
 
         result.summaryOfCalculationMethod += 'totalAssetsOnTasksCount = A count of unique assets on each task. \n'
-        result.taskList.each() { task ->
+        result.taskQueryList.each() { task ->
             if(task.primaryAsset) {
                 result.totalAssetsOnTasksCount++
-                addAssetToList(task.primaryAsset, task)
+                addToLists(task.primaryAsset, task)
             }
             task.associatedAssets.each() { associatedAsset ->
                 if(associatedAsset.id != task.primaryAsset?.id) {
                     result.totalAssetsOnTasksCount++
-                    addAssetToList(associatedAsset, task)
+                    addToLists(associatedAsset, task)
                 }
             }
@@ -227,6 +246,10 @@
         } // each() task
 
-        // Sort by callout count.
+        // Sort assetList by callout count.
         result.assetList.sort {a, b -> b.immediateCalloutCount.compareTo(a.immediateCalloutCount)}
+
+        // Calculate hours and minutes.
+        result.totalDownTime.hours = (result.totalDownTime.total / 60).toInteger()
+        result.totalDownTime.minutes = result.totalDownTime.total % 60
 
         // Success.
Index: trunk/grails-app/views/appCore/start.gsp
===================================================================
--- trunk/grails-app/views/appCore/start.gsp	(revision 542)
+++ trunk/grails-app/views/appCore/start.gsp	(revision 544)
@@ -107,7 +107,7 @@
                                                                             name="Reactive Ratio"
                                                                             format="PDF, XLS">
-                                                <richui:dateChooser name="startDate" format="dd-MM-yyyy" value="${new Date()-7}" />
+                                                <richui:dateChooser name="startDate" id="reactiveRatio_startDate" format="dd-MM-yyyy" value="${new Date()-7}" />
                                                 to
-                                                <richui:dateChooser name="endDate" format="dd-MM-yyyy" value="${new Date()}" />
+                                                <richui:dateChooser name="endDate" id="reactiveRatio_endDate" format="dd-MM-yyyy" value="${new Date()}" />
                                             </g:jasperReport>
                                             <br />
@@ -117,7 +117,7 @@
                                                                             name="Immediate Callouts"
                                                                             format="PDF, XLS">
-                                                <richui:dateChooser name="startDate" format="dd-MM-yyyy" value="${new Date()-7}" />
+                                                <richui:dateChooser name="startDate" id="immediateCallouts_startDate" format="dd-MM-yyyy" value="${new Date()-7}" />
                                                 to
-                                                <richui:dateChooser name="endDate" format="dd-MM-yyyy" value="${new Date()}" />
+                                                <richui:dateChooser name="endDate" id="immediateCallouts_endDate" format="dd-MM-yyyy" value="${new Date()}" />
                                             </g:jasperReport>
                                             <br />
