From 9d0fe029786def71dc5687efd11bec5948ccf7e3 Mon Sep 17 00:00:00 2001 From: Wanja Date: Thu, 22 Mar 2012 18:43:31 +0100 Subject: [PATCH] Introduced PhoneGap as a framework. --- .classpath | 1 + AndroidManifest.xml | 28 +- assets/www/cordova-1.5.0.js | 4841 +++++++++++++++++ assets/www/index.html | 10 + libs/cordova-1.5.0.jar | Bin 0 -> 160098 bytes project.properties | 2 +- res/xml/cordova.xml | 5 + res/xml/plugins.xml | 19 + .../androtafl/AndrotaflActivity.java | 10 +- src/ch/chrummibei/androtafl/Move.java | 6 - src/ch/chrummibei/androtafl/Position.java | 6 - src/ch/chrummibei/androtafl/TaflGame.java | 6 - 12 files changed, 4910 insertions(+), 24 deletions(-) create mode 100644 assets/www/cordova-1.5.0.js create mode 100644 assets/www/index.html create mode 100644 libs/cordova-1.5.0.jar create mode 100644 res/xml/cordova.xml create mode 100644 res/xml/plugins.xml delete mode 100644 src/ch/chrummibei/androtafl/Move.java delete mode 100644 src/ch/chrummibei/androtafl/Position.java delete mode 100644 src/ch/chrummibei/androtafl/TaflGame.java diff --git a/.classpath b/.classpath index a4f1e40..135a535 100644 --- a/.classpath +++ b/.classpath @@ -4,5 +4,6 @@ + diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 2ff50f6..482c8d0 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -5,13 +5,39 @@ android:versionName="1.0" > + + + + + + + + + + + + + + + + + + + android:debuggable="true" + android:label="@string/app_name" + android:configChanges="orientation|keyboardHidden" > diff --git a/assets/www/cordova-1.5.0.js b/assets/www/cordova-1.5.0.js new file mode 100644 index 0000000..66280ba --- /dev/null +++ b/assets/www/cordova-1.5.0.js @@ -0,0 +1,4841 @@ +/* + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================== +This product also include the following software: +============================================================== + +-------------------------------------------------------------- +jasmine from GitHub + + https://github.com/pivotal/jasmine + +MIT-style license + +license available from: + + https://github.com/pivotal/jasmine/blob/master/MIT.LICENSE + +----------------------------- + +Copyright (c) 2008-2011 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +-------------------------------------------------------------- +commonjs tests from the commonjs organization at GitHub + + https://github.com/commonjs/commonjs + +MIT-style license + +license available from: + + https://github.com/commonjs/commonjs/blob/master/docs/license.html.markdown + +contributor list available from: + + https://github.com/commonjs/commonjs/blob/master/docs/contributors.html.markdown + +----------------------------- + +Copyright 2009 Kevin Dangoor +Copyright 2009 Ihab Awad +Copyright 2009 Ash Berlin +Copyright 2009 Aristid Breitkreuz +Copyright 2009 Kevin Dangoor +Copyright 2009 Daniel Friesen +Copyright 2009 Wes Garland +Copyright 2009 Kris Kowal +Copyright 2009 Dean Landolt +Copyright 2009 Peter Michaux +Copyright 2009 George Moschovitis +Copyright 2009 Michael O'Brien +Copyright 2009 Tom Robinson +Copyright 2009 Hannes Wallnoefer +Copyright 2009 Mike Wilson +Copyright 2009 Ondrej Zara +Copyright 2009 Chris Zumbrunn +Copyright 2009 Kris Zyp + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ +var require, + define; + +(function () { + var modules = {}; + + function build(module) { + var factory = module.factory; + module.exports = {}; + delete module.factory; + factory(require, module.exports, module); + return module.exports; + } + + require = function (id) { + if (!modules[id]) { + throw "module " + id + " not found"; + } + return modules[id].factory ? build(modules[id]) : modules[id].exports; + } + + define = function (id, factory) { + if (modules[id]) { + throw "module " + id + " already defined"; + } + + modules[id] = { + id: id, + factory: factory + }; + } + + define.remove = function (id) { + delete modules[id]; + }; + +})(); + +//Export for use in node +if (typeof module === "object" && typeof require === "function") { + module.exports.require = require; + module.exports.define = define; +} + +define('cordova/channel', function(require, exports, module) { +/** + * Custom pub-sub channel that can have functions subscribed to it + * @constructor + * @param type String the channel name + * @param opts Object options to pass into the channel, currently + * supports: + * onSubscribe: callback that fires when + * something subscribes to the Channel. Sets + * context to the Channel. + * onUnsubscribe: callback that fires when + * something unsubscribes to the Channel. Sets + * context to the Channel. + */ +var Channel = function(type, opts) { + this.type = type; + this.handlers = {}; + this.numHandlers = 0; + this.guid = 0; + this.fired = false; + this.enabled = true; + this.events = { + onSubscribe:null, + onUnsubscribe:null + }; + if (opts) { + if (opts.onSubscribe) this.events.onSubscribe = opts.onSubscribe; + if (opts.onUnsubscribe) this.events.onUnsubscribe = opts.onUnsubscribe; + } + }, + channel = { + /** + * Calls the provided function only after all of the channels specified + * have been fired. + */ + join: function (h, c) { + var i = c.length; + var len = i; + var f = function() { + if (!(--i)) h(); + }; + for (var j=0; j 0) { + eval("var v="+r+";"); + + // If status is OK, then return value back to caller + if (v.status === cordova.callbackStatus.OK) { + + // If there is a success callback, then call it now with + // returned value + if (success) { + try { + success(v.message); + } catch (e) { + console.log("Error in success callback: " + callbackId + " = " + e); + } + + // Clear callback if not expecting any more results + if (!v.keepCallback) { + delete cordova.callbacks[callbackId]; + } + } + return v.message; + } + + // If no result + else if (v.status === cordova.callbackStatus.NO_RESULT) { + // Clear callback if not expecting any more results + if (!v.keepCallback) { + delete cordova.callbacks[callbackId]; + } + } + + // If error, then display error + else { + console.log("Error: Status="+v.status+" Message="+v.message); + + // If there is a fail callback, then call it now with returned value + if (fail) { + try { + fail(v.message); + } + catch (e1) { + console.log("Error in error callback: "+callbackId+" = "+e1); + } + + // Clear callback if not expecting any more results + if (!v.keepCallback) { + delete cordova.callbacks[callbackId]; + } + } + return null; + } + } + } catch (e2) { + console.log("Error: "+e2); + } +}; + +}); +define('cordova/common', function(require, exports, module) { +module.exports = { + objects: { + cordova: { + path: 'cordova', + children: { + exec: { + path: 'cordova/exec' + } + } + }, + navigator: { + children: { + notification: { + path: 'cordova/plugin/notification' + }, + accelerometer: { + path: 'cordova/plugin/accelerometer' + }, + battery: { + path: 'cordova/plugin/battery' + }, + camera:{ + path: 'cordova/plugin/Camera' + }, + compass:{ + path: 'cordova/plugin/compass' + }, + contacts: { + path: 'cordova/plugin/contacts' + }, + device:{ + children:{ + capture: { + path: 'cordova/plugin/capture' + } + } + }, + geolocation: { + path: 'cordova/plugin/geolocation' + }, + network: { + children: { + connection: { + path: 'cordova/plugin/network' + } + } + } + } + }, + Acceleration: { + path: 'cordova/plugin/Acceleration' + }, + Camera:{ + path: 'cordova/plugin/CameraConstants' + }, + CaptureError: { + path: 'cordova/plugin/CaptureError' + }, + CaptureAudioOptions:{ + path: 'cordova/plugin/CaptureAudioOptions' + }, + CaptureImageOptions: { + path: 'cordova/plugin/CaptureImageOptions' + }, + CaptureVideoOptions: { + path: 'cordova/plugin/CaptureVideoOptions' + }, + CompassHeading:{ + path: 'cordova/plugin/CompassHeading' + }, + CompassError:{ + path: 'cordova/plugin/CompassError' + }, + ConfigurationData: { + path: 'cordova/plugin/ConfigurationData' + }, + Connection: { + path: 'cordova/plugin/Connection' + }, + Contact: { + path: 'cordova/plugin/Contact' + }, + ContactAddress: { + path: 'cordova/plugin/ContactAddress' + }, + ContactError: { + path: 'cordova/plugin/ContactError' + }, + ContactField: { + path: 'cordova/plugin/ContactField' + }, + ContactFindOptions: { + path: 'cordova/plugin/ContactFindOptions' + }, + ContactName: { + path: 'cordova/plugin/ContactName' + }, + ContactOrganization: { + path: 'cordova/plugin/ContactOrganization' + }, + Coordinates: { + path: 'cordova/plugin/Coordinates' + }, + DirectoryEntry: { + path: 'cordova/plugin/DirectoryEntry' + }, + DirectoryReader: { + path: 'cordova/plugin/DirectoryReader' + }, + Entry: { + path: 'cordova/plugin/Entry' + }, + File: { + path: 'cordova/plugin/File' + }, + FileEntry: { + path: 'cordova/plugin/FileEntry' + }, + FileError: { + path: 'cordova/plugin/FileError' + }, + FileReader: { + path: 'cordova/plugin/FileReader' + }, + FileSystem: { + path: 'cordova/plugin/FileSystem' + }, + FileTransfer: { + path: 'cordova/plugin/FileTransfer' + }, + FileTransferError: { + path: 'cordova/plugin/FileTransferError' + }, + FileUploadOptions: { + path: 'cordova/plugin/FileUploadOptions' + }, + FileUploadResult: { + path: 'cordova/plugin/FileUploadResult' + }, + FileWriter: { + path: 'cordova/plugin/FileWriter' + }, + Flags: { + path: 'cordova/plugin/Flags' + }, + LocalFileSystem: { + path: 'cordova/plugin/LocalFileSystem' + }, + Media: { + path: 'cordova/plugin/Media' + }, + MediaError: { + path: 'cordova/plugin/MediaError' + }, + MediaFile: { + path: 'cordova/plugin/MediaFile' + }, + MediaFileData:{ + path: 'cordova/plugin/MediaFileData' + }, + Metadata:{ + path: 'cordova/plugin/Metadata' + }, + Position: { + path: 'cordova/plugin/Position' + }, + PositionError: { + path: 'cordova/plugin/PositionError' + }, + ProgressEvent: { + path: 'cordova/plugin/ProgressEvent' + }, + requestFileSystem:{ + path: 'cordova/plugin/requestFileSystem' + }, + resolveLocalFileSystemURI:{ + path: 'cordova/plugin/resolveLocalFileSystemURI' + } + } +}; + +}); +define('cordova/platform', function(require, exports, module) { +module.exports = { + id: "android", + initialize:function() { + var channel = require("cordova/channel"), + cordova = require('cordova'), + callback = require('cordova/plugin/android/callback'), + polling = require('cordova/plugin/android/polling'), + exec = require('cordova/exec'); + + channel.onDestroy.subscribe(function() { + cordova.shuttingDown = true; + }); + + // Start listening for XHR callbacks + // Figure out which bridge approach will work on this Android + // device: polling or XHR-based callbacks + setTimeout(function() { + if (cordova.UsePolling) { + polling(); + } + else { + var isPolling = prompt("usePolling", "gap_callbackServer:"); + cordova.UsePolling = isPolling; + if (isPolling == "true") { + cordova.UsePolling = true; + polling(); + } else { + cordova.UsePolling = false; + callback(); + } + } + }, 1); + + // Inject a listener for the backbutton on the document. + var backButtonChannel = cordova.addDocumentEventHandler('backbutton', { + onSubscribe:function() { + // If we just attached the first handler, let native know we need to override the back button. + if (this.numHandlers === 1) { + exec(null, null, "App", "overrideBackbutton", [true]); + } + }, + onUnsubscribe:function() { + // If we just detached the last handler, let native know we no longer override the back button. + if (this.numHandlers === 0) { + exec(null, null, "App", "overrideBackbutton", [false]); + } + } + }); + + // Add hardware MENU and SEARCH button handlers + cordova.addDocumentEventHandler('menubutton'); + cordova.addDocumentEventHandler('searchbutton'); + + // Let native code know we are all done on the JS side. + // Native code will then un-hide the WebView. + channel.join(function() { + prompt("", "gap_init:"); + }, [channel.onCordovaReady]); + + // Figure out if we need to shim-in localStorage and WebSQL + // support from the native side. + var storage = require('cordova/plugin/android/storage'); + + // First patch WebSQL if necessary + if (typeof window.openDatabase == 'undefined') { + // Not defined, create an openDatabase function for all to use! + window.openDatabase = storage.openDatabase; + } else { + // Defined, but some Android devices will throw a SECURITY_ERR - + // so we wrap the whole thing in a try-catch and shim in our own + // if the device has Android bug 16175. + var originalOpenDatabase = window.openDatabase; + window.openDatabase = function(name, version, desc, size) { + var db = null; + try { + db = originalOpenDatabase(name, version, desc, size); + } + catch (ex) { + db = null; + } + + if (db === null) { + return storage.openDatabase(name, version, desc, size); + } + else { + return db; + } + + }; + } + + // Patch localStorage if necessary + if (typeof window.localStorage == 'undefined' || window.localStorage === null) { + window.localStorage = new storage.CupCakeLocalStorage(); + } + }, + objects: { + cordova: { + children: { + JSCallback:{ + path:"cordova/plugin/android/callback" + }, + JSCallbackPolling:{ + path:"cordova/plugin/android/polling" + } + } + }, + navigator: { + children: { + app:{ + path: "cordova/plugin/android/app" + } + } + }, + device:{ + path: "cordova/plugin/android/device" + }, + File: { // exists natively on Android WebView, override + path: "cordova/plugin/File" + }, + FileReader: { // exists natively on Android WebView, override + path: "cordova/plugin/FileReader" + }, + FileError: { //exists natively on Android WebView on Android 4.x + path: "cordova/plugin/FileError" + } + } +}; + +}); +define('cordova/utils', function(require, exports, module) { +function UUIDcreatePart(length) { + var uuidpart = ""; + for (var i=0; i frequency + 10 sec + exec( + function(timeout) { + if (timeout < (frequency + 10000)) { + exec(null, null, "Accelerometer", "setTimeout", [frequency + 10000]); + } + }, + function(e) { }, "Accelerometer", "getTimeout", []); + + // Start watch timer + var id = utils.createUUID(); + timers[id] = window.setInterval(function() { + exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []); + }, (frequency ? frequency : 1)); + + return id; + }, + + /** + * Clears the specified accelerometer watch. + * + * @param {String} id The id of the watch returned from #watchAcceleration. + */ + clearWatch: function(id) { + + // Stop javascript timer & remove from timer list + if (id && timers[id] !== undefined) { + window.clearInterval(timers[id]); + delete timers[id]; + } + } +}; + +module.exports = accelerometer; + +}); + + +define('cordova/plugin/battery', function(require, exports, module) { +/** + * This class contains information about the current battery status. + * @constructor + */ +var cordova = require('cordova'), + exec = require('cordova/exec'); + +function handlers() { + return battery.channels.batterystatus.numHandlers + + battery.channels.batterylow.numHandlers + + battery.channels.batterycritical.numHandlers; +} + +var Battery = function() { + this._level = null; + this._isPlugged = null; + // Create new event handlers on the window (returns a channel instance) + var subscriptionEvents = { + onSubscribe:this.onSubscribe, + onUnsubscribe:this.onUnsubscribe + }; + this.channels = { + batterystatus:cordova.addWindowEventHandler("batterystatus", subscriptionEvents), + batterylow:cordova.addWindowEventHandler("batterylow", subscriptionEvents), + batterycritical:cordova.addWindowEventHandler("batterycritical", subscriptionEvents) + }; +}; +/** + * Event handlers for when callbacks get registered for the battery. + * Keep track of how many handlers we have so we can start and stop the native battery listener + * appropriately (and hopefully save on battery life!). + */ +Battery.prototype.onSubscribe = function() { + var me = battery; + // If we just registered the first handler, make sure native listener is started. + if (handlers() === 1) { + exec(me._status, me._error, "Battery", "start", []); + } +}; + +Battery.prototype.onUnsubscribe = function() { + var me = battery; + + // If we just unregistered the last handler, make sure native listener is stopped. + if (handlers() === 0) { + exec(null, null, "Battery", "stop", []); + } +}; + +/** + * Callback for battery status + * + * @param {Object} info keys: level, isPlugged + */ +Battery.prototype._status = function(info) { + if (info) { + var me = battery; + var level = info.level; + if (me._level !== level || me._isPlugged !== info.isPlugged) { + // Fire batterystatus event + cordova.fireWindowEvent("batterystatus", info); + + // Fire low battery event + if (level === 20 || level === 5) { + if (level === 20) { + cordova.fireWindowEvent("batterylow", info); + } + else { + cordova.fireWindowEvent("batterycritical", info); + } + } + } + me._level = level; + me._isPlugged = info.isPlugged; + } +}; + +/** + * Error callback for battery start + */ +Battery.prototype._error = function(e) { + console.log("Error initializing Battery: " + e); +}; + +var battery = new Battery(); + +module.exports = battery; + +}); + + +define('cordova/plugin/Camera', function(require, exports, module) { +var exec = require('cordova/exec'), + Camera = require('cordova/plugin/CameraConstants'); + +var cameraExport = {}; + +// Tack on the Camera Constants to the base camera plugin. +for (var key in Camera) { + cameraExport[key] = Camera[key]; +} + +/** + * Gets a picture from source defined by "options.sourceType", and returns the + * image as defined by the "options.destinationType" option. + + * The defaults are sourceType=CAMERA and destinationType=FILE_URL. + * + * @param {Function} successCallback + * @param {Function} errorCallback + * @param {Object} options + */ +cameraExport.getPicture = function(successCallback, errorCallback, options) { + // successCallback required + if (typeof successCallback != "function") { + console.log("Camera Error: successCallback is not a function"); + return; + } + + // errorCallback optional + if (errorCallback && (typeof errorCallback != "function")) { + console.log("Camera Error: errorCallback is not a function"); + return; + } + + var quality = 50; + if (options && typeof options.quality == "number") { + quality = options.quality; + } else if (options && typeof options.quality == "string") { + var qlity = parseInt(options.quality, 10); + if (isNaN(qlity) === false) { + quality = qlity.valueOf(); + } + } + + var destinationType = Camera.DestinationType.FILE_URL; + if (typeof options.destinationType == "number") { + destinationType = options.destinationType; + } + + var sourceType = Camera.PictureSourceType.CAMERA; + if (typeof options.sourceType == "number") { + sourceType = options.sourceType; + } + + var targetWidth = -1; + if (typeof options.targetWidth == "number") { + targetWidth = options.targetWidth; + } else if (typeof options.targetWidth == "string") { + var width = parseInt(options.targetWidth, 10); + if (isNaN(width) === false) { + targetWidth = width.valueOf(); + } + } + + var targetHeight = -1; + if (typeof options.targetHeight == "number") { + targetHeight = options.targetHeight; + } else if (typeof options.targetHeight == "string") { + var height = parseInt(options.targetHeight, 10); + if (isNaN(height) === false) { + targetHeight = height.valueOf(); + } + } + + var encodingType = Camera.EncodingType.JPEG; + if (typeof options.encodingType == "number") { + encodingType = options.encodingType; + } + // TODO: parse MediaType + // TODO: enable allow edit? + + exec(successCallback, errorCallback, "Camera", "takePicture", [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType]); +} + +module.exports = cameraExport; + +}); + +define('cordova/plugin/CameraConstants', function(require, exports, module) { +module.exports = { + DestinationType:{ + DATA_URL: 0, // Return base64 encoded string + FILE_URI: 1 // Return file uri (content://media/external/images/media/2 for Android) + }, + EncodingType:{ + JPEG: 0, // Return JPEG encoded image + PNG: 1 // Return PNG encoded image + }, + MediaType:{ + PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType + VIDEO: 1, // allow selection of video only, ONLY RETURNS URL + ALLMEDIA : 2 // allow selection from all media types + }, + PictureSourceType:{ + PHOTOLIBRARY : 0, // Choose image from picture library (same as SAVEDPHOTOALBUM for Android) + CAMERA : 1, // Take picture from camera + SAVEDPHOTOALBUM : 2 // Choose image from picture library (same as PHOTOLIBRARY for Android) + } +}; + +}); + +define('cordova/plugin/capture', function(require, exports, module) { +var exec = require('cordova/exec'), + MediaFile = require('cordova/plugin/MediaFile'); + +/** + * Launches a capture of different types. + * + * @param (DOMString} type + * @param {Function} successCB + * @param {Function} errorCB + * @param {CaptureVideoOptions} options + */ +function _capture(type, successCallback, errorCallback, options) { + var win = function(pluginResult) { + var mediaFiles = []; + var i; + for (i = 0; i < pluginResult.length; i++) { + var mediaFile = new MediaFile(); + mediaFile.name = pluginResult[i].name; + mediaFile.fullPath = pluginResult[i].fullPath; + mediaFile.type = pluginResult[i].type; + mediaFile.lastModifiedDate = pluginResult[i].lastModifiedDate; + mediaFile.size = pluginResult[i].size; + mediaFiles.push(mediaFile); + } + successCallback(mediaFiles); + }; + exec(win, errorCallback, "Capture", type, [options]); +} +/** + * The Capture interface exposes an interface to the camera and microphone of the hosting device. + */ +function Capture() { + this.supportedAudioModes = []; + this.supportedImageModes = []; + this.supportedVideoModes = []; +} + +/** + * Launch audio recorder application for recording audio clip(s). + * + * @param {Function} successCB + * @param {Function} errorCB + * @param {CaptureAudioOptions} options + */ +Capture.prototype.captureAudio = function(successCallback, errorCallback, options){ + _capture("captureAudio", successCallback, errorCallback, options); +}; + +/** + * Launch camera application for taking image(s). + * + * @param {Function} successCB + * @param {Function} errorCB + * @param {CaptureImageOptions} options + */ +Capture.prototype.captureImage = function(successCallback, errorCallback, options){ + _capture("captureImage", successCallback, errorCallback, options); +}; + +/** + * Launch device camera application for recording video(s). + * + * @param {Function} successCB + * @param {Function} errorCB + * @param {CaptureVideoOptions} options + */ +Capture.prototype.captureVideo = function(successCallback, errorCallback, options){ + _capture("captureVideo", successCallback, errorCallback, options); +}; + + +module.exports = new Capture(); + +}); + +define('cordova/plugin/CaptureAudioOptions', function(require, exports, module) { +/** + * Encapsulates all audio capture operation configuration options. + */ +var CaptureAudioOptions = function(){ + // Upper limit of sound clips user can record. Value must be equal or greater than 1. + this.limit = 1; + // Maximum duration of a single sound clip in seconds. + this.duration = 0; + // The selected audio mode. Must match with one of the elements in supportedAudioModes array. + this.mode = null; +}; + +module.exports = CaptureAudioOptions; + +}); + +define('cordova/plugin/CaptureError', function(require, exports, module) { +/** + * The CaptureError interface encapsulates all errors in the Capture API. + */ +var CaptureError = function(c) { + this.code = c || null; +}; + +// Camera or microphone failed to capture image or sound. +CaptureError.CAPTURE_INTERNAL_ERR = 0; +// Camera application or audio capture application is currently serving other capture request. +CaptureError.CAPTURE_APPLICATION_BUSY = 1; +// Invalid use of the API (e.g. limit parameter has value less than one). +CaptureError.CAPTURE_INVALID_ARGUMENT = 2; +// User exited camera application or audio capture application before capturing anything. +CaptureError.CAPTURE_NO_MEDIA_FILES = 3; +// The requested capture operation is not supported. +CaptureError.CAPTURE_NOT_SUPPORTED = 20; + +module.exports = CaptureError; + +}); + +define('cordova/plugin/CaptureImageOptions', function(require, exports, module) { +/** + * Encapsulates all image capture operation configuration options. + */ +var CaptureImageOptions = function(){ + // Upper limit of images user can take. Value must be equal or greater than 1. + this.limit = 1; + // The selected image mode. Must match with one of the elements in supportedImageModes array. + this.mode = null; +}; + +module.exports = CaptureImageOptions; + +}); + +define('cordova/plugin/CaptureVideoOptions', function(require, exports, module) { +/** + * Encapsulates all video capture operation configuration options. + */ +var CaptureVideoOptions = function(){ + // Upper limit of videos user can record. Value must be equal or greater than 1. + this.limit = 1; + // Maximum duration of a single video clip in seconds. + this.duration = 0; + // The selected video mode. Must match with one of the elements in supportedVideoModes array. + this.mode = null; +}; + +module.exports = CaptureVideoOptions; + +}); + +define('cordova/plugin/compass', function(require, exports, module) { +var exec = require('cordova/exec'), + utils = require('cordova/utils'), + CompassHeading = require('cordova/plugin/CompassHeading'), + CompassError = require('cordova/plugin/CompassError'), + timers = {}, + compass = { + /** + * Asynchronously acquires the current heading. + * @param {Function} successCallback The function to call when the heading + * data is available + * @param {Function} errorCallback The function to call when there is an error + * getting the heading data. + * @param {CompassOptions} options The options for getting the heading data (not used). + */ + getCurrentHeading:function(successCallback, errorCallback, options) { + // successCallback required + if (typeof successCallback !== "function") { + console.log("Compass Error: successCallback is not a function"); + return; + } + + // errorCallback optional + if (errorCallback && (typeof errorCallback !== "function")) { + console.log("Compass Error: errorCallback is not a function"); + return; + } + + var win = function(result) { + var ch = new CompassHeading(result.magneticHeading, result.trueHeading, result.headingAccuracy, result.timestamp); + successCallback(ch); + }; + var fail = function(code) { + var ce = new CompassError(code); + errorCallback(ce); + } + + // Get heading + exec(win, fail, "Compass", "getHeading", []); + }, + + /** + * Asynchronously acquires the heading repeatedly at a given interval. + * @param {Function} successCallback The function to call each time the heading + * data is available + * @param {Function} errorCallback The function to call when there is an error + * getting the heading data. + * @param {HeadingOptions} options The options for getting the heading data + * such as timeout and the frequency of the watch. + */ + watchHeading:function(successCallback, errorCallback, options) { + // Default interval (100 msec) + var frequency = (options !== undefined && options.frequency !== undefined) ? options.frequency : 100; + + // successCallback required + if (typeof successCallback !== "function") { + console.log("Compass Error: successCallback is not a function"); + return; + } + + // errorCallback optional + if (errorCallback && (typeof errorCallback !== "function")) { + console.log("Compass Error: errorCallback is not a function"); + return; + } + + // Start watch timer to get headings + var id = utils.createUUID(); + var win = function(result) { + var ch = new CompassHeading(result.magneticHeading, result.trueHeading, result.headingAccuracy, result.timestamp); + successCallback(ch); + }; + var fail = function(code) { + var ce = new CompassError(code); + errorCallback(ce); + }; + + timers[id] = window.setInterval(function() { + exec(win, fail, "Compass", "getHeading", []); + }, frequency); + + return id; + }, + + /** + * Clears the specified heading watch. + * @param {String} watchId The ID of the watch returned from #watchHeading. + */ + clearWatch:function(id) { + // Stop javascript timer & remove from timer list + if (id && timers[id]) { + clearInterval(timers[id]); + delete timers[id]; + } + } + // TODO: add the filter-based iOS-only methods + }; + +module.exports = compass; + +}); + +define('cordova/plugin/CompassError', function(require, exports, module) { +/** + * CompassError. + * An error code assigned by an implementation when an error has occured + * @constructor + */ +var CompassError = function(err) { + this.code = (typeof err != 'undefined' ? err : null); +}; + +/** + * Error codes + */ +CompassError.COMPASS_INTERNAL_ERR = 0; +CompassError.COMPASS_NOT_SUPPORTED = 20; + +module.exports = CompassError; + + +}); + +define('cordova/plugin/CompassHeading', function(require, exports, module) { +var CompassHeading = function(magneticHeading, trueHeading, headingAccuracy, timestamp) { + this.magneticHeading = magneticHeading !== undefined ? magneticHeading : null; + this.trueHeading = trueHeading !== undefined ? trueHeading : null; + this.headingAccuracy = headingAccuracy !== undefined ? headingAccuracy : null; + this.timestamp = timestamp !== undefined ? new Date(timestamp) : new Date(); +}; + +module.exports = CompassHeading; + +}); + +define('cordova/plugin/ConfigurationData', function(require, exports, module) { +/** + * Encapsulates a set of parameters that the capture device supports. + */ +function ConfigurationData() { + // The ASCII-encoded string in lower case representing the media type. + this.type = null; + // The height attribute represents height of the image or video in pixels. + // In the case of a sound clip this attribute has value 0. + this.height = 0; + // The width attribute represents width of the image or video in pixels. + // In the case of a sound clip this attribute has value 0 + this.width = 0; +} + +module.exports = ConfigurationData; + +}); + +define('cordova/plugin/Connection', function(require, exports, module) { +/** + * Network status + */ +module.exports = { + UNKNOWN: "unknown", + ETHERNET: "ethernet", + WIFI: "wifi", + CELL_2G: "2g", + CELL_3G: "3g", + CELL_4G: "4g", + NONE: "none" +}; + +}); + +define('cordova/plugin/Contact', function(require, exports, module) { +var exec = require('cordova/exec'), + ContactError = require('cordova/plugin/ContactError'), + utils = require('cordova/utils'); + +/** +* Contains information about a single contact. +* @constructor +* @param {DOMString} id unique identifier +* @param {DOMString} displayName +* @param {ContactName} name +* @param {DOMString} nickname +* @param {Array.} phoneNumbers array of phone numbers +* @param {Array.} emails array of email addresses +* @param {Array.} addresses array of addresses +* @param {Array.} ims instant messaging user ids +* @param {Array.} organizations +* @param {DOMString} birthday contact's birthday +* @param {DOMString} note user notes about contact +* @param {Array.} photos +* @param {Array.} categories +* @param {Array.} urls contact's web sites +*/ +var Contact = function (id, displayName, name, nickname, phoneNumbers, emails, addresses, + ims, organizations, birthday, note, photos, categories, urls) { + this.id = id || null; + this.rawId = null; + this.displayName = displayName || null; + this.name = name || null; // ContactName + this.nickname = nickname || null; + this.phoneNumbers = phoneNumbers || []; // ContactField[] + this.emails = emails || []; // ContactField[] + this.addresses = addresses || []; // ContactAddress[] + this.ims = ims || []; // ContactField[] + this.organizations = organizations || []; // ContactOrganization[] + this.birthday = birthday || null; + this.note = note || null; + this.photos = photos || []; // ContactField[] + this.categories = categories || []; // ContactField[] + this.urls = urls || []; // ContactField[] +}; + +/** +* Removes contact from device storage. +* @param successCB success callback +* @param errorCB error callback +*/ +Contact.prototype.remove = function(successCB, errorCB) { + if (this.id === null) { + var errorObj = new ContactError(ContactError.UNKNOWN_ERROR); + errorCB(errorObj); + } + else { + exec(successCB, errorCB, "Contacts", "remove", [this.id]); + } +}; + +/** +* Creates a deep copy of this Contact. +* With the contact ID set to null. +* @return copy of this Contact +*/ +Contact.prototype.clone = function() { + var clonedContact = utils.clone(this); + var i; + clonedContact.id = null; + clonedContact.rawId = null; + // Loop through and clear out any id's in phones, emails, etc. + if (clonedContact.phoneNumbers) { + for (i = 0; i < clonedContact.phoneNumbers.length; i++) { + clonedContact.phoneNumbers[i].id = null; + } + } + if (clonedContact.emails) { + for (i = 0; i < clonedContact.emails.length; i++) { + clonedContact.emails[i].id = null; + } + } + if (clonedContact.addresses) { + for (i = 0; i < clonedContact.addresses.length; i++) { + clonedContact.addresses[i].id = null; + } + } + if (clonedContact.ims) { + for (i = 0; i < clonedContact.ims.length; i++) { + clonedContact.ims[i].id = null; + } + } + if (clonedContact.organizations) { + for (i = 0; i < clonedContact.organizations.length; i++) { + clonedContact.organizations[i].id = null; + } + } + if (clonedContact.categories) { + for (i = 0; i < clonedContact.categories.length; i++) { + clonedContact.categories[i].id = null; + } + } + if (clonedContact.photos) { + for (i = 0; i < clonedContact.photos.length; i++) { + clonedContact.photos[i].id = null; + } + } + if (clonedContact.urls) { + for (i = 0; i < clonedContact.urls.length; i++) { + clonedContact.urls[i].id = null; + } + } + return clonedContact; +}; + +/** +* Persists contact to device storage. +* @param successCB success callback +* @param errorCB error callback +*/ +Contact.prototype.save = function(successCB, errorCB) { + exec(successCB, errorCB, "Contacts", "save", [this]); +}; + + +module.exports = Contact; + +}); + +define('cordova/plugin/ContactAddress', function(require, exports, module) { +/** +* Contact address. +* @constructor +* @param {DOMString} id unique identifier, should only be set by native code +* @param formatted // NOTE: not a W3C standard +* @param streetAddress +* @param locality +* @param region +* @param postalCode +* @param country +*/ + +var ContactAddress = function(pref, type, formatted, streetAddress, locality, region, postalCode, country) { + this.id = null; + this.pref = (typeof pref != 'undefined' ? pref : false); + this.type = type || null; + this.formatted = formatted || null; + this.streetAddress = streetAddress || null; + this.locality = locality || null; + this.region = region || null; + this.postalCode = postalCode || null; + this.country = country || null; +}; + +module.exports = ContactAddress; + +}); + +define('cordova/plugin/ContactError', function(require, exports, module) { +/** + * ContactError. + * An error code assigned by an implementation when an error has occured + * @constructor + */ +var ContactError = function(err) { + this.code = (typeof err != 'undefined' ? err : null); +}; + +/** + * Error codes + */ +ContactError.UNKNOWN_ERROR = 0; +ContactError.INVALID_ARGUMENT_ERROR = 1; +ContactError.TIMEOUT_ERROR = 2; +ContactError.PENDING_OPERATION_ERROR = 3; +ContactError.IO_ERROR = 4; +ContactError.NOT_SUPPORTED_ERROR = 5; +ContactError.PERMISSION_DENIED_ERROR = 20; + +module.exports = ContactError; + +}); + +define('cordova/plugin/ContactField', function(require, exports, module) { +/** +* Generic contact field. +* @constructor +* @param {DOMString} id unique identifier, should only be set by native code // NOTE: not a W3C standard +* @param type +* @param value +* @param pref +*/ +var ContactField = function(type, value, pref) { + this.id = null; + this.type = type || null; + this.value = value || null; + this.pref = (typeof pref != 'undefined' ? pref : false); +}; + +module.exports = ContactField; + +}); + +define('cordova/plugin/ContactFindOptions', function(require, exports, module) { +/** + * ContactFindOptions. + * @constructor + * @param filter used to match contacts against + * @param multiple boolean used to determine if more than one contact should be returned + */ + +var ContactFindOptions = function(filter, multiple) { + this.filter = filter || ''; + this.multiple = (typeof multiple != 'undefined' ? multiple : false); +}; + +module.exports = ContactFindOptions; + +}); + +define('cordova/plugin/ContactName', function(require, exports, module) { +/** +* Contact name. +* @constructor +* @param formatted // NOTE: not part of W3C standard +* @param familyName +* @param givenName +* @param middle +* @param prefix +* @param suffix +*/ +var ContactName = function(formatted, familyName, givenName, middle, prefix, suffix) { + this.formatted = formatted || null; + this.familyName = familyName || null; + this.givenName = givenName || null; + this.middleName = middle || null; + this.honorificPrefix = prefix || null; + this.honorificSuffix = suffix || null; +}; + +module.exports = ContactName; + +}); + +define('cordova/plugin/ContactOrganization', function(require, exports, module) { +/** +* Contact organization. +* @constructor +* @param {DOMString} id unique identifier, should only be set by native code // NOTE: not a W3C standard +* @param name +* @param dept +* @param title +* @param startDate +* @param endDate +* @param location +* @param desc +*/ + +var ContactOrganization = function(pref, type, name, dept, title) { + this.id = null; + this.pref = (typeof pref != 'undefined' ? pref : false); + this.type = type || null; + this.name = name || null; + this.department = dept || null; + this.title = title || null; +}; + +module.exports = ContactOrganization; + +}); + +define('cordova/plugin/contacts', function(require, exports, module) { +var exec = require('cordova/exec'), + ContactError = require('cordova/plugin/ContactError'), + Contact = require('cordova/plugin/Contact'); + +/** +* Represents a group of Contacts. +* @constructor +*/ +var contacts = { + /** + * Returns an array of Contacts matching the search criteria. + * @param fields that should be searched + * @param successCB success callback + * @param errorCB error callback + * @param {ContactFindOptions} options that can be applied to contact searching + * @return array of Contacts matching search criteria + */ + find:function(fields, successCB, errorCB, options) { + if (!successCB) { + throw new TypeError("You must specify a success callback for the find command."); + } + if (!fields || (fields instanceof Array && fields.length === 0)) { + if (typeof errorCB === "function") { + errorCB(new ContactError(ContactError.INVALID_ARGUMENT_ERROR)); + } + } else { + var win = function(result) { + var cs = []; + for (var i = 0, l = result.length; i < l; i++) { + cs.push(contacts.create(result[i])); + } + successCB(cs); + }; + exec(win, errorCB, "Contacts", "search", [fields, options]); + } + }, + + /** + * This function creates a new contact, but it does not persist the contact + * to device storage. To persist the contact to device storage, invoke + * contact.save(). + * @param properties an object who's properties will be examined to create a new Contact + * @returns new Contact object + */ + create:function(properties) { + var i; + var contact = new Contact(); + for (i in properties) { + if (typeof contact[i] !== 'undefined' && properties.hasOwnProperty(i)) { + contact[i] = properties[i]; + } + } + return contact; + } +}; + +module.exports = contacts; + +}); + +define('cordova/plugin/Coordinates', function(require, exports, module) { +/** + * This class contains position information. + * @param {Object} lat + * @param {Object} lng + * @param {Object} alt + * @param {Object} acc + * @param {Object} head + * @param {Object} vel + * @param {Object} altacc + * @constructor + */ +var Coordinates = function(lat, lng, alt, acc, head, vel, altacc) { + /** + * The latitude of the position. + */ + this.latitude = lat; + /** + * The longitude of the position, + */ + this.longitude = lng; + /** + * The accuracy of the position. + */ + this.accuracy = acc; + /** + * The altitude of the position. + */ + this.altitude = alt; + /** + * The direction the device is moving at the position. + */ + this.heading = head; + /** + * The velocity with which the device is moving at the position. + */ + this.speed = vel; + /** + * The altitude accuracy of the position. + */ + this.altitudeAccuracy = (altacc !== undefined) ? altacc : null; +}; + +module.exports = Coordinates; + +}); + +define('cordova/plugin/DirectoryEntry', function(require, exports, module) { +var utils = require('cordova/utils'), + exec = require('cordova/exec'), + Entry = require('cordova/plugin/Entry'), + DirectoryReader = require('cordova/plugin/DirectoryReader'); + +/** + * An interface representing a directory on the file system. + * + * {boolean} isFile always false (readonly) + * {boolean} isDirectory always true (readonly) + * {DOMString} name of the directory, excluding the path leading to it (readonly) + * {DOMString} fullPath the absolute full path to the directory (readonly) + * {FileSystem} filesystem on which the directory resides (readonly) + */ +var DirectoryEntry = function(name, fullPath) { + DirectoryEntry.__super__.constructor.apply(this, [false, true, name, fullPath]); +}; + +utils.extend(DirectoryEntry, Entry); + +/** + * Creates a new DirectoryReader to read entries from this directory + */ +DirectoryEntry.prototype.createReader = function() { + return new DirectoryReader(this.fullPath); +}; + +/** + * Creates or looks up a directory + * + * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory + * @param {Flags} options to create or excluively create the directory + * @param {Function} successCallback is called with the new entry + * @param {Function} errorCallback is called with a FileError + */ +DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) { + var win = typeof successCallback !== 'function' ? null : function(result) { + var entry = new DirectoryEntry(result.name, result.fullPath); + successCallback(entry); + }; + var fail = typeof errorCallback !== 'function' ? null : function(code) { + errorCallback(new FileError(code)); + }; + exec(win, fail, "File", "getDirectory", [this.fullPath, path, options]); +}; + +/** + * Deletes a directory and all of it's contents + * + * @param {Function} successCallback is called with no parameters + * @param {Function} errorCallback is called with a FileError + */ +DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) { + var fail = typeof errorCallback !== 'function' ? null : function(code) { + errorCallback(new FileError(code)); + }; + exec(successCallback, fail, "File", "removeRecursively", [this.fullPath]); +}; + +/** + * Creates or looks up a file + * + * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file + * @param {Flags} options to create or excluively create the file + * @param {Function} successCallback is called with the new entry + * @param {Function} errorCallback is called with a FileError + */ +DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) { + var win = typeof successCallback !== 'function' ? null : function(result) { + var FileEntry = require('cordova/plugin/FileEntry'); + var entry = new FileEntry(result.name, result.fullPath); + successCallback(entry); + }; + var fail = typeof errorCallback !== 'function' ? null : function(code) { + errorCallback(new FileError(code)); + }; + exec(win, fail, "File", "getFile", [this.fullPath, path, options]); +}; + +module.exports = DirectoryEntry; + +}); + +define('cordova/plugin/DirectoryReader', function(require, exports, module) { +var exec = require('cordova/exec'); + +/** + * An interface that lists the files and directories in a directory. + */ +function DirectoryReader(path) { + this.path = path || null; +} + +/** + * Returns a list of entries from a directory. + * + * @param {Function} successCallback is called with a list of entries + * @param {Function} errorCallback is called with a FileError + */ +DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) { + var win = typeof successCallback !== 'function' ? null : function(result) { + var retVal = []; + for (var i=0; i][;base64], + * + * @param file {File} File object containing file properties + */ +FileReader.prototype.readAsDataURL = function(file) { + this.fileName = ""; + if (typeof file.fullPath === "undefined") { + this.fileName = file; + } else { + this.fileName = file.fullPath; + } + + // Already loading something + if (this.readyState == FileReader.LOADING) { + throw new FileError(FileError.INVALID_STATE_ERR); + } + + // LOADING state + this.readyState = FileReader.LOADING; + + // If loadstart callback + if (typeof this.onloadstart === "function") { + this.onloadstart(new ProgressEvent("loadstart", {target:this})); + } + + var me = this; + + // Read file + exec( + // Success callback + function(r) { + // If DONE (cancelled), then don't do anything + if (me.readyState === FileReader.DONE) { + return; + } + + // DONE state + me.readyState = FileReader.DONE; + + // Save result + me.result = r; + + // If onload callback + if (typeof me.onload === "function") { + me.onload(new ProgressEvent("load", {target:me})); + } + + // If onloadend callback + if (typeof me.onloadend === "function") { + me.onloadend(new ProgressEvent("loadend", {target:me})); + } + }, + // Error callback + function(e) { + // If DONE (cancelled), then don't do anything + if (me.readyState === FileReader.DONE) { + return; + } + + // DONE state + me.readyState = FileReader.DONE; + + me.result = null; + + // Save error + me.error = new FileError(e); + + // If onerror callback + if (typeof me.onerror === "function") { + me.onerror(new ProgressEvent("error", {target:me})); + } + + // If onloadend callback + if (typeof me.onloadend === "function") { + me.onloadend(new ProgressEvent("loadend", {target:me})); + } + }, "File", "readAsDataURL", [this.fileName]); +}; + +/** + * Read file and return data as a binary data. + * + * @param file {File} File object containing file properties + */ +FileReader.prototype.readAsBinaryString = function(file) { + // TODO - Can't return binary data to browser. + console.log('This method is not supported at this time.'); +}; + +/** + * Read file and return data as a binary data. + * + * @param file {File} File object containing file properties + */ +FileReader.prototype.readAsArrayBuffer = function(file) { + // TODO - Can't return binary data to browser. + console.log('This method is not supported at this time.'); +}; + +module.exports = FileReader; + +}); + +define('cordova/plugin/FileSystem', function(require, exports, module) { +var DirectoryEntry = require('cordova/plugin/DirectoryEntry'); + +/** + * An interface representing a file system + * + * @constructor + * {DOMString} name the unique name of the file system (readonly) + * {DirectoryEntry} root directory of the file system (readonly) + */ +var FileSystem = function(name, root) { + this.name = name || null; + if (root) { + this.root = new DirectoryEntry(root.name, root.fullPath); + } +}; + +module.exports = FileSystem; + +}); + +define('cordova/plugin/FileTransfer', function(require, exports, module) { +var exec = require('cordova/exec'); + +/** + * FileTransfer uploads a file to a remote server. + * @constructor + */ +var FileTransfer = function() {}; + +/** +* Given an absolute file path, uploads a file on the device to a remote server +* using a multipart HTTP request. +* @param filePath {String} Full path of the file on the device +* @param server {String} URL of the server to receive the file +* @param successCallback (Function} Callback to be invoked when upload has completed +* @param errorCallback {Function} Callback to be invoked upon error +* @param options {FileUploadOptions} Optional parameters such as file name and mimetype +*/ +FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, debug) { + // check for options + var fileKey = null; + var fileName = null; + var mimeType = null; + var params = null; + var chunkedMode = true; + if (options) { + fileKey = options.fileKey; + fileName = options.fileName; + mimeType = options.mimeType; + if (options.chunkedMode !== null || typeof options.chunkedMode !== "undefined") { + chunkedMode = options.chunkedMode; + } + if (options.params) { + params = options.params; + } + else { + params = {}; + } + } + + exec(successCallback, errorCallback, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, debug, chunkedMode]); +}; + +/** + * Downloads a file form a given URL and saves it to the specified directory. + * @param source {String} URL of the server to receive the file + * @param target {String} Full path of the file on the device + * @param successCallback (Function} Callback to be invoked when upload has completed + * @param errorCallback {Function} Callback to be invoked upon error + */ +FileTransfer.prototype.download = function(source, target, successCallback, errorCallback) { + var win = function(result) { + var entry = null; + if (result.isDirectory) { + entry = new DirectoryEntry(); + } + else if (result.isFile) { + entry = new FileEntry(); + } + entry.isDirectory = result.isDirectory; + entry.isFile = result.isFile; + entry.name = result.name; + entry.fullPath = result.fullPath; + successCallback(entry); + }; + exec(win, errorCallback, 'FileTransfer', 'download', [source, target]); +}; + +module.exports = FileTransfer; + +}); + +define('cordova/plugin/FileTransferError', function(require, exports, module) { +/** + * FileTransferError + * @constructor + */ +var FileTransferError = function(code) { + this.code = code || null; +}; + +FileTransferError.FILE_NOT_FOUND_ERR = 1; +FileTransferError.INVALID_URL_ERR = 2; +FileTransferError.CONNECTION_ERR = 3; + +module.exports = FileTransferError; + +}); + +define('cordova/plugin/FileUploadOptions', function(require, exports, module) { +/** + * Options to customize the HTTP request used to upload files. + * @constructor + * @param fileKey {String} Name of file request parameter. + * @param fileName {String} Filename to be used by the server. Defaults to image.jpg. + * @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg. + * @param params {Object} Object with key: value params to send to the server. + */ +var FileUploadOptions = function(fileKey, fileName, mimeType, params) { + this.fileKey = fileKey || null; + this.fileName = fileName || null; + this.mimeType = mimeType || null; + this.params = params || null; +}; + +module.exports = FileUploadOptions; + +}); + +define('cordova/plugin/FileUploadResult', function(require, exports, module) { +/** + * FileUploadResult + * @constructor + */ +var FileUploadResult = function() { + this.bytesSent = 0; + this.responseCode = null; + this.response = null; +}; + +module.exports = FileUploadResult; + +}); + +define('cordova/plugin/FileWriter', function(require, exports, module) { +var exec = require('cordova/exec'), + FileError = require('cordova/plugin/FileError'); + ProgressEvent = require('cordova/plugin/ProgressEvent'); + +/** + * This class writes to the mobile device file system. + * + * For Android: + * The root directory is the root of the file system. + * To write to the SD card, the file name is "sdcard/my_file.txt" + * + * @constructor + * @param file {File} File object containing file properties + * @param append if true write to the end of the file, otherwise overwrite the file + */ +var FileWriter = function(file) { + this.fileName = ""; + this.length = 0; + if (file) { + this.fileName = file.fullPath || file; + this.length = file.size || 0; + } + // default is to write at the beginning of the file + this.position = 0; + + this.readyState = 0; // EMPTY + + this.result = null; + + // Error + this.error = null; + + // Event handlers + this.onwritestart = null; // When writing starts + this.onprogress = null; // While writing the file, and reporting partial file data + this.onwrite = null; // When the write has successfully completed. + this.onwriteend = null; // When the request has completed (either in success or failure). + this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method. + this.onerror = null; // When the write has failed (see errors). +}; + +// States +FileWriter.INIT = 0; +FileWriter.WRITING = 1; +FileWriter.DONE = 2; + +/** + * Abort writing file. + */ +FileWriter.prototype.abort = function() { + // check for invalid state + if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) { + throw new FileError(FileError.INVALID_STATE_ERR); + } + + // set error + this.error = new FileError(FileError.ABORT_ERR); + + this.readyState = FileWriter.DONE; + + // If abort callback + if (typeof this.onabort === "function") { + this.onabort(new ProgressEvent("abort", {"target":this})); + } + + // If write end callback + if (typeof this.onwriteend === "function") { + this.onwriteend(new ProgressEvent("writeend", {"target":this})); + } +}; + +/** + * Writes data to the file + * + * @param text to be written + */ +FileWriter.prototype.write = function(text) { + // Throw an exception if we are already writing a file + if (this.readyState === FileWriter.WRITING) { + throw new FileError(FileError.INVALID_STATE_ERR); + } + + // WRITING state + this.readyState = FileWriter.WRITING; + + var me = this; + + // If onwritestart callback + if (typeof me.onwritestart === "function") { + me.onwritestart(new ProgressEvent("writestart", {"target":me})); + } + + // Write file + exec( + // Success callback + function(r) { + // If DONE (cancelled), then don't do anything + if (me.readyState === FileWriter.DONE) { + return; + } + + // position always increases by bytes written because file would be extended + me.position += r; + // The length of the file is now where we are done writing. + + me.length = me.position; + + // DONE state + me.readyState = FileWriter.DONE; + + // If onwrite callback + if (typeof me.onwrite === "function") { + me.onwrite(new ProgressEvent("write", {"target":me})); + } + + // If onwriteend callback + if (typeof me.onwriteend === "function") { + me.onwriteend(new ProgressEvent("writeend", {"target":me})); + } + }, + // Error callback + function(e) { + // If DONE (cancelled), then don't do anything + if (me.readyState === FileWriter.DONE) { + return; + } + + // DONE state + me.readyState = FileWriter.DONE; + + // Save error + me.error = new FileError(e); + + // If onerror callback + if (typeof me.onerror === "function") { + me.onerror(new ProgressEvent("error", {"target":me})); + } + + // If onwriteend callback + if (typeof me.onwriteend === "function") { + me.onwriteend(new ProgressEvent("writeend", {"target":me})); + } + }, "File", "write", [this.fileName, text, this.position]); +}; + +/** + * Moves the file pointer to the location specified. + * + * If the offset is a negative number the position of the file + * pointer is rewound. If the offset is greater than the file + * size the position is set to the end of the file. + * + * @param offset is the location to move the file pointer to. + */ +FileWriter.prototype.seek = function(offset) { + // Throw an exception if we are already writing a file + if (this.readyState === FileWriter.WRITING) { + throw new FileError(FileError.INVALID_STATE_ERR); + } + + if (!offset) { + return; + } + + // See back from end of file. + if (offset < 0) { + this.position = Math.max(offset + this.length, 0); + } + // Offset is bigger then file size so set position + // to the end of the file. + else if (offset > this.length) { + this.position = this.length; + } + // Offset is between 0 and file size so set the position + // to start writing. + else { + this.position = offset; + } +}; + +/** + * Truncates the file to the size specified. + * + * @param size to chop the file at. + */ +FileWriter.prototype.truncate = function(size) { + // Throw an exception if we are already writing a file + if (this.readyState === FileWriter.WRITING) { + throw new FileError(FileError.INVALID_STATE_ERR); + } + + // WRITING state + this.readyState = FileWriter.WRITING; + + var me = this; + + // If onwritestart callback + if (typeof me.onwritestart === "function") { + me.onwritestart(new ProgressEvent("writestart", {"target":this})); + } + + // Write file + exec( + // Success callback + function(r) { + // If DONE (cancelled), then don't do anything + if (me.readyState === FileWriter.DONE) { + return; + } + + // DONE state + me.readyState = FileWriter.DONE; + + // Update the length of the file + me.length = r; + me.position = Math.min(me.position, r); + + // If onwrite callback + if (typeof me.onwrite === "function") { + me.onwrite(new ProgressEvent("write", {"target":me})); + } + + // If onwriteend callback + if (typeof me.onwriteend === "function") { + me.onwriteend(new ProgressEvent("writeend", {"target":me})); + } + }, + // Error callback + function(e) { + // If DONE (cancelled), then don't do anything + if (me.readyState === FileWriter.DONE) { + return; + } + + // DONE state + me.readyState = FileWriter.DONE; + + // Save error + me.error = new FileError(e); + + // If onerror callback + if (typeof me.onerror === "function") { + me.onerror(new ProgressEvent("error", {"target":me})); + } + + // If onwriteend callback + if (typeof me.onwriteend === "function") { + me.onwriteend(new ProgressEvent("writeend", {"target":me})); + } + }, "File", "truncate", [this.fileName, size]); +}; + +module.exports = FileWriter; + +}); + +define('cordova/plugin/Flags', function(require, exports, module) { +/** + * Supplies arguments to methods that lookup or create files and directories. + * + * @param create + * {boolean} file or directory if it doesn't exist + * @param exclusive + * {boolean} used with create; if true the command will fail if + * target path exists + */ +function Flags(create, exclusive) { + this.create = create || false; + this.exclusive = exclusive || false; +} + +module.exports = Flags; + +}); + +define('cordova/plugin/geolocation', function(require, exports, module) { +var utils = require('cordova/utils'), + exec = require('cordova/exec'), + PositionError = require('cordova/plugin/PositionError'); + +var timers = {}; // list of timers in use + +// Returns default params, overrides if provided with values +function parseParameters(options) { + var opt = { + maximumAge: 10000, + enableHighAccuracy: false, + timeout: 10000 + }; + + if (options) { + if (typeof options.maximumAge !== "undefined") { + opt.maximumAge = options.maximumAge; + } + if (typeof options.enableHighAccuracy !== "undefined") { + opt.enableHighAccuracy = options.enableHighAccuracy; + } + if (typeof options.timeout !== "undefined") { + opt.timeout = options.timeout; + } + } + + return opt; +} + +var geolocation = { + /** + * Asynchronously aquires the current position. + * + * @param {Function} successCallback The function to call when the position data is available + * @param {Function} errorCallback The function to call when there is an error getting the heading position. (OPTIONAL) + * @param {PositionOptions} options The options for getting the position data. (OPTIONAL) + */ + getCurrentPosition:function(successCallback, errorCallback, options) { + options = parseParameters(options); + exec(successCallback, errorCallback, "Geolocation", "getLocation", [options.enableHighAccuracy, options.timeout, options.maximumAge]); + }, + /** + * Asynchronously watches the geolocation for changes to geolocation. When a change occurs, + * the successCallback is called with the new location. + * + * @param {Function} successCallback The function to call each time the location data is available + * @param {Function} errorCallback The function to call when there is an error getting the location data. (OPTIONAL) + * @param {PositionOptions} options The options for getting the location data such as frequency. (OPTIONAL) + * @return String The watch id that must be passed to #clearWatch to stop watching. + */ + watchPosition:function(successCallback, errorCallback, options) { + options = parseParameters(options); + var id = utils.createUUID(); + timers[id] = window.setInterval(function() { + exec(successCallback, errorCallback, "Geolocation", "getLocation", [options.enableHighAccuracy, options.timeout, options.maximumAge]); + }, options.timeout); + + return id; + }, + /** + * Clears the specified heading watch. + * + * @param {String} id The ID of the watch returned from #watchPosition + */ + clearWatch:function(id) { + if (id && timers[id] !== undefined) { + window.clearInterval(timers[id]); + delete timers[id]; + } + } +}; + +module.exports = geolocation; + +}); + + +define('cordova/plugin/LocalFileSystem', function(require, exports, module) { +var exec = require('cordova/exec'); + +/** + * Represents a local file system. + */ +var LocalFileSystem = function() { + +}; + +LocalFileSystem.TEMPORARY = 0; //temporary, with no guarantee of persistence +LocalFileSystem.PERSISTENT = 1; //persistent + +module.exports = LocalFileSystem; + +}); + +define('cordova/plugin/Media', function(require, exports, module) { +var utils = require('cordova/utils'), + exec = require('cordova/exec'); + +var mediaObjects = {}; + +/** + * This class provides access to the device media, interfaces to both sound and video + * + * @constructor + * @param src The file name or url to play + * @param successCallback The callback to be called when the file is done playing or recording. + * successCallback() + * @param errorCallback The callback to be called if there is an error. + * errorCallback(int errorCode) - OPTIONAL + * @param statusCallback The callback to be called when media status has changed. + * statusCallback(int statusCode) - OPTIONAL + */ +var Media = function(src, successCallback, errorCallback, statusCallback) { + + // successCallback optional + if (successCallback && (typeof successCallback !== "function")) { + console.log("Media Error: successCallback is not a function"); + return; + } + + // errorCallback optional + if (errorCallback && (typeof errorCallback !== "function")) { + console.log("Media Error: errorCallback is not a function"); + return; + } + + // statusCallback optional + if (statusCallback && (typeof statusCallback !== "function")) { + console.log("Media Error: statusCallback is not a function"); + return; + } + + this.id = utils.createUUID(); + mediaObjects[this.id] = this; + this.src = src; + this.successCallback = successCallback; + this.errorCallback = errorCallback; + this.statusCallback = statusCallback; + this._duration = -1; + this._position = -1; + exec(null, this.errorCallback, "Media", "create", [this.id, this.src]); +}; + +// Media messages +Media.MEDIA_STATE = 1; +Media.MEDIA_DURATION = 2; +Media.MEDIA_POSITION = 3; +Media.MEDIA_ERROR = 9; + +// Media states +Media.MEDIA_NONE = 0; +Media.MEDIA_STARTING = 1; +Media.MEDIA_RUNNING = 2; +Media.MEDIA_PAUSED = 3; +Media.MEDIA_STOPPED = 4; +Media.MEDIA_MSG = ["None", "Starting", "Running", "Paused", "Stopped"]; + +// "static" function to return existing objs. +Media.get = function(id) { + return mediaObjects[id]; +}; + +/** + * Start or resume playing audio file. + */ +Media.prototype.play = function() { + exec(this.successCallback, this.errorCallback, "Media", "startPlayingAudio", [this.id, this.src]); +}; + +/** + * Stop playing audio file. + */ +Media.prototype.stop = function() { + var me = this; + exec(function() { + me._position = 0; + me.successCallback(); + }, this.errorCallback, "Media", "stopPlayingAudio", [this.id]); +}; + +/** + * Seek or jump to a new time in the track.. + */ +Media.prototype.seekTo = function(milliseconds) { + var me = this; + exec(function(p) { + me._position = p; + }, this.errorCallback, "Media", "seekToAudio", [this.id, milliseconds]); +}; + +/** + * Pause playing audio file. + */ +Media.prototype.pause = function() { + exec(null, this.errorCallback, "Media", "pausePlayingAudio", [this.id]); +}; + +/** + * Get duration of an audio file. + * The duration is only set for audio that is playing, paused or stopped. + * + * @return duration or -1 if not known. + */ +Media.prototype.getDuration = function() { + return this._duration; +}; + +/** + * Get position of audio. + */ +Media.prototype.getCurrentPosition = function(success, fail) { + var me = this; + exec(function(p) { + me._position = p; + success(p); + }, fail, "Media", "getCurrentPositionAudio", [this.id]); +}; + +/** + * Start recording audio file. + */ +Media.prototype.startRecord = function() { + exec(this.successCallback, this.errorCallback, "Media", "startRecordingAudio", [this.id, this.src]); +}; + +/** + * Stop recording audio file. + */ +Media.prototype.stopRecord = function() { + exec(this.successCallback, this.errorCallback, "Media", "stopRecordingAudio", [this.id]); +}; + +/** + * Release the resources. + */ +Media.prototype.release = function() { + exec(null, this.errorCallback, "Media", "release", [this.id]); +}; + +/** + * Adjust the volume. + */ +Media.prototype.setVolume = function(volume) { + exec(null, null, "Media", "setVolume", [this.id, volume]); +}; + +/** + * Audio has status update. + * PRIVATE + * + * @param id The media object id (string) + * @param status The status code (int) + * @param msg The status message (string) + */ +Media.onStatus = function(id, msg, value) { + var media = mediaObjects[id]; + // If state update + if (msg === Media.MEDIA_STATE) { + if (value === Media.MEDIA_STOPPED) { + if (media.successCallback) { + media.successCallback(); + } + } + if (media.statusCallback) { + media.statusCallback(value); + } + } + else if (msg === Media.MEDIA_DURATION) { + media._duration = value; + } + else if (msg === Media.MEDIA_ERROR) { + if (media.errorCallback) { + media.errorCallback({"code":value}); + } + } + else if (msg === Media.MEDIA_POSITION) { + media._position = value; + } +}; + +module.exports = Media; + +}); + +define('cordova/plugin/MediaError', function(require, exports, module) { +/** + * This class contains information about any Media errors. + * @constructor + */ +var MediaError = function(code, msg) { + this.code = code || null; + this.message = msg || ""; +}; + +MediaError.MEDIA_ERR_NONE_ACTIVE = 0; +MediaError.MEDIA_ERR_ABORTED = 1; +MediaError.MEDIA_ERR_NETWORK = 2; +MediaError.MEDIA_ERR_DECODE = 3; +MediaError.MEDIA_ERR_NONE_SUPPORTED = 4; + +module.exports = MediaError; + +}); + +define('cordova/plugin/MediaFile', function(require, exports, module) { +var utils = require('cordova/utils'), + exec = require('cordova/exec'), + File = require('cordova/plugin/File'), + CaptureError = require('cordova/plugin/CaptureError'); +/** + * Represents a single file. + * + * name {DOMString} name of the file, without path information + * fullPath {DOMString} the full path of the file, including the name + * type {DOMString} mime type + * lastModifiedDate {Date} last modified date + * size {Number} size of the file in bytes + */ +var MediaFile = function(name, fullPath, type, lastModifiedDate, size){ + MediaFile.__super__.constructor.apply(this, arguments); +}; + +utils.extend(MediaFile, File); + +/** + * Request capture format data for a specific file and type + * + * @param {Function} successCB + * @param {Function} errorCB + */ +MediaFile.prototype.getFormatData = function(successCallback, errorCallback) { + if (typeof this.fullPath === "undefined" || this.fullPath === null) { + errorCallback(new CaptureError(CaptureError.CAPTURE_INVALID_ARGUMENT)); + } else { + exec(successCallback, errorCallback, "Capture", "getFormatData", [this.fullPath, this.type]); + } +}; + +/** + * Casts a PluginResult message property (array of objects) to an array of MediaFile objects + * (used in Objective-C and Android) + * + * @param {PluginResult} pluginResult + */ +MediaFile.cast = function(pluginResult) { + var mediaFiles = []; + var i; + for (i=0; i.dispatchEvent + // need to first figure out how to implement EventTarget + } + } + return event; + }; + try { + var ev = createEvent({type:"abort",target:document}); + return function ProgressEvent(type, data) { + data.type = type; + return createEvent(data); + }; + } catch(e){ + */ + return function ProgressEvent(type, dict) { + this.type = type; + this.bubbles = false; + this.cancelBubble = false; + this.cancelable = false; + this.lengthComputable = false; + this.loaded = dict && dict.loaded ? dict.loaded : 0; + this.total = dict && dict.total ? dict.total : 0; + this.target = dict && dict.target ? dict.target : null; + }; + //} +})(); + +module.exports = ProgressEvent; + +}); + +define('cordova/plugin/requestFileSystem', function(require, exports, module) { +var FileError = require('cordova/plugin/FileError'), + FileSystem = require('cordova/plugin/FileSystem'), + exec = require('cordova/exec'); + +/** + * Request a file system in which to store application data. + * @param type local file system type + * @param size indicates how much storage space, in bytes, the application expects to need + * @param successCallback invoked with a FileSystem object + * @param errorCallback invoked if error occurs retrieving file system + */ +var requestFileSystem = function(type, size, successCallback, errorCallback) { + var fail = function(code) { + if (typeof errorCallback === 'function') { + errorCallback(new FileError(code)); + } + }; + + if (type < 0 || type > 3) { + fail(FileError.SYNTAX_ERR); + } else { + // if successful, return a FileSystem object + var success = function(file_system) { + if (file_system) { + if (typeof successCallback === 'function') { + // grab the name and root from the file system object + var result = new FileSystem(file_system.name, file_system.root); + successCallback(result); + } + } + else { + // no FileSystem object returned + fail(FileError.NOT_FOUND_ERR); + } + }; + exec(success, fail, "File", "requestFileSystem", [type, size]); + } +}; + +module.exports = requestFileSystem; + +}); + +define('cordova/plugin/resolveLocalFileSystemURI', function(require, exports, module) { +var DirectoryEntry = require('cordova/plugin/DirectoryEntry'), + FileEntry = require('cordova/plugin/FileEntry'), + exec = require('cordova/exec'); + +/** + * Look up file system Entry referred to by local URI. + * @param {DOMString} uri URI referring to a local file or directory + * @param successCallback invoked with Entry object corresponding to URI + * @param errorCallback invoked if error occurs retrieving file system entry + */ +module.exports = function(uri, successCallback, errorCallback) { + // error callback + var fail = function(error) { + if (typeof errorCallback === 'function') { + errorCallback(new FileError(error)); + } + }; + // if successful, return either a file or directory entry + var success = function(entry) { + var result; + + if (entry) { + if (typeof successCallback === 'function') { + // create appropriate Entry object + result = (entry.isDirectory) ? new DirectoryEntry(entry.name, entry.fullPath) : new FileEntry(entry.name, entry.fullPath); + try { + successCallback(result); + } + catch (e) { + console.log('Error invoking callback: ' + e); + } + } + } + else { + // no Entry object returned + fail(FileError.NOT_FOUND_ERR); + } + }; + + exec(success, fail, "File", "resolveLocalFileSystemURI", [uri]); +}; + +}); + + +define('cordova/plugin/android/app', function(require, exports, module) { +var exec = require('cordova/exec'); + +module.exports = { + /** + * Clear the resource cache. + */ + clearCache:function() { + exec(null, null, "App", "clearCache", []); + }, + + /** + * Load the url into the webview or into new browser instance. + * + * @param url The URL to load + * @param props Properties that can be passed in to the activity: + * wait: int => wait msec before loading URL + * loadingDialog: "Title,Message" => display a native loading dialog + * loadUrlTimeoutValue: int => time in msec to wait before triggering a timeout error + * clearHistory: boolean => clear webview history (default=false) + * openExternal: boolean => open in a new browser (default=false) + * + * Example: + * navigator.app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000}); + */ + loadUrl:function(url, props) { + exec(null, null, "App", "loadUrl", [url, props]); + }, + + /** + * Cancel loadUrl that is waiting to be loaded. + */ + cancelLoadUrl:function() { + exec(null, null, "App", "cancelLoadUrl", []); + }, + + /** + * Clear web history in this web view. + * Instead of BACK button loading the previous web page, it will exit the app. + */ + clearHistory:function() { + exec(null, null, "App", "clearHistory", []); + }, + + /** + * Go to previous page displayed. + * This is the same as pressing the backbutton on Android device. + */ + backHistory:function() { + exec(null, null, "App", "backHistory", []); + }, + + /** + * Override the default behavior of the Android back button. + * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired. + * + * Note: The user should not have to call this method. Instead, when the user + * registers for the "backbutton" event, this is automatically done. + * + * @param override T=override, F=cancel override + */ + overrideBackbutton:function(override) { + exec(null, null, "App", "overrideBackbutton", [override]); + }, + + /** + * Exit and terminate the application. + */ + exitApp:function() { + return exec(null, null, "App", "exitApp", []); + } +}; + +}); + +define('cordova/plugin/android/callback', function(require, exports, module) { +var port = null, + token = null, + cordova = require('cordova'), + polling = require('cordova/plugin/android/polling'), + callback = function() { + // Exit if shutting down app + if (cordova.shuttingDown) { + return; + } + + // If polling flag was changed, start using polling from now on + if (cordova.UsePolling) { + polling(); + return; + } + + var xmlhttp = new XMLHttpRequest(); + + // Callback function when XMLHttpRequest is ready + xmlhttp.onreadystatechange=function(){ + if(xmlhttp.readyState === 4){ + + // Exit if shutting down app + if (cordova.shuttingDown) { + return; + } + + // If callback has JavaScript statement to execute + if (xmlhttp.status === 200) { + + // Need to url decode the response + var msg = decodeURIComponent(xmlhttp.responseText); + setTimeout(function() { + try { + var t = eval(msg); + } + catch (e) { + // If we're getting an error here, seeing the message will help in debugging + console.log("JSCallback: Message from Server: " + msg); + console.log("JSCallback Error: "+e); + } + }, 1); + setTimeout(callback, 1); + } + + // If callback ping (used to keep XHR request from timing out) + else if (xmlhttp.status === 404) { + setTimeout(callback, 10); + } + + // If security error + else if (xmlhttp.status === 403) { + console.log("JSCallback Error: Invalid token. Stopping callbacks."); + } + + // If server is stopping + else if (xmlhttp.status === 503) { + console.log("JSCallback Server Closed: Stopping callbacks."); + } + + // If request wasn't GET + else if (xmlhttp.status === 400) { + console.log("JSCallback Error: Bad request. Stopping callbacks."); + } + + // If error, revert to polling + else { + console.log("JSCallback Error: Request failed."); + cordova.UsePolling = true; + polling(); + } + } + }; + + if (port === null) { + port = prompt("getPort", "gap_callbackServer:"); + } + if (token === null) { + token = prompt("getToken", "gap_callbackServer:"); + } + xmlhttp.open("GET", "http://127.0.0.1:"+port+"/"+token , true); + xmlhttp.send(); +}; + +module.exports = callback; + +}); + +define('cordova/plugin/android/device', function(require, exports, module) { +var channel = require('cordova/channel'), + exec = require('cordova/exec'); + +/** + * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the + * phone, etc. + * @constructor + */ +function Device() { + this.available = false; + this.platform = null; + this.version = null; + this.name = null; + this.uuid = null; + this.cordova = null; + + var me = this; + this.getInfo( + function(info) { + me.available = true; + me.platform = info.platform; + me.version = info.version; + me.name = info.name; + me.uuid = info.uuid; + me.cordova = info.cordova; + channel.onCordovaInfoReady.fire(); + }, + function(e) { + me.available = false; + console.log("Error initializing Cordova: " + e); + alert("Error initializing Cordova: "+e); + }); +} + +/** + * Get device info + * + * @param {Function} successCallback The function to call when the heading data is available + * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL) + */ +Device.prototype.getInfo = function(successCallback, errorCallback) { + + // successCallback required + if (typeof successCallback !== "function") { + console.log("Device Error: successCallback is not a function"); + return; + } + + // errorCallback optional + if (errorCallback && (typeof errorCallback !== "function")) { + console.log("Device Error: errorCallback is not a function"); + return; + } + + // Get info + exec(successCallback, errorCallback, "Device", "getDeviceInfo", []); +}; + +/* + * DEPRECATED + * This is only for Android. + * + * You must explicitly override the back button. + */ +Device.prototype.overrideBackButton = function() { + console.log("Device.overrideBackButton() is deprecated. Use App.overrideBackbutton(true)."); + navigator.app.overrideBackbutton(true); +}; + +/* + * DEPRECATED + * This is only for Android. + * + * This resets the back button to the default behaviour + */ +Device.prototype.resetBackButton = function() { + console.log("Device.resetBackButton() is deprecated. Use App.overrideBackbutton(false)."); + navigator.app.overrideBackbutton(false); +}; + +/* + * DEPRECATED + * This is only for Android. + * + * This terminates the activity! + */ +Device.prototype.exitApp = function() { + console.log("Device.exitApp() is deprecated. Use App.exitApp()."); + navigator.app.exitApp(); +}; + +module.exports = new Device(); + +}); + +define('cordova/plugin/android/polling', function(require, exports, module) { +var cordova = require('cordova'), + period = 50, + polling = function() { + // Exit if shutting down app + if (cordova.shuttingDown) { + return; + } + + // If polling flag was changed, stop using polling from now on and switch to XHR server / callback + if (!cordova.UsePolling) { + require('cordova/plugin/android/callback')(); + return; + } + + var msg = prompt("", "gap_poll:"); + if (msg) { + setTimeout(function() { + try { + var t = eval(""+msg); + } + catch (e) { + console.log("JSCallbackPolling: Message from Server: " + msg); + console.log("JSCallbackPolling Error: "+e); + } + }, 1); + setTimeout(polling, 1); + } + else { + setTimeout(polling, period); + } +}; + +module.exports = polling; + +}); + +define('cordova/plugin/android/storage', function(require, exports, module) { +var utils = require('cordova/utils'), + exec = require('cordova/exec'); + +var queryQueue = {}; + +/** + * SQL result set object + * PRIVATE METHOD + * @constructor + */ +var DroidDB_Rows = function() { + this.resultSet = []; // results array + this.length = 0; // number of rows +}; + +/** + * Get item from SQL result set + * + * @param row The row number to return + * @return The row object + */ +DroidDB_Rows.prototype.item = function(row) { + return this.resultSet[row]; +}; + +/** + * SQL result set that is returned to user. + * PRIVATE METHOD + * @constructor + */ +var DroidDB_Result = function() { + this.rows = new DroidDB_Rows(); +}; + +/** + * Callback from native code when query is complete. + * PRIVATE METHOD + * + * @param id Query id + */ +function completeQuery(id, data) { + var query = queryQueue[id]; + if (query) { + try { + delete queryQueue[id]; + + // Get transaction + var tx = query.tx; + + // If transaction hasn't failed + // Note: We ignore all query results if previous query + // in the same transaction failed. + if (tx && tx.queryList[id]) { + + // Save query results + var r = new DroidDB_Result(); + r.rows.resultSet = data; + r.rows.length = data.length; + try { + if (typeof query.successCallback === 'function') { + query.successCallback(query.tx, r); + } + } catch (ex) { + console.log("executeSql error calling user success callback: "+ex); + } + + tx.queryComplete(id); + } + } catch (e) { + console.log("executeSql error: "+e); + } + } +} + +/** + * Callback from native code when query fails + * PRIVATE METHOD + * + * @param reason Error message + * @param id Query id + */ +function failQuery(reason, id) { + var query = queryQueue[id]; + if (query) { + try { + delete queryQueue[id]; + + // Get transaction + var tx = query.tx; + + // If transaction hasn't failed + // Note: We ignore all query results if previous query + // in the same transaction failed. + if (tx && tx.queryList[id]) { + tx.queryList = {}; + + try { + if (typeof query.errorCallback === 'function') { + query.errorCallback(query.tx, reason); + } + } catch (ex) { + console.log("executeSql error calling user error callback: "+ex); + } + + tx.queryFailed(id, reason); + } + + } catch (e) { + console.log("executeSql error: "+e); + } + } +} + +/** + * SQL query object + * PRIVATE METHOD + * + * @constructor + * @param tx The transaction object that this query belongs to + */ +var DroidDB_Query = function(tx) { + + // Set the id of the query + this.id = utils.createUUID(); + + // Add this query to the queue + queryQueue[this.id] = this; + + // Init result + this.resultSet = []; + + // Set transaction that this query belongs to + this.tx = tx; + + // Add this query to transaction list + this.tx.queryList[this.id] = this; + + // Callbacks + this.successCallback = null; + this.errorCallback = null; + +}; + +/** + * Transaction object + * PRIVATE METHOD + * @constructor + */ +var DroidDB_Tx = function() { + + // Set the id of the transaction + this.id = utils.createUUID(); + + // Callbacks + this.successCallback = null; + this.errorCallback = null; + + // Query list + this.queryList = {}; +}; + +/** + * Mark query in transaction as complete. + * If all queries are complete, call the user's transaction success callback. + * + * @param id Query id + */ +DroidDB_Tx.prototype.queryComplete = function(id) { + delete this.queryList[id]; + + // If no more outstanding queries, then fire transaction success + if (this.successCallback) { + var count = 0; + var i; + for (i in this.queryList) { + if (this.queryList.hasOwnProperty(i)) { + count++; + } + } + if (count === 0) { + try { + this.successCallback(); + } catch(e) { + console.log("Transaction error calling user success callback: " + e); + } + } + } +}; + +/** + * Mark query in transaction as failed. + * + * @param id Query id + * @param reason Error message + */ +DroidDB_Tx.prototype.queryFailed = function(id, reason) { + + // The sql queries in this transaction have already been run, since + // we really don't have a real transaction implemented in native code. + // However, the user callbacks for the remaining sql queries in transaction + // will not be called. + this.queryList = {}; + + if (this.errorCallback) { + try { + this.errorCallback(reason); + } catch(e) { + console.log("Transaction error calling user error callback: " + e); + } + } +}; + +/** + * Execute SQL statement + * + * @param sql SQL statement to execute + * @param params Statement parameters + * @param successCallback Success callback + * @param errorCallback Error callback + */ +DroidDB_Tx.prototype.executeSql = function(sql, params, successCallback, errorCallback) { + + // Init params array + if (typeof params === 'undefined') { + params = []; + } + + // Create query and add to queue + var query = new DroidDB_Query(this); + queryQueue[query.id] = query; + + // Save callbacks + query.successCallback = successCallback; + query.errorCallback = errorCallback; + + // Call native code + exec(null, null, "Storage", "executeSql", [sql, params, query.id]); +}; + +var DatabaseShell = function() { +}; + +/** + * Start a transaction. + * Does not support rollback in event of failure. + * + * @param process {Function} The transaction function + * @param successCallback {Function} + * @param errorCallback {Function} + */ +DatabaseShell.prototype.transaction = function(process, errorCallback, successCallback) { + var tx = new DroidDB_Tx(); + tx.successCallback = successCallback; + tx.errorCallback = errorCallback; + try { + process(tx); + } catch (e) { + console.log("Transaction error: "+e); + if (tx.errorCallback) { + try { + tx.errorCallback(e); + } catch (ex) { + console.log("Transaction error calling user error callback: "+e); + } + } + } +}; + +/** + * Open database + * + * @param name Database name + * @param version Database version + * @param display_name Database display name + * @param size Database size in bytes + * @return Database object + */ +var DroidDB_openDatabase = function(name, version, display_name, size) { + exec(null, null, "Storage", "openDatabase", [name, version, display_name, size]); + var db = new DatabaseShell(); + return db; +}; + +/** + * For browsers with no localStorage we emulate it with SQLite. Follows the w3c api. + * TODO: Do similar for sessionStorage. + * @constructor + */ +var CupcakeLocalStorage = function() { + try { + + this.db = openDatabase('localStorage', '1.0', 'localStorage', 2621440); + var storage = {}; + this.length = 0; + function setLength (length) { + this.length = length; + localStorage.length = length; + } + this.db.transaction( + function (transaction) { + var i; + transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); + transaction.executeSql('SELECT * FROM storage', [], function(tx, result) { + for(var i = 0; i < result.rows.length; i++) { + storage[result.rows.item(i)['id']] = result.rows.item(i)['body']; + } + setLength(result.rows.length); + }); + + }, + function (err) { + alert(err.message); + } + ); + this.setItem = function(key, val) { + if (typeof(storage[key])=='undefined') { + this.length++; + } + storage[key] = val; + this.db.transaction( + function (transaction) { + transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); + transaction.executeSql('REPLACE INTO storage (id, body) values(?,?)', [key,val]); + } + ); + }; + this.getItem = function(key) { + return storage[key]; + }; + this.removeItem = function(key) { + delete storage[key]; + this.length--; + this.db.transaction( + function (transaction) { + transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); + transaction.executeSql('DELETE FROM storage where id=?', [key]); + } + ); + }; + this.clear = function() { + storage = {}; + this.length = 0; + this.db.transaction( + function (transaction) { + transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))'); + transaction.executeSql('DELETE FROM storage', []); + } + ); + }; + this.key = function(index) { + var i = 0; + for (var j in storage) { + if (i==index) { + return j; + } else { + i++; + } + } + return null; + }; + + } catch(e) { + alert("Database error "+e+"."); + return; + } +}; + +module.exports = { + openDatabase:DroidDB_openDatabase, + CupcakeLocalStorage:CupcakeLocalStorage, + failQuery:failQuery, + completeQuery:completeQuery +}; + +}); +window.cordova = require('cordova'); +(function (context) { + var channel = require("cordova/channel"), + /** + * cordova Channels that must fire before "deviceready" is fired. + */ + deviceReadyChannelsArray = [channel.onCordovaReady, channel.onCordovaInfoReady, channel.onCordovaConnectionReady], + deviceReadyChannelsMap = {}, + _self = { + boot: function () { + //--------------- + // Event handling + //--------------- + + /** + * Listen for DOMContentLoaded and notify our channel subscribers. + */ + document.addEventListener('DOMContentLoaded', function() { + channel.onDOMContentLoaded.fire(); + }, false); + if (document.readyState == 'complete') { + channel.onDOMContentLoaded.fire(); + } + + /** + * Create all cordova objects once page has fully loaded and native side is ready. + */ + channel.join(function() { + var builder = require('cordova/builder'), + base = require('cordova/common'), + platform = require('cordova/platform'); + + // Drop the common globals into the window object, but be nice and don't overwrite anything. + builder.build(base.objects).intoButDontClobber(window); + + // Drop the platform-specific globals into the window object and do it like a honey badger does it. + builder.build(platform.objects).intoAndClobberTheFOutOf(window); + + // Call the platform-specific initialization + platform.initialize(); + + // Fire event to notify that all objects are created + channel.onCordovaReady.fire(); + + // Fire onDeviceReady event once all constructors have run and + // cordova info has been received from native side. + channel.join(function() { + channel.onDeviceReady.fire(); + + // Fire the onresume event, since first one happens before JavaScript is loaded + channel.onResume.fire(); + }, deviceReadyChannelsArray); + + }, [ channel.onDOMContentLoaded, channel.onNativeReady ]); + } + }; + // boot up once native side is ready + channel.onNativeReady.subscribe(_self.boot); + + // _nativeReady is global variable that the native side can set + // to signify that the native code is ready. It is a global since + // it may be called before any cordova JS is ready. + if (window._nativeReady) { + channel.onNativeReady.fire(); + } + +}(window)); + diff --git a/assets/www/index.html b/assets/www/index.html new file mode 100644 index 0000000..d94367f --- /dev/null +++ b/assets/www/index.html @@ -0,0 +1,10 @@ + + + +PhoneGap + + + +

Hello World

+ + \ No newline at end of file diff --git a/libs/cordova-1.5.0.jar b/libs/cordova-1.5.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..03602eda84b230768dd2173ab50b423917baa018 GIT binary patch literal 160098 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

&P3cM1scoQe?jifB` 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 + + + + diff --git a/res/xml/plugins.xml b/res/xml/plugins.xml new file mode 100644 index 0000000..4c651ee --- /dev/null +++ b/res/xml/plugins.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/ch/chrummibei/androtafl/AndrotaflActivity.java b/src/ch/chrummibei/androtafl/AndrotaflActivity.java index f3e6936..41c9d5a 100644 --- a/src/ch/chrummibei/androtafl/AndrotaflActivity.java +++ b/src/ch/chrummibei/androtafl/AndrotaflActivity.java @@ -1,13 +1,15 @@ package ch.chrummibei.androtafl; -import android.app.Activity; -import android.os.Bundle; -public class AndrotaflActivity extends Activity { +import android.os.Bundle; +import org.apache.cordova.*; + +public class AndrotaflActivity extends DroidGap { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.main); + //setContentView(R.layout.main); + super.loadUrl("file:///android_asset/www/index.html"); } } \ No newline at end of file diff --git a/src/ch/chrummibei/androtafl/Move.java b/src/ch/chrummibei/androtafl/Move.java deleted file mode 100644 index 213bf82..0000000 --- a/src/ch/chrummibei/androtafl/Move.java +++ /dev/null @@ -1,6 +0,0 @@ -package ch.chrummibei.androtafl; - -public class Move { - public Position from; - public Position to; -} diff --git a/src/ch/chrummibei/androtafl/Position.java b/src/ch/chrummibei/androtafl/Position.java deleted file mode 100644 index 7e9d7b5..0000000 --- a/src/ch/chrummibei/androtafl/Position.java +++ /dev/null @@ -1,6 +0,0 @@ -package ch.chrummibei.androtafl; - -public class Position { - public int x; - public int y; -} diff --git a/src/ch/chrummibei/androtafl/TaflGame.java b/src/ch/chrummibei/androtafl/TaflGame.java deleted file mode 100644 index c694c23..0000000 --- a/src/ch/chrummibei/androtafl/TaflGame.java +++ /dev/null @@ -1,6 +0,0 @@ -package ch.chrummibei.androtafl; - -public abstract class TaflGame { - public abstract Move[] legal_moves(); - public abstract boolean make_move(Move m); -}