-----------------------------------------------------------------------------------
GTS Changelog
Copyright 2007-2013 GeoTelematic Solutions, Inc.
-----------------------------------------------------------------------------------
= Note: items starting with '=' apply to GTSE and add-ons only.

Version 2.5.3 [2013/09/30]
- Pending

Version 2.5.2 [2013/09/30]
- CHG: Sample data ("demo" account) moved to 2013/08/26
- NEW: Added additional status codes.
- NEW: Added support for updating key fields.
- UPD: Increased PendingCommands "commandArgs" field length.
- UPD: Updated "checkInstall" MySQL check to also look for "/etc/mysql/my.cnf"
- UPD: Added field length check to EventData "postalCode".
- UPD: Added "DATA_DRIVER_ID" field option to TripReport.
- DCS: tk10x] added initial support for "TK-nano" device (ASCII packets).
- DCS: gprmc] fixed date/time blank issue.
= UPD: Updated TripReport to support checking Device "speedLimitKPH" value.
= NEW: Added ability to disable commands in web-service "Service.java".
= NEW: Added support for return to "sysadmin" from sub-account login.
= UPD: Added "crontab" checks to "checkInstall"
= DCS: atrack] Added support for high-resolution "%EH" and "%IT" values.
= DCS: atrack] Fixed "signalStrength" data type (changed to Double).
= ENR: Added functions to check system memory.
= ENR: Fixed deferred canned-rule-actions device update.
= ENR: Added "PredefinedActionListener" API.

Version 2.5.1 [2013/08/06]
- NEW: Added additional status codes.
- NEW: CheckInstall] Group displayed reports by type.
- NEW: Added Account "allowNotify" field.
- NEW: Added Account command-line parameter "-setPassword".
- NEW: Added Device "lastEngineOnTime"/"lastEngineOffTime" fields.
- NEW: Added Device engine-hour accumulation based on Engine On/Off events.
- NEW: Added Device-based work-hour reporting to Motion Report.
- NEW: Added unique SIM-phone-number support to Device/Vehicle Admin.
- FIX: Fixed Motion Report idle time stop calculation.
- NEW: Added additional report column support to "FieldLayout.java"
- FIX: Fix NPE in "DateTime.parseDateTime", which could occur under some conditions.
- FIX: Fixe "Payload.readLongBCD" to support reading Little-Endian values.
- UPD: Added ACL support for Read/View to "System Accounts".
- DCS: gprmc] Added battery-level/volts, #satellites (thanks to STefan Mayer)
= UPD: Handle additional Google geocoding returned status.
= NEW: Added idle columns to Trip reports.
= NEW: Added ACL control to Device Admin "Fuel Capacity" and "Fuel Economy".
= NEW: Added Driver reports (including license expiration report).
= DCS: qgv300] Fixed TCP command handling
= DCS: qgv300] Added support for TCP commands (existing session)
= DCS: qgt500] Added additional record type parsing
= DCS: enfora] Updated OBDII DTC code conversion 
= DCS: calamp] Added/Tested JPod support
= DCS: xirgo] Updated support for differing XT2150 protocol
= DCS: fa888] New CES FA-888 WiFi device support
= DCS: sierra] New Sierra Wireless device support
= ENR: Update FuelRegister to allow ignoring fuel-level changes while moving.
= ENR: Added new rule functions.
= ENR: Set active RuleTrigger to inactive, if rule trigger returns false. 

Version 2.5.0 [2013/06/05]
- NEW: Added support for obtaining an approximate count of table records when using
       MySQL "InnoDB" ("InnoDB" does not efficiently support the "count(*)" select
       clause for obtaining the exact number of table records).
- NEW: Added support for display MySQL engine type to "CheckInstall.java"
- NEW: Added DateTime support for parsing delta-month/year dates (ie. "+1m", "-2y")
- NEW: Added additional status codes.
- DCS: Fixed GPSEvent status code logging.
- DCS: template] Fixed "$POS,..." longitude parsing.
- DCS: template] Fixed possible NPE occurance in "createGPSEvent"
- DCS: tk10x] Fixed mileage/odometer calculation.
- DCS: tk10x] Added handling of GPIO events to "parseInsertRecord_TK103_alt"
= NEW: Added initial support for generating periodic reports.
= CHG: Added speed duration column support to Trip-Report.
= DCS: atrack] Added support for parsing Text-Message field when 0x1A is missing.
= DCS: atrack] Added support for prefix-zero-filling binary mode mobile-ids.
= DCS: calamp] Added "accum.accelEvent" accumulator support.
= DCS: calamp] Updated GFMI support.
= DCS: meitrack2] Added support for auto-sending Device commands.
= DCS: gv300] Fixed binay ACK packet length calculation
= DCS: rvct03] Added support for auto-sending Device commands.
= ENR: Disable Rule Admin Status-Code selection when no Devices/Groups selected.

Version 2.4.9 [2013/04/08]
- NEW: Added additional status codes.
- FIX: Fixed JSON recursive array parsing.
- NEW: Added RTProperties optional property setting feature (ie. "key?=value")
- NEW: Added additional fields to reporting EventDataLayout.
= NEW: Added option to check for duplicate STATUS_GFMI_STOP_STATUS_# events.
= UPD: Updated OBDII DTC handling to support hex-based DTC codes.
= NEW: Added "maintkm" support to RuleFactoryLite cron handler.
= NEW: Added option to add assigned device group support to Geozone Admin.
= DCS: Added support for running multiple instances of the same DCS.
= DCS: delorme] added altitude support.
= DCS: calamp] added Garmin GFMI interface support. Fixed LOCATE packet parsing.
= DCS: atrack] Better TCP mode handling, fixed "%ET" binary parsing.
= ENR: Added additional ENRE functions.
= ENR: Added support for seperate SMS message text.

Version 2.4.8 [2013/03/01]
- NEW: Added additional status codes.
- NEW: Ignore old events when processing event Geozone detection.
- NEW: Added check for excessive past events during event processing.
- NEW: Added support for report header column group titles.
- NEW: Update event "inputMask" from device lastInputState if unset by DCS.
- CHG: Support multiple specified accounts when deleting old events.
- DCS: gtsdmtp] added estimated odometer calculations.
- FIX: Fixed "DCServerFactory.java" command "Type" tag parsing. [B28]
= NEW: Added status-code background color support on map/reports. [B12]
= FIX: Optimized Excel XLS spreadsheet reporting [B09]
= DCS: atrack] update text message parsing, minimum-time check, TCP multi-events.
= DCS: calamp] added Iridium satellite communication support.
= DCS: enfora] added PROMAG RFID Reader (Model MF7-20) support.
= DCS: maestro] updated to handle keep-alive/heartbeat packets.
= DCS: pgt3000] added support for multiple events per session.
= DCS: qgv300] added binary packet status code support.
= DCS: qgl200] fixed GTSTC/GTBTC event parsing.
= DCS: teltonika] added priority event handling, codec8/12 callback support.
= DCS: teltonika] added codec12 encoding for TCP/UDP commands sent to device.
= DCS: tzavl08] added configurable battery level calculation
= DCS: axonn] updated low battery event checks
= DCS: delorme] new DCS support for DeLorme IPC Outbound protocol (InReach)
= ENR: Added "$DISTANCE(String DEV_ID)" function to ENRE.

Version 2.4.7 [2012/12/27]
- NEW: Added additional status codes.
- NEW: Added "priority" column to EventData table ("CustomFieldInfo" optional fields)
- FIX: Fix Reverse-Geocoding for cell-tower locations when RG 'alwaysFast' is true.
- FIX: Added proper sort ordering for temperature fields in reports.
- FIX: Removed "ORDER BY" fields when retrieving only a record "COUNT(*)".
- DCS: gprmc] If 'mobileID' and 'accountID' are blank, use 'deviceID' as 'mobileID'.
- DCS: astra] New Astra DCS provided by Astra Telematics.
= DCS: sanav] Added "altitudeM" parsing from extra-data.
= DCS: atrack] Save raw data, fixed WiFi TCP mode, changed/added 'extra' data fields.
= DCS: qgv300] Added digital input change detection and simulated event generation.
= DCS: calamp] Added 'fix-status' check for invalid GPS fix.
= DCS: gos777] Added VIN support.
= DCS: meitrack2] Added length and IMEI support to string based commands.
= DCS: pgt3000] Unescape "\r\n" in command strings.
= DCS: qgl200] Add "USE_GPS_TIMESTAMP" for choosing fixtime or sendtime as timestamp.
= DCS: qgv300] Binary mode, etc.
= DCS: scvl2000] Added support for GTFFA (freefall) events.
= DCS: teltonika] Store 'priority' in event record, support custom parser for codec-8.
= DCS: xirgo] Support VIN, support <GT>,<FL> fields.
= ENR: Changed '$INZONE' to check for matching 'geozoneID'

Version 2.4.6 [2012/11/02]
- CHG: Changed EntityManager TRAILER type to '1'.
- NEW: Added "entityType" field to EventData table ("CustomFieldInfo" option fields)
- NEW: Added custom outbound SMS gateway error checking.
- NEW: Added additional status codes.
- NEW: Added hardcoded support to "ReportSpreadsheet.java" for numeric columns.
- NEW: Added new "-rtpidfile=" command line option to write the current PID file.
- DCS: tk10x] Added "LOAD" and "ON" acknowledgements, where required.
- FIX: ReportBody methods "getRecordCount" and "isPartial" are now thread-safe.
- FIX: Changed SQL Server data types for UINT8/INT8, UINT16/INT16.
= NEW: Added support for multiple Entity specifications per Event.
= DCS: calamp] Added custom user message parsing API
= DCS: calamp] Added "distance" & "obdFuelTotal" accumulator
= DCS: atrack] Added custom field support for "%EH", "%IT", and "%PO"
= DCS: atrack] Added driver-id byte swapping option from iButton data
= DCS: gos777] Added OBDII DTC code support
= DCS: inellitrac] Added "clearSavedEventCount" at beginning of event parsing
= DCS: meitrack2] Added missing "getSessionID()"
= DCS: pgt3000] Added missing "getSessionID()".  Added "fuelLevel" support.
= DCS: qgv300] Added "USE_GPS_TIMESTAMP" option
= DCS: rvct03] Added missing "getSessionID()"
= DCS: rvct04] Added missing "getSessionID()"
= DCS: teltonika] Added initial support for iButton "Entity" handling
= DCS: xirgo] Initial support for XT4000
= ENR: Added "driverBadge", "driverLicense", "driverLicExpiration" fields.
= ENR: Fixed "elapsedMinimumNotifyAge" support
= FIX: Fixed FuelSummaryReport date range selection.

Version 2.4.5 [2012/09/02] 
- CHG: Increased number of geozone points to 10.
- NEW: Added additional columns to EventData table.
- NEW: Added a "maxMessageLength" property to "SMSOutboundGateway" support.
- NEW: Added "createAge" column option to report layout "EventDataLayout".
= NEW: Added "gpsFixType" and "gpsFixStatus" column option to report layout 
=      "EventDataLayout" (for supported DCS modules only).
= NEW: Added Alert Rule column to Device/Vehicle Alerts page.
= ENR: Added a new "RuleTrigger" table to keep track of the last time a specific
=      rule was triggered.  With this, the Rule Admin page now allows specifying
=      a minimum notification interval.
= ENR: Added "$DEVRULE" and "$THERMALPROFILE" rule functions.
= ENR: Fixed Device Alert Detail report to display the proper device alert records. 
= DCS: calamp] Added general "acceleration" accumulator support.
= DCS: meitrack2] Added command handler and session statistics support.
= DCS: qgv300] Additional record type support.
= DCS: xirgo] Added DTC support.
= DCS: gtsdmtp] Added unassigned-device support.

