Index: trunk/grails-app/controllers/ReportController.groovy
===================================================================
--- trunk/grails-app/controllers/ReportController.groovy	(revision 543)
+++ 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 543)
+++ 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 543)
+++ 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 />
Index: trunk/web-app/reports/immediateCallouts.jrxml
===================================================================
--- trunk/web-app/reports/immediateCallouts.jrxml	(revision 543)
+++ trunk/web-app/reports/immediateCallouts.jrxml	(revision 544)
@@ -5,7 +5,7 @@
 	<property name="ireport.zoom" value="1.0"/>
 	<property name="ireport.x" value="0"/>
-	<property name="ireport.y" value="384"/>
+	<property name="ireport.y" value="218"/>
+	<import value="net.sf.jasperreports.engine.*"/>
 	<import value="java.util.*"/>
-	<import value="net.sf.jasperreports.engine.*"/>
 	<import value="net.sf.jasperreports.engine.data.*"/>
 	<style name="Crosstab Data Text" isDefault="false" hAlign="Center"/>
@@ -63,8 +63,11 @@
 		<field name="name" class="java.lang.String"/>
 		<field name="immediateCalloutCount" class="java.lang.Integer"/>
-		<field name="immediateCalloutTaskList" class="java.util.List"/>
 		<field name="downTime" class="java.lang.Integer"/>
+		<field name="tasks" class="java.lang.String"/>
 		<variable name="immediateCalloutSum" class="java.lang.Integer" calculation="Sum">
 			<variableExpression><![CDATA[$F{immediateCalloutCount}]]></variableExpression>
+		</variable>
+		<variable name="downTimeSum" class="java.lang.Integer" calculation="Sum">
+			<variableExpression><![CDATA[$F{downTime}]]></variableExpression>
 		</variable>
 		<group name="assetName">
@@ -84,4 +87,5 @@
 	<field name="totalAssetsOnTasksCount" class="java.lang.String"/>
 	<field name="assetList" class="java.util.List"/>
+	<field name="totalDownTime" class="java.util.LinkedHashMap"/>
 	<background>
 		<band splitType="Stretch"/>
@@ -112,118 +116,11 @@
 	<detail>
 		<band height="394" splitType="Stretch">
-			<componentElement>
-				<reportElement key="table" style="table" x="0" y="0" width="377" height="394"/>
-				<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
-					<datasetRun subDataset="dataset1">
-						<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{assetList})]]></dataSourceExpression>
-					</datasetRun>
-					<jr:column width="160">
-						<jr:columnHeader style="table_CH" height="30" rowSpan="1">
-							<textField>
-								<reportElement x="0" y="0" width="160" height="30"/>
-								<textElement verticalAlignment="Middle">
-									<font fontName="Serif" size="12" isBold="true"/>
-								</textElement>
-								<textFieldExpression class="java.lang.String"><![CDATA["Asset"]]></textFieldExpression>
-							</textField>
-						</jr:columnHeader>
-						<jr:columnFooter style="table_CF" height="30" rowSpan="1">
-							<textField>
-								<reportElement x="0" y="0" width="160" height="30"/>
-								<textElement verticalAlignment="Middle">
-									<font fontName="Serif" size="12" isBold="true"/>
-								</textElement>
-								<textFieldExpression class="java.lang.String"><![CDATA["Total"]]></textFieldExpression>
-							</textField>
-						</jr:columnFooter>
-						<jr:detailCell style="table_TD" height="30" rowSpan="1">
-							<textField>
-								<reportElement x="0" y="0" width="160" height="30"/>
-								<textElement verticalAlignment="Middle">
-									<font fontName="Serif" isBold="false" isItalic="false"/>
-								</textElement>
-								<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
-							</textField>
-						</jr:detailCell>
-					</jr:column>
-					<jr:column width="55">
-						<jr:columnHeader height="30" rowSpan="1">
-							<textField>
-								<reportElement x="0" y="0" width="55" height="30"/>
-								<textElement textAlignment="Center" verticalAlignment="Middle">
-									<font fontName="Serif" size="12" isBold="true"/>
-								</textElement>
-								<textFieldExpression class="java.lang.String"><![CDATA["Callouts"]]></textFieldExpression>
-							</textField>
-						</jr:columnHeader>
-						<jr:columnFooter style="table_CF" height="30" rowSpan="1">
-							<textField>
-								<reportElement x="0" y="0" width="55" height="30"/>
-								<textElement textAlignment="Center" verticalAlignment="Middle">
-									<font fontName="Serif" size="12" isBold="true"/>
-								</textElement>
-								<textFieldExpression class="java.lang.Integer"><![CDATA[$V{immediateCalloutSum}]]></textFieldExpression>
-							</textField>
-						</jr:columnFooter>
-						<jr:detailCell style="table_TD" height="30" rowSpan="1">
-							<textField>
-								<reportElement x="0" y="0" width="55" height="30"/>
-								<textElement textAlignment="Center" verticalAlignment="Middle">
-									<font fontName="Serif" isBold="false"/>
-								</textElement>
-								<textFieldExpression class="java.lang.Integer"><![CDATA[$F{immediateCalloutCount}]]></textFieldExpression>
-							</textField>
-						</jr:detailCell>
-					</jr:column>
-					<jr:column width="159">
-						<jr:columnHeader style="table_CH" height="30" rowSpan="1">
-							<textField>
-								<reportElement x="0" y="0" width="159" height="30"/>
-								<textElement verticalAlignment="Middle">
-									<font fontName="Serif" size="12" isBold="true"/>
-								</textElement>
-								<textFieldExpression class="java.lang.String"><![CDATA["Tasks"]]></textFieldExpression>
-							</textField>
-						</jr:columnHeader>
-						<jr:columnFooter style="table_CF" height="30" rowSpan="1"/>
-						<jr:detailCell style="table_TD" height="30" rowSpan="1">
-							<textField>
-								<reportElement x="0" y="0" width="159" height="30"/>
-								<textElement verticalAlignment="Middle">
-									<font fontName="Serif" size="10" isBold="false"/>
-								</textElement>
-								<textFieldExpression class="java.lang.String"><![CDATA[$F{immediateCalloutTaskList}]]></textFieldExpression>
-							</textField>
-						</jr:detailCell>
-					</jr:column>
-				</jr:table>
-			</componentElement>
-			<pie3DChart>
-				<chart>
-					<reportElement x="416" y="0" width="366" height="301"/>
-					<chartTitle/>
-					<chartSubtitle/>
-					<chartLegend/>
-				</chart>
-				<pieDataset>
-					<dataset>
-						<datasetRun subDataset="dataset1">
-							<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{assetList})]]></dataSourceExpression>
-						</datasetRun>
-					</dataset>
-					<keyExpression><![CDATA[$F{name}]]></keyExpression>
-					<valueExpression><![CDATA[$F{immediateCalloutCount}]]></valueExpression>
-				</pieDataset>
-				<pie3DPlot depthFactor="0.1" isCircular="false" labelFormat="{2}">
-					<plot/>
-					<itemLabel color="#000000" backgroundColor="#FFFFFF"/>
-				</pie3DPlot>
-			</pie3DChart>
-		</band>
-		<band height="394">
 			<bar3DChart>
 				<chart>
