Index: /trunk/grails-app/controllers/ReportController.groovy
===================================================================
--- /trunk/grails-app/controllers/ReportController.groovy	(revision 533)
+++ /trunk/grails-app/controllers/ReportController.groovy	(revision 533)
@@ -0,0 +1,61 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+import org.springframework.web.servlet.support.RequestContextUtils as RCU
+
+class ReportController extends BaseController {
+
+    def authService
+    def dateUtilService
+    def taskReportService
+
+    def index = { redirect(action:templatePortrait,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    //static allowedMethods = [list:'POST']
+
+    def templatePortrait = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+
+        params.reportTitle = "Template Report (Portrait)"
+        params.currentUser = authService.currentUser
+        def dataModel = createTemplateData()
+
+        chain(controller:'jasper', action:'index', model:[data: dataModel], params:params)
+    }
+
+    def templateLandscape = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+
+        params.reportTitle = "Template Report (Landscape)"
+        params.currentUser = authService.currentUser
+        def dataModel = createTemplateData()
+
+        chain(controller:'jasper', action:'index', model:[data: dataModel], params:params)
+    }
+
+    private createTemplateData() {
+        def dataModel = []
+        for(i in 1..5) {
+            def data = [:]
+            data.description = "Data description " + i.toString()
+            dataModel.add(data)
+        }
+        return dataModel
+    }
+
+    def reactiveRatio = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+
+        params.reportTitle = "Reactive Ratio Report"
+        params.currentUser = authService.currentUser
+        params.startDate = dateUtilService.yesterday-14
+        params.endDate = dateUtilService.tomorrow+15
+        def dataModel = [taskReportService.getReactiveRatio(params, RCU.getLocale(request))]
+
+        chain(controller:'jasper', action:'index', model:[data: dataModel], params:params)
+    }
+
+    def test = {
+        render taskReportService.getReactiveRatio(params, RCU.getLocale(request))
+    }
+
+} // end of class.
Index: /trunk/grails-app/services/TaskReportService.groovy
===================================================================
--- /trunk/grails-app/services/TaskReportService.groovy	(revision 533)
+++ /trunk/grails-app/services/TaskReportService.groovy	(revision 533)
@@ -0,0 +1,106 @@
+import grails.orm.PagedResultList
+
+/**
+* Service class that encapsulates the business logic for Task searches.
+*/
+class TaskReportService {
+
+    boolean transactional = false
+
+    def authService
+    def dateUtilService
+//     def messageSource
+
+//     def g = new org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib()
+
+    def paramsMax = 100000
+
+    /**
+    * Selects and returns the reactive ratio.
+    * @param params The request params, may contain param to specify the search.
+    * @param locale The locale to use when generating result.message.
+    */
+    def getReactiveRatio(params, locale) {
+        def result = [:]
+
+        def currentUser = authService.currentUser
+        def startOfToday = dateUtilService.today
+        def startOfYesterday = dateUtilService.yesterday
+        def startOfTomorrow = dateUtilService.tomorrow
+        def oneWeekAgo = dateUtilService.oneWeekAgo
+
+        def paginateParams = [:]
+        paginateParams.max = Math.min(params?.max?.toInteger() ?: 10, paramsMax)
+        paginateParams.offset = params?.offset?.toInteger() ?: 0
+
+        def sort = "task." + (params?.sort ?: "targetStartDate")
+        def order = params?.order == "desc" ? "desc" : "asc"
+        def orderBy = " order by " + sort + ' ' + order
+
+        def namedParams = [:]
+        namedParams.startDate = params.startDate ?: dateUtilService.today
+        namedParams.endDate = params.endDate ?: dateUtilService.tomorrow
+        namedParams.immediateCallout = TaskType.read(1)
+        namedParams.unscheduledBreakin = TaskType.read(2)
+        namedParams.preventativeMaintenance = TaskType.read(4)
+
+        result.taskQuery = "from Task as task \
+                                        where (task.trash = false \
+                                                    and task.targetStartDate < :endDate \
+                                                    and task.targetStartDate >= :startDate \
+                                                    and ( \
+                                                        task.taskType = :immediateCallout \
+                                                        or task.taskType = :unscheduledBreakin \
+                                                        or task.taskType = :preventativeMaintenance \
+                                                    ) \
+                                        )"
+
+        result.taskQuery = "select distinct task " + result.taskQuery + orderBy
+        result.taskList = Task.executeQuery(result.taskQuery, namedParams, paginateParams)
+        result.taskCount = result.taskList.size()
+
+        // Counts
+        result.totalTaskOnAssetCount = 0
+        result.immediateCalloutCount = 0
+        result.unscheduledBreakinCount = 0
+        result.preventativeMaintenanceCount = 0
+
+        // Count the tasks performed against assets.
+        result.taskList.each() { task ->
+            if(task.primaryAsset) {
+                result.totalTaskOnAssetCount++
+                if(task.taskType == namedParams.immediateCallout) result.immediateCalloutCount++
+                if(task.taskType == namedParams.unscheduledBreakin) result.unscheduledBreakinCount++
+                if(task.taskType == namedParams.preventativeMaintenance) result.preventativeMaintenanceCount++
+            }
+            task.associatedAssets.each() { associatedAsset ->
+                if(associatedAsset.id != task.primaryAsset?.id) {
+                    result.totalTaskOnAssetCount++
+                    if(task.taskType == namedParams.immediateCallout) result.immediateCalloutCount++
+                    if(task.taskType == namedParams.unscheduledBreakin) result.unscheduledBreakinCount++
+                    if(task.taskType == namedParams.preventativeMaintenance) result.preventativeMaintenanceCount++
+                }
+            }
+        } // each() task
+
+        // Percentages
+        result.immediateCalloutPercentage = 0
+        result.totalPreventativePercentage = 0
+
+        result.totalPreventativeCount = result.unscheduledBreakinCount + result.preventativeMaintenanceCount
+        try {
+            result.immediateCalloutPercentage = (result.immediateCalloutCount / result.totalTaskOnAssetCount)*100
+            result.immediateCalloutPercentage = result.immediateCalloutPercentage.toInteger()
+            result.totalPreventativePercentage = (result.totalPreventativeCount / result.totalTaskOnAssetCount)*100
+            result.totalPreventativePercentage = result.totalPreventativePercentage.toInteger()
+        }
+        catch(ArithmeticException e) {
+        }
+
+        // Success.
+        return result
+
+    } // getQuickSearch
+
+
+} // end class
Index: /trunk/grails-app/views/appCore/start.gsp
===================================================================
--- /trunk/grails-app/views/appCore/start.gsp	(revision 532)
+++ /trunk/grails-app/views/appCore/start.gsp	(revision 533)
@@ -98,11 +98,26 @@
                                     <tr class="prop">
                                         <td valign="top" class="name">