Version 2.4.4 [2012/08/01] 
- NEW: Additional pushpins, special thanks to Jason Herring.
- NEW: Added option to Account table for finding referenced email addresses.
- NEW: Added additional fields to Device table.
- NEW: Added ${vehicleVolts} message replacement variable to EventData.
- NEW: Added "reportDistance" column option to report layout "EventDataLayout".
- NEW: Added "Assigned User ID" option to Device/Vehicle Admin page.
- NEW: Added "lastUpdateUser" column support to various tables.
- DCS: gprmc] Fixed NPE when no date/time is specified.
= DCS: atrack] added support for %VN
= DCS: intraca] Fixed odometer parsing from Miles to Kilometers
= DCS: jscrt803] Initial release.
= DCS: qgv300] Added support for "GTFLA" events.
= DCS: xirgo] Added VIN support.
= ENR: Added additional rule functions.
= ENR: Increased Rule "Selector" field size.

Version 2.4.3 [2012/06/29]
- NEW: Additional status codes.
- CHG: Added event 'createAge' to map pushpin events sent to the client browser.
- DCS: New Lantrix T1800/T2000 DCS.  Provided by Carlos Ramos.
- FIX: Check for divide-by-zero in Account when EconomyUnits is set to "L/100km".
= NEW: Added "Reminder" field options for Device Admin page.
= NEW: Added ENRE rule functions: $ARRDEP, $REMINDER.  Modified $WORKHOURS.
= DCS: enfora] initial support for MT4000
= DCS: gosafe] fixed parsing of GoSafe "negative logic" status field.
= DCS: intraca] Fixed Intellitrac A1 parsing of latitude/longitude.
= DCS: piccolo] Date parsing changes.
= DCS: qgt500] Initial support for Queclink GT500
= DCS: teltonika] reversed external/internal battery voltage fields. Added
=      configurable battery level range calculation properties.

Version 2.4.2 [2012/05/27]
- NEW: Added command-line "-delete" option to "Geozone.java".
- NEW: Added check for validating local host name to "CheckInstall".
- FIX: Fixed NPE issue in EventData/Device/Account modules when adding optional
       fields to the map info-balloon with "OptionalEventFields.DeviceMap=".
- FIX: Fixed connection pool issue that could cause a memory leak when using
       DB connection pooling thanks to Brijraj Vaghani).
- DCS: aspicore - added simulated geozones and estimated odometer calculations.
= CHG: Added option to "sanav" DCS to use last valid GPS location when current
       GPS location is invalid.
= CHG: On System Admin Info page, "Events Per Second" and "Event Count" will only
       display if enabled.
= CHG: Update failover support in ReverseGeocodeProviderAdapter.java.
= FIX: Fixed map timestamp issue in Digital IO report maps.
= DCS: meitrack2 - Changed periodic-timed-interval event to status code LOCATION.
= DCS: qgl200 - Added support for saving session statistics.
= DCS: qgv300 - Added "fuelLevel" support.
= NEW: Added $IGNITION_ON/$IGNITION_OFF functions to ENRE.

Version 2.4.1 [2012/04/20]
- NEW: Added additional defined Status Codes.
- NEW: Ability to delete old events by DeviceGroup (as well as by Device). Also
       checks the very last event when deleting old events.  If the last event is
       prior to the deleted time range, the last event will be retained.
- NEW: Added additional columns types to EventDataLayout.java and FieldLayout.java.
- NEW: Added ability to hide "Unique ID", "SIM#", on Device Admin page via ACLs.
- NEW: Added "userInfo.showAccessControlList" property to hide ACL list on User Admin.
- NEW: Added field "simID" to Device record.
- NEW: Added command-line option to delete old EventData records by device group.
- NEW: Added command-line support for displaying "events-per-second" in EventData.
- NEW: Made GISGraphy street address lookup optional.
- NEW: Added Mapquest OSM/Arial lay support to OpenLayers MapProvider support. (See
       "openLayers" MapProvider definition for details.) Make sure to comply with 
       their terms of service.
- NEW: Added "Event Count by Day" device detail report.
- DCS: gprmc - update to be able to handle several protocol formats simultaneously.
- DCS: gc101 - fixed NPE issue when invalid $GPRMC record is parsed.
- DCS: template - "parseInsertRecord_ASCII_02" now allows using AccountID as MobileID.
- DCS: tk10x - added digital input change simulated events.
- FIX: Fixed typo - changed property key "groupInfo.deviceLisSortBy" name to 
       "groupInfo.deviceListSortBy".
= FIX: Fixed Digital I/O report timestamp issue.
= NEW: Added initial Google maps V3 support.  Still experimental. (GTSE only)
= NEW: Added "System Info" property "sysAdminInfo.showEventCount" to allow disabling
=      EventData record count.
= NEW: Added EventData OBD optional fields "massAirFlowRate", "fuelEngineOn".
= NEW: Added PasswordHandler support to Domain level configuration.
= NEW: Added rule function "$TRIPODOM" to ENRE.
= NEW: ENRE "$DEVNOTIFY" now only checks devices authorized to current user.
= DCS: sanav - added session-statistics support, added GS-818 ACK support (GTSE).
= DCS: calamp - added LMU3000 support.
= DCS: atrack - added ability to send commands to ATrack devices, added RTC support.
= DCS: intellitrac - added ability to send commands to Intellitrac devices.
= DCS: citgt06 - added support for batteryLevel, RSSI, digitalInputs. Fixed ACK.
= DCS: piccolo - added driverID support.
= DCS: qgl200 - added GTBTC, GTGEO, GTSPD, GTBPL support.  Fixed GTSTT.
= DCS: qgv300 - updated status codes for GTGEO, GTSPD.  Added analog support.
= DCS: template - added ability to send commands to "tempate" DCS supported devices.

Version 2.4.0 [2012/02/05]
- NEW: Added additional defined Status Codes.
- NEW: Added initial support for sending SMS messages from the OpenGTS
       "RuleFactoryExample.java" module (SMS outbound gateway config required).
- NEW: Added Economy-Units "L/100km" (Litres per 100 kilometers).
- NEW: Added "lastIgnitionOffTime" column to Device table.
- NEW: CheckInstall now shows report limits, SMS gateway configuration.
- UPD: Increased Resource table column "resourceID" length to 80 characters.
- UPD: Added "fuelRate" to EventData report layout, and additional fields to the
       Field report layout.
- UPD: "tinygeocoder" ReverseGeocodeProvider can now specify a "host" property.
- FIX: Fixed ReportTable.java where single device reports were sometimes not written
       to the output stream.
- FIX: Changed ForgotPassword.java to use default user-id with blank "User" entry.
- DCS: gc101 - Sanav HTTP-mode DCS now supports battery level, number of satellites, 
       and HDOP (if data is provided in event packet).
- DCS: tk10x - Added initial support for alternate TK103 format. Added support for
       TK102 battery-voltage and altitude.
= DCS: sanav - Added support for analog/temperature values.
= DCS: antares - Added support for iButton ID.  Handle RTXF records.
= DCS: atrack - Added support for pulse-count.
= DCS: citgt06 - Fixed packet length calc.  Added CRC check, cell-tower support.
= DCS: enfora - fixed command handler to use proper modem id for %{modemid}.
= DCS: meitrack2 - Added MVT90 support.
= DCS: pgt3000 - Portman - Added command handler support, temperatures, GPIO.
= DCS: piccolo - Added digital output support, alarm status codes.
= DCS: qinetiq - Fix parse state handler.
= DCS: rvct03 - Added command handler support.
= DCS: rvct04 - Added command handler support.
= DCS: teltonika - Added battery-volts support.
= DCS: tzavl08 - Added command handler support, simulated dig-input events.
= UPD: Added support for Engine-Hours offset specification on Device Admin page.
= FIX: Fixed TripReport condition where a trip-start was never encountered.
= FIX: Fixed Rule Admin page issue that caused a loss of selected actions.

Version 2.3.9 [2011/12/06]
- NEW: Added additional StatusCodes.
- NEW: Added "job" information to Device record.
- NEW: Added runtime config property "GoogleKML.pushpinBaseURL" to the "config.conf" 
       file to allow overriding the location where Google provides various pushpins.  
- CHG: Changed "CheckInstall" check for MySQL "max_onnections".
- CHG: Added check for Java vendor "Oracle" to CheckInstall.
- CHG: Added additional packet format support to example 'template' DCS module.
- CHG: Added UTF-8 characterset to SendMail support.
= CHG: Updated start/stop odometer calculation in "DeviceReport.java".
= CHG: Added "estimateDepartTime" property to "GeozoneReport.java" for setting last 
=      depart-time to report-time if vehicle is still inside a geozone.
= FIX: Fixed web-service support for report initialization.
= DCS: qgl200 - Added support for "+SACK" acknowledgment.
= DCS: qgv200 - Added support for "+SACK" acknowledgment.
= DCS: qgv300 - Added support for "GTACJ" (carjacking) events.
= DCS: sanav - Added support for GS-818 cell-tower data.
= DCS: calamp - Added support for battery level/percent.
= DCS: citgt02/citgt05 - Added support for Concox Information Tech DCS modules.
= DCS: enfora - Removed restriction requiring commands begin with "AT"
= DCS: jt6000 - Added support for JoinTech JT600 DCS module.
= DCS: qinetiq - Added support for battery-level and rfid tag.
= NEW: Added support for Paratel LBS service.

Version 2.3.8 [2011/10/10]
- NEW: Added additional StatusCodes.
- NEW: Added "map.showPushpins" property to MapProvider section to allow disabling
       the display of pushpins on the map.
- NEW: Added support for daylight-savings-time zone names to "DateTime.java".
- UPD: Added geozoneID support to "GPSEvent.java"
- DCS: taip - Added estimated odometer calculation, and simulated geozone support.
- DCS: sipgear - default listen port changed from 31270 to 31170.
- DCS: icare - default listen port changed from 31260 to 31160.
- FIX: Fix memory leak issue in "OpenLayers.js" (thanks to YanXu "stelzbock")
= NEW: Added Account overridable "Address" titles.
= NEW: Added additional columns to EventData, Account, Device tables.
= UPD: Added geozone speed limit check to RuleFactorLite "speed" rule.
= DCS: calamp - Added account referenceable custom accumulator configurations.
= DCS: atrack - Updated with latest CANBUS interface.  Added altitude support.
= DCS: eloc - Send client commands through proper bound server port.
= DCS: qgl200 - Send client commands through proper bound server port.
= DCS: qgv100 - Send client commands through proper bound server port.
= DCS: qgv200 - Send client commands through proper bound server port.
= DCS: webtech - Send client commands through proper bound server port.
= DCS: xirgo - Send client commands through proper bound server port.
= DCS: teltonika - Send client commands through proper bound server port.
= DCS: enfora - Support MT3000
= DCS: meitrack2 - Added saving CellTower information.
= DCS: rvct03 - Support reversing fuel-level sensor ordering (ie. 6v to 0v).
= DCS: tzavl08 - Fixed packet-type checking.
= DCS: axonn - Added simulated digital input events.

Version 2.3.7 [2011/08/22]
- NEW: Added additional StatusCodes.
- CHG: Modified "tk10x" DCS to attempt to determine actual GMT timezone (configure
       TK103 devices relative to GMT+0, rather than the local timezone).
- CHG: Added unicode character encoding/decoding to address fields on map. 
- CHG: Changed Pushpin attribute "iconOffset" to "iconHostspot" (in private.xml).
       Support for "iconOffset" will still remain for this release.
- NEW: Added additional log messages to Geonames when reverse-geocoding fails.
- NEW: Unicode characters in addresses are now encoded when uploading to map page.
- CHG: Modified "setDate(...,Y,M,D)" (in "DateTime.java") to retain current time.
- FIX: Fixed FileTools "copyStreams" pattern matching (thanks to Jan Wedel, YanXu).
- FIX: Fixed issues with JSON parsing.
- UPD: Spanish language translation update (thanks to Sebastian Mantilla Beniers).
= NEW: Added support to "Look&Feel Admin" to control menu group title color.
= NEW: Added "tirePressure"/"tireTemp" to EventData "CANBUSFieldInfo" fields.
= NEW: Added additional columns to EventData table "CANBUSFieldInfo" optional fields.
= CHG: Renamed Device optional fields "MiscFieldInfo" to "WorkOrderInfo".
= NEW: Added DeviceGroup optional fields "WorkOrderInfo".
= DCS: general - provide for overriding DCS properties in .conf files.
= DCS: atrack - modified DCS to accomodate ATrack's change in the 'CAN0" format.
= DCS: meitrack2 - changed analog calculations to accommodate MVT340/MVT600.
= DCS: qgv200 - added support for several additional record types.
= DCS: tzavl08 - added accel/decel status codes, battery charge status codes.
= DCS: calamp - added batteryVolts and workTime accumulators, and rearranged the
=      default accumulator configuration.

