update to 2.5.0 version of cordova.js
diff --git a/lib/cordova.webos-debug.js b/lib/cordova.webos-debug.js
index 9e39278..f31088f 100644
--- a/lib/cordova.webos-debug.js
+++ b/lib/cordova.webos-debug.js
@@ -1,8 +1,8 @@
 // Platform: webos
 
-// commit ab5e7db58d684da1403ab6059a80f3b4635bde4d
+// commit 0f40ae8ab0eb19efecf6dd3be09106feec417bef
 
-// File generated at :: Tue Feb 05 2013 13:01:43 GMT-0800 (PST)
+// File generated at :: Tue Feb 19 2013 13:48:03 GMT-0800 (PST)
 
 /*
  Licensed to the Apache Software Foundation (ASF) under one
@@ -34,7 +34,7 @@
 try {eval("define(\"cordova/common\", function(require, exports, module) {\n\nmodule.exports = {\n    defaults: {\n        cordova: {\n            path: 'cordova',\n            children: {\n                exec: {\n                    path: 'cordova/exec'\n                },\n                logger: {\n                    path: 'cordova/plugin/logger'\n                }\n            }\n        },\n        Cordova: {\n            children: {\n                exec: {\n                    path: 'cordova/exec'\n                }\n            }\n        },\n        open : {\n            path: 'cordova/plugin/InAppBrowser'\n        },\n        navigator: {\n            children: {\n                notification: {\n                    path: 'cordova/plugin/notification'\n                },\n                accelerometer: {\n                    path: 'cordova/plugin/accelerometer'\n                },\n                battery: {\n                    path: 'cordova/plugin/battery'\n                },\n                camera:{\n                    path: 'cordova/plugin/Camera'\n                },\n                compass:{\n                    path: 'cordova/plugin/compass'\n                },\n                contacts: {\n                    path: 'cordova/plugin/contacts'\n                },\n                device:{\n                    children:{\n                        capture: {\n                            path: 'cordova/plugin/capture'\n                        }\n                    }\n                },\n                geolocation: {\n                    path: 'cordova/plugin/geolocation'\n                },\n                globalization: {\n                    path: 'cordova/plugin/globalization'\n                },\n                network: {\n                    children: {\n                        connection: {\n                            path: 'cordova/plugin/network',\n                            deprecated: 'navigator.network.connection is deprecated. Use navigator.connection instead.'\n                        }\n                    }\n                },\n                splashscreen: {\n                    path: 'cordova/plugin/splashscreen'\n                }\n            }\n        },\n        Acceleration: {\n            path: 'cordova/plugin/Acceleration'\n        },\n        Camera:{\n            path: 'cordova/plugin/CameraConstants'\n        },\n        CameraPopoverOptions: {\n            path: 'cordova/plugin/CameraPopoverOptions'\n        },\n        CaptureError: {\n            path: 'cordova/plugin/CaptureError'\n        },\n        CaptureAudioOptions:{\n            path: 'cordova/plugin/CaptureAudioOptions'\n        },\n        CaptureImageOptions: {\n            path: 'cordova/plugin/CaptureImageOptions'\n        },\n        CaptureVideoOptions: {\n            path: 'cordova/plugin/CaptureVideoOptions'\n        },\n        CompassHeading:{\n            path: 'cordova/plugin/CompassHeading'\n        },\n        CompassError:{\n            path: 'cordova/plugin/CompassError'\n        },\n        ConfigurationData: {\n            path: 'cordova/plugin/ConfigurationData'\n        },\n        Connection: {\n            path: 'cordova/plugin/Connection'\n        },\n        Contact: {\n            path: 'cordova/plugin/Contact'\n        },\n        ContactAddress: {\n            path: 'cordova/plugin/ContactAddress'\n        },\n        ContactError: {\n            path: 'cordova/plugin/ContactError'\n        },\n        ContactField: {\n            path: 'cordova/plugin/ContactField'\n        },\n        ContactFindOptions: {\n            path: 'cordova/plugin/ContactFindOptions'\n        },\n        ContactName: {\n            path: 'cordova/plugin/ContactName'\n        },\n        ContactOrganization: {\n            path: 'cordova/plugin/ContactOrganization'\n        },\n        Coordinates: {\n            path: 'cordova/plugin/Coordinates'\n        },\n        device: {\n            path: 'cordova/plugin/device'\n        },\n        GlobalizationError: {\n            path: 'cordova/plugin/GlobalizationError'\n        },\n        Media: {\n            path: 'cordova/plugin/Media'\n        },\n        MediaError: {\n            path: 'cordova/plugin/MediaError'\n        },\n        MediaFile: {\n            path: 'cordova/plugin/MediaFile'\n        },\n        MediaFileData:{\n            path: 'cordova/plugin/MediaFileData'\n        },\n        Position: {\n            path: 'cordova/plugin/Position'\n        },\n        PositionError: {\n            path: 'cordova/plugin/PositionError'\n        },\n        ProgressEvent: {\n            path: 'cordova/plugin/ProgressEvent'\n        }\n    },\n    clobbers: {\n        navigator: {\n            children: {\n                connection: {\n                    path: 'cordova/plugin/network'\n                }\n            }\n        }\n    }\n};\n\n});\n\n//@ sourceURL=lib/common/common.js")} catch(e) {console.log("exception: in lib/common/common.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/exec\", function(require, exports, module) {\n\n/**\n * Execute a cordova command.  It is up to the native side whether this action\n * is synchronous or asynchronous.  The native side can return:\n *      Synchronous: PluginResult object as a JSON string\n *      Asynchrounous: Empty string \"\"\n * If async, the native side will cordova.callbackSuccess or cordova.callbackError,\n * depending upon the result of the action.\n *\n * @param {Function} success    The success callback\n * @param {Function} fail       The fail callback\n * @param {String} service      The name of the service to use\n * @param {String} action       Action to be run in cordova\n * @param {String[]} [args]     Zero or more arguments to pass to the method\n */\n\nvar plugins = {\n    \"Device\": require('cordova/plugin/webos/device'),\n    \"NetworkStatus\": require('cordova/plugin/webos/network'),\n    \"Compass\": require('cordova/plugin/webos/compass'),\n    \"Camera\": require('cordova/plugin/webos/camera'),\n    \"Accelerometer\" : require('cordova/plugin/webos/accelerometer'),\n    \"Notification\" : require('cordova/plugin/webos/notification'),\n    \"Geolocation\": require('cordova/plugin/webos/geolocation')\n};\n\nmodule.exports = function(success, fail, service, action, args) {\n    try {\n        console.error(\"exec:call plugin:\"+service+\":\"+action);\n        plugins[service][action](success, fail, args);\n    }\n    catch(e) {\n        console.error(\"missing exec: \" + service + \".\" + action);\n        console.error(args);\n        console.error(e);\n        console.error(e.stack);\n    }\n};\n\n});\n\n//@ sourceURL=lib/webos/exec.js")} catch(e) {console.log("exception: in lib/webos/exec.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/modulemapper\", function(require, exports, module) {\n\nvar builder = require('cordova/builder'),\n    moduleMap = define.moduleMap,\n    symbolList,\n    deprecationMap;\n\nexports.reset = function() {\n    symbolList = [];\n    deprecationMap = {};\n};\n\nfunction addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {\n    if (!(moduleName in moduleMap)) {\n        throw new Error('Module ' + moduleName + ' does not exist.');\n    }\n    symbolList.push(strategy, moduleName, symbolPath);\n    if (opt_deprecationMessage) {\n        deprecationMap[symbolPath] = opt_deprecationMessage;\n    }\n}\n\n// Note: Android 2.3 does have Function.bind().\nexports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {\n    addEntry('c', moduleName, symbolPath, opt_deprecationMessage);\n};\n\nexports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {\n    addEntry('m', moduleName, symbolPath, opt_deprecationMessage);\n};\n\nexports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {\n    addEntry('d', moduleName, symbolPath, opt_deprecationMessage);\n};\n\nfunction prepareNamespace(symbolPath, context) {\n    if (!symbolPath) {\n        return context;\n    }\n    var parts = symbolPath.split('.');\n    var cur = context;\n    for (var i = 0, part; part = parts[i]; ++i) {\n        cur[part] = cur[part] || {};\n    }\n    return cur[parts[i-1]];\n}\n\nexports.mapModules = function(context) {\n    var origSymbols = {};\n    context.CDV_origSymbols = origSymbols;\n    for (var i = 0, len = symbolList.length; i < len; i += 3) {\n        var strategy = symbolList[i];\n        var moduleName = symbolList[i + 1];\n        var symbolPath = symbolList[i + 2];\n        var lastDot = symbolPath.lastIndexOf('.');\n        var namespace = symbolPath.substr(0, lastDot);\n        var lastName = symbolPath.substr(lastDot + 1);\n\n        var module = require(moduleName);\n        var deprecationMsg = symbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null;\n        var parentObj = prepareNamespace(namespace, context);\n        var target = parentObj[lastName];\n\n        if (strategy == 'm' && target) {\n            builder.recursiveMerge(target, module);\n        } else if ((strategy == 'd' && !target) || (strategy != 'd')) {\n            if (target) {\n                origSymbols[symbolPath] = target;\n            }\n            builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg);\n        }\n    }\n};\n\nexports.getOriginalSymbol = function(context, symbolPath) {\n    var origSymbols = context.CDV_origSymbols;\n    if (origSymbols && (symbolPath in origSymbols)) {\n        return origSymbols[symbolPath];\n    }\n    var parts = symbolPath.split('.');\n    var obj = context;\n    for (var i = 0; i < parts.length; ++i) {\n        obj = obj && obj[parts[i]];\n    }\n    return obj;\n};\n\nexports.loadMatchingModules = function(matchingRegExp) {\n    for (var k in moduleMap) {\n        if (matchingRegExp.exec(k)) {\n            require(k);\n        }\n    }\n};\n\nexports.reset();\n\n\n});\n\n//@ sourceURL=lib/common/modulemapper.js")} catch(e) {console.log("exception: in lib/common/modulemapper.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/platform\", function(require, exports, module) {\n\nvar service=require('cordova/plugin/webos/service'),\n    cordova = require('cordova');\n\nmodule.exports = {\n    id: \"webos\",\n    initialize: function() {\n        var modulemapper = require('cordova/modulemapper');\n\n        modulemapper.loadMatchingModules(/cordova.*\\/symbols$/);\n        modulemapper.mapModules(window);\n\n        if (window.PalmSystem) {\n            window.PalmSystem.stageReady();\n        }\n\n        var Mojo = window.Mojo || {};\n\n        // wait for deviceready before listening and firing document events\n        document.addEventListener(\"deviceready\", function () {\n\n            // LunaSysMgr calls this when the windows is maximized or opened.\n            window.Mojo.stageActivated = function() {\n                console.log(\"stageActivated\");\n                cordova.fireDocumentEvent(\"resume\");\n            };\n            // LunaSysMgr calls this when the windows is minimized or closed.\n            window.Mojo.stageDeactivated = function() {\n                console.log(\"stageDeactivated\");\n                cordova.fireDocumentEvent(\"pause\");\n            };\n            // LunaSysMgr calls this when a KeepAlive app's window is hidden\n            window.Mojo.hide = function() {\n                console.log(\"hide\");\n            };\n            // LunaSysMgr calls this when a KeepAlive app's window is shown\n            window.Mojo.show = function() {\n                console.log(\"show\");\n            };\n\n            // LunaSysMgr calls this whenever an app is \"launched;\"\n            window.Mojo.relaunch = function() {\n                // need to return true to tell sysmgr the relaunch succeeded.\n                // otherwise, it'll try to focus the app, which will focus the first\n                // opened window of an app with multiple windows.\n\n                var lp=JSON.parse(PalmSystem.launchParams) || {};\n\n                if (lp['palm-command'] && lp['palm-command'] == 'open-app-menu') {\n                    console.log(\"event:ToggleAppMenu\");\n                    cordova.fireDocumentEvent(\"menubutton\");\n                }\n\n                console.log(\"relaunch\");\n                return true;\n            };\n\n            // start to listen for network connection changes\n            service.Request('palm://com.palm.connectionmanager', {\n                method: 'getstatus',\n                parameters: { subscribe: true },\n                onSuccess: function (result) {\n                    console.log(\"subscribe:result:\"+JSON.stringify(result));\n\n                    if (!result.isInternetConnectionAvailable) {\n                        if (navigator.onLine) {\n                            console.log(\"Firing event:offline\");\n                            cordova.fireDocumentEvent(\"offline\");\n                        }\n                    } else {\n                        console.log(\"Firing event:online\");\n                        cordova.fireDocumentEvent(\"online\");\n                    }\n                },\n                onFailure: function(e) {\n                    console.error(\"subscribe:error\");\n                }\n            });\n\n        });\n    },\n    merges: {\n        navigator: {\n            children: {\n                service: {\n                    path: \"cordova/plugin/webos/service\"\n                },\n                application: {\n                    path: \"cordova/plugin/webos/application\"\n                },\n                window: {\n                    path: \"cordova/plugin/webos/window\"\n                },\n                notification: {\n                    path: \"cordova/plugin/webos/notification\"\n                },\n                orientation: {\n                    path: \"cordova/plugin/webos/orientation\"\n                },\n                keyboard: {\n                    path: \"cordova/plugin/webos/keyboard\"\n                }\n            }\n        }\n    }\n};\n\n});\n\n//@ sourceURL=lib/webos/platform.js")} catch(e) {console.log("exception: in lib/webos/platform.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/platform\", function(require, exports, module) {\n\nvar service=require('cordova/plugin/webos/service'),\n    cordova = require('cordova');\n\nmodule.exports = {\n    id: \"webos\",\n    initialize: function() {\n        var modulemapper = require('cordova/modulemapper');\n\n        modulemapper.loadMatchingModules(/cordova.*\\/symbols$/);\n        modulemapper.mapModules(window);\n\n        if (window.PalmSystem) {\n            window.PalmSystem.stageReady();\n        }\n\n        // create global Mojo object if it does not exist\n        Mojo = window.Mojo || {};\n\n        // wait for deviceready before listening and firing document events\n        document.addEventListener(\"deviceready\", function () {\n\n            // LunaSysMgr calls this when the windows is maximized or opened.\n            window.Mojo.stageActivated = function() {\n                console.log(\"stageActivated\");\n                cordova.fireDocumentEvent(\"resume\");\n            };\n            // LunaSysMgr calls this when the windows is minimized or closed.\n            window.Mojo.stageDeactivated = function() {\n                console.log(\"stageDeactivated\");\n                cordova.fireDocumentEvent(\"pause\");\n            };\n            // LunaSysMgr calls this when a KeepAlive app's window is hidden\n            window.Mojo.hide = function() {\n                console.log(\"hide\");\n            };\n            // LunaSysMgr calls this when a KeepAlive app's window is shown\n            window.Mojo.show = function() {\n                console.log(\"show\");\n            };\n\n            // LunaSysMgr calls this whenever an app is \"launched;\"\n            window.Mojo.relaunch = function() {\n                // need to return true to tell sysmgr the relaunch succeeded.\n                // otherwise, it'll try to focus the app, which will focus the first\n                // opened window of an app with multiple windows.\n\n                var lp=JSON.parse(PalmSystem.launchParams) || {};\n\n                if (lp['palm-command'] && lp['palm-command'] == 'open-app-menu') {\n                    console.log(\"event:ToggleAppMenu\");\n                    cordova.fireDocumentEvent(\"menubutton\");\n                }\n\n                console.log(\"relaunch\");\n                return true;\n            };\n\n            // start to listen for network connection changes\n            service.Request('palm://com.palm.connectionmanager', {\n                method: 'getstatus',\n                parameters: { subscribe: true },\n                onSuccess: function (result) {\n                    console.log(\"subscribe:result:\"+JSON.stringify(result));\n\n                    if (!result.isInternetConnectionAvailable) {\n                        if (navigator.onLine) {\n                            console.log(\"Firing event:offline\");\n                            cordova.fireDocumentEvent(\"offline\");\n                        }\n                    } else {\n                        console.log(\"Firing event:online\");\n                        cordova.fireDocumentEvent(\"online\");\n                    }\n                },\n                onFailure: function(e) {\n                    console.error(\"subscribe:error\");\n                }\n            });\n\n        });\n    },\n    merges: {\n        navigator: {\n            children: {\n                service: {\n                    path: \"cordova/plugin/webos/service\"\n                },\n                application: {\n                    path: \"cordova/plugin/webos/application\"\n                },\n                window: {\n                    path: \"cordova/plugin/webos/window\"\n                },\n                notification: {\n                    path: \"cordova/plugin/webos/notification\"\n                },\n                orientation: {\n                    path: \"cordova/plugin/webos/orientation\"\n                },\n                keyboard: {\n                    path: \"cordova/plugin/webos/keyboard\"\n                }\n            }\n        }\n    }\n};\n\n});\n\n//@ sourceURL=lib/webos/platform.js")} catch(e) {console.log("exception: in lib/webos/platform.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/Acceleration\", function(require, exports, module) {\n\nvar Acceleration = function(x, y, z, timestamp) {\n    this.x = x;\n    this.y = y;\n    this.z = z;\n    this.timestamp = timestamp || (new Date()).getTime();\n};\n\nmodule.exports = Acceleration;\n\n});\n\n//@ sourceURL=lib/common/plugin/Acceleration.js")} catch(e) {console.log("exception: in lib/common/plugin/Acceleration.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/Camera\", function(require, exports, module) {\n\nvar argscheck = require('cordova/argscheck'),\n    exec = require('cordova/exec'),\n    Camera = require('cordova/plugin/CameraConstants');\n\nvar cameraExport = {};\n\n// Tack on the Camera Constants to the base camera plugin.\nfor (var key in Camera) {\n    cameraExport[key] = Camera[key];\n}\n\n/**\n * Gets a picture from source defined by \"options.sourceType\", and returns the\n * image as defined by the \"options.destinationType\" option.\n\n * The defaults are sourceType=CAMERA and destinationType=FILE_URI.\n *\n * @param {Function} successCallback\n * @param {Function} errorCallback\n * @param {Object} options\n */\ncameraExport.getPicture = function(successCallback, errorCallback, options) {\n    argscheck.checkArgs('fFO', 'Camera.getPicture', arguments);\n    options = options || {};\n    var getValue = argscheck.getValue;\n\n    var quality = getValue(options.quality, 50);\n    var destinationType = getValue(options.destinationType, Camera.DestinationType.FILE_URI);\n    var sourceType = getValue(options.sourceType, Camera.PictureSourceType.CAMERA);\n    var targetWidth = getValue(options.targetWidth, -1);\n    var targetHeight = getValue(options.targetHeight, -1);\n    var encodingType = getValue(options.encodingType, Camera.EncodingType.JPEG);\n    var mediaType = getValue(options.mediaType, Camera.MediaType.PICTURE);\n    var allowEdit = !!options.allowEdit;\n    var correctOrientation = !!options.correctOrientation;\n    var saveToPhotoAlbum = !!options.saveToPhotoAlbum;\n    var popoverOptions = getValue(options.popoverOptions, null);\n\n    var args = [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType,\n                mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, popoverOptions];\n\n    exec(successCallback, errorCallback, \"Camera\", \"takePicture\", args);\n};\n\ncameraExport.cleanup = function(successCallback, errorCallback) {\n    exec(successCallback, errorCallback, \"Camera\", \"cleanup\", []);\n};\n\nmodule.exports = cameraExport;\n\n});\n\n//@ sourceURL=lib/common/plugin/Camera.js")} catch(e) {console.log("exception: in lib/common/plugin/Camera.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/CameraConstants\", function(require, exports, module) {\n\nmodule.exports = {\n  DestinationType:{\n    DATA_URL: 0,         // Return base64 encoded string\n    FILE_URI: 1,         // Return file uri (content://media/external/images/media/2 for Android)\n    NATIVE_URI: 2        // Return native uri (eg. asset-library://... for iOS)\n  },\n  EncodingType:{\n    JPEG: 0,             // Return JPEG encoded image\n    PNG: 1               // Return PNG encoded image\n  },\n  MediaType:{\n    PICTURE: 0,          // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType\n    VIDEO: 1,            // allow selection of video only, ONLY RETURNS URL\n    ALLMEDIA : 2         // allow selection from all media types\n  },\n  PictureSourceType:{\n    PHOTOLIBRARY : 0,    // Choose image from picture library (same as SAVEDPHOTOALBUM for Android)\n    CAMERA : 1,          // Take picture from camera\n    SAVEDPHOTOALBUM : 2  // Choose image from picture library (same as PHOTOLIBRARY for Android)\n  },\n  PopoverArrowDirection:{\n      ARROW_UP : 1,        // matches iOS UIPopoverArrowDirection constants to specify arrow location on popover\n      ARROW_DOWN : 2,\n      ARROW_LEFT : 4,\n      ARROW_RIGHT : 8,\n      ARROW_ANY : 15\n  }\n};\n\n});\n\n//@ sourceURL=lib/common/plugin/CameraConstants.js")} catch(e) {console.log("exception: in lib/common/plugin/CameraConstants.js: " + e);console.log(e.stack);}
