Index: branches/features/purchaseOrders/grails-app/conf/BootStrap.groovy
===================================================================
--- branches/features/purchaseOrders/grails-app/conf/BootStrap.groovy	(revision 924)
+++ branches/features/purchaseOrders/grails-app/conf/BootStrap.groovy	(revision 942)
@@ -1,2 +1,4 @@
+import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
+
 class BootStrap
 {
@@ -15,4 +17,5 @@
                 createDataService.ensureSystemAndAdminAccess()
                 createDataService.createBaseData()
+                CH.config.demoMode.enabled = true
                 createDataService.createDemoData()
                 createDataService.startSearchableIndex()
@@ -28,4 +31,5 @@
                 createDataService.ensureSystemAndAdminAccess()
                 createDataService.createBaseData()
+                if(CH.config.demoMode.enabled) createDataService.createDemoData()
                 createDataService.startSearchableIndex()
             }
Index: branches/features/purchaseOrders/grails-app/conf/BuildConfig.groovy
===================================================================
--- branches/features/purchaseOrders/grails-app/conf/BuildConfig.groovy	(revision 924)
+++ branches/features/purchaseOrders/grails-app/conf/BuildConfig.groovy	(revision 942)
@@ -2,19 +2,6 @@
 grails.project.test.class.dir = "target/test-classes"
 grails.project.test.reports.dir = "target/test-reports"
-
-def env = System.getProperty('grails.env')
-
-switch (env) {
-    case "production":
-        //grails.project.war.file = "target/${appName}-${appVersion}.war"
-        grails.project.war.file = "target/${appName}Live.war"
-        break
-    case "development":
-        grails.project.war.file = "target/${appName}Dev.war"
-        break
-    default:
-        grails.project.war.file = "target/${appName}.war"
-        break
-}
+//grails.project.war.file = "target/${appName}-${appVersion}.war"
+grails.project.war.file = "target/${appName}.war"
 
 grails.war.resources = { stagingDir, args ->
Index: branches/features/purchaseOrders/grails-app/conf/Config.groovy
===================================================================
--- branches/features/purchaseOrders/grails-app/conf/Config.groovy	(revision 924)
+++ branches/features/purchaseOrders/grails-app/conf/Config.groovy	(revision 942)
@@ -10,4 +10,10 @@
 //    grails.config.locations << "file:" + System.properties["${appName}.config.location"]
 // }
+
+// Local config file (development) otherwise try the classpath (production).
+if(new File("${appName}-config.groovy").exists())
+    grails.config.locations = [ "file:${appName}-config.groovy" ]
+else
+    grails.config.locations = [ "classpath:${appName}-config.groovy" ]
 
 // Set false due to acegi security issue.
@@ -81,5 +87,4 @@
  * Basic log levels are ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
  */
-
 log4j = {
     appenders {
@@ -404,11 +409,2 @@
     ]
 ]
-
-/**
- * Custom application global settings.
- * @todo: externalise these settings to a config file (along with the database settings) or have them configurable via the web interface+database.
- */
-taskRecurringScheduleJob.repeatInterval=10
-// It is recommended to limit the currencyList to the one that the site uses e.g: currencyList = ['AUD']
-currencyList = ['EUR', 'XCD', 'USD', 'XOF', 'NOK', 'AUD', 'XAF', 'NZD', 'MAD', 'DKK', 'GBP', 'CHF', 'XPF', 'ILS', 'ROL', 'TRL']
-
Index: branches/features/purchaseOrders/grails-app/conf/DataSource.groovy
===================================================================
--- branches/features/purchaseOrders/grails-app/conf/DataSource.groovy	(revision 924)
+++ branches/features/purchaseOrders/grails-app/conf/DataSource.groovy	(revision 942)
@@ -16,4 +16,5 @@
 
 // Environment specific settings.
+// All production config is in external config.
 environments {
     development {
@@ -51,36 +52,3 @@
         }
     }
-    production {
-        dataSource {
-            /* Delete dbCreate line after setup! */
-            /** HSQLDB - In memory */
-//             driverClassName = "org.hsqldb.jdbcDriver"
-//             username = "sa"
-//             password = ""
-//             dbCreate = "create-drop"
-//             url = "jdbc:hsqldb:mem:devDb"
-            /** HSQLDB - In file */
-//             driverClassName = "org.hsqldb.jdbcDriver"
-//             username = "sa"
-//             password = ""
-//             dbCreate = "update"
-//             url = "jdbc:hsqldb:file:prodDb;shutdown=true"
-            /** MSSQL */
-            //For more info see the docs that you downloaded with the driver.
-//             dialect = org.hibernate.dialect.SQLServerDialect // MSSQL 2000+2005 Useful with `grails schema-export`
-//             driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
-//             username = "gnumimsadmin"
-//             password = "gnumimsadmin"
-//             dbCreate = "update"
-//             url = "jdbc:sqlserver://gnumimssql01:1433;databaseName=gnumims_prod"
-            /** MySQL */
-            dialect = org.hibernate.dialect.MySQL5InnoDBDialect
-            driverClassName = "com.mysql.jdbc.Driver"
-            username = "gnumimsadmin"
-            password = "gnumimsadmin"
-            dbCreate = "update"
-            url = "jdbc:mysql://gnumimssql01:3306/gnumims_prod?autoReconnect=true&sessionVariables=storage_engine=InnoDB"
-        }
-
-    }
 }