Version 2.3.6 [2011/07/15]
- NEW: Added new "tk10x" device communication server (DCS) module to support most
       TK102 and TK103 devices (also supports "sipgear" device protocol).  The
       "tk10x" DCS also support simulated geozone arrive/depart detection, and
       event code mapping to GTS status-codes. ("sipgear" DCS remains in this 
       version, but may be removed in a future release).
- CHG: Added "analog#" fields to report EventDataLayout.java
- CHG: Updated JSON format in "events.war" to remove quotes from numeric values.
- FIX: Fixed "template" DCS to remove redundant/incorrect "Begin TCP comm" message.
- FIX: Fixed EventDataLayout.java "batteryVolts" to use "event.getBatteryVolts()". 
= NEW: Added initial "ReportCallback" interface to reporting engine (experimental).
= DCS: general - "Properties" can now be overidden in a ".conf" file.
= DCS: falcom - added estimated odometer support, etc.
= DCS: teltonika/telgh3000 - reordered geozone arrive/depart checking.

Version 2.3.5 [2011/07/01]
- NEW: Added support for a new "MobileLocationProvider" API for integrating cell
       tower mobile location services.
- NEW: Added support for OpenCellID.  See "private.xml" (or "config.conf") for 
       configuration settings in the "MobileLocationProvider" section.
- NEW: Added support for JSON formatted output in "events.war".
- NEW: Added additional status codes.
- NEW: Added "batteryVolts" column to EventData table.
- NEW: Added "lastValidHeading" column to Device table.
- NEW: EventData table column descriptions can now be localized.
- CHG: Updated Turkish translations (special thanks to Aykut Kara).
- CHG: Update to CellTower interface (added MobileLocationProvider interface)
- FIX: Fixed IE issue with map "Find Address".
= DCS: tzavl08 - support battery/charging volts, and analog values.
= DCS: atrack - updated to support new protocol format, and CustomFields.
= DCS: general - Added support for device.getLastValidHeading().
= DCS: teltonika - Added temperature, analog, etc.
= NEW: "$SC" function added to Event Notification Rules Engine (ENRE).

Version 2.3.4 [2011/06/16]
- NEW: Added report "mapLink" feature to display map with pushpin selected. 
       (To enable, set property "ReportDefinition.columnIndexMapLink" to true in 
       the runtime configuration file "config.conf")
- NEW: Added ability to display "Notes:" on System Admin Accounts page.  (see 
       "sysAdminAccounts.showNotes" in "private.xml" - or "private_common.xml")
- CHG: Changed all StatusCode names "STATUS_SENSOR32_*" to "STATUS_ANALOG_*".
- CHG: Added "alwaysFast" property check to GisGraphy reverse-geocoder.
- CHG: Added "packetLenEndOfStream" property to "sipgear" DCS (to allow for devices
       that do not provide a packet terminating character).
- FIX: EventData now automatically truncates "streetAddress" to maximum field length 
       (this prevents MySQL column overflow errors on "streetAddress" column)
- FIX: MS SQL Server provider changed to properly recognize the assigned table name 
       prefixes to prevent table names colliding with SQL Server reserved words.
= CHG: Omit stackframe line-number Print.java, if linenumber is not available.
= NEW: Additional event packet field support added to GTSE Sanav DCS to support
       GS-181 device (gpioInput, HDOP, numSats, etc).
= NEW: New rule types added to GTSE "RuleFactoryLite.java"
= NEW: Added "fuelEconomy" field to Device table to allow for fuel consumption
=      estimated on "Trip" report.
= NEW: Added ability to set limits on the number of commands/locates that can be 
=      sent to a device.  Limit can be set on SystemAdmin Accounts page.
= NEW: Added ability to set status-code text colors on EventDetail reports.  
=      (currently, can only select from a limited pre-defined set of color).
= NEW: Added "$MAINTHR" rule function to ENRE
= DCS: general - Support "bindAddress" in falcom, laipac, meitrack, Queclink, ...
= DCS: general - table "required" flag now checked before indicating that the
=      DB may not be properly initialized, and terminating.
= DCS: Teltonika - Added "saveSessionStatistics" support
= DCS: Teltonika - perform all event analysis (geozones, etc) in chronologial order.
= DCS: CalAmp - Added "saveSessionStatistics" support
= DCS: CalAmp - Added ability to save session statistics
= DCS: CalAmp - additional UserNumber/StatusCode mapping, support BrakeGForce accum.
= DCS: Sanav - added support for "OPEN"/"CLOSE" status codes.
= DCS: Enfora - Changed default SAVE_SESSION_STATISTICS to false
= DCS: Falfom - Added "device.updateChangedEventFields()"

Version 2.3.3 [2011/05/15] 
- NEW: Additional StatusCodes added.
- NEW: Added "cabinTemp" field to EventData optional "AtmosphereFieldInfo"
       fields.
- NEW: Added "airFilterPressure", "engineTorque" fields to EventData optional
       "CANBUSFieldInfo" fields.
- NEW: Added MySQL "max-connections" check to 'checkInstall'.
- CHG: Turn off reverse-geocoding by default during TrackStick data upload.
- CHG: Added additional displayed header information to generic "gprmc" DCS.
- CHG: Change ServerSocketThread "PACKET_LEN_INCREMENTAL_" mask to 20 bits.
- FIX: Fixed simulated geozone detection in "gprmc" DCS.
= NEW: Created initial "Entity Admin" page.
= NEW: Added option to "EventUtil.java" to include all enclosed geozones on map.
= DCS: Antx - Added cabinTemp, air filter pressure, engine torque, trans oil temp.
= DCS: ATrack - Set temperatures >=200C to invalid.
= DCS: CalAmp - Check for minimum acceptable HDOP.
= DCS: Enfora - Added Analog input support (for MT2500).
= DCS: Teltonika - Calculate GPS-based odometer value in proper chronological order.
= DCS: TZone AVL08 - If transmission starts with invalid data, scan for start of 
=      valid packet.
= FIX: Fixed email comma separator issues in ENRE email action.

Version 2.3.2 [2011/04/01]
- NEW: Includes support for uploading TrackStick data points (via command-line).
- NEW: Support for multiple tables names specified on "dbAdmin.pl -load=" option.
- NEW: Additional StatusCodes added.
- NEW: New Slovak language translation (thanks to Mario Viara).
- UPD: Spanish language translation update (thanks to Sebastian Mantilla Beniers)
- UPD: Romanian language translation update (thanks to Mihai Csaky)
- UPD: Greek language translation update (thanks to Christos Prassas)
- UPD: Auto-truncate address values which are longer than the EventData address
       field length (prevents MySQL invalid length errors from occuring).
- UPD: Added check for non-readable Tomcat files to "CheckInstall" process.
- UPD: Added check for non-read/writable Log files to "CheckInstall" process.
- CHG: "Device Chooser" search now checks for contained strings, rather than just 
       using 'startsWith'.
- CHG: Default "track.war" logging changed to "$GTS_HOME/logs/TrackWar.log" (see
       "log.dir" property definition in "webapps.conf").
- FIX: Fixed pushpin icon image display on Device Admin page.
= GTS: Added FuelRegister table and report (still experimental).
= GTS: Added map support to Digital I/O reports.
= DCS: Added "Throttle Position" support to Antx DCS.
= DCS: Added Temperature accumulators 4..7 in CalAmp DCS.
= DCS: Added additional QGV100 DCS support.

Version 2.3.1 [2011/03/08]
- NEW: Added additional status codes: STATUS_HEARBEAT, ...
- UPD: Spanish translation update (thanks to Sebastian Mantilla Beniers).
- CHG: Moved Account "Geocoder Mode" to SystemAdmin "Accounts" page.
- CHG: Added alternate index to Device column "simPhoneNumber" to provide for
       quick Device record lookup by SIM phone number.  The alternate key is
       controlled by the '.conf' property key "Device.keyedSimPhoneNumber".
- CHG: Replaced various private.xml properties "XXXXXX_validateNewIDs" with a 
       single "track.validateIDs" property.
- CHG: Set the default value of the "deviceInfo.allowNewDevice" Property to "true"
       in the 'private.xml' file.
- FIX: Various bug fixes.

Version 2.3.0 [2011/01/28]
- NEW: Hungarian language localization (many thanks to Totyi Ferenc).
- NEW: Added Device "Creation Date" read-only field to "Device Admin" page.
- NEW: Added Device "deviceCreateDateTime" field to report EventDataLayout fields.
- NEW: Added a "Pushpin" column, to display the event map pushpin, to various Event
       Detail Reports.  Enable by setting the "columnPushpin" property, in the file
       'reports.xml', to "true".
- NEW: Added additional boolean condition testing to "RTConfigTag.java" module.
- NEW: Added maximum allowed number of devices field "maximumDevices" to Account
       table, and supported on System Admin Accounts page.
- NEW: Added support for "Nominatim" reverse-geocode provider, available from 
       Mapquest and OpenStreetMap (see 'private.xml')
- NEW: Added several additional Status Code definitions.
- CHG: Changed Pushpin selection pulldown on the Device Admin and StatusCode Admin
       pages to display more pushpins at one time.
- CHG: Made changes to URIArg.java utility module.
- CHG: Updated "OpenGTS_Config.pdf" document.
- FIX: Fixed issues with EventData "getNextEventData" (thanks to SourceForge user
       Daniel [xing2kin] for finding this).
- FIX: Fixed "sipgear" device communication server IMEI# parsing issue.

Version 2.2.9 [2010/11/29]
- NEW: Added new device communication server (DCS) support for TAIP (Trimble ASCII 
       Interface Protocol).
- NEW: Added "lastFuelLevel" field to Device table record.
- NEW: Support PrivateLabel subdomain look-up for custom URLs.
- NEW: Added support for menu "button" selections on main menu (see the property
       "topMenu.menuType" in the "private.xml" file).
- CHG: Removed 'ACTION_SAVE_LAST' from the default action in "RuleFactory.java".
- FIX: Fixed "sysadmin" login when using the user email address to login.
- FIX: Fixed "Payload.java" null-termination parsing of fixed-length String fields.

Version 2.2.8 [2010/10/25]
- NEW: Added support for a "Language" locale selection pull-down on the login page.
       See the property "accountLogin.showLocaleSelection" in 'private.xml'.
- NEW: Added additional status-codes to StatusCodes.java.
- NEW: Added battery-level display option to TrackMap.java (see 'private.xml'
       property "trackMap.showBatteryLevel").
- NEW: Thanks to Ronald Prijs for providing the Dutch localization.
- CHG: MySQL appears to have dropped support for the "type=" syntax when creating
       table indexes.  This has now been changed to "engine=".  (To still use the
       older "type=" syntax, you can set the "db.sql.provider" property in the
       "common.conf" config file to "mysql_old").
- UPD: Update to Spanish language translation (thanks to Sebastian Mantilla)

Version 2.2.7 [2010/09/10]
- NEW: Added ability to create accounts through web-interface when logged in to
       the "sysadmin" account. (see OpenGTS_Config.pdf for information regarding
       the creation of the "sysadmin" account).
- NEW: Russian Localization (special thanks to Eugene A.Lukianov)
- NEW: Added ability to show only a single pushpin at a time during the pushpin
       "Replay" on a map (see the MapProvider property "replay.singlePushpin" in
       the "private.xml" file).
- NEW: Added ability to specify "group=(group)" on URL to "events.war".  Also 
       added "DeviceID" column specification to CSV output format.