-					<reportElement x="0" y="0" width="782" height="212"/>
-					<chartTitle/>
+					<reportElement x="0" y="0" width="782" height="394"/>
+					<chartTitle position="Bottom">
+						<font isUnderline="false"/>
+						<titleExpression><![CDATA["Total: "+$F{totalAssetsOnTasksCount}]]></titleExpression>
+					</chartTitle>
 					<chartSubtitle/>
 					<chartLegend/>
@@ -258,10 +155,17 @@
 				</bar3DPlot>
 			</bar3DChart>
+		</band>
+		<band height="394">
 			<bar3DChart>
 				<chart>
-					<reportElement x="0" y="212" width="782" height="182"/>
-					<chartTitle/>
+					<reportElement x="0" y="0" width="782" height="394"/>
+					<chartTitle position="Bottom">
+						<font isBold="false" isUnderline="false"/>
+						<titleExpression><![CDATA["Total: "+$F{totalDownTime}.total+"min"+" ("+$F{totalDownTime}.hours+"h:"+$F{totalDownTime}.minutes+"m)"]]></titleExpression>
+					</chartTitle>
 					<chartSubtitle/>
-					<chartLegend/>
+					<chartLegend position="Bottom">
+						<font isUnderline="true"/>
+					</chartLegend>
 				</chart>
 				<categoryDataset>
@@ -272,5 +176,5 @@
 					</dataset>
 					<categorySeries>
-						<seriesExpression><![CDATA["Down Time"]]></seriesExpression>
+						<seriesExpression><![CDATA["Down Time (min)"]]></seriesExpression>
 						<categoryExpression><![CDATA[$F{name}]]></categoryExpression>
 						<valueExpression><![CDATA[$F{downTime}]]></valueExpression>
@@ -297,4 +201,34 @@
 			</bar3DChart>
 		</band>
+		<band height="394">
+			<componentElement>
+				<reportElement key="table 1" style="table" x="0" y="0" width="782" height="394"/>
+				<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
+					<datasetRun subDataset="dataset1">
+						<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{assetList})]]></dataSourceExpression>
+					</datasetRun>
+					<jr:column width="774">
+						<jr:groupHeader groupName="assetName">
+							<jr:cell height="30" rowSpan="1">
+								<textField>
+									<reportElement x="0" y="0" width="774" height="30"/>
+									<textElement verticalAlignment="Middle">
+										<font size="12" isBold="true"/>
+									</textElement>
+									<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
+								</textField>
+							</jr:cell>
+						</jr:groupHeader>
+						<jr:detailCell style="table_TD" height="40" rowSpan="1">
+							<textField isStretchWithOverflow="true">
+								<reportElement x="0" y="0" width="774" height="40"/>
+								<textElement verticalAlignment="Middle"/>
+								<textFieldExpression class="java.lang.String"><![CDATA[""+$F{tasks}]]></textFieldExpression>
+							</textField>
+						</jr:detailCell>
+					</jr:column>
+				</jr:table>
+			</componentElement>
+		</band>
 	</detail>
 	<columnFooter>