Index: branches/features/purchaseOrders/grails-app/controllers/TaskDetailedController.groovy
===================================================================
--- branches/features/purchaseOrders/grails-app/controllers/TaskDetailedController.groovy	(revision 924)
+++ branches/features/purchaseOrders/grails-app/controllers/TaskDetailedController.groovy	(revision 942)
@@ -888,4 +888,5 @@
     @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
     def workLoad= {
+        def filterParams = [:]
         def result = taskSearchService.getWorkLoad(params, RCU.getLocale(request))
 
@@ -900,5 +901,6 @@
                     workLoadGroups: result.workLoadGroups,
                     totalHours: result.totalHours,
-                    totalMinutes: result.totalMinutes]
+                    totalMinutes: result.totalMinutes,
+                    filterParams: filterParams]
     } // workLoad
 
Index: branches/features/purchaseOrders/grails-app/taglib/CustomTagLib.groovy
===================================================================
--- branches/features/purchaseOrders/grails-app/taglib/CustomTagLib.groovy	(revision 924)
+++ branches/features/purchaseOrders/grails-app/taglib/CustomTagLib.groovy	(revision 942)
@@ -174,5 +174,5 @@
 //             def messageSource = grailsAttributes.getApplicationContext().getBean("messageSource")
 //             def locale = RCU.getLocale(request)
-// 
+//
 //             title = messageSource.getMessage(titleKey, null, title, locale)
 //         }
@@ -374,4 +374,15 @@
 
     /**
+     * Returns the correct headerId for the main header div.
+     */
+    def headerId = { attrs, body ->
+        def headerId = ''
+        if(grails.util.Environment.isDevelopmentMode()) headerId = 'HeaderDev'
+        else if(grailsApplication.config.demoMode.enabled) headerId = 'HeaderDemo'
+        else headerId = 'Header'
+        out << headerId
+    }
+
+    /**
     * Determine if a supplied string is considered a url or not.
     * The scheme/protocol can be adjusted, file:// has been excluded here.
Index: branches/features/purchaseOrders/grails-app/views/_about.gsp
===================================================================
--- branches/features/purchaseOrders/grails-app/views/_about.gsp	(revision 924)
+++ branches/features/purchaseOrders/grails-app/views/_about.gsp	(revision 942)
@@ -191,10 +191,16 @@
                 </td>
             </tr>
-                <tr>
-                    <td>
-                        Plugins: ${plugins}
-                    </td>
-                </tr>
-        </tbody>
-    </table>
-</div>
+            <tr>
+                <td>
+                    Plugins: ${plugins}
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    Java version: ${System.getProperty('java.version').encodeAsHTML()} (As supplied by host JVM) <br />
+                    Groovy version: ${org.codehaus.groovy.runtime.InvokerHelper.getVersion()} (As supplied with Grails)
+                </td>
+            </tr>
+        </tbody>
+    </table>
+</div>
Index: branches/features/purchaseOrders/grails-app/views/layouts/main.gsp
===================================================================
--- branches/features/purchaseOrders/grails-app/views/layouts/main.gsp	(revision 924)
+++ branches/features/purchaseOrders/grails-app/views/layouts/main.gsp	(revision 942)
@@ -34,14 +34,7 @@
                     <g:message code="ajax.default.could.not.perform.operation" />
                 </div>
-                <g:if env="production">
-                    <div id="Header">
-                        <a href="javascript: openWindow('http://www.gnumims.org')" id=HeaderLink></a>
-                    </div>
-                </g:if>
-                <g:else>
-                    <div id="HeaderDev">
-                        <a href="javascript: openWindow('http://www.gnumims.org')" id=HeaderLink></a>
-                    </div>
-                </g:else>
+                <div id="${custom.headerId()}">
+                    <a href="javascript: openWindow('http://www.gnumims.org')" id=HeaderLink></a>
+                </div>
 
                 <g:isLoggedIn>
Index: branches/features/purchaseOrders/grails-app/views/login/auth.gsp
===================================================================
--- branches/features/purchaseOrders/grails-app/views/login/auth.gsp	(revision 924)
+++ branches/features/purchaseOrders/grails-app/views/login/auth.gsp	(revision 942)
@@ -72,5 +72,5 @@
         <h1>Welcome to gnuMims please log in</h1>
 
-        <g:if env="development">
+        <g:if test="${grailsApplication.config.demoMode.enabled}">
         The demo users are <b>user</b>, <b>manager</b> and  <b>admin</b> all having the password: <b>pass</b>
         </g:if>
@@ -85,9 +85,9 @@
                     <label for='j_username'>Login ID</label>
 
-                    <g:if env="production">
-                        <input type='text' class='text_' name='j_username' id='j_username'/>
+                    <g:if test="${grailsApplication.config.demoMode.enabled}">
+                        <input type='text' class='text_' name='j_username' id='j_username' value='manager'  />
                     </g:if>
                     <g:else >
-                        <input type='text' class='text_' name='j_username' id='j_username' value='manager'  />
+                        <input type='text' class='text_' name='j_username' id='j_username'/>
                     </g:else >
 
@@ -96,9 +96,9 @@
                     <label for='j_password'>Password</label>
 
-                    <g:if env="production">
-                        <input type='password' class='text_' name='j_password' id='j_password' />
+                    <g:if test="${grailsApplication.config.demoMode.enabled}">
+                        <input type='password' class='text_' name='j_password' id='j_password' value="pass" />
                     </g:if>
                     <g:else >
-                        <input type='password' class='text_' name='j_password' id='j_password' value="pass" />
+                        <input type='password' class='text_' name='j_password' id='j_password' />
                     </g:else >
                 </p>