- NEW: 2 additional points added to "Geozone Admin" definitions.
- NEW: Added additional standard StatusCodes (see StatusCodes.java)
- NEW: Added command-line option to "bin/admin.pl Device ..." to delete old
       events from the EventData table.
- NEW: Additional fields added to EventData table.
- NEW: Added experimental improved connection pooling feature.  Enable by 
       uncommenting the line "#db.dbConnectionPool=true" in "common.conf".
- UPD: Serbian localization update (thanks to Nenad Babajic)

Version 2.2.6 [2010/07/18]
- NEW: Added collapsible Map Controls on Device/Fleet maps
- NEW: Added support for Aspicore protocol (http://www.aspicore.com) via UDP/TCP.
- NEW: Added "lastBatteryLevel" field to Device record.
- NEW: Added "fuelCapacity" field to Device table.  Also added new EventDataLayout
       report column "fuelLevelVolume" to work with the EventData record percent
       "fuelLevel" to report the fuel level volume (a device which can capture fuel
       level information is still required).
- UPD: French localization update (thanks to Nadir Sahnoun).
- CHG: Servlet-based DCS log files for "gc101", "gpsmapper", "gprmc", and "mologogo"
       are now "w-gc101.log", "w-gpsmapper.log", "w-gprmc.log", and "w-mologogo.log".
- FIX: Fixed localization text issue in 'reports.xml' (thanks to Eugene A. Lukianov)

Version 2.2.5 [2010/07/04]
- CHG: "polygon" geozones now enabled by default for "openLayers", etc.
- UPD: Serbian localization update (thanks to Nenad Babajic).
- NEW: Added "Maximum Access Level" to User table, and User Admin page.
- NEW: Added collapsible map controls on device/fleet map page.

Version 2.2.4 [2010/06/17]
- NEW: Added support for "fleet detail" report group.
- UPD: Updated the SIPGEAR server to add initial support for TCP communications.
- CHG: The sample-data ("demo" account) has been changed to a more recent date
       (ie. 2010/03/12).  If you have already loaded the sample "demo" data, you
       may wish to delete the "demo" account, and reload the sample data.
- FIX: Fixed Chrome "map.fillFrame" problem. (Previously the map would not display
       properly in the Chrome browser when the MapProvider property "map.fillFrame"
       was set true).

Version 2.2.3 [2010/05/24]
- UPD: Update to Spanish language translation (thanks to Sebastian Mantilla)
- UPD: Update to Greek language translation (thanks to Christos Prassas)
- NEW: Added additional memory usage chack tool for device communicaiton servers.
- NEW: Added additional status codes.
- NEW: Initial support for SIPGEAR device communication server (implementation
       provided by ZhongShan SIPGEAR Technology Co, Ltd.)
- FIX: Updated Geonames reverse geocoder to eliminate redundant address commas.
- FIX: Fixed 'checkInstall.bat' command (on Windows) to work with Tomcat 6.

Version 2.2.2 [2010/04/25]
- NEW: Updated GisGraphy reverse-geocoding support (thanks to Mihai Csaky) 
- NEW: 'private.xml' Domain tag attribute "name" is now required.
- FIX: Fixed point-radius geozone bug when using Google Maps.
- FIX: Fixed 'inactive' Device bug which caused Devices marked inactive to still
       display on the group maps.

Version 2.2.1 [2010/04/11]
- NEW: Initial implementation of polygon geozones.  In the active MapProvider, set 
       the "zone.map.polygon" property to "true".  Currently only implemented for 
       "openLayers", "virtualEarth", and "googleMaps", with differing levels of 
       support. (Note: this is still experimental, so do expect some bugs).
- NEW: Geozone areas now support color selection.
- NEW: Speed reports now adjusts to "Speed Unit" settings on Account Admin page.
- NEW: Added several additional status codes.
- NEW: Additional columns added to the Device table.
- NEW: Setting a Device "Active" state to "No" now removes it from the device 
       selection list on maps and reports (in addition to still ignoring any new
       events which may arrive at the server for the device).
- NEW: The "Route-Line" color can now be specified per device.  This is a new field
       in the Device table ("displayColor") which can be edited in the Device Admin
       page.  This feature can be disabled (display the default color only) by setting 
       the Property "deviceInfo.showDisplayColor" to false in the "private.xml" file.
- NEW: "Password" field can now be hidden on login page (for applications where only
       an account-id is needed).  See "showPassword" attribute on "Domain" tag in
       'private.xml'
- NEW: Added "Driver Admin" page.  This page is commented/disabled by default.  To
       enable this page, edit 'private.xml' and uncomment the "Page" tag that defines
       the "DriverInfo" page entry.

Version 2.2.0 [2010/01/29]
- NEW: Greek language localization (many thanks to Christos Prassas).
- NEW: Added a new web-interface look with an example banner image (white).  To change
       back to the previous traditional look, in the "custom.conf" file, set the 
       property "Domain.WebPages.JSP" to "default".
- NEW: Enabled graphical "Group Pushpin ID" selection on Device Admin page by default.  
       Can be disabled in 'private.xml' with property "deviceInfo.showPushpinChooser".
- NEW: Added "Driver" table (web-interface component not yet available).
- NEW: Added additional methods to 'RuleFactory.java' interface.
- FIX: Fixed a mapping datapoint update issue that could show improper pushpin indexes
       in some circumstances in the "Location Detail" table below the map.

Version 2.1.9 [2009/12/17]
- NEW: Added list of defined/available reports to 'checkInstall' output.
- NEW: Added additional checks to 'checkInstall' to report when 'private.xml' was
       not able to be loaded due to possible classpath issues.
- NEW: Added additional checks to 'checkInstall' to validate various conditions
       on the DefaultLoginAccount tag, and accountLogin/emailLogin attributes.
- CHG: Italian language localization updated (many thanks to Pierluigi Bucolo).
- CHG: Added EventData 'jobNumber' column to optional CustomFieldInfo field group. 
- CHG: Added Device 'driverID' column. 
- FIX: Fixed 'getKeyCode' function in 'utils.js' (thanks to Pierluigi Bucolo).

Version 2.1.8 [2009/11/10]
- NEW: Added PushpinChooser support to the Device Admin pushpin selection.  To enable
       this feature set the "deviceInfo.showPushpinChooser" property to "true" in the
       'private.xml' file.
- NEW: Added a new Calendar action 'popup' to the From/To calendar actions on the Map
       pages.  The Calendar action can be specified in 'private.xml' on the property 
       "trackMap.calendarAction".  Valid values are "fixed", "fade" and "popup".  
       Report menu calendars are currently only available as "fixed".
- UPD: Improved DeviceChooser popup performance on IE.  Enable or disable by setting  
       the 'private.xml' file property "deviceChooser.useTable" to 'true', or 'false'.
- UPD: Romanian localization update (thanks to Mihai Csaky).
- CHG: The runtime config property "PasswordHandler.class" is now commented by 
       default.  This property was set to "md5" which creates MD5 checksum encoded
       passwords to be set in the database, instead of clear-text password.  
       Commenting this propery will again allow clear text passwords into the
       'password' field of the Account and User tables, but those that have MD5
       encoded passwords will need to be reset.
- CHG: The default value for the 'private.xml' property "reportMenu.enableReportEmail"
       is now "false".  Configure outbound SMTP and set this property to "true" to
       enable the "EMail" option when generating reports.  'CheckInstall' now also
       checks for proper SMTP configuration when this property is set 'true'.

Version 2.1.7 [2009/11/01]
- NEW: Added support for selectable report options (pull-down menu selectable options
       next to various reports).
- NEW: Added ability to include created geozones on device/fleet map if at least one
       pushpin has landed in the geozone (MapProvider property "map.includeGeozones"
       must be set 'true' in 'private.xml').
- NEW: Added route directional arrows to GoogleMaps implementaiton (thanks to
       Juan Carlos Argueta).  See the property "map.routeLine.arrows" in the 
       'private.xml' file for information regarding enabling this features.
- NEW: Added an "Email" option to the report output selection.  This allows emailing
       a report to the currently logged-in users contact email address.
- NEW: Added Device table columns "expectAck", "lastAckCommand", and "lastAckTime".
       Used for custom applications that require an ACK from the tracking device.
       Run the command "bin/dbAdmin.pl -tables=ca" (Linux) to update the database.
- NEW: Added eozone table column "zoomRegion" (for future use).
       Run the command "bin/dbAdmin.pl -tables=ca" (Linux) to update the database.
- UPD: Romanian localization update (thanks to Mihai Csaky).
- UPD: Serbian localization update (thanks to Nenad Babajic).
- CHG: Renamed 'driver'/'entity' columns in EventData to 'driverID'/'entityID' (these
       are optional columns in EventData, and may not be used in all installations).
- FIX: Fixed mapping issue when double/single quotes were included in the device or
       group descriptions.
- FIX: Fixed PendingPacket property changes for OpenDMTP devices.

Version 2.1.6 [2009/10/05]
- NEW: Added a "Short Name" field to the Device Admin page.
- NEW: Added support for displaying the short device name in a pushpin representing 
       the device on the group map (icon appears as a small "info" balloon). For
       more information, look for the Pushpin "label" in private.xml.
- NEW: Added Stuart Langridge's 'sorttable.js' JavaScript code to provide sortable
       table columns on reports by clicking on the column header (very cool!).
- NEW: Updated example 'template' device-communication-server to also support a simple
       data packet format for server-to=server event data tranfers.
- NEW: Added "${locale}" substitution key replace variable option to the "Link" tag 
       URL in the 'private.xml' file (in the "WebPages" section).
- NEW: "maxPingCount" and "dcsConfigMask" columns added to Device/Transport tables.
       (Make sure you update your tables with "bin/dbAdmin.pl -tables=ca").
- CHG: Table-based device 'chooser' now enabled by default on map and reports.  
       Columns on 'chooser' popup are now sortable.
- CHG: RuleAction and RuleFactory interfaces changed to return the action-mask for
       triggered rules (previously rule trigger would simply return true/false).
- FIX: Fixed simulated geozone transitions when adjacent events are in different 
       geozones (previously, the first geozone might not have a properly generated
       departure event).
- FIX: Fixed MapProvider Legend UTF8 character display issue.
- FIX: Fixed Report Menu display HTML issue.

Version 2.1.5 [2009/09/23]
- NEW: Added a new PasswordHandler class to handle customized password encoding
       and decoding handling.
- NEW: Added support for handling customized geozone map size (see "zone.map.width"
       and "zone.map.height" in 'private.xml').
- NEW: Added "Property" subtag to "Page" tag in 'private.xml'.
- NEW: JSP's can now be defined in their own 'JSPEntries' tag section in 'private.xml'.
- NEW: Separated portions of DCServerConfig.java into DCServerFactory.java.  Device
       Communication Server configuration is now specified in an XML file, which now
       allows for a more granular type of configuration (see 'dcserver.xml').
- CHG: "New Account" button on login page is now desabled by default.  To re-enable
       modify 'privatel.xml' and uncomment "NewAccount" page definition.
- CHG: Minor changes (method additions) to Payload.java
- CHG: Added "&oe=utf8" to Google reverse-geocode URL (thanks to Gonzalo Tirado).
- FIX: Fixed various fleet/group report maps that incorrectly displayed a "route" line
       connecting the pushpins.
- FIX: Device/DeviceGroup pulldown selection on maps now sorts entries by the
       description (when only description is displayed).
- FIX: Fixed bug in "ReportDeviceList.java" that could occasionally cause a 
       "ConcurrentModificationException" exception to be thrown.

Version 2.1.4.1 [2009/08/25]
- FIX: Fixed to 'loginSession.jsp' comment section (which was apparrently being 
       interpreted and taglib tags processed in Tomcat 6).  Which caused the login
       page to display incorrectly.
- FIX: Fixed missing 'GPSEvent.class' specification in 'build.xml' for the "template"
       server.

Version 2.1.4 [2009/08/23]
- NEW: Convert IDs entered for Device's, User's, etc, to lower-case before creating
       the new record entry.  Previously it would report "Invalid characters entered"
       for IDs which contains upper-case characters.
- NEW: First pass at a new feature allowing more than one location point to display
       per device on the fleet/group map.  This feature is controlled by the property
       "trackMap.fleetDeviceEventCount" in the 'private.xml' file.  This feature is
       still being tested.
- CHG: Updated Spanish translations (Thanks to Eduardo Robles!).
- CHG: Updated "Track.tld" and "loginSession.jsp" to work with Tomcat 5.5.28 and 6.
- CHG: Added a "Legend" tag to MapProvider in 'private.xml' (replacing the previous
       "iconSelector.legend" and "iconSelector.fleet.legend" properties).
- FIX: Fixed improper handling of speed/heading in 'GPSEvent.java' module (thanks
       to Lyudmil Shoshorov for finding this).
- FIX: Elimated the unecessary error/warning messages that were generated by the
       non-'track.war' servlets: 'events.war', 'mologogo.war', etc.
- FIX: Fixed GC-101 server changed data format, allowing record types to be properly 
       converted to GTS status codes (thanks to Kushal Patel for finding this).

Version 2.1.3 [2009/08/09]
- NEW: Added Portuguese translation (special thanks to Humberto Bonisson).
- NEW: Added Serbian translation (special thanks to Nenad Babajic).
- NEW: ServerSocketThread changed to allow binding to a specific local interface.
- CHG: A few changes to the example 'template' server code.
- CHG: Added "alarm1" status code support to the GC-101 http server.
- CHG: Minor changes to the Driving/Stopped time report.
- CHG: Updated Google KML support (maps, reports).

Version 2.1.2 [2009/07/01]
- NEW: Moved default report CSS to file 'ReportDisplay.css' (previously hardcoded).
- NEW: Added convenience method "getPushpinIconIndex" to BasicPrivateLabel to convert
       a pushpin ID to an index (for the active MapProvider) for displaying on a map.
- NEW: CheckInstall now can support sending a test email.
- NEW: Added a 'LocalStrings_XX.properties' file check to CheckInstall.
- NEW: Added an "-export" command-line option to the Geozone table to export geozones
       to a CSV file (similar to '-dump', but only elected columns).  Exported 
       geozones can still be loaded via the command-line "-load" option.
- CHG: Updated Turkish translations (special thanks to Aykut Kara).
- CHG: Various changes made to the reporting engine.  Report selection now allows 
       exporting a report in XML format.
- CHG: Map event data-point updates are now wrapped in proper XML (previously, it was
       simply CSV format).
- CHG: PageDecoration tag support removed from 'private.xml' and 'PrivateLabel.java'.

Version 2.1.1 [2009/06/01]
- NEW: Added support for GPX (GPS Exchange format) data format to the 'events.war' 
       servlet. (See http://www.topografix.com/gpx.asp for information regarding GPX)
- NEW: Added "Creating/Modifying Reports" section to 'OpenGTS_Config.pdf'.
- NEW: Added additional checks for JDK installation to CheckInstall for Windows users.
- NEW: Should now build to completion without the JavaMail 'mail.jar' file, however
       email sending will be disabled.
- NEW: 'activation.jar' is no longer needed (already included in Java 6).
- CHG: Increased Device background thread pool size to 25.
- FIX: Fixed runtime config file path conversion from 'URL' to 'File' when the file
       path happens to contain embedded spaces.

Version 2.1.0 [2009/05/27]
- NEW: Checkinstall now displays an error if Java 6 (or 7) is not installed.
- NEW: Added last latitude/longitude/odometer fields to Device table to improve 
       performance of geozone arrival/departure tests in the template server, and 
       odometer calculations.
- NEW: Changed 'events.war' to make sure that the URL matches a PrivateLabel domain.
- NEW: Tested OpenGTS with Java OpenJDK v1.6.0 (on Fedora).
- CHG: Changed the default radius for newly created geozones to 3000 meters.
- FIX: Fixed bug that caused a NullPointerException when saving a geozone.

Version 2.0.9 [2009/05/24]
- NEW: Includes pre-compiled MotoDMTP Java modules for loading onto the Motorola 
       i290 Boost Mobile phones (source now available in OpenDMTP 'client-j2me' 
       project).  Jad/Jar files can be found in the "MotoDMTP" directory.  See the
       OpenGTS_Config.pdf document for more information regarding installation and
       configuration of the MotoDMTP software.
- NEW: I18N string keys defined in 'private.xml' can now be used within 
       'loginSession.jsp'.
- NEW: Added new table columns to the Device table.
- NEW: Added command-line options to "ReverseGeocodeProviderAdapter.java" and 
       created "bin/rgTest.sh" command to provide testing of installed/configured 
       reverse-geocoders.
- NEW: Added "getRemotePort()" to "ServerSocketThread.SessionInfo" interface.  This 
       allows easy access to the remote client port#.
- NEW: Romanian language localization provided (many thanks to Mihai Csaky).
- CHG: German language localization updated (many thanks to Peter Jonas).

Version 2.0.8 [2009/05/01]
- NEW: Added additional status codes (see StatuseCodes.java)
- NEW: Added "speedLimitKPH"/"isTollRoad" fields to EventData for reverse-geocoders 
       that support returning this information.
- NEW: Added 'DataTime' data type support to dbtools.
- NEW: Added "validgps" argument to 'Event' servlet URL to allow only valid GPS 
       locations.
- NEW: Added support for "idle" elapsed time to MotionReport.
- NEW: Added "Ignition Input Line" to Device Info page to specify which digitial
       input (if any) is used as the 'ignition' sense (used by MotionReport to
       calculate "idle" tile).
- NEW: Added an error indication when running 'bin/checkInstall.sh' as 'root',
       plus other additional checks.
- NEW: Added additional commercial Geonames support.
- CHG: Removed "Totals" line generation from CSV report output.
- CHG: "ServerSocketThread.java" now returns any UDP ACK from the same 'listen' port.
- FIX: Rewrote 'admin.bat' to work around Windows batch file processing issues.
- FIX: Fixed performance issue in 'RTConfigTag.java'.

Version 2.0.7 [2009/04/02]
- NEW: Added additional help/comments to RuleFactoryExample.java.
- NEW: Added check for 'root' db username in checkInstall.
- NEW: Special thanks to Thomas Cozien for providing the French localization.
- NEW: Added server support for GPSMapper "Google Map GPS Cell Phone Tracker" project
       client component on SourceForge (http://gpsmapper.sourceforge.net).  This 
       support module is still undergoing testing and may not yet be fully functional.
- NEW: Added new device communication server support for the I-Care G3300.  Build with
       command "ant icare".
- NEW: 'ClientPacketHandler' can now override the 'ServerSessionThread' min/max
       packet lengths (used when creating some types of device communication servers).
- NEW: Added 'retainedEventAge' field to Account record for future trimming of old
       event records.
- FIX: Fixed 'initdb' command to create new tables with proper character set encoding.
       Previously, the work-around was to run the 'dbAdmin.pl -tables=ca' command to
       alter the various table columns to the appropriate character set.

Version 2.0.6 [2009/02/20]
- NEW: Added/modified file logging and automatic log file rotation. See 'common.conf'
       for configuration information.
- NEW: Added SMTP server check to 'bin/checkInstall.sh' command.
- CHG: Spanish language localization updated (many thanks to Eduardo Robles).
- CHG: Rename property 'track.enableCookies' to 'track.requireCookies' (dft 'true').
- FIX: Fixed case where URL links were not constructed properly when cookies are used
- FIX: Fixed syntax error in 'initdb.sh'.
- FIX: Fixed syntax error in 'common.bat' which cause various Windows '.bat' files
       to fail.

Version 2.0.5 [2009/02/01]
- NEW: Changes added to handle UTF8 character sets within the MySQL database.  This 
       should now allow proper storing and reporting of reverse-geocoded addresses 
       for various language localizations.
- NEW: Added character-encoding information to 'checkInstall' command reporting.
- NEW: Ability to localize the map "Pushpin Legend" text in 'private.xml'.
- NEW: Modified the 'Geonames' reverse-geocoding module to work with "Geonames
       Commercial Webservices" (http://www.geonames.org/commercial-webservices.html)
       which provides a guaranteed "fast and reliable response time".  See the 
       "geonames" ReverseGeocodeProvider section in the 'private.xml' file for more 
       information regarding configuration.
- NEW: Added validation of new IDs (Device, Group, User, etc) to prevent creating a
       record with an ID containing invalid characters (id validation may be disabled
       in 'private.xml' using the '*.validateNewIDs' properties for various pages)
- NEW: "default.conf" and "webapp.conf" now include a common runtime configuration
       file, "common.conf".  This allows easier common configuration of database and 
       other services.  Changes to 'common.conf' will also require rebuilding and
       redeploying servlet war files (ie. 'track.war', etc).
- CHG: German language localization updated (many thanks to Peter Jonas).
- CHG: Italian language localization updated (many thanks to Pierluigi Bucolo).
- CHG: "startup.initClass" changed to "StartupInit.class" in "common.conf".
- FIX: The ".sh" commands in the OpenGTS "bin/" directory now use the "bash" command
       interpreter (instead of "sh").  (Fixes ".sh" execution problem on Ubuntu.)
- FIX: Fixed Localized pull-down menu selection problem on admin pages (pull-down 
       selections might not have been be properly saved for certain languages).

Version 2.0.4 [2009/01/01]
- NEW: Added Latitude/Longitude display format selection option to Account Info page.
- NEW: StatusCode descriptions can now be localized.
- NEW: Added 'SMTP' information to 'checkInstall' command.
- NEW: Added altitude option to map info 'balloon' (see "info.showAltitude" property
       in MapProvider tag section of 'private.xml').
- NEW: Added reporting column option for displaying heading/bearing in 'degrees'.
- NEW: Added 'Totals' line to Motion Report.
- NEW: Added reporting ascending/descending order selection.
- NEW: Added login errors 'alert' dialog.
- NEW: Added ability to set the map/report calendar first-day-of-week to Monday.
       (See 'private.xml' Calendar property "calendar.firstDayOfWeek").
- NEW: Added new "db.sql.url.db" property to 'default.conf' and 'webapp.conf' files
       to allow providing a specific JDBC connection url which includes the database
       name.  This allows adding additional connection attributes to the jdbc url.
- NEW: New "IDDescription.java" class to hold id/description information used to
       present device and group selection in either id or description ordering.
- NEW: Added additional plural device/group names fields to the Account Admin page.
- NEW: Added additional insructional text to the 'Forgot Password' page.
- NEW: 'checkInstall' updated to include checks on Mac OS X to support the "Apple"
       Java vendor name.
- NEW: Special thanks to Aykut Kara for providing the Turkish localization.
- CHG: Renamed "db.sql.connection" property (in 'default.conf'/'webapp.conf') to 
       "db.sql.url" ("db.sql.connection" will continue to work for this release).
- FIX: Fixed 'template' source module compile error 'TrackClientPacketHandler.java',
       in the "usage" method.
- FIX: Fixed DBRecordKey partial key type when generating a key 'Where' clause.

Version 2.0.3 [2008/12/01]
- NEW: Google KML link can now be configured to display on the Event Detail/Summary 
       reports and Maps. When clicked, the KML file will be loaded into Google Earth.
       This is a work-in-progress and still needs some changes.
- NEW: Added an entry point for the example 'template' data communication server to
       allow parsing/inserting data supplied from a CSV flat-file.
- NEW: Text in the map info 'balloons' can now be localized.
- NEW: Added 'Property' tag support to Report tag definitions.
- NEW: Added Temperature units selection to Account Info page.
- NEW: Report CSV output files now have names indicating the generated report.
- NEW: OpenLayers map now centers pushpin when clicking on "Location Detail" point
       when the pushpin is not currently on the map.
- NEW: Initial support for Google reverse-geocoding service.
- CHG: In 'private.xml', moved Domain 'Property' tags into parent 'Properties' tag.
- CHG: Updated Italian Localization (many thanks to Pierluigi Bucolo).
- CHG: Updated German Localization (many thanks to Peter Jonas).
- CHG: The "Notification" support fields in the Device table have been removed from
       the default installation.  To add them back into a specific installation,
       uncomment the "Device.NotificationFieldInfo" line in "StarupInit.java".
- CHG: Non-admin users can now view/edit device groups, with proper ACL config.
- CHG: Improved menubar tab popup on mouse-over (when enabled via Property
       "menuBar.openOnMouseOver" in 'private.xml').
- CHG: Map "Auto-Update" now automatically displays the last known location of the
       device/vehicle (advancing to the next day when necessary).
- FIX: Initial fix for 'submit' button issue with non-English Localizations.

Version 2.0.2 [2008/10/16]
- NEW: Updated internal OpenLayers support with initial support for GeoServer.  See
       the "geoServer" MapProvider section in 'private.xml' for more information.
       (Special thanks to Assaad Mouawad for his research and help).
- NEW: Added support for expandable menu groups on the main menu.  Enable this feature
       in the 'private.xml' file by setting the property value for the key
       "topMenu.enableExpandableMenus" to "true".
- NEW: Added support for an alternate type of device selection on TrackMap and Report
       pages. New "DeviceChooser" properties in 'private.xml' now provides for sorting
       Device/Groups selections by ID or Description (see "deviceChooser.enable").
- NEW: Added new Domain property "calendar.timeTextField" (in 'private.xml) which
       allows entering the date hour:minute as a text field. (effects all calendars
       displayed within a Domain).
- CHG: The ACL (access control list) model has changed to make it easier to manage 
       user access to various aspect of the web-interface.
- CHG: Several cosmetic improvements included in this release.

Version 2.0.1 [2008/09/19]
- NEW: A new auto-update recentering mode has been added which allows recentering
       without rezooming.
- NEW: Added column 'defaultUser' to Account table to allow specifying a per-Account
       default login user (when login 'User' field is blank).  A general default login
       user can also be specified in the 'private.xml' file, tag "DefaultLoginUser".
- NEW: Added yellow icons/pushpins with directional arrows.  A new JavaScript icon
       selector function "evHeadingYellowURL" has been added, which can return the 
       appropriate icon selection based on the direction of travel for a given event.
- NEW: For a given user, the first displayed screen after login can now be specified
       (the current options are main menu, device map, or fleet map).
- NEW: Added an overflow indication on the device map screen to indicate when the
       maximum number of pushpins allowed on the map has been exceeded (the maximum
       number of allowed pushpins for a MapProvider is specified by the property
       "map.maxPushpins" in the file 'private.xml').
- NEW: When creating custom status code descriptions, remove the test for 'invalid'
       status codes from the 'StatusCode' table command-line admin tool.  This allows
       easier creation of customized status codes for specific applications.
- NEW: The default map "style" can now be specified for Virtual Earth.
- NEW: The "route" lines can now be turned off (in the MaprProvider properties).
- NEW: Added several new TrackMap properties to 'private.xml' to allow changing the
       behavior or display of various controls on the TrackMap page.
- CHG: Changed the "Last" point update feature to behave similar to "Update", but only
       show the last location within the specified date range.  The update "Last" 
       button display is controlled by the "trackMap.showUpdateLast" property in the
       file 'private.xml'. (This replaces the "trackMap.showLastLocation" feature)
- FIX: Fixed overflow indicator condition on reports when the number of displayed
       data records would exceed the maximum allowed records as specified in the
       'reports.xml' file.
- FIX: Empty MenuBar tabs that contain no selectable options (as set by the users 
       ACL) will no longer be displayed.

Version 1.9.8 [2008/09/12]
- NEW: Added new MaprProvider properties "iconSelector.fleet.legend" and
       "iconSelector.legend" to provide the ability to add an icon 'legend' to the
       TrackMap page.  This legend is specified as html in the specific MapProvider
       in the 'private.xml' file, and is currently not separately localizable.  Any
       desired localization must occur in the 'private.xml' file within the icon
       legend properties.
- NEW: The Timezone selection can be hidden from the TrackMap page via the Domain
       property "trackMap.showTimezoneSelection" in the 'private.xml' file.  The 
       default value is 'true'.
- NEW: Added new map option to zoom in and display only the last point.  The vehicle
       route is still displayed, but only the last pushpin is visible on the map.
       This feature has may have limited utility for most applications, so the 
       default is 'false'.  This feature can be enabled via the Domain property
       "trackMap.showLastLocation" in the 'private.xml' file.
- NEW: Added the ability to set the default login user name when the user field is
       left blank (previously 'admin' was the only possible default login user).
       This is set using the "DefaultLoginUser" tag in 'private.xml'.
- NEW: Added optional fields to EventData table: FLD_satelliteCount, FLD_batteryLevel
- CHG: "Replay" button changed to a generic icon showing options for play, continue,
       and pause. (supported for OpenLayers, Virtual Earth, and Google Maps).

Version 1.9.7 [2008/09/01]
- NEW: "Replay" is paused/resumed when clicking the 'Replay' button.
- NEW: The "Location Details" report (at the bottom of the map) now highlights the
       corresponding row during replay.  The table is now also scrollable to allow
       viewing both the map and the table at the same time when many pushpins have
       been plotted.
- NEW: "Replay" and geozone recenter support has been implemented for Google Maps.
- NEW: Added delete confirmation to User/Group/Geozone administration pages.
- NEW: New fields have been added to the Device and User tables.
- CHG: For geozone creation/modification, to simplify mouse usage the 'shift' keys
       have changed.  Please refer to the on-screen instructions for usage.
- CHG: Updated Spanish translations (Thanks to Eduardo Robles!).
- FIX: Fixed map "From" calendar that would occasionally incorrectly set the time 
       'minute' field (thanks for Gabriel for finding this).
- FIX: Fixed Calendar translations issue that prevented the month names from being
       translated to other languages.

Version 1.9.6 [2008/08/24]
- NEW: Added map point 'Replay' (playback) feature for OpenLayers and VirtualEarth 
       maps.  The "Replay" feature and replay interval are configurable from within 
       the MapProvider properties in the 'private.xml' file.
- NEW: Added ability to jump to the day of the last set of events for a given device.
- NEW: "Update Map" now also updates the "Last GPS event" date.
- NEW: Added "Tooltips" to Calendars and Track map page (hold the mouse over a 
       particular field to view a brief 'help' regarding the field or button).
- NEW: Added a new "map.maxPushpins" property to the MapProvider tag in 'private.xml'.
- CHG: Made "trackMap.autoUpdateRecenter" property available within 'private.xml'.
- FIX: Fixed geozone update when multiple geozones are present (would occasionally 
       not update the proper zone).

Version 1.9.5 [2008/08/20]
- NEW: Added the default icon selector to the report "maps" (ie. direction of travel
       now indicated on event detail reports).
- CHG: Added configurable features for various map providers to remove elements from
       the web-interface if the chosen map provider doesn't support a particular
       feature.
- CHG: Cleaned up some of the report layout issues on Internet Explorer.
- FIX: Fixed report "map" display when addresses are included in the pushpin info 
       balloon (previously the map may not have displayed due to errors).
- FIX: Fixed default From/To times on Calender that previously prevented the display
       of some map points on the current day.

Version 1.9.4 [2008/08/17]
- NEW: To save some real-estate on the map page, the From/To calendars can now slide
       over the top of each other.  Only one calendar is visible at a time.
- NEW: "Update Map" and "Auto Update" buttons are now available at the same time on
       the track map page (see "MapProvider" in 'private.xml' for configuration).
- NEW: Map AutoUpdate now displays a count-down timer to the next update time.
- CHG: The Javascript in TrackMap.java is now in its own 'TrackMap.js' file.
- FIX: Fixed problem with auto update which prevented proper map updating.
- FIX: Fixed display of View/Edit buttons on display of first User and Geozone.

Version 1.9.3 [2008/08/15]
- NEW: Calendar controls are now handled entirely in JavaScript.  Advancing to
       next/previous months is now much quicker.
- CHG: Several improvements made to User ACL handling.  "Acl" tag in 'private.xml'
       changed to include "maximum" and "default" access level attributes.
- CHG: Added bounding-box fields ("minLatitude", "maxLatitude", "minLongitude", 
       "maxLongitude") to Geozone table, optimizing lookups. (Existing geozones
       will need to be "re-saved" to update the 'bounding-box' information.)
- CHG: Increased maximum geozone size to 30000 meters.
- CHG: Map "AutoUpdate" now recenters the map on updates.
- FIX: Changes made to 'OpenLayers.js' to allow it to work better with Microsoft
       Internet Explorer.
- FIX: Fixed example 'gprmc' server record validation issue when parsing non-GPRMC 
       records.

Version 1.9.2 [2008/08/08]
- NEW: Added Geofencing web UI for Google Maps, Microsoft Virtual Earth, and 
       OpenLayers (and limited support for Mapstraction).  (Geofencing support is 
       still being tested and features are subject to change in a future release).
- NEW: A "distance" measurement ruler is now available for map providers OpenLayers
       and Microsoft Virtual Earth.  Press and hold the "Control" shift key while
       clicking and dragging accross the map.  A distance measurement will be 
       displayed to the right of the map.

Version 1.9.1 [2008/07/27]
- NEW: Added a new "Pushpins" tag to the "MapProvider" section in 'private.xml' to 
       allow overriding the pushpin icons displayed on a map.  Specific static icons
       images may be specified, or custom icon URL references may be generated on 
       the fly within the Javascript code.  Additional modifications integrated to 
       allow a 'RuleFactory' implementation to determine which pushpins are to be 
       displayed for which event types (based on an "iconSelector").
       See the Pushpins section in 'private.xml' for details.
- NEW: Included several pushpins in the 'track.war' created using the "Marker Maker"
       tool supllied by GMapLive at "http://www.gmaplive.com/marker_maker_old.php".
- NEW: New 'PushpinIcon' class added to handle custom pushpins.
- NEW: New "details.ascending" property to allow sorting the map location detail.
- FIX: Fixed 'Mapstraction.js' and 'OpenLayers.js' to set the proper pushpin anchor.

Version 1.9.0 [2008/07/21]
- NEW: The 'PageDescorations' tag in 'private.xml' is now obsolete.  This section
       in the 'private.xml' file has been replaced with a 'jsp' attribute on the
       'WebPages' and 'Page' tages which allow using a defined JSP to create the
       page look and feel.  This specified JSP file now creates the formatting and
       look-and-feel for the webpage.  The components of the webpage (menus, maps,
       reports, etc) are referenced via taglib entries within the JSP file. 
       (If you have customized PageDecorations in your existing 'private.xml' file, 
       it will be necessary to migrate these customizations to a custom .jsp file, 
       using the provided "war/track/jsp/loginSession.jsp" as a template).
- NEW: A 'distance' ruler has been added to the Microsoft Virtual Earth map. Right-
       click and drag to view the 'distance' ruler.  Eventually, a similar feature
       will be added to the other map providers as well.
- NEW: Added column 'linkURL' to Device table.  This can be used for providing
       separate utility links in the UI for a specific Device.
- FIX: Fixed problem preventing device groups from being set properly for a User.
- FIX: Added additional "don't cache" commands to the interactions with MIcrosoft 
       Internet Explorer to prevent it from attempting to cache page and map point 
       results.

Version 1.8.4 [2008/07/08]
- NEW: The Javascript in the mapping support modules has been moved into separate
       JavaScript files (war/track/js/maps/*) loaded by the Tracking mapping page.
- NEW: Moved calendar support Javascript and stylesheet into separate files, loaded
       by the Tracking map and reports page.
- NEW: Special thanks to Peter Jonas for providing the German localization.
- NEW: Special thanks to Eduardo Robles for providing the Spanish localization.

Version 1.8.3 [2008/06/20]
- NEW: Includes initial support for "Mapstraction" (http://www.mapstraction.com).
       Special thanks to SourceForge users Anthony George (EMS Resource Center), and 
       Peter Jonas, for getting Mapstraction integrated into OpenGTS.  The default 
       MapProvider (in 'private.xml') is now Mapstraction, utilizing the OpenLayers 
       mapping support.
- NEW: Special thanks to Pierluigi Bucolo for providing the Italian localization.
- NEW: Changes made to facilitate much easier customization without requiring
       changes to the existing codebase.  'StartupInit.java' included to allow for
       customized starup initialization.
- NEW: Added table 'GroupList' to hold multiple authorized user device groups.
       (previously a user was limited to a single authorized device group).
- NEW: "Driving/Stopped Time Summary" report now includes a "Map" display option.
- FIX: Now (again) allows "auto.count" to be '0' when specifying map auto update.
- FIX: Fixed bug in 'bin/admin.bat' which bypassed recognition of the 'User' table.

Version 1.8.2 [2008/05/22]
- NEW: Added a 'javadocs' target to the Ant 'build.xml' script.  Executing the
       command "ant javadocs" will create Javadocs in the directory "./javadocs".
- FIX: Recompiled and included a new 'dmtpserv.jar' file (this fixes the exception
       'NoSuchMethodError' which occured when running the 'gtsdmtp' server).

Version 1.8.1 [2008/05/20]
- NEW: Enumerated types in various tables can now be localized.
- NEW: Changes made to facilitate displaying generic URL links on web UI menus.
- FIX: Device field "uniqueID" is again visible to the command line record editor.

Version 1.8.0 [2008/05/14]
- NEW: The data transport specific fields in the 'Device' record have been separated
       into another table called 'Transport'.  This allows support for devices that 
       can provide multiple data paths to the server, for example GPRS communications
       as well as satellite communications.  The Device table currently also retains
       it own set of 'default' Transport attribute columns.
- NEW: Added a new 'Resource' and 'UniqueXID' table (for future use).
- NEW: DB tools enhanced to support multiple alternate indexes.
- NEW: Added City/State/Country columns to EventData & Geozone tables.
- NEW: Added comments regarding the custom language Localization process.
- NEW: 'CheckInstall.java' now also performs installation checks on 'private.xml'. 
       Installation checks can be performed with the command "bin/checkInstall.sh"
       (or "bin\checkInstall.bat" on Windows).
- CHG: Updated to OpenDMTP server v1.3.0
- CHG: Much of the code has now been converted to utilize Java 5 'generics'.
- CHG: Changes to ReverseGeocodeProvider to allow specifying customizable properties.
- CHG: 'private.xml' EMailAddress tags are now grouped in an 'EMailAddresses' tag.

Version 1.7.1 [2008/04/11]
- NEW: Modified report 'EventDataLayout.java' to color aged GPS fixes on the Event 
       detail and summary reports (indicating 'old' GPS fixes).
- NEW: Added 'FLD_iconSelector' column to 'StatusCode' table to assist in the custom
       icon selection for displayed points on a map.
- NEW: Added 'SCHEMA.txt' file that described the current database schema.
- NEW: Added new 'checkInstall.bat' and 'checkInstall.sh' commands to check for common
       installation inconsistencies that may cause runtime errors. 
- CHG: Updated to OpenDMTP server v1.2.14
- FIX: 'TrackMap.java' and 'Events.java' now use the account/user timezone for 
       default dates.

Version 1.7.0 [2008/03/28]
- NEW: This version now supports some specific features of Java 5 to support UTF-8
       charset, Java SDK 5.0 is now required to build/run OpenGTS.
- NEW: Added OpenDMTP 'ClientDiagnostic'/'ClientErrors' classes for obtaining error
       and diagnostic code descriptions.
- NEW: Added DBRecordKey existance methods that operate on the alternate key.
- NEW: Added additional character encoding support methods to StringTools and Print.
- NEW: Added property/diagnostic fields to report 'FieldLayout'
- NEW: Added static 'getTableDescription' method to all tables.
- CHG: Updated the motion report to provided limited reporting support for devices 
       that do not support OpenDMTP.
- CHG: Changed "Limit" tag in 'report.xml' to "SelectionLimit", and added the new
       report constraint tag "ReportLimit".
- CHG: Modified ReverseGeocodeProvider for Geonames to support UTF-8 char encoding.
- CHG: Removed obsolete DBAdmin 'reload' option.
- CHG: Added '-overwrite' option to use in conjuction with DBAdmin data "load".  
       The default now is to not overwrite existing data record when reloading a 
       dumped data file unless '-overwrite' has been specified.
- FIX: Fixed Microsoft SQL Server support to properly include "TOP" (limit) clause
       in device group selections

Version 1.6.10 [2008/03/12]
- NEW: Added 'notifyPriority' column to Device table.
- NEW: Added 'bin/dbconfig.bat' file to more easily allow table version upgrades for
       Windows users.
- NEW: Added 'SystemProps' table to hold system-wide property values.
- NEW: Added a new property to table fields (and a new 'getter' to DBField) to allow
       specifying a custom 'editor' for specific field/column types.
- NEW: Added 'OFFSET' support to DBProvider.
- NEW: Added a DEVICE_CODE field to the 'template' server.
- NEW: Added a GPS-base odometer calculation option to the 'template' server.
- NEW: Added additional decimal point options to the distance/odometer fields of
       various reports.
- FIX: Fixed the default longitude/latitude usage when no point are available in the
       mapping service proviers.
- FIX: Fixed the table layout on various reports for the record overflow message.

Version 1.6.9 [2008/02/27]
- NEW: Added file resource check in 'Track.java' to forward requested files which
       may have been directed by the servlet container to the Track servlet.
- NEW: Added 'DBFactoryTree.java' class which creates a dependency tree of SQL tables.
       This will be used in future GTS system admin applications.
- FIX: Change 'utils.jar' reference to 'gtsutils.jar' in 'common.[bat|sh|pl]'.

Version 1.6.8 [2008/02/21]
- CHG: Moved selected JavaScript utilities from JavaScriptTools.java to 'utils.js'.
- CHG: Moved selected JavaScript utilities from MenuBar.java to 'MenuBar.js'.
- CHG: Eliminated multiple log warning messages occuring when loading device server
       servlets (such as 'mologogo.war', 'gprmc.war', etc).
- CHG: Added '-Xmx256m" to java command-line options in 'runserver' scripts.
- FIX: Fixed handling of "GMT+XX:XX" timezones on maps (previously they would always
       be interpreted as simply "GMT").
- FIX: Allow date formats containing '.'s (ie. "dd.MM.yyyy")
- FIX: Fixed bug in mologogo servlet server which caused an out-of-memory error when
       an invalid latitude/longitude was encountered.

Version 1.6.7 [2008/02/17]
- NEW: Added support for map auto-update.  See MapProvider properties in 'private.xml' 
       for more information (this feature is still being tested).
- NEW: Report date format (in 'reports.xml') now defaults to the format specified in
       'private.xml', if not specified in 'reports.xml'.
- NEW: Additional comments added to 'OpenGTS_Config.pdf' and the example 'template' 
       server, regarding the implementation of custom device communication servers.
- FIX: Fixed date format display on Report/Map calendar.

Version 1.6.6 [2008/02/11]
- NEW: Added a 'Refresh' button to reports to allow updating displayed information.
- NEW: Added a 'Map' button to event detail reports which allows displaying the
       reported locations on a map.
- NEW: Added additional columns to Account and Device tables.
- NEW: Added ability for new OpenDMTP compliant devices to be automatically added to
       the Device table for a given Account ('autoAddDevices' column).
- NEW: Minor change to Nmea0183.java to handle $GPVTG and $GPZDA records.

Version 1.6.5 [2008/02/07]
- NEW: Text found in 'private.xml' can now be localized in the "LocalStrings_XX..."
       property files found in the "src/org/opengts/db" directory.
- NEW: Added 'Properties' update UI for Devices and DeviceGroups to allow updating the 
       remote device configuration for OpenDMTP compliant devices.
- FIX: Added missing "gtsutils.jar" to "events.war" and "mologogo.war".

Version 1.6.4 [2008/02/04]
- NEW: Added support for DeviceGroups to the UI.
- NEW: Added new AccountString table to provide custom naming of the titles used
       for "Device" and "Device Group" (such as "Taxi" and "Region").
- NEW: Added new report column options to EventData report layout.
- NEW: Added new columns to Account and EventData tables.
- NEW: Text found in 'reports.xml' can now be localized in the "LocalStrings_XX..."
       property files found in the "src/org/opengts/war/report" directory.
- FIX: Updated 'LocalStrings_en.properties' files.

Version 1.6.3 [2008/01/10]
- NEW: Added time since last device checkin/connect to event summary report.
- NEW: Added 'notes'/'imeiNumber' columns to Device table.
- NEW: Added ColumnValue attribute to web-based reporting utilitiies.
- NEW: Added the ability to customize the track servlet url pattern.
- NEW: Added 'Diagnostic' table to record OpenDMTP diagnostics/errors.
- NEW: Added an 'EventCount' report module.
- FIX: Fixed instances where the report limit warning was incorrectly displayed.

Version 1.6.2 [2007/12/13]
- NEW: The default 'PrivateLabelName' is now set when creating temporary Accounts 
       through the web-interface.
- NEW: Added support for pull-down menu tabs.
- NEW: If a report record limit is reached, reports now display a message at the 
       bottom of the page indicating that the displayed data may only be a portion
       of the possible available data.
- CHG: The previous report categories can now be separated into separate reporting
       pages.
- FIX: Fixed another error on DeviceInfo page that occurs when no devices are yet 
       defined.
- FIX: Fixed case where html escape characters were not properly applied when 
       displaying Account/Device/etc field values.

Version 1.6.1 [2007/11/28]
- NEW: Added 'ReportColumn.java' for finer property gruanularity when specifying
       report columns.
- NEW: Added "Notification EMail:" field to Account-Info web-page.
- NEW: Completed 'StatusCode' table used for providing custom status-code descriptions
       on reports.
- NEW: Added separate city/postalCode fields to EventData record.
- NEW: Added runtime config startup initialization class reference to provide custom
       initialization without requiring modification to existing server code.
- NEW: Added support for a 'Fleet' based map (new menu tab).
- NEW: Included an example RuleFactory implementation for event notification.
- CHG: Changed 'reports.xml' and 'ReportFactory' to incorporate 'ReportColumn' to 
       allow providing a more granular definition of a report column.
- FIX: Fixed Sanav GC-101 server to properly recognize "gc101_<imei>" unique id's
       (previously it would only recognize "imei_<imei>" unique id's).
- FIX: Fixed geozone PendingPacket generation to properly remove existing geozones
       before reloading new zones.

Version 1.6.0 [2007/09/16]
- NEW: Initial support for Microsoft SQL Server included.  Significant changes have 
       been made to isolate database specific attributes to the 'dbtools' sources.  
       Initial efforts have been made to support Microsoft SQL Server, and Apache 
       Derby database (still being tested).
- NEW: 'db.sql.connection' property has been added to allow specifying the JDBC
       connection URI (see 'default.conf' and 'webapp.comf' for examples).
- NEW: Account table now provides access to the loaded custom PrivateLabel domain.
- CHG: Split PrivateLabel.java into several other components (BasicPrivateLabel,
       PrivateLabelLoader, and BasicPrivateLabelLoader) to provide better access to
       customized 'private.xml' attributes from non-web-based components.
- FIX: Removed error message that incorrectly stated that the EventData table was
       missing a 'driver' field.
- FIX: Account Info web-page now correctly displays the 'Geocoder Mode'.

Version 1.5.3 [2007/08/09]
- NEW: Runtime config (RTConfig) updated to support loading property files from a
       Jar file resource.
- NEW: New Device support servlet added for receiving data from remote devices
       capable of sending GPRMC data via HTTP requests (such as NetGPS).
- NEW: Additional example data parsing support added to the example 'template'
       device data parser.
- CHG: There is now a single command for administering tables from the command line.
       All table administrative commands have change from "admin<Table>.sh ..." to
       "admin.sh <Table> ...".  The older commands are still available in the
       "bin/archive" directory, should they still be needed for reference.
- CHG: Extracted the properties section of the 'build.xml' file into a separate
       'build.properties' file.
- CHG: GC-101 module now has a configurable minimum acceptable speed.
- CHG: The OpenDMTP server startup script has been changed from "bin/server_dmtp.sh"
       to "bin/runserver.sh -s gtsdmtp" (or "bin\runserver.bat gtsdmtp" on Windows).
- CHG: The OpenDMTP server now logs to "logs/gtsdmtp.log".
- FIX: Fixed 'initdb.bat' problem on Windows where it was unable to properly locate
       and load the 'default.conf' runtime configuration file.
- FIX: Fixed 'runserver.pl' to properly specify overridden port numbers.
- FIX: Fixed error in DeviceInfo page that occurs when no devices are yet defined

Version 1.5.2 [2007/07/27]
- NEW: Added DTD files 'private.dtd' and 'reports.dtd'.
- NEW: "bin/adminAccount.pl -account=<account> -list" will now allow listing  
       specific accounts.
- NEW: New fields added to EventData table.
- NEW: Additional changes to 'template' server
- NEW: MapProvider properties changed to use ';' separator
- NEW: Added new table validation feature allow creating/adding missing columns
- NEW: 'notifyAction' column added to Device table.
- NEW: WebPage/WebPageAdaptor now supports separate 'getNavigationTab()' method.
- NEW: Per thread properties added for suport of PrivateLabel customization.
- NEW: Now includes the Device Parser Module for the Sanav GC-101.
- CHG: Renamed package "org/opengts/servers/dmtp" to "org/opengts/servers/gtsdmtp"
- CHG: Servlet config file 'webapp.conf' moved to the installation root directory
       for easier configuration of servlets.
- CHG: MySQL initialization command "initdb" no longer creates default account
       "opendmtp" and device "mobile".  These must now be created manually.
- FIX: Fixed error in DeviceInfo page that occurs when no devices are yet defined

Version 1.5.1 [2007/07/14]
- NEW: Included support for SendMail user authentication (including SSL).
- NEW: Added User authentication and device authorization to 'Events' war utility.
- NEW: Added ability to edit a User's Access-Control-List from the UserInfo page.
- CHG: Environment variables "JAVA_HOME" and "GTS_HOME" are now required when  
       running the command line tools ('.bat' files) on Windows.
- CHG: Renamed "bin/server_mysql.*" to "bin/server_dmtp.*" (output log file now
       written to "server_dmtp.log").
- FIX: Minor change to 'common.pl' to allow Perl scripts to work with ActivePerl.

Version 1.5.0 [2007/06/30]
- NEW: Added ability to display a 'total' row in the reports.
- NEW: Added 'tab' display menu bar.
- NEW: Added User table view to "Edit/View User Information" page.
- NEW: Added Device table view to "Edit/View Device Information" page.
- NEW: Enabled user ACL acccess for User/Device edit/view.
- NEW: Added host 'alias' support to PrivateLabel manager.
- NEW: Added '-nopass' option to 'adminAccount' account creation.
- NEW: 'dbAdmin.pl' can now dump a specific account.
- NEW: Can now set TCP/UDP timeouts n DMTP server.
- NEW: Added 'template' example 'Device Parser Module' server.
- NEW: Added Calendar style sheets.
- NEW: Improved user ACL (access control list) settings.
- CHG: Minor changes to KML output.
- FIX: TrackMap now will default to the User's timezone, if available.

Version 1.4.8 [2007/06/14]
- FIX: Minor fix to "User.isAuthorizedDevice" to return true if no 'deviceGroup'
       has been specified (otherwise a user may be denied access to all devices).

Version 1.4.7 [2007/06/13]
- NEW: Default to suppress warnings when validating DB table columns.
- NEW: Added support for Device Groups (not yet supported in web-interface - currently
       administered via command-line tools).   Also with DeviceGroups, users can now 
       have restricted access to the devices listed within a given Device Group.
- NEW: Ability to log in without a password is no longer the default for newly
       created Accounts/Users.  Now, to allow Users to log in without a password,
       the user password must be explicitly set to the text "*blank*".  Previously, 
       the default was to allow a newly created users to log in without specifying 
       a password, which created a potential security risk.  Now, setting a user
       password to an empty string will prevent the user from logging in.
- NEW: Added additional reverse-geocode column "subdivision" to the EventData record 
       to assist in special table searches for border-crossings, etc.
- FIX: Fixed device-selection and update-map issue on Internet Explorer (previously, 
       selecting a new device, or clicking update map, would not always cause the 
       map to update as expected).

Version 1.4.6 [2007/06/03]
- NEW: Added support for I18N (Internationalization). See the i18n properties files
       "LocalStrings_en.properties" in the servlet source directories for more
       information.
- CHG: Improved look & feel.

Version 1.4.5 [2007/05/25]
- NEW: Reverse-Geocoding now fully functional (using external GeoNames service).
- NEW: Installation/Configuration document updated.  Additional notes regarding 
       the setting of environment variables.  Notes regarding the use of Microsoft
       Virtual Earth maps.
- NEW: Added additional 'private.xml' parser for use in device servers where a 
       web-interface is not applicable (used for extracting Reverse-Geocoding
       parameters).
- NEW: Added a 'restricted' attribute to the 'Domain' tag in 'PrivateLabel.java'
       to allow forcing only authorized accounts to have access to a given domain.

Version 1.4.4 [2007/05/20]
- NEW: Added support for Microsoft Virtual Earth maps.
- NEW: Added 'properties' attribute to MapProvider tag in PrivateLabel to allow for
       customizing specific features of the selected map provider.
- NEW: When logging in with a blank username, the user 'admin' is queried for 
       access authorization.
- NEW: Added ability to restrict accounts to specific host domains.
- NEW: Sample data is now included in the package (Account 'demo, Device 'demo'/demo2')
- CHG: Minor changes to Google Maps support to integrate auto-zooming.

Version 1.4.3 [2007/05/06]
- CHG: Minor changes to the 'build.xml' build script.
- CHG: Updated the "OpenGTS_Config.pdf" document.
- CHG: Minor changes to facilitate supporting other map providers.
- NEW: Added 'FLD_creationTime' column to EventData table.
- NEW: Added 'enableScrollWheelZoom' to Google Maps display to enable the mouse
       scroll-wheel zooming.
- NEW: Added "isAttributeSupported" & "writeMapUpdate" to MapProvider interface.

Version 1.4.2 [2007/04/17]
- NEW: Filter and remove invalid lat/lon (eg 0.00/0.00) from displayed Google Map.
- FIX: Fixed use of reserved word for table column name in new 'Property' table.

Version 1.4.1 [2007/04/15]
- CHG: Rearranged report menu page to allow for more room to place report options.
- NEW: Added 'Distance Units' field to account information page.
- NEW: Added 'Property' table for future use when reconfiguring OpenDMTP devices.

Version 1.4.0 [2007/03/30]
- NEW: Now supports multiple Users per Account, and an Access-Control-List to 
       individually assign access to an Account's menus and reports on a per-User basis.
- NEW: Added descriptive help text to the main menu options.
- NEW: RTConfig now caches pertinent default System properties on initialization.
       This prevents the potential "AccessControlException" which can occur in some 
       Apache Tomcat environments (thanks to Thomas Schmid for discovering this issue).

Version 1.3.7 [2007/03/25]
- NEW: Added support for device-detail, device-summary, and fleet-summary reports
       categories.
- NEW: Added Fleet "Last Known Location Summary" report.
- NEW: Added Device "Driving/Idle Time Summary" report.
- NEW: Added support for generating report output in CSV format.
- NEW: Now includes the Installation/Configuration manual, "OpenGTS_Config.pdf".
- FIX: Added missing "wartools.jar" file to "events.war" build.

Version 1.3.6 [2007/03/16]
- NEW: Added calendar to report selection to allow specifying report date ranges.
- NEW: Added XML event download capability.
- NEW: Minor optimizations to message logging.
- NEW: 'Navigation' bar now supported.
- CHG: Updated to latest OpenDMTP server (v1.2.8).

Version 1.3.5 [2007/03/11]
- NEW: Added customizable event detail reporting support. Additional reports can easily
       be added via configuration of an xml file.
- NEW: Private labeling support can now display different page decorations based on
       whether a user is logged-in, or not.
- FIX: Include latest OpendDMTP server (v1.2.7) which fixes the client IP address not 
       properly being propagated to the Event record.

Version 1.3.4 [2007/02/28]
- NEW: Enabled custom reverse-geocoding (custom naming for specific geofenced areas)
       on the tracking web-interface.
- NEW: Improvements to Mologogo phone tracking support (support for minimum speed, 
       horizontal accuracy, and 'pointType').
- NEW: Support uploading an Account geozone list from a CSV file.
- CHG: Remove unecessary solution-specific fields from EventData.

Version 1.3.3 [2007/02/26]
- NEW: Now includes support for receiving data from Mologogo capable phones (see
       http://www.mologogo.com) using their "altURL" feature.
- NEW: Added 'Geozone' table. This allows creating custom defined 'reverse-geocoding'
       areas, as well as uploadable geozone packets which can be sent to a OpenDMTP
       compliant device. ('GeozoneFactory' was removed since it's no longer needed).
- NEW: Added command-line ability to PendingPacket to add property get/set requests.
- NEW: Included "New Account Registration" feature on web interface.
- NEW: Included "Forgot Password" feature on web interface.
- CHG: Combined build of 'util.jar' and 'db.jar' into a single jar 'gtsdb.jar'
- FIX: Fixed possible exception thrown when updating DeviceInfo and notification
       email is not enabled.
- FIX: Includes OpenDMTP server v1.2.6 (which also fixes 'PendingPacket.getPackets')

Version 1.3.2 [2007/02/18]
- NEW: Updated with latest v1.2.4 OpenDMTP server.  Now supports listening on
       multiple ports.
- FIX: Fixed invalid reference to 'common.pl' in admin perl scripts.

Version 1.3.1 [2007/02/16]
- FIX: Fixed inconsistent MySQL database/user/password configuration between what was
       stated in documentation, and what was specified in the config files.

Version 1.3.0 [2007/02/11]
- NEW: Added a full-featured GPS Tracking web interface with Google Map support.
       This uses Apache Tomcat to provide web-based user authentication, account and 
       device information editing, mapping support, and location detail reporting.
- NEW: Initial support for reverse-geocoding is included (not yet fully tested).

Version 1.2.1 [2007/02/08]
- NEW: Added 'perl' scripts for the following command-line functions:
         "adminAccount.pl", "adminDevice.pl", "server_mysql.pl".
       These commands do not need to be executed from the GTS installation directory.
       (The '.sh' and '.bat' commands still need to be executed from the GTS
       installation directory).
- NEW: The DB admin command "dbAdmin.pl" no longer needs to be executed from the 
       GTS installation directory.
- CHG: Updated with latest OpenDMTP server v1.2.3
- FIX: The default database name and user should be 'gts' in the 'default.conf'
       runtime config file (it was previously specified as 'dmtp').

Version 1.2.0 [2007/01/25]
- NEW: First release of OpenGTS.
- NEW: Supports MySQL datastore.
- NEW: Currently supports a Java Event servlet for supplying CSV queries, and KML
       formatted XML for tracking via Google Earth.
- NEW: Includes support for OpenDMTP server-side protocol (library copied from
       OpenDMTP project at 'http://www.opendmtp.org').

-----------------------------------------------------------------------------------

The OpenGTS/OpenDMTP software is Copyright GeoTelematic Solutions, Inc.

OpenGTS/OpenDMTP is not affiliated with Sun Microsystems, Inc, Sprint/Nextel, Boost 
Mobile, Motorola, or any other commercial entity mentioned, in any way.

The various mentioned trademarks and tradenames are owned by their respective
companies.

OpenGTS/OpenDMTP must not be used for any illegal activities.  The providers of this 
project assume no responsibity for any illegal activities that may be conducted by 
users of this software.

-----------------------------------------------------------------------------------