@@ -107,7 +107,7 @@
 try {eval("define(\"cordova/plugin/webos/filereader\", function(require, exports, module) {\n\nvar FileError = require('cordova/plugin/FileError'),\n    ProgressEvent = require('cordova/plugin/ProgressEvent');\n\nvar FileReader = function() {\n    this.fileName = \"\";\n\n    this.readyState = 0; // FileReader.EMPTY\n\n    // File data\n    this.result = null;\n\n    // Error\n    this.error = null;\n\n    // Event handlers\n    this.onloadstart = null;    // When the read starts.\n    this.onprogress = null;     // While reading (and decoding) file or fileBlob data, and reporting partial file data (progess.loaded/progress.total)\n    this.onload = null;         // When the read has successfully completed.\n    this.onerror = null;        // When the read has failed (see errors).\n    this.onloadend = null;      // When the request has completed (either in success or failure).\n    this.onabort = null;        // When the read has been aborted. For instance, by invoking the abort() method.\n};\n\nFileReader.prototype.readAsText = function(file, encoding) {\n    console.error(\"webos plugin filereader readastext:\" + file);\n    //Mojo has no file i/o yet, so we use an xhr. very limited\n\n    // Already loading something\n    if (this.readyState == FileReader.LOADING) {\n        throw new FileError(FileError.INVALID_STATE_ERR);\n    }\n\n    // LOADING state\n    this.readyState = FileReader.LOADING;\n\n    // If loadstart callback\n    if (typeof this.onloadstart === \"function\") {\n        this.onloadstart(new ProgressEvent(\"loadstart\", {target:this}));\n    }\n\n    // Default encoding is UTF-8\n    var enc = encoding ? encoding : \"UTF-8\";\n\n    var me = this;\n\n    var xhr = new XMLHttpRequest();\n    xhr.onreadystatechange = function() {\n        console.error(\"onreadystatechange:\"+xhr.readyState+\" \"+xhr.status);\n        if (xhr.readyState == 4) {\n            if (xhr.status == 200 && xhr.responseText) {\n                console.error(\"file read completed\");\n                // Save result\n                me.result = xhr.responseText;\n\n                // If onload callback\n                if (typeof me.onload === \"function\") {\n                    me.onload(new ProgressEvent(\"load\", {target:me}));\n                }\n\n                // DONE state\n                me.readyState = FileReader.DONE;\n\n                // If onloadend callback\n                if (typeof me.onloadend === \"function\") {\n                    me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n                }\n\n            } else {\n                // If DONE (cancelled), then don't do anything\n                if (me.readyState === FileReader.DONE) {\n                    return;\n                }\n\n                // DONE state\n                me.readyState = FileReader.DONE;\n\n                me.result = null;\n\n                // Save error\n                me.error = new FileError(FileError.NOT_FOUND_ERR);\n\n                // If onerror callback\n                if (typeof me.onerror === \"function\") {\n                    me.onerror(new ProgressEvent(\"error\", {target:me}));\n                }\n\n                // If onloadend callback\n                if (typeof me.onloadend === \"function\") {\n                    me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n                }\n            }\n        }\n    };\n    xhr.open(\"GET\", file, true);\n    xhr.send();\n};\n\nmodule.exports = FileReader;\n\n});\n\n//@ sourceURL=lib/webos/plugin/webos/filereader.js")} catch(e) {console.log("exception: in lib/webos/plugin/webos/filereader.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/webos/geolocation\", function(require, exports, module) {\n\nvar service = require('cordova/plugin/webos/service');\n\nmodule.exports = {\n    getLocation: function(successCallback, errorCallback, options) {\n        console.error(\"webos plugin geolocation getlocation\");\n        var request = service.Request('palm://com.palm.location', {\n            method: \"getCurrentPosition\",\n            onSuccess: function(event) {\n                var alias={};\n                alias.lastPosition = {\n                    coords: {\n                        latitude: event.latitude,\n                        longitude: event.longitude,\n                        altitude: (event.altitude >= 0 ? event.altitude: null),\n                        speed: (event.velocity >= 0 ? event.velocity: null),\n                        heading: (event.heading >= 0 ? event.heading: null),\n                        accuracy: (event.horizAccuracy >= 0 ? event.horizAccuracy: null),\n                        altitudeAccuracy: (event.vertAccuracy >= 0 ? event.vertAccuracy: null)\n                    },\n                    timestamp: new Date().getTime()\n                };\n\n                successCallback(alias.lastPosition);\n            },\n            onFailure: function() {\n                errorCallback();\n            }\n        });\n    }\n};\n\n});\n\n//@ sourceURL=lib/webos/plugin/webos/geolocation.js")} catch(e) {console.log("exception: in lib/webos/plugin/webos/geolocation.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/webos/keyboard\", function(require, exports, module) {\n\nvar _isShowing = null,\n    _manual = null;\n\nmodule.exports = {\n    types: {\n        text: 0,\n        password: 1,\n        search: 2,\n        range: 3,\n        email: 4,\n        number: 5,\n        phone: 6,\n        url: 7,\n        color: 8\n    },\n    isShowing: function() {\n        return !!_isShowing;\n    },\n    show: function(type){\n        if(this.isManualMode()) {\n            PalmSystem.keyboardShow(type || 0);\n        }\n    },\n    hide: function(){\n        if(this.isManualMode()) {\n            PalmSystem.keyboardHide();\n        }\n    },\n    setManualMode: function(mode){\n        _manual = mode;\n        PalmSystem.setManualKeyboardEnabled(mode);\n    },\n    isManualMode: function(){\n        return _manual || false;\n    },\n    forceShow: function(inType){\n        this.setManualMode(true);\n        PalmSystem.keyboardShow(inType || 0);\n    },\n    forceHide: function(){\n        this.setManualMode(true);\n        PalmSystem.keyboardHide();\n    }\n};\n\n});\n\n//@ sourceURL=lib/webos/plugin/webos/keyboard.js")} catch(e) {console.log("exception: in lib/webos/plugin/webos/keyboard.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/plugin/webos/network\", function(require, exports, module) {\n\nvar service=require('cordova/plugin/webos/service'),\n    Connection = require('cordova/plugin/Connection');\n\nmodule.exports = {\n    /**\n     * Get connection info\n     *\n     * @param {Function} successCallback The function to call when the Connection data is available\n     * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)\n     */\n    getConnectionInfo: function (successCallback, errorCallback) {\n        // Get info\n        console.log(\"webos Plugin: NetworkStatus - getConnectionInfo\");\n\n        service.Request('palm://com.palm.connectionmanager', {\n            method: 'getstatus',\n            parameters: {},\n            onSuccess: function (result) {\n                console.log(\"result:\"+JSON.stringify(result));\n\n                var info={};\n                if (!result.isInternetConnectionAvailable) { info.type=Connection.NONE; }\n                if (result.wifi.onInternet) { info.type=Connection.WIFI; }\n                if (result.wan.state===\"connected\") { info.type=Connection.CELL_2G; }\n\n                successCallback(info.type);\n            },\n            onFailure: errorCallback\n        });\n    }\n};\n\n});\n\n//@ sourceURL=lib/webos/plugin/webos/network.js")} catch(e) {console.log("exception: in lib/webos/plugin/webos/network.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/plugin/webos/network\", function(require, exports, module) {\n\nvar service=require('cordova/plugin/webos/service'),\n    Connection = require('cordova/plugin/Connection');\n\nmodule.exports = {\n    /**\n     * Get connection info\n     *\n     * @param {Function} successCallback The function to call when the Connection data is available\n     * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)\n     */\n    getConnectionInfo: function (successCallback, errorCallback) {\n        // Get info\n        console.log(\"webos Plugin: NetworkStatus - getConnectionInfo\");\n\n        service.Request('palm://com.palm.connectionmanager', {\n            method: 'getstatus',\n            parameters: {},\n            onSuccess: function (result) {\n                console.log(\"result:\"+JSON.stringify(result));\n\n                var info={};\n                if (!result.isInternetConnectionAvailable) { info.type=Connection.NONE; }\n                if (result.wifi && result.wifi.onInternet) { info.type=Connection.WIFI; }\n                if (result.wan && result.wan.state===\"connected\") { info.type=Connection.CELL_2G; }\n\n                successCallback(info.type);\n            },\n            onFailure: errorCallback\n        });\n    }\n};\n\n});\n\n//@ sourceURL=lib/webos/plugin/webos/network.js")} catch(e) {console.log("exception: in lib/webos/plugin/webos/network.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/webos/notification\", function(require, exports, module) {\n\nmodule.exports = {\n    /*\n     * adds a dashboard to the WebOS app\n     * @param {String} url\n     * @param {String} html\n     * Example:\n     *        navigator.notification.newDashboard(\"dashboard.html\");\n     */\n    newDashboard: function(url, html) {\n        var win = window.open(url, \"_blank\", \"attributes={\\\"window\\\":\\\"dashboard\\\"}\");\n        html && win.document.write(html);\n        win.PalmSystem.stageReady();\n    },\n\n    /*\n     * Displays a banner notification. If specified, will send your 'response' object as data via the 'palmsystem' DOM event.\n     * If no 'icon' filename is specified, will use a small version of your application icon.\n     * @param {String} message\n     * @param {Object} response\n     * @param {String} icon\n     * @param {String} soundClass class of the sound; supported classes are: \"ringtones\", \"alerts\", \"alarm\", \"calendar\", \"notification\"\n     * @param {String} soundFile partial or full path to the sound file\n     * @param {String} soundDurationMs of sound in ms\n     * Example:\n     *        navigator.notification.showBanner('test message');\n     */\n    showBanner: function(message, response, icon, soundClass, soundFile, soundDurationMs) {\n        response = response || {\n            banner: true\n        };\n        PalmSystem.addBannerMessage(message, JSON.stringify(response), icon, soundClass, soundFile, soundDurationMs);\n    },\n\n    /**\n     * Remove a banner from the banner area. The category parameter defaults to 'banner'. Will not remove\n     * messages that are already displayed.\n     * @param {String} category\n            Value defined by the application and usually same one used in {@link showBanner}.\n            It is used if you have more than one kind of banner message.\n     */\n    removeBannerMessage: function(category) {\n        var bannerKey = category || 'banner';\n        var bannerId = this.banners.get(bannerKey);\n        if (bannerId) {\n            try {\n                PalmSystem.removeBannerMessage(bannerId);\n            } catch(removeBannerException) {\n                window.debug.error(removeBannerException.toString());\n            }\n        }\n    },\n\n    /*\n     * Remove all pending banner messages from the banner area. Will not remove messages that are already displayed.\n     */\n    clearBannerMessage: function() {\n        PalmSystem.clearBannerMessage();\n    },\n\n    /*\n     * This function vibrates the device\n     * @param {number} duration The duration in ms to vibrate for.\n     * @param {number} intensity The intensity of the vibration\n     */\n    vibrate_private: function(duration, intensity) {\n        //the intensity for palm is inverted; 0=high intensity, 100=low intensity\n        //this is opposite from our api, so we invert\n        if (isNaN(intensity) || intensity > 100 || intensity <= 0)\n        intensity = 0;\n        else\n        intensity = 100 - intensity;\n\n        // if the app id does not have the namespace \"com.palm.\", an error will be thrown here\n        //this.vibhandle = new Mojo.Service.Request(\"palm://com.palm.vibrate\", {\n        this.vibhandle = navigator.service.Request(\"palm://com.palm.vibrate\", {\n            method: 'vibrate',\n            parameters: {\n                'period': intensity,\n                'duration': duration\n            }\n        },\n        false);\n    },\n\n    vibrate: function(param) {\n        PalmSystem.playSoundNotification('vibrate');\n    },\n    /*\n     * Plays the specified sound\n     * @param {String} soundClass class of the sound; supported classes are: \"ringtones\", \"alerts\", \"alarm\", \"calendar\", \"notification\"\n     * @param {String} soundFile partial or full path to the sound file\n     * @param {String} soundDurationMs of sound in ms\n     */\n    beep: function(param) {\n        PalmSystem.playSoundNotification('alerts');\n    },\n\n    getRootWindow: function() {\n        var w = window.opener || window.rootWindow || window.top || window;\n        if(!w.setTimeout) { // use this window as the root if we don't have access to the real root.\n            w = window;\n        }\n        return w;\n    },\n\n    open: function(inOpener, inUrl, inName, inAttributes, inWindowInfo) {\n        var url = inUrl;\n        var a = inAttributes && JSON.stringify(inAttributes);\n        a = \"attributes=\" + a;\n        var i = inWindowInfo ? inWindowInfo + \", \" : \"\";\n        return inOpener.open(url, inName, i + a);\n    },\n\n    openWindow: function(inUrl, inName, inParams, inAttributes, inWindowInfo) {\n        //var attributes = inAttributes || {};\n        //attributes.window = attributes.window || \"card\";\n        // NOTE: make the root window open all windows.\n        return this.open(this.getRootWindow(), inUrl, inName || \"\", inAttributes, inWindowInfo);\n    },\n\n    alert: function(message,callback,title,buttonName) {\n        var inAttributes = {};\n        //inAttributes.window = \"card\"; // create card\n        inAttributes.window = \"popupalert\"; // create popup\n        //inAttributes.window=\"dashboard\"; // create dashboard\n        var html='<html><head><script>setTimeout(function(f){var el=window.document.getElementById(\"b1\");console.error(el);el.addEventListener(\"click\",function(f){window.close();},false);},500);</script></head><body>'+message+'<br/><button id=\"b1\">'+buttonName+'</button></body></html>';\n        var inName=\"PopupAlert\";\n        var inUrl=\"\";\n        var inParams={};\n        var inHeight=120;\n        var w = this.openWindow(inUrl, inName, inParams, inAttributes, \"height=\" + (inHeight || 200));\n        w.document.write(html);\n        w.PalmSystem.stageReady();\n    }\n};\n\n});\n\n//@ sourceURL=lib/webos/plugin/webos/notification.js")} catch(e) {console.log("exception: in lib/webos/plugin/webos/notification.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/webos/orientation\", function(require, exports, module) {\n\nmodule.exports = {\n    setOrientation: function(orientation) {\n        PalmSystem.setWindowOrientation(orientation);\n    },\n\n    /*\n     * Returns the current window orientation\n     * orientation is one of 'up', 'down', 'left', 'right', or 'free'\n     */\n    getCurrentOrientation: function() {\n          return PalmSystem.windowOrientation;\n    }\n};\n\n});\n\n//@ sourceURL=lib/webos/plugin/webos/orientation.js")} catch(e) {console.log("exception: in lib/webos/plugin/webos/orientation.js: " + e);console.log(e.stack);}
 try {eval("define(\"cordova/plugin/webos/requestfilesystem\", function(require, exports, module) {\n\nmodule.exports = function(type,size,successCallback,errorCallback) {\n    console.error(\"requestFileSystem\");\n\n    var theFileSystem={};\n    theFileSystem.name=\"webOS\";\n    theFileSystem.root={};\n    theFileSystem.root.name=\"Root\";\n\n    theFileSystem.root.getFile=function(filename,options,successCallback,errorCallback) {\n        console.error(\"getFile\");\n        if (options.create) { errorCallback(); }\n        var theFile=filename;\n        successCallback(theFile);\n    };\n\n    successCallback(theFileSystem);\n};\n\n});\n\n//@ sourceURL=lib/webos/plugin/webos/requestfilesystem.js")} catch(e) {console.log("exception: in lib/webos/plugin/webos/requestfilesystem.js: " + e);console.log(e.stack);}