-                                            <label>Static reports:</label>
+                                            <label>Frequent Reports:</label>
                                         </td>
-<!--                                        <td valign="top" class="value">
-                                            <a href="${createLink(action:'changePassword')}"> Password</a>
+                                        <td valign="top" class="value">
+                                            <g:jasperReport controller="report"
+                                                                            action="reactiveRatio"
+                                                                            jasper="reactiveRatio"
+                                                                            name="Reactive Ratio"
+                                                                            format="PDF, HTML, XLS"/>
                                             <br />
-                                            <a href="${createLink(action:'changeSessionTimeout')}">Session Timeout</a>
-                                        </td>-->
+                                            <g:jasperReport controller="report"
+                                                                            action="templatePortrait"
+                                                                            jasper="templatePortrait"
+                                                                            name="Template (Portrait)"
+                                                                            format="PDF, HTML, XLS"/>
+                                            <br />
+                                            <g:jasperReport controller="report"
+                                                                            action="templateLandscape"
+                                                                            jasper="templateLandscape"
+                                                                            name="Template (Landscape)"
+                                                                            format="PDF, HTML, XLS"/>
+                                            <br />
+                                        </td>
                                     </tr>
 
Index: /trunk/web-app/reports/reactiveRatio.jrxml
===================================================================
--- /trunk/web-app/reports/reactiveRatio.jrxml	(revision 533)
+++ /trunk/web-app/reports/reactiveRatio.jrxml	(revision 533)
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="name" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="NoDataSection" columnWidth="782" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20">
+	<property name="ireport.scriptlethandling" value="0"/>
+	<property name="ireport.encoding" value="UTF-8"/>
+	<property name="ireport.zoom" value="1.0"/>
+	<property name="ireport.x" value="0"/>
+	<property name="ireport.y" value="0"/>
+	<import value="java.util.*"/>
+	<import value="net.sf.jasperreports.engine.*"/>
+	<import value="net.sf.jasperreports.engine.data.*"/>
+	<style name="table" isDefault="false">
+		<box>
+			<pen lineWidth="1.0" lineColor="#000000"/>
+		</box>
+	</style>
+	<style name="table_TH" isDefault="false" mode="Opaque" backcolor="#F0F8FF">
+		<box>
+			<pen lineWidth="0.5" lineColor="#000000"/>
+		</box>
+	</style>
+	<style name="table_CH" isDefault="false" mode="Opaque" backcolor="#BFE1FF">
+		<box>
+			<pen lineWidth="0.5" lineColor="#000000"/>
+		</box>
+	</style>
+	<style name="table_TD" isDefault="false" mode="Opaque" backcolor="#FFFFFF">
+		<box>
+			<pen lineWidth="0.5" lineColor="#000000"/>
+		</box>
+	</style>
+	<subDataset name="dataset1"/>
+	<subDataset name="Table Dataset 1"/>
+	<parameter name="reportTitle" class="java.lang.String"/>
+	<parameter name="currentUser" class="java.lang.String"/>
+	<field name="immediateCalloutPercentage" class="java.lang.Integer"/>
+	<field name="totalPreventativePercentage" class="java.lang.Integer"/>
+	<background>
+		<band splitType="Stretch"/>
+	</background>
+	<pageHeader>
+		<band height="60" splitType="Stretch">
+			<textField>
+				<reportElement key="staticText-1" x="0" y="0" width="782" height="35"/>
+				<textElement textAlignment="Center" markup="none">
+					<font size="20"/>
+				</textElement>
+				<textFieldExpression class="java.lang.String"><![CDATA[$P{reportTitle}]]></textFieldExpression>
+			</textField>
+		</band>
+	</pageHeader>
+	<columnHeader>
+		<band height="17" splitType="Stretch"/>
+	</columnHeader>
+	<detail>
+		<band height="129" splitType="Stretch">
+			<textField>
+				<reportElement x="0" y="0" width="157" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Immediate Callout (%): "]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="0" y="20" width="157" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Total Preventative (%): "]]></textFieldExpression>
+			</textField>
+			<textField pattern="###0.00">
+				<reportElement x="157" y="0" width="200" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.lang.String"><![CDATA[$F{immediateCalloutPercentage}]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="157" y="20" width="200" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.lang.String"><![CDATA[$F{totalPreventativePercentage}]]></textFieldExpression>
+			</textField>
+		</band>
+	</detail>
+	<columnFooter>
+		<band height="142" splitType="Stretch"/>
+	</columnFooter>
+	<pageFooter>
+		<band height="40" splitType="Stretch">
+			<textField pattern="dd-MMM-yyyy">
+				<reportElement x="82" y="0" width="200" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.util.Date"><![CDATA[new java.util.Date()]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="662" y="0" width="80" height="20"/>
+				<textElement textAlignment="Right"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
+			</textField>
+			<textField evaluationTime="Report">
+				<reportElement x="742" y="0" width="40" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.lang.String"><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="0" y="0" width="82" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Generated: "]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="82" y="20" width="200" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA[$P{currentUser}]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="0" y="20" width="82" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["By: "]]></textFieldExpression>
+			</textField>
+		</band>
+	</pageFooter>
+	<noData>
+		<band height="85" splitType="Stretch">
+			<textField>
+				<reportElement x="0" y="35" width="782" height="50"/>
+				<textElement textAlignment="Center" markup="none">
+					<font size="14" isBold="true"/>
+				</textElement>
+				<textFieldExpression class="java.lang.String"><![CDATA["No data to display. \n"+
+"Please run report again."]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement key="staticText-1" x="0" y="0" width="782" height="35"/>
+				<textElement textAlignment="Center" markup="none">
+					<font size="20"/>
+				</textElement>
+				<textFieldExpression class="java.lang.String"><![CDATA[$P{reportTitle}]]></textFieldExpression>
+			</textField>
+		</band>
+	</noData>
+</jasperReport>
Index: /trunk/web-app/reports/templateLandscape.jrxml
===================================================================
--- /trunk/web-app/reports/templateLandscape.jrxml	(revision 533)
+++ /trunk/web-app/reports/templateLandscape.jrxml	(revision 533)
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="name" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="NoDataSection" columnWidth="782" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20">
+	<property name="ireport.scriptlethandling" value="0"/>
+	<property name="ireport.encoding" value="UTF-8"/>
+	<property name="ireport.zoom" value="1.0"/>
+	<property name="ireport.x" value="0"/>
+	<property name="ireport.y" value="0"/>
+	<import value="java.util.*"/>
+	<import value="net.sf.jasperreports.engine.*"/>
+	<import value="net.sf.jasperreports.engine.data.*"/>
+	<style name="table" isDefault="false">
+		<box>
+			<pen lineWidth="1.0" lineColor="#000000"/>
+		</box>
+	</style>
+	<style name="table_TH" isDefault="false" mode="Opaque" backcolor="#F0F8FF">
+		<box>
+			<pen lineWidth="0.5" lineColor="#000000"/>
+		</box>
+	</style>
+	<style name="table_CH" isDefault="false" mode="Opaque" backcolor="#BFE1FF">
+		<box>
+			<pen lineWidth="0.5" lineColor="#000000"/>
+		</box>
+	</style>
+	<style name="table_TD" isDefault="false" mode="Opaque" backcolor="#FFFFFF">
+		<box>
+			<pen lineWidth="0.5" lineColor="#000000"/>
+		</box>
+	</style>
+	<subDataset name="dataset1"/>
+	<subDataset name="Table Dataset 1"/>
+	<parameter name="reportTitle" class="java.lang.String"/>
+	<parameter name="currentUser" class="java.lang.String"/>
+	<field name="description" class="java.lang.String"/>
+	<background>
+		<band splitType="Stretch"/>
+	</background>
+	<pageHeader>
+		<band height="35" splitType="Stretch">
+			<textField>
+				<reportElement key="staticText-1" x="0" y="0" width="782" height="35"/>
+				<textElement textAlignment="Center" markup="none">
+					<font size="20"/>
+				</textElement>
+				<textFieldExpression class="java.lang.String"><![CDATA[$P{reportTitle}]]></textFieldExpression>
+			</textField>
+		</band>
+	</pageHeader>
+	<columnHeader>
+		<band height="28" splitType="Stretch">
+			<textField>
+				<reportElement x="341" y="0" width="100" height="20"/>
+				<textElement textAlignment="Center"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Column Header"]]></textFieldExpression>
+			</textField>
+		</band>
+	</columnHeader>
+	<detail>
+		<band height="113" splitType="Stretch">
+			<textField>
+				<reportElement x="100" y="0" width="182" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.lang.String"><![CDATA[$F{description}]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="0" y="0" width="100" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Description: "]]></textFieldExpression>
+			</textField>
+		</band>
+	</detail>
+	<columnFooter>
+		<band height="27" splitType="Stretch">
+			<textField>
+				<reportElement x="341" y="7" width="100" height="20"/>
+				<textElement textAlignment="Center"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Column Footer"]]></textFieldExpression>
+			</textField>
+		</band>
+	</columnFooter>
+	<pageFooter>
+		<band height="40" splitType="Stretch">
+			<textField pattern="dd-MMM-yyyy">
+				<reportElement x="82" y="0" width="200" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.util.Date"><![CDATA[new java.util.Date()]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="662" y="0" width="80" height="20"/>
+				<textElement textAlignment="Right"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
+			</textField>
+			<textField evaluationTime="Report">
+				<reportElement x="742" y="0" width="40" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.lang.String"><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="0" y="0" width="82" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Generated: "]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="82" y="20" width="200" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA[$P{currentUser}]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="0" y="20" width="82" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["By: "]]></textFieldExpression>
+			</textField>
+		</band>
+	</pageFooter>
+	<noData>
+		<band height="85" splitType="Stretch">
+			<textField>
+				<reportElement x="0" y="35" width="782" height="50"/>
+				<textElement textAlignment="Center" markup="none">
+					<font size="14" isBold="true"/>
+				</textElement>
+				<textFieldExpression class="java.lang.String"><![CDATA["No data to display. \n"+
+"Please run report again."]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement key="staticText-1" x="0" y="0" width="782" height="35"/>
+				<textElement textAlignment="Center" markup="none">
+					<font size="20"/>
+				</textElement>
+				<textFieldExpression class="java.lang.String"><![CDATA[$P{reportTitle}]]></textFieldExpression>
+			</textField>
+		</band>
+	</noData>
+</jasperReport>
Index: /trunk/web-app/reports/templatePortrait.jrxml
===================================================================
--- /trunk/web-app/reports/templatePortrait.jrxml	(revision 533)
+++ /trunk/web-app/reports/templatePortrait.jrxml	(revision 533)
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="name" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="NoDataSection" columnWidth="782" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20">
+	<property name="ireport.scriptlethandling" value="0"/>
+	<property name="ireport.encoding" value="UTF-8"/>
+	<property name="ireport.zoom" value="1.0"/>
+	<property name="ireport.x" value="0"/>
+	<property name="ireport.y" value="0"/>
+	<import value="java.util.*"/>
+	<import value="net.sf.jasperreports.engine.*"/>
+	<import value="net.sf.jasperreports.engine.data.*"/>
+	<style name="table" isDefault="false">
+		<box>
+			<pen lineWidth="1.0" lineColor="#000000"/>
+		</box>
+	</style>
+	<style name="table_TH" isDefault="false" mode="Opaque" backcolor="#F0F8FF">
+		<box>
+			<pen lineWidth="0.5" lineColor="#000000"/>
+		</box>
+	</style>
+	<style name="table_CH" isDefault="false" mode="Opaque" backcolor="#BFE1FF">
+		<box>
+			<pen lineWidth="0.5" lineColor="#000000"/>
+		</box>
+	</style>
+	<style name="table_TD" isDefault="false" mode="Opaque" backcolor="#FFFFFF">
+		<box>
+			<pen lineWidth="0.5" lineColor="#000000"/>
+		</box>
+	</style>
+	<subDataset name="dataset1"/>
+	<subDataset name="Table Dataset 1"/>
+	<parameter name="reportTitle" class="java.lang.String"/>
+	<parameter name="currentUser" class="java.lang.String"/>
+	<field name="description" class="java.lang.String"/>
+	<background>
+		<band splitType="Stretch"/>
+	</background>
+	<pageHeader>
+		<band height="35" splitType="Stretch">
+			<textField>
+				<reportElement key="staticText-1" x="0" y="0" width="782" height="35"/>
+				<textElement textAlignment="Center" markup="none">
+					<font size="20"/>
+				</textElement>
+				<textFieldExpression class="java.lang.String"><![CDATA[$P{reportTitle}]]></textFieldExpression>
+			</textField>
+		</band>
+	</pageHeader>
+	<columnHeader>
+		<band height="28" splitType="Stretch">
+			<textField>
+				<reportElement x="341" y="0" width="100" height="20"/>
+				<textElement textAlignment="Center"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Column Header"]]></textFieldExpression>
+			</textField>
+		</band>
+	</columnHeader>
+	<detail>
+		<band height="113" splitType="Stretch">
+			<textField>
+				<reportElement x="100" y="0" width="182" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.lang.String"><![CDATA[$F{description}]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="0" y="0" width="100" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Description: "]]></textFieldExpression>
+			</textField>
+		</band>
+	</detail>
+	<columnFooter>
+		<band height="27" splitType="Stretch">
+			<textField>
+				<reportElement x="341" y="7" width="100" height="20"/>
+				<textElement textAlignment="Center"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Column Footer"]]></textFieldExpression>
+			</textField>
+		</band>
+	</columnFooter>
+	<pageFooter>
+		<band height="40" splitType="Stretch">
+			<textField pattern="dd-MMM-yyyy">
+				<reportElement x="82" y="0" width="200" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.util.Date"><![CDATA[new java.util.Date()]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="662" y="0" width="80" height="20"/>
+				<textElement textAlignment="Right"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
+			</textField>
+			<textField evaluationTime="Report">
+				<reportElement x="742" y="0" width="40" height="20"/>
+				<textElement/>
+				<textFieldExpression class="java.lang.String"><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="0" y="0" width="82" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["Generated: "]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="82" y="20" width="200" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA[$P{currentUser}]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement x="0" y="20" width="82" height="20"/>
+				<textElement markup="none"/>
+				<textFieldExpression class="java.lang.String"><![CDATA["By: "]]></textFieldExpression>
+			</textField>
+		</band>
+	</pageFooter>
+	<noData>
+		<band height="85" splitType="Stretch">
+			<textField>
+				<reportElement x="0" y="35" width="782" height="50"/>
+				<textElement textAlignment="Center" markup="none">
+					<font size="14" isBold="true"/>
+				</textElement>
+				<textFieldExpression class="java.lang.String"><![CDATA["No data to display. \n"+
+"Please run report again."]]></textFieldExpression>
+			</textField>
+			<textField>
+				<reportElement key="staticText-1" x="0" y="0" width="782" height="35"/>
+				<textElement textAlignment="Center" markup="none">
+					<font size="20"/>
+				</textElement>
+				<textFieldExpression class="java.lang.String"><![CDATA[$P{reportTitle}]]></textFieldExpression>
+			</textField>
+		</band>
+	</noData>
+</jasperReport>