diff --git a/lib/cordova.webos.js b/lib/cordova.webos.js
index c764d79..a8fc583 100644
--- a/lib/cordova.webos.js
+++ b/lib/cordova.webos.js
@@ -1,8 +1,8 @@
 // Platform: webos
 
-// commit ab5e7db58d684da1403ab6059a80f3b4635bde4d
+// commit 0f40ae8ab0eb19efecf6dd3be09106feec417bef
 
-// File generated at :: Tue Feb 05 2013 13:01:43 GMT-0800 (PST)
+// File generated at :: Tue Feb 19 2013 13:48:03 GMT-0800 (PST)
 
 /*
  Licensed to the Apache Software Foundation (ASF) under one
@@ -1106,7 +1106,8 @@
             window.PalmSystem.stageReady();
         }
 
-        var Mojo = window.Mojo || {};
+        // create global Mojo object if it does not exist
+        Mojo = window.Mojo || {};
 
         // wait for deviceready before listening and firing document events
         document.addEventListener("deviceready", function () {
@@ -5845,8 +5846,8 @@
 
                 var info={};
                 if (!result.isInternetConnectionAvailable) { info.type=Connection.NONE; }
-                if (result.wifi.onInternet) { info.type=Connection.WIFI; }
-                if (result.wan.state==="connected") { info.type=Connection.CELL_2G; }
+                if (result.wifi && result.wifi.onInternet) { info.type=Connection.WIFI; }
+                if (result.wan && result.wan.state==="connected") { info.type=Connection.CELL_2G; }
 
                 successCallback(info.type);
             },