Version 2.1.0
diff --git a/VERSION b/VERSION
index 0baf8a2..50aea0e 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.1.0rc2
\ No newline at end of file
+2.1.0
\ No newline at end of file
diff --git a/docs/en/2.1.0/config.json b/docs/en/2.1.0/config.json
new file mode 100644
index 0000000..8e7e209
--- /dev/null
+++ b/docs/en/2.1.0/config.json
@@ -0,0 +1,171 @@
+{
+    "language": "English",
+    "merge": {
+        "accelerometer.md": [
+            "cordova/accelerometer/accelerometer.md",
+            "cordova/accelerometer/accelerometer.getCurrentAcceleration.md",
+            "cordova/accelerometer/accelerometer.watchAcceleration.md",
+            "cordova/accelerometer/accelerometer.clearWatch.md",
+            "cordova/accelerometer/acceleration/acceleration.md",
+            "cordova/accelerometer/parameters/accelerometerSuccess.md",
+            "cordova/accelerometer/parameters/accelerometerError.md",
+            "cordova/accelerometer/parameters/accelerometerOptions.md"
+        ],
+        "camera.md": [
+            "cordova/camera/camera.md",
+            "cordova/camera/camera.getPicture.md",
+            "cordova/camera/parameter/cameraSuccess.md",
+            "cordova/camera/parameter/cameraError.md",
+            "cordova/camera/parameter/cameraOptions.md",
+            "cordova/camera/parameter/CameraPopoverOptions.md"
+        ],
+        "capture.md": [
+            "cordova/media/capture/capture.md",
+            "cordova/media/capture/captureAudio.md",
+            "cordova/media/capture/captureAudioOptions.md",
+            "cordova/media/capture/captureImage.md",
+            "cordova/media/capture/captureImageOptions.md",
+            "cordova/media/capture/captureVideo.md",
+            "cordova/media/capture/captureVideoOptions.md",
+            "cordova/media/capture/CaptureError.md",
+            "cordova/media/capture/CaptureCB.md",
+            "cordova/media/capture/CaptureErrorCB.md",
+            "cordova/media/capture/ConfigurationData.md",
+            "cordova/media/capture/MediaFile.md",
+            "cordova/media/capture/MediaFile.getFormatData.md",
+            "cordova/media/capture/MediaFileData.md"
+        ],
+        "compass.md": [
+            "cordova/compass/compass.md",
+            "cordova/compass/compass.getCurrentHeading.md",
+            "cordova/compass/compass.watchHeading.md",
+            "cordova/compass/compass.clearWatch.md",
+            "cordova/compass/compass.watchHeadingFilter.md",
+            "cordova/compass/compass.clearWatchFilter.md",
+            "cordova/compass/parameters/compassSuccess.md",
+            "cordova/compass/parameters/compassError.md",
+            "cordova/compass/parameters/compassOptions.md",
+            "cordova/compass/parameters/compassHeading.md",
+            "cordova/compass/compassError/compassError.md"
+        ],
+        "contacts.md": [
+            "cordova/contacts/contacts.md",
+            "cordova/contacts/contacts.create.md",
+            "cordova/contacts/contacts.find.md",
+            "cordova/contacts/Contact/contact.md",
+            "cordova/contacts/ContactAddress/contactaddress.md",
+            "cordova/contacts/ContactField/contactfield.md",
+            "cordova/contacts/ContactFindOptions/contactfindoptions.md",
+            "cordova/contacts/ContactName/contactname.md",
+            "cordova/contacts/ContactOrganization/contactorganization.md",
+            "cordova/contacts/ContactError/contactError.md",
+            "cordova/contacts/parameters/contactSuccess.md",
+            "cordova/contacts/parameters/contactError.md",
+            "cordova/contacts/parameters/contactFields.md",
+            "cordova/contacts/parameters/contactFindOptions.md"
+        ],
+        "device.md": [
+            "cordova/device/device.md",
+            "cordova/device/device.name.md",
+            "cordova/device/device.cordova.md",
+            "cordova/device/device.platform.md",
+            "cordova/device/device.uuid.md",
+            "cordova/device/device.version.md"
+        ],
+        "events.md": [
+            "cordova/events/events.md",
+            "cordova/events/events.deviceready.md",
+            "cordova/events/events.pause.md",
+            "cordova/events/events.resume.md",
+            "cordova/events/events.online.md",
+            "cordova/events/events.offline.md",
+            "cordova/events/events.backbutton.md",
+            "cordova/events/events.batterycritical.md",
+            "cordova/events/events.batterylow.md",
+            "cordova/events/events.batterystatus.md",
+            "cordova/events/events.menubutton.md",
+            "cordova/events/events.searchbutton.md",
+            "cordova/events/events.startcallbutton.md",
+            "cordova/events/events.endcallbutton.md",
+            "cordova/events/events.volumedownbutton.md",
+            "cordova/events/events.volumeupbutton.md"
+        ],
+        "file.md": [
+            "cordova/file/file.md",
+            "cordova/file/fileobj/fileobj.md",
+            "cordova/file/filereader/filereader.md",
+            "cordova/file/filewriter/filewriter.md",
+            "cordova/file/filesystem/filesystem.md",
+            "cordova/file/fileentry/fileentry.md",
+            "cordova/file/directoryentry/directoryentry.md",
+            "cordova/file/directoryreader/directoryreader.md",
+            "cordova/file/filetransfer/filetransfer.md",
+            "cordova/file/fileuploadoptions/fileuploadoptions.md",
+            "cordova/file/fileuploadresult/fileuploadresult.md",
+            "cordova/file/flags/flags.md",
+            "cordova/file/localfilesystem/localfilesystem.md",
+            "cordova/file/metadata/metadata.md",
+            "cordova/file/fileerror/fileerror.md",
+            "cordova/file/filetransfererror/filetransfererror.md"
+        ],
+        "geolocation.md": [
+            "cordova/geolocation/geolocation.md",
+            "cordova/geolocation/geolocation.getCurrentPosition.md",
+            "cordova/geolocation/geolocation.watchPosition.md",
+            "cordova/geolocation/geolocation.clearWatch.md",
+            "cordova/geolocation/Coordinates/coordinates.md",
+            "cordova/geolocation/Position/position.md",
+            "cordova/geolocation/PositionError/positionError.md",
+            "cordova/geolocation/parameters/geolocationSuccess.md",
+            "cordova/geolocation/parameters/geolocationError.md",
+            "cordova/geolocation/parameters/geolocation.options.md"
+        ],
+        "media.md": [
+            "cordova/media/media.md",
+            "cordova/media/media.getCurrentPosition.md",
+            "cordova/media/media.getDuration.md",
+            "cordova/media/media.pause.md",
+            "cordova/media/media.play.md",
+            "cordova/media/media.release.md",
+            "cordova/media/media.seekTo.md",
+            "cordova/media/media.startRecord.md",
+            "cordova/media/media.stop.md",
+            "cordova/media/media.stopRecord.md",
+            "cordova/media/MediaError/mediaError.md",
+            "cordova/media/Parameters/mediaError.md"
+        ],
+        "network.md": [
+            "cordova/network/network.md",
+            "cordova/network/network.isReachable.md",
+            "cordova/network/NetworkStatus/NetworkStatus.md",
+            "cordova/network/parameters/reachableCallback.md",
+            "cordova/network/parameters/reachableHostname.md",
+            "cordova/network/parameters/reachableOptions.md"
+        ],
+        "connection.md": [
+            "cordova/connection/connection.md",
+            "cordova/connection/connection.type.md"
+        ],
+        "notification.md": [
+            "cordova/notification/notification.md",
+            "cordova/notification/notification.alert.md",
+            "cordova/notification/notification.confirm.md",
+            "cordova/notification/notification.beep.md",
+            "cordova/notification/notification.vibrate.md"
+        ],
+        "storage.md": [
+            "cordova/storage/storage.md",
+            "cordova/storage/storage.opendatabase.md",
+            "cordova/storage/parameters/name.md",
+            "cordova/storage/parameters/version.md",
+            "cordova/storage/parameters/display_name.md",
+            "cordova/storage/parameters/size.md",
+            "cordova/storage/database/database.md",
+            "cordova/storage/sqltransaction/sqltransaction.md",
+            "cordova/storage/sqlresultset/sqlresultset.md",
+            "cordova/storage/sqlresultsetlist/sqlresultsetlist.md",
+            "cordova/storage/sqlerror/sqlerror.md",
+            "cordova/storage/localstorage/localstorage.md"
+        ]
+    }
+}
diff --git a/docs/en/2.1.0/cordova/accelerometer/acceleration/acceleration.md b/docs/en/2.1.0/cordova/accelerometer/acceleration/acceleration.md
new file mode 100644
index 0000000..afa6e11
--- /dev/null
+++ b/docs/en/2.1.0/cordova/accelerometer/acceleration/acceleration.md
@@ -0,0 +1,107 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Acceleration
+============
+
+Contains `Accelerometer` data captured at a specific point in time.
+
+Properties
+----------
+
+- __x:__  Amount of acceleration on the x-axis. (in m/s^2) (`Number`)
+- __y:__  Amount of acceleration on the y-axis. (in m/s^2) (`Number`)
+- __z:__  Amount of acceleration on the z-axis. (in m/s^2) (`Number`)
+- __timestamp:__ Creation timestamp in milliseconds. (`DOMTimeStamp`)
+
+Description
+-----------
+
+This object is created and populated by Cordova, and returned by an `Accelerometer` method. The x, y, z acceleration values include the effect of gravity (9.81 m/s^2), so at when a device is lying flat on a table facing up, the value returned should be x=0, y=0, z=9.81.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 (Mango)
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    function onSuccess(acceleration) {
+        alert('Acceleration X: ' + acceleration.x + '\n' +
+              'Acceleration Y: ' + acceleration.y + '\n' +
+              'Acceleration Z: ' + acceleration.z + '\n' +
+              'Timestamp: '      + acceleration.timestamp + '\n');
+    };
+
+    function onError() {
+        alert('onError!');
+    };
+
+    navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Acceleration Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
+        }
+
+        // onSuccess: Get a snapshot of the current acceleration
+        //
+        function onSuccess(acceleration) {
+            alert('Acceleration X: ' + acceleration.x + '\n' +
+                  'Acceleration Y: ' + acceleration.y + '\n' +
+                  'Acceleration Z: ' + acceleration.z + '\n' +
+                  'Timestamp: '      + acceleration.timestamp + '\n');
+        }
+
+        // onError: Failed to get the acceleration
+        //
+        function onError() {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>getCurrentAcceleration</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/accelerometer/accelerometer.clearWatch.md b/docs/en/2.1.0/cordova/accelerometer/accelerometer.clearWatch.md
new file mode 100644
index 0000000..99f4cf0
--- /dev/null
+++ b/docs/en/2.1.0/cordova/accelerometer/accelerometer.clearWatch.md
@@ -0,0 +1,113 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+accelerometer.clearWatch
+========================
+
+Stop watching the `Acceleration` referenced by the watch ID parameter.
+
+    navigator.accelerometer.clearWatch(watchID);
+
+- __watchID__: The ID returned by `accelerometer.watchAcceleration`.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 (Mango)
+- Bada 1.2 & 2.x
+- Tizen
+
+Quick Example
+-------------
+
+    var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
+    
+    // ... later on ...
+    
+    navigator.accelerometer.clearWatch(watchID);
+    
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Acceleration Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchAcceleration`
+        var watchID = null;
+        
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            startWatch();
+        }
+
+        // Start watching the acceleration
+        //
+        function startWatch() {
+            
+            // Update acceleration every 3 seconds
+            var options = { frequency: 3000 };
+            
+            watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
+        }
+        
+        // Stop watching the acceleration
+        //
+        function stopWatch() {
+            if (watchID) {
+                navigator.accelerometer.clearWatch(watchID);
+                watchID = null;
+            }
+        }
+		    
+        // onSuccess: Get a snapshot of the current acceleration
+        //
+        function onSuccess(acceleration) {
+            var element = document.getElementById('accelerometer');
+            element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +
+                                'Acceleration Y: ' + acceleration.y + '<br />' +
+                                'Acceleration Z: ' + acceleration.z + '<br />' + 
+                                'Timestamp: '      + acceleration.timestamp + '<br />';
+        }
+
+        // onError: Failed to get the acceleration
+        //
+        function onError() {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <div id="accelerometer">Waiting for accelerometer...</div>
+		<button onclick="stopWatch();">Stop Watching</button>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/accelerometer/accelerometer.getCurrentAcceleration.md b/docs/en/2.1.0/cordova/accelerometer/accelerometer.getCurrentAcceleration.md
new file mode 100644
index 0000000..da468f2
--- /dev/null
+++ b/docs/en/2.1.0/cordova/accelerometer/accelerometer.getCurrentAcceleration.md
@@ -0,0 +1,109 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+accelerometer.getCurrentAcceleration
+====================================
+
+Get the current acceleration along the x, y, and z axis.
+
+    navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);
+
+Description
+-----------
+
+The accelerometer is a motion sensor that detects the change (delta) in movement relative to the current device orientation. The accelerometer can detect 3D movement along the x, y, and z axis.
+
+The acceleration is returned using the `accelerometerSuccess` callback function.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 (Mango)
+- Bada 1.2 & 2.x
+- Tizen
+
+Quick Example
+-------------
+
+    function onSuccess(acceleration) {
+        alert('Acceleration X: ' + acceleration.x + '\n' +
+              'Acceleration Y: ' + acceleration.y + '\n' +
+              'Acceleration Z: ' + acceleration.z + '\n' +
+              'Timestamp: '      + acceleration.timestamp + '\n');
+    };
+
+    function onError() {
+        alert('onError!');
+    };
+
+    navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Acceleration Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
+        }
+    
+        // onSuccess: Get a snapshot of the current acceleration
+        //
+        function onSuccess(acceleration) {
+            alert('Acceleration X: ' + acceleration.x + '\n' +
+                  'Acceleration Y: ' + acceleration.y + '\n' +
+                  'Acceleration Z: ' + acceleration.z + '\n' +
+                  'Timestamp: '      + acceleration.timestamp + '\n');
+        }
+    
+        // onError: Failed to get the acceleration
+        //
+        function onError() {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>getCurrentAcceleration</p>
+      </body>
+    </html>
+    
+iPhone Quirks
+-------------
+
+- iPhone doesn't have the concept of getting the current acceleration at any given point.
+- You must watch the acceleration and capture the data at given time intervals.
+- Thus, the `getCurrentAcceleration` function will give you the last value reported from a Cordova `watchAccelerometer` call.
diff --git a/docs/en/2.1.0/cordova/accelerometer/accelerometer.md b/docs/en/2.1.0/cordova/accelerometer/accelerometer.md
new file mode 100644
index 0000000..e5fcca8
--- /dev/null
+++ b/docs/en/2.1.0/cordova/accelerometer/accelerometer.md
@@ -0,0 +1,94 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Accelerometer
+=============
+
+> Captures device motion in the x, y, and z direction.
+
+Methods
+-------
+
+- accelerometer.getCurrentAcceleration
+- accelerometer.watchAcceleration
+- accelerometer.clearWatch
+
+Arguments
+---------
+
+- accelerometerSuccess
+- accelerometerError
+- accelerometerOptions
+
+Objects (Read-Only)
+-------------------
+
+- Acceleration
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Accelerometer" value="org.apache.cordova.AccelListener" />
+
+### Bada
+
+    No permissions are required.
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Accelerometer" value="org.apache.cordova.accelerometer.Accelerometer" />
+
+#### www/config.xml
+
+    <feature id="blackberry.system"  required="true" version="1.0.0.0" />
+    <feature id="org.apache.cordova" required="true" version="1.0.0" />
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>Accelerometer</key>
+        <string>CDVAccelerometer</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+#### Properties/WPAppManifest.xml
+
+    <Capabilities>
+        <Capability Name="ID_CAP_SENSORS" />
+    </Capabilities>
+
+Reference: [Application Manifest for Windows Phone](http://msdn.microsoft.com/en-us/library/ff769509%28v=vs.92%29.aspx)
+
+### Tizen
+
+    No permissions are required.
diff --git a/docs/en/2.1.0/cordova/accelerometer/accelerometer.watchAcceleration.md b/docs/en/2.1.0/cordova/accelerometer/accelerometer.watchAcceleration.md
new file mode 100644
index 0000000..ad8e662
--- /dev/null
+++ b/docs/en/2.1.0/cordova/accelerometer/accelerometer.watchAcceleration.md
@@ -0,0 +1,138 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+accelerometer.watchAcceleration
+===============================
+
+At a regular interval, get the acceleration along the x, y, and z axis.
+
+    var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,
+                                                           accelerometerError,
+                                                           [accelerometerOptions]);
+                                                           
+Description
+-----------
+
+The accelerometer is a motion sensor that detects the change (delta) in movement relative to the current position. The accelerometer can detect 3D movement along the x, y, and z axis.
+
+The `accelerometer.watchAcceleration` gets the device's current acceleration at a regular interval. Each time the `Acceleration` is retrieved, the `accelerometerSuccess` callback function is executed. Specify the interval in milliseconds via the `frequency` parameter in the `acceleratorOptions` object.
+
+The returned watch ID references the accelerometer watch interval. The watch ID can be used with `accelerometer.clearWatch` to stop watching the accelerometer.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 (Mango)
+- Bada 1.2 & 2.x
+- Tizen
+
+
+Quick Example
+-------------
+
+    function onSuccess(acceleration) {
+        alert('Acceleration X: ' + acceleration.x + '\n' +
+              'Acceleration Y: ' + acceleration.y + '\n' +
+              'Acceleration Z: ' + acceleration.z + '\n' +
+              'Timestamp: '      + acceleration.timestamp + '\n');
+    };
+
+    function onError() {
+        alert('onError!');
+    };
+
+    var options = { frequency: 3000 };  // Update every 3 seconds
+    
+    var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Acceleration Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchAcceleration`
+        var watchID = null;
+        
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            startWatch();
+        }
+
+        // Start watching the acceleration
+        //
+        function startWatch() {
+            
+            // Update acceleration every 3 seconds
+            var options = { frequency: 3000 };
+            
+            watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
+        }
+        
+        // Stop watching the acceleration
+        //
+        function stopWatch() {
+            if (watchID) {
+                navigator.accelerometer.clearWatch(watchID);
+                watchID = null;
+            }
+        }
+        
+        // onSuccess: Get a snapshot of the current acceleration
+        //
+        function onSuccess(acceleration) {
+            var element = document.getElementById('accelerometer');
+            element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +
+                                'Acceleration Y: ' + acceleration.y + '<br />' +
+                                'Acceleration Z: ' + acceleration.z + '<br />' +
+                                'Timestamp: '      + acceleration.timestamp + '<br />';
+        }
+
+        // onError: Failed to get the acceleration
+        //
+        function onError() {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <div id="accelerometer">Waiting for accelerometer...</div>
+      </body>
+    </html>
+    
+ iPhone Quirks
+-------------
+
+- At the interval requested, Cordova will call the success callback function and pass the accelerometer results.
+- However, in requests to the device Cordova restricts the interval to minimum of every 40ms and a maximum of every 1000ms.
+  - For example, if you request an interval of 3 seconds (3000ms), Cordova will request an interval of 1 second from the device but invoke the success callback at the requested interval of 3 seconds.
diff --git a/docs/en/2.1.0/cordova/accelerometer/parameters/accelerometerError.md b/docs/en/2.1.0/cordova/accelerometer/parameters/accelerometerError.md
new file mode 100644
index 0000000..c908c16
--- /dev/null
+++ b/docs/en/2.1.0/cordova/accelerometer/parameters/accelerometerError.md
@@ -0,0 +1,27 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+accelerometerError
+==================
+
+onError callback function for acceleration functions.
+
+    function() {
+        // Handle the error
+    }
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/accelerometer/parameters/accelerometerOptions.md b/docs/en/2.1.0/cordova/accelerometer/parameters/accelerometerOptions.md
new file mode 100644
index 0000000..197f416
--- /dev/null
+++ b/docs/en/2.1.0/cordova/accelerometer/parameters/accelerometerOptions.md
@@ -0,0 +1,28 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+accelerometerOptions
+====================
+
+An optional parameter to customize the retrieval of the accelerometer.
+
+Options
+-------
+
+- __frequency:__ How often to retrieve the `Acceleration` in milliseconds. _(Number)_ (Default: 10000)
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/accelerometer/parameters/accelerometerSuccess.md b/docs/en/2.1.0/cordova/accelerometer/parameters/accelerometerSuccess.md
new file mode 100644
index 0000000..277fca8
--- /dev/null
+++ b/docs/en/2.1.0/cordova/accelerometer/parameters/accelerometerSuccess.md
@@ -0,0 +1,42 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+accelerometerSuccess
+====================
+
+onSuccess callback function that provides the Acceleration information.
+
+    function(acceleration) {
+        // Do something
+    }
+
+Parameters
+----------
+
+- __acceleration:__ The acceleration at a single moment in time. (Acceleration)
+
+Example
+-------
+
+    function onSuccess(acceleration) {
+        alert('Acceleration X: ' + acceleration.x + '\n' +
+              'Acceleration Y: ' + acceleration.y + '\n' +
+              'Acceleration Z: ' + acceleration.z + '\n' +
+              'Timestamp: '      + acceleration.timestamp + '\n');
+    };
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/camera/camera.cleanup.md b/docs/en/2.1.0/cordova/camera/camera.cleanup.md
new file mode 100644
index 0000000..fbf9e13
--- /dev/null
+++ b/docs/en/2.1.0/cordova/camera/camera.cleanup.md
@@ -0,0 +1,50 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+camera.cleanup
+=================
+
+Cleans up the image files that were taken by the camera, that were stored in a temporary storage location.
+
+    navigator.camera.cleanup( cameraSuccess, cameraError );
+
+Description
+-----------
+
+Cleans up the image files stored in the temporary storage location, when the function `camera.getPicture` is used with  `Camera.sourceType = Camera.PictureSourceType.CAMERA` and `Camera.destinationType = Camera.DestinationType.FILE_URI`
+
+
+Supported Platforms
+-------------------
+
+- iOS
+
+
+Example
+-------------
+
+    navigator.camera.cleanup(onSuccess, onFail); 
+
+    function onSuccess() {
+        console.log("Camera cleanup success.")
+    }
+
+    function onFail(message) {
+        alert('Failed because: ' + message);
+    }
diff --git a/docs/en/2.1.0/cordova/camera/camera.getPicture.md b/docs/en/2.1.0/cordova/camera/camera.getPicture.md
new file mode 100644
index 0000000..2963951
--- /dev/null
+++ b/docs/en/2.1.0/cordova/camera/camera.getPicture.md
@@ -0,0 +1,217 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+camera.getPicture
+=================
+
+Takes a photo using the camera or retrieves a photo from the device's album.  The image is returned as a base64 encoded `String` or as the URI of an image file.
+
+    navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] );
+
+Description
+-----------
+
+Function `camera.getPicture` opens the device's default camera application so that the user can take a picture (if `Camera.sourceType = Camera.PictureSourceType.CAMERA`, which is the default). Once the photo is taken, the camera application closes and your application is restored.
+
+If `Camera.sourceType = Camera.PictureSourceType.PHOTOLIBRARY` or `Camera.PictureSourceType.SAVEDPHOTOALBUM`, then a photo chooser dialog is shown, from which a photo from the album can be selected.
+
+The return value will be sent to the `cameraSuccess` function, in one of the following formats, depending on the `cameraOptions` you specify:
+
+- A `String` containing the Base64 encoded photo image (default). 
+- A `String` representing the image file location on local storage.  
+
+You can do whatever you want with the encoded image or URI, for example:
+
+- Render the image in an `<img>` tag _(see example below)_
+- Save the data locally (`LocalStorage`, [Lawnchair](http://brianleroux.github.com/lawnchair/), etc)
+- Post the data to a remote server
+
+__Note:__ The image quality of pictures taken using the camera on newer devices is quite good, and images from the Photo Album will not be downscaled to a lower quality, even if a quality parameter is specified.  ___Encoding such images using Base64 has caused memory issues on many newer devices.  Therefore, using FILE_URI as the 'Camera.destinationType' is highly recommended.___
+
+Supported Platforms
+-------------------
+
+- Android
+- Blackberry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Bada 1.2
+- webOS
+- Tizen
+
+iOS Quirks
+----------
+
+Including a JavaScript alert() in either of the callback functions can cause problems.  Wrap the alert in a setTimeout() to allow the iOS image picker or popover to fully close before the alert is displayed: 
+
+    setTimeout(function() { 
+        // do your thing here!
+    }, 0);
+
+Windows Phone 7 Quirks
+----------------------
+
+Invoking the native camera application while your device is connected
+via Zune will not work, and the error callback will be triggered.
+
+Tizen Quirks
+----------------------
+
+Only 'destinationType: Camera.DestinationType.FILE_URI' and 'sourceType: Camera.PictureSourceType.PHOTOLIBRARY' are supported.
+
+Quick Example
+-------------
+
+Take photo and retrieve Base64-encoded image:
+
+    navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
+        destinationType: Camera.DestinationType.DATA_URL
+     }); 
+
+    function onSuccess(imageData) {
+        var image = document.getElementById('myImage');
+        image.src = "data:image/jpeg;base64," + imageData;
+    }
+
+    function onFail(message) {
+        alert('Failed because: ' + message);
+    }
+
+Take photo and retrieve image file location: 
+
+    navigator.camera.getPicture(onSuccess, onFail, { quality: 50, 
+        destinationType: Camera.DestinationType.FILE_URI }); 
+
+    function onSuccess(imageURI) {
+        var image = document.getElementById('myImage');
+        image.src = imageURI;
+    }
+
+    function onFail(message) {
+        alert('Failed because: ' + message);
+    }
+
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Capture Photo</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        var pictureSource;   // picture source
+        var destinationType; // sets the format of returned value 
+        
+        // Wait for Cordova to connect with the device
+        //
+        document.addEventListener("deviceready",onDeviceReady,false);
+    
+        // Cordova is ready to be used!
+        //
+        function onDeviceReady() {
+            pictureSource=navigator.camera.PictureSourceType;
+            destinationType=navigator.camera.DestinationType;
+        }
+
+        // Called when a photo is successfully retrieved
+        //
+        function onPhotoDataSuccess(imageData) {
+          // Uncomment to view the base64 encoded image data
+          // console.log(imageData);
+      
+          // Get image handle
+          //
+          var smallImage = document.getElementById('smallImage');
+      
+          // Unhide image elements
+          //
+          smallImage.style.display = 'block';
+      
+          // Show the captured photo
+          // The inline CSS rules are used to resize the image
+          //
+          smallImage.src = "data:image/jpeg;base64," + imageData;
+        }
+
+        // Called when a photo is successfully retrieved
+        //
+        function onPhotoURISuccess(imageURI) {
+          // Uncomment to view the image file URI 
+          // console.log(imageURI);
+      
+          // Get image handle
+          //
+          var largeImage = document.getElementById('largeImage');
+      
+          // Unhide image elements
+          //
+          largeImage.style.display = 'block';
+      
+          // Show the captured photo
+          // The inline CSS rules are used to resize the image
+          //
+          largeImage.src = imageURI;
+        }
+
+        // A button will call this function
+        //
+        function capturePhoto() {
+          // Take picture using device camera and retrieve image as base64-encoded string
+          navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
+            destinationType: destinationType.DATA_URL });
+        }
+
+        // A button will call this function
+        //
+        function capturePhotoEdit() {
+          // Take picture using device camera, allow edit, and retrieve image as base64-encoded string  
+          navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true,
+            destinationType: destinationType.DATA_URL });
+        }
+    
+        // A button will call this function
+        //
+        function getPhoto(source) {
+          // Retrieve image file location from specified source
+          navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
+            destinationType: destinationType.FILE_URI,
+            sourceType: source });
+        }
+
+        // Called if something bad happens.
+        // 
+        function onFail(message) {
+          alert('Failed because: ' + message);
+        }
+
+        </script>
+      </head>
+      <body>
+        <button onclick="capturePhoto();">Capture Photo</button> <br>
+        <button onclick="capturePhotoEdit();">Capture Editable Photo</button> <br>
+        <button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">From Photo Library</button><br>
+        <button onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">From Photo Album</button><br>
+        <img style="display:none;width:60px;height:60px;" id="smallImage" src="" />
+        <img style="display:none;" id="largeImage" src="" />
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/camera/camera.md b/docs/en/2.1.0/cordova/camera/camera.md
new file mode 100644
index 0000000..490fe10
--- /dev/null
+++ b/docs/en/2.1.0/cordova/camera/camera.md
@@ -0,0 +1,102 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Camera
+======
+
+> The `camera` object provides access to the device's default camera application.
+
+Methods
+-------
+
+- camera.getPicture
+- camera.cleanup
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Camera" value="org.apache.cordova.CameraLauncher" />
+
+#### app/AndroidManifest
+
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+### Bada
+
+#### manifest.xml
+
+    <Privilege>
+        <Name>CAMERA</Name>
+    </Privilege>
+    <Privilege>
+        <Name>RECORDING</Name>
+    </Privilege>
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Camera" value="org.apache.cordova.camera.Camera" />
+
+#### www/config.xml
+
+    <feature id="blackberry.media.camera" />
+
+    <rim:permissions>
+        <rim:permit>use_camera</rim:permit>
+    </rim:permissions>
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>Camera</key>
+        <string>CDVCamera</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+#### Properties/WPAppManifest.xml
+
+    <Capabilities>
+        <Capability Name="ID_CAP_CAMERA" />
+        <Capability Name="ID_CAP_ISV_CAMERA" />
+        <Capability Name="ID_HW_FRONTCAMERA" />
+    </Capabilities>
+
+Reference: [Application Manifest for Windows Phone](http://msdn.microsoft.com/en-us/library/ff769509%28v=vs.92%29.aspx)
+
+### Tizen
+
+#### config.xml
+
+    <feature name="http://tizen.org/api/application" required="true"/>
+    <feature name="http://tizen.org/api/application.launch" required="true"/>
+
+Reference: [Application Manifest for Tizen Web Application](https://developer.tizen.org/help/topic/org.tizen.help.gs/Creating%20a%20Project.html?path=0_1_1_3#8814682_CreatingaProject-EditingconfigxmlFeatures)
diff --git a/docs/en/2.1.0/cordova/camera/parameter/CameraPopoverOptions.md b/docs/en/2.1.0/cordova/camera/parameter/CameraPopoverOptions.md
new file mode 100644
index 0000000..6314e8a
--- /dev/null
+++ b/docs/en/2.1.0/cordova/camera/parameter/CameraPopoverOptions.md
@@ -0,0 +1,71 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+CameraPopoverOptions
+====================
+
+Parameters only used by iOS to specify the anchor element location and arrow direction of popover used on iPad when selecting images from the library or album.
+
+    { x : 0, 
+      y :  32,
+      width : 320,
+      height : 480,
+      arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
+    };
+
+CameraPopoverOptions
+--------------------
+
+- __x:__ x pixel coordinate of element on the screen to anchor popover onto. (`Number`)
+
+- __y:__ y pixel coordinate of element on the screen to anchor popover onto. (`Number`)
+
+- __width:__ width, in pixels, of the element on the screen to anchor popover onto. (`Number`)
+
+- __height:__ height, in pixels, of the element on the screen to anchor popover onto. (`Number`)
+
+- __arrowDir:__ Direction the arrow on the popover should point.  Defined in Camera.PopoverArrowDirection (`Number`)
+        
+            Camera.PopoverArrowDirection = {
+                ARROW_UP : 1,        // matches iOS UIPopoverArrowDirection constants
+                ARROW_DOWN : 2,
+                ARROW_LEFT : 4,
+                ARROW_RIGHT : 8,
+                ARROW_ANY : 15
+            };
+  
+Note that the size of the popover may change to adjust to the direction of the arrow and orientation of the screen.  Make sure to account for orientation changes when specifying the anchor element location. 
+
+Quick Example
+-------------
+
+     var popover = new CameraPopoverOptions(300,300,100,100,Camera.PopoverArrowDirection.ARROW_ANY);
+     var options = { quality: 50, destinationType: Camera.DestinationType.DATA_URL,sourceType: Camera.PictureSource.SAVEDPHOTOALBUM, popoverOptions : popover };
+     
+     navigator.camera.getPicture(onSuccess, onFail, options);
+     
+     function onSuccess(imageData) {
+        var image = document.getElementById('myImage');
+        image.src = "data:image/jpeg;base64," + imageData;
+    }
+
+    function onFail(message) {
+        alert('Failed because: ' + message);
+    }
+     
diff --git a/docs/en/2.1.0/cordova/camera/parameter/cameraError.md b/docs/en/2.1.0/cordova/camera/parameter/cameraError.md
new file mode 100644
index 0000000..7ee091b
--- /dev/null
+++ b/docs/en/2.1.0/cordova/camera/parameter/cameraError.md
@@ -0,0 +1,32 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+cameraError
+===========
+
+onError callback function that provides an error message.
+
+    function(message) {
+        // Show a helpful message
+    }
+
+Parameters
+----------
+
+- __message:__ The message is provided by the device's native code. (`String`)
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/camera/parameter/cameraOptions.md b/docs/en/2.1.0/cordova/camera/parameter/cameraOptions.md
new file mode 100644
index 0000000..b964205
--- /dev/null
+++ b/docs/en/2.1.0/cordova/camera/parameter/cameraOptions.md
@@ -0,0 +1,126 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+cameraOptions
+=============
+
+Optional parameters to customize the camera settings.
+
+    { quality : 75, 
+      destinationType : Camera.DestinationType.DATA_URL, 
+      sourceType : Camera.PictureSourceType.CAMERA, 
+      allowEdit : true,
+      encodingType: Camera.EncodingType.JPEG,
+      targetWidth: 100,
+      targetHeight: 100,
+      popoverOptions: CameraPopoverOptions,
+      saveToPhotoAlbum: false };
+
+Options
+-------
+
+- __quality:__ Quality of saved image. Range is [0, 100]. (`Number`)
+
+- __destinationType:__ Choose the format of the return value.  Defined in navigator.camera.DestinationType (`Number`)
+        
+            Camera.DestinationType = {
+                DATA_URL : 0,                // Return image as base64 encoded string
+                FILE_URI : 1                 // Return image file URI
+            };
+
+- __sourceType:__ Set the source of the picture.  Defined in nagivator.camera.PictureSourceType (`Number`)
+     
+        Camera.PictureSourceType = {
+            PHOTOLIBRARY : 0,
+            CAMERA : 1,
+            SAVEDPHOTOALBUM : 2
+        };
+
+- __allowEdit:__ Allow simple editing of image before selection. (`Boolean`)
+  
+- __encodingType:__ Choose the encoding of the returned image file.  Defined in navigator.camera.EncodingType (`Number`)
+        
+            Camera.EncodingType = {
+                JPEG : 0,               // Return JPEG encoded image
+                PNG : 1                 // Return PNG encoded image
+            };
+
+- __targetWidth:__ Width in pixels to scale image. Must be used with targetHeight.  Aspect ratio is maintained. (`Number`)
+- __targetHeight:__ Height in pixels to scale image. Must be used with targetWidth. Aspect ratio is maintained. (`Number`)
+
+- __mediaType:__ Set the type of media to select from.  Only works when PictureSourceType is PHOTOLIBRARY or SAVEDPHOTOALBUM. Defined in nagivator.camera.MediaType (`Number`)
+     
+        Camera.MediaType = { 
+			PICTURE: 0,             // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType
+			VIDEO: 1,               // allow selection of video only, WILL ALWAYS RETURN FILE_URI
+			ALLMEDIA : 2			// allow selection from all media types
+};
+
+- __correctOrientation:__ Rotate the image to correct for the orientation of the device during capture. (`Boolean`)
+- __saveToPhotoAlbum:__ Save the image to the photo album on the device after capture. (`Boolean`)
+- __popoverOptions:__ iOS only options to specify popover location in iPad.  Defined in CameraPopoverOptions
+  
+Android Quirks
+--------------
+
+- Ignores the `allowEdit` parameter.
+- Camera.PictureSourceType.PHOTOLIBRARY and Camera.PictureSourceType.SAVEDPHOTOALBUM both display the same photo album.
+
+BlackBerry Quirks
+-----------------
+
+- Ignores the `quality` parameter.
+- Ignores the `sourceType` parameter.
+- Ignores the `allowEdit` parameter.
+- Application must have key injection permissions to close native Camera application after photo is taken.
+- Using Large image sizes may result in inability to encode image on later model devices with high resolution cameras (e.g. Torch 9800).
+- Camera.MediaType is not supported.
+- Ignores the `correctOrientation` parameter.
+
+webOS Quirks
+-----------
+
+- Ignores the `quality` parameter.
+- Ignores the `sourceType` parameter.
+- Ignores the `allowEdit` parameter.
+- Camera.MediaType is not supported.
+- Ignores the `correctOrientation` parameter.
+- Ignores the `saveToPhotoAlbum` parameter.
+
+iOS Quirks
+--------------
+
+- Set `quality` below 50 to avoid memory error on some devices.
+- When `destinationType.FILE_URI` is used, photos are saved in the application's temporary directory.  Developers may delete the contents of this directory using the navigator.fileMgr APIs if storage space is a concern.
+
+Windows Phone 7 Quirks
+--------------
+
+- Ignores the `allowEdit` parameter.
+- Ignores the `correctOrientation` parameter.
+
+Bada 1.2 Quirks
+--------------
+- options not supported
+- always returns a FILE URI
+
+Tizen Quirks
+--------------
+- options not supported
+- always returns a FILE URI
diff --git a/docs/en/2.1.0/cordova/camera/parameter/cameraSuccess.md b/docs/en/2.1.0/cordova/camera/parameter/cameraSuccess.md
new file mode 100644
index 0000000..773fba4
--- /dev/null
+++ b/docs/en/2.1.0/cordova/camera/parameter/cameraSuccess.md
@@ -0,0 +1,42 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+cameraSuccess
+=============
+
+onSuccess callback function that provides the image data.
+
+    function(imageData) {
+        // Do something with the image
+    }
+
+Parameters
+----------
+
+- __imageData:__ Base64 encoding of the image data, OR the image file URI, depending on `cameraOptions` used. (`String`)
+
+Example
+-------
+
+    // Show image
+    //
+    function cameraCallback(imageData) {
+        var image = document.getElementById('myImage');
+        image.src = "data:image/jpeg;base64," + imageData;
+    }
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/compass/compass.clearWatch.md b/docs/en/2.1.0/cordova/compass/compass.clearWatch.md
new file mode 100755
index 0000000..063b6f9
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/compass.clearWatch.md
@@ -0,0 +1,112 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+compass.clearWatch
+========================
+
+Stop watching the compass referenced by the watch ID parameter.
+
+    navigator.compass.clearWatch(watchID);
+
+- __watchID__: The ID returned by `compass.watchHeading`.
+
+Supported Platforms
+-------------------
+
+- Android
+- iPhone
+- Windows Phone 7 ( Mango ) if available in hardware
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    var watchID = navigator.compass.watchHeading(onSuccess, onError, options);
+    
+    // ... later on ...
+    
+    navigator.compass.clearWatch(watchID);
+    
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Compass Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchHeading`
+        var watchID = null;
+        
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            startWatch();
+        }
+
+        // Start watching the compass
+        //
+        function startWatch() {
+            
+            // Update compass every 3 seconds
+            var options = { frequency: 3000 };
+            
+            watchID = navigator.compass.watchHeading(onSuccess, onError, options);
+        }
+        
+        // Stop watching the compass
+        //
+        function stopWatch() {
+            if (watchID) {
+                navigator.compass.clearWatch(watchID);
+                watchID = null;
+            }
+        }
+        
+        // onSuccess: Get the current heading
+        //
+        function onSuccess(heading) {
+            var element = document.getElementById('heading');
+            element.innerHTML = 'Heading: ' + heading.magneticHeading;
+        }
+
+        // onError: Failed to get the heading
+        //
+        function onError(compassError) {
+            alert('Compass error: ' + compassError.code);
+        }
+
+
+        </script>
+      </head>
+      <body>
+        <div id="heading">Waiting for heading...</div>
+        <button onclick="startWatch();">Start Watching</button>
+        <button onclick="stopWatch();">Stop Watching</button>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/compass/compass.clearWatchFilter.md b/docs/en/2.1.0/cordova/compass/compass.clearWatchFilter.md
new file mode 100644
index 0000000..8c92c03
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/compass.clearWatchFilter.md
@@ -0,0 +1,23 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+compass.clearWatchFilter
+========================
+
+No longer supported as of 1.6.  See `compass.clearWatch`.
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/compass/compass.getCurrentHeading.md b/docs/en/2.1.0/cordova/compass/compass.getCurrentHeading.md
new file mode 100755
index 0000000..af6ba00
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/compass.getCurrentHeading.md
@@ -0,0 +1,97 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+compass.getCurrentHeading
+=========================
+
+Get the current compass heading.
+
+    navigator.compass.getCurrentHeading(compassSuccess, compassError, compassOptions);
+
+Description
+-----------
+
+The compass is a sensor that detects the direction or heading that the device is pointed.  It measures the heading in degrees from 0 to 359.99.
+
+The compass heading information is returned via a CompassHeading object using the `compassSuccess` callback function.
+
+Supported Platforms
+-------------------
+
+- Android
+- iPhone
+- Windows Phone 7 ( Mango ) if available in hardware
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    function onSuccess(heading) {
+        alert('Heading: ' + heading.magneticHeading);
+    };
+
+    function onError(error) {
+        alert('CompassError: ' + error.code);
+    };
+
+    navigator.compass.getCurrentHeading(onSuccess, onError);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Compass Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            navigator.compass.getCurrentHeading(onSuccess, onError);
+        }
+    
+        // onSuccess: Get the current heading
+        //
+        function onSuccess(heading) {
+            alert('Heading: ' + heading.magneticHeading);
+        }
+    
+        // onError: Failed to get the heading
+        //
+        function onError(compassError) {
+            alert('Compass Error: ' + compassError.code);
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>getCurrentHeading</p>
+      </body>
+    </html>
+    
diff --git a/docs/en/2.1.0/cordova/compass/compass.md b/docs/en/2.1.0/cordova/compass/compass.md
new file mode 100755
index 0000000..32cfc70
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/compass.md
@@ -0,0 +1,85 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Compass
+=======
+
+> Obtains the direction that the device is pointing.
+
+Methods
+-------
+
+- compass.getCurrentHeading
+- compass.watchHeading
+- compass.clearWatch
+- compass.watchHeadingFilter 	(obsolete)
+- compass.clearWatchFilter		(obsolete)
+
+Arguments
+---------
+
+- compassSuccess
+- compassError
+- compassOptions
+- compassHeading
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Compass" value="org.apache.cordova.CompassListener" />
+
+### Bada
+
+    No permissions are required.
+
+### BlackBerry WebWorks
+
+    No permissions are required.
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>Compass</key>
+        <string>CDVLocation</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+#### Properties/WPAppManifest.xml
+
+    <Capabilities>
+        <Capability Name="ID_CAP_SENSORS" />
+    </Capabilities>
+
+Reference: [Application Manifest for Windows Phone](http://msdn.microsoft.com/en-us/library/ff769509%28v=vs.92%29.aspx)
+
+### Tizen
+
+    No permissions are required.
diff --git a/docs/en/2.1.0/cordova/compass/compass.watchHeading.md b/docs/en/2.1.0/cordova/compass/compass.watchHeading.md
new file mode 100755
index 0000000..da553a6
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/compass.watchHeading.md
@@ -0,0 +1,133 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+compass.watchHeading
+====================
+
+At a regular interval, get the compass heading in degrees.
+
+    var watchID = navigator.compass.watchHeading(compassSuccess, compassError, [compassOptions]);
+                                                           
+Description
+-----------
+
+The compass is a sensor that detects the direction or heading that the device is pointed.  It measures the heading in degrees from 0 to 359.99.
+
+The `compass.watchHeading` gets the device's current heading at a regular interval. Each time the heading is retrieved, the `headingSuccess` callback function is executed. Specify the interval in milliseconds via the `frequency` parameter in the `compassOptions` object.
+
+The returned watch ID references references the compass watch interval. The watch ID can be used with `compass.clearWatch` to stop watching the compass.
+
+Supported Platforms
+-------------------
+
+- Android
+- iPhone
+- Windows Phone 7 ( Mango ) if available in hardware
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+
+Quick Example
+-------------
+
+    function onSuccess(heading) {
+        var element = document.getElementById('heading');
+        element.innerHTML = 'Heading: ' + heading.magneticHeading;
+    };
+
+    function onError(compassError) {
+            alert('Compass error: ' + compassError.code);
+    };
+
+    var options = { frequency: 3000 };  // Update every 3 seconds
+    
+    var watchID = navigator.compass.watchHeading(onSuccess, onError, options);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Compass Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchHeading`
+        var watchID = null;
+        
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            startWatch();
+        }
+
+        // Start watching the compass
+        //
+        function startWatch() {
+            
+            // Update compass every 3 seconds
+            var options = { frequency: 3000 };
+            
+            watchID = navigator.compass.watchHeading(onSuccess, onError, options);
+        }
+        
+        // Stop watching the compass
+        //
+        function stopWatch() {
+            if (watchID) {
+                navigator.compass.clearWatch(watchID);
+                watchID = null;
+            }
+        }
+        
+        // onSuccess: Get the current heading
+        //
+        function onSuccess(heading) {
+            var element = document.getElementById('heading');
+            element.innerHTML = 'Heading: ' + heading.magneticHeading;
+        }
+
+        // onError: Failed to get the heading
+        //
+        function onError(compassError) {
+            alert('Compass error: ' + compassError.code);
+        }
+
+        </script>
+      </head>
+      <body>
+        <div id="heading">Waiting for heading...</div>
+        <button onclick="startWatch();">Start Watching</button>
+        <button onclick="stopWatch();">Stop Watching</button>
+      </body>
+    </html>
+    
+iOS Quirks
+--------------
+
+In iOS `compass.watchHeading` can also get the device's current heading when it changes by a specified number of degrees. Each time the heading changes by the specified number of degrees or more, the `headingSuccess` callback function is called. Specify the degrees of change via the `filter` parameter in the `compassOptions` object.  Clear the watch as normal by passing the returned watch ID to `compass.clearWatch`.  This functionality replaces the previously separate, iOS only functions, watchHeadingFilter and clearWatchFilter, which were removed in 1.6.
+
+In iOS only one watchHeading can be in effect at one time.  If a watchHeading via filter is in effect, calling getCurrentHeading or watchHeading will use the existing filter value for specifying heading changes. On iOS watching heading changes via a filter is more efficient than via time.
diff --git a/docs/en/2.1.0/cordova/compass/compass.watchHeadingFilter.md b/docs/en/2.1.0/cordova/compass/compass.watchHeadingFilter.md
new file mode 100644
index 0000000..6a0283f
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/compass.watchHeadingFilter.md
@@ -0,0 +1,23 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+compass.watchHeadingFilter
+==========================
+
+No longer supported as of 1.6, see `compass.watchHeading` for equivalent functionality.
diff --git a/docs/en/2.1.0/cordova/compass/compassError/compassError.md b/docs/en/2.1.0/cordova/compass/compassError/compassError.md
new file mode 100644
index 0000000..989b4dc
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/compassError/compassError.md
@@ -0,0 +1,40 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+CompassError
+==========
+
+A `CompassError` object is returned to the `compassError` callback function when an error occurs.
+
+Properties
+----------
+
+- __code:__ One of the predefined error codes listed below.
+
+Constants
+---------
+- `CompassError.COMPASS_INTERNAL_ERR` 
+- `CompassError.COMPASS_NOT_SUPPORTED`
+
+Description
+-----------
+
+The `CompassError` object is returned to the user through the `compassError` callback function when an error occurs.
+
+
diff --git a/docs/en/2.1.0/cordova/compass/parameters/compassError.md b/docs/en/2.1.0/cordova/compass/parameters/compassError.md
new file mode 100755
index 0000000..cf89324
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/parameters/compassError.md
@@ -0,0 +1,30 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+compassError
+==========
+
+onError callback function for compass functions. 
+
+Example
+-------
+
+function(CompassError) {
+    // Handle the error
+}
diff --git a/docs/en/2.1.0/cordova/compass/parameters/compassHeading.md b/docs/en/2.1.0/cordova/compass/parameters/compassHeading.md
new file mode 100644
index 0000000..935ea06
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/parameters/compassHeading.md
@@ -0,0 +1,48 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+compassHeading
+==========
+
+A `CompassHeading` object is returned to the `compassSuccess` callback function when an error occurs.
+
+Properties
+----------
+- __magneticHeading:__ The heading in degrees from 0 - 359.99 at a single moment in time. _(Number)_
+- __trueHeading:__ The heading relative to the geographic North Pole in degrees 0 - 359.99 at a single moment in time. A negative value indicates that the true heading could not be determined.  _(Number)_
+- __headingAccuracy:__ The deviation in degrees between the reported heading and the true heading. _(Number)_
+- __timestamp:__ The time at which this heading was determined.  _(milliseconds)_
+
+Description
+-----------
+
+The `CompassHeading` object is returned to the user through the `compassSuccess` callback function.
+
+Android Quirks
+--------------
+- trueHeading is not supported. It will report the same value as magneticHeading
+- headingAccuracy will always be 0 as there is no difference between the magneticHeading and trueHeading on Android.
+
+iOS Quirks
+----------
+
+- trueHeading is only returned when location services are running via `navigator.geolocation.watchLocation()`
+- For iOS > 4 devices, if the device is rotated and the app supports that orientation, the heading values will be reported 
+back with respect to the current orientation. 
+
diff --git a/docs/en/2.1.0/cordova/compass/parameters/compassOptions.md b/docs/en/2.1.0/cordova/compass/parameters/compassOptions.md
new file mode 100755
index 0000000..9456302
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/parameters/compassOptions.md
@@ -0,0 +1,46 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+compassOptions
+==============
+
+An optional parameter to customize the retrieval of the compass.
+
+Options
+-------
+
+- __frequency:__ How often to retrieve the compass heading in milliseconds. _(Number)_ (Default: 100)
+- __filter:__ The change in degrees required to initiate a watchHeading success callback. _(Number)_
+
+Android Quirks
+______________
+- filter is not supported.
+
+Windows Phone 7 Quirks
+--------------
+
+- filter is not supported.
+
+Bada Quirks
+-----------
+- filter is not supported.
+
+Tizen Quirks
+-----------
+- filter is not supported.
diff --git a/docs/en/2.1.0/cordova/compass/parameters/compassSuccess.md b/docs/en/2.1.0/cordova/compass/parameters/compassSuccess.md
new file mode 100644
index 0000000..1b0fc9c
--- /dev/null
+++ b/docs/en/2.1.0/cordova/compass/parameters/compassSuccess.md
@@ -0,0 +1,40 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+compassSuccess
+==============
+
+onSuccess callback function that provides the compass heading information via a compassHeading object.
+
+    function(heading) {
+        // Do something
+    }
+
+Parameters
+----------
+
+
+- __heading:__ The heading information. _(compassHeading)_
+
+Example
+-------
+
+    function onSuccess(heading) {
+        alert('Heading: ' + heading.magneticHeading);
+    };
diff --git a/docs/en/2.1.0/cordova/connection/connection.md b/docs/en/2.1.0/cordova/connection/connection.md
new file mode 100644
index 0000000..f69dc7a
--- /dev/null
+++ b/docs/en/2.1.0/cordova/connection/connection.md
@@ -0,0 +1,100 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Connection
+==========
+
+> The `connection` object gives access to the device's cellular and wifi connection information.
+
+This object is accessed under the `navigator.network` interface.
+
+Properties
+----------
+
+- connection.type
+
+Constants
+---------
+
+- Connection.UNKNOWN
+- Connection.ETHERNET
+- Connection.WIFI
+- Connection.CELL_2G
+- Connection.CELL_3G
+- Connection.CELL_4G
+- Connection.NONE
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager" />
+
+#### app/AndroidManifest.xml
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+
+### Bada
+
+    <Privilege>
+        <Name>SYSTEM_SERVICE</Name>
+    </Privilege>
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Network Status" value="org.apache.cordova.network.Network" />
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>NetworkStatus</key>
+        <string>CDVConnection</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+#### Properties/WPAppManifest.xml
+
+    <Capabilities>
+        <Capability Name="ID_CAP_NETWORKING" />
+    </Capabilities>
+
+Reference: [Application Manifest for Windows Phone](http://msdn.microsoft.com/en-us/library/ff769509%28v=vs.92%29.aspx)
+
+### Tizen
+
+#### config.xml
+
+    <feature name="http://tizen.org/api/systeminfo" required="true"/>
+
+Reference: [Application Manifest for Tizen Web Application](https://developer.tizen.org/help/topic/org.tizen.help.gs/Creating%20a%20Project.html?path=0_1_1_3#8814682_CreatingaProject-EditingconfigxmlFeatures)
diff --git a/docs/en/2.1.0/cordova/connection/connection.type.md b/docs/en/2.1.0/cordova/connection/connection.type.md
new file mode 100644
index 0000000..837d255
--- /dev/null
+++ b/docs/en/2.1.0/cordova/connection/connection.type.md
@@ -0,0 +1,130 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+connection.type
+===================
+
+Checks the active network connection that is being used.
+
+Description
+-----------
+
+This property is a fast way to determine the device's network connection state, and type of connection.
+
+Supported Platforms
+-------------------
+
+- iOS
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- Windows Phone 7 ( Mango )
+- Bada 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    function checkConnection() {
+        var networkState = navigator.network.connection.type;
+        
+        var states = {};
+        states[Connection.UNKNOWN]	= 'Unknown connection';
+        states[Connection.ETHERNET]	= 'Ethernet connection';
+        states[Connection.WIFI]   	= 'WiFi connection';
+        states[Connection.CELL_2G]	= 'Cell 2G connection';
+        states[Connection.CELL_3G]	= 'Cell 3G connection';
+        states[Connection.CELL_4G]	= 'Cell 4G connection';
+        states[Connection.NONE]   	= 'No network connection';
+    
+        alert('Connection type: ' + states[networkState]);
+    }
+    
+    checkConnection();
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>navigator.network.connection.type Example</title>
+        
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+            
+        // Wait for Cordova to load
+        // 
+        document.addEventListener("deviceready", onDeviceReady, false);
+        
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            checkConnection();
+        }
+        
+	    function checkConnection() {
+	        var networkState = navigator.network.connection.type;
+
+	        var states = {};
+	        states[Connection.UNKNOWN]	= 'Unknown connection';
+	        states[Connection.ETHERNET]	= 'Ethernet connection';
+	        states[Connection.WIFI]   	= 'WiFi connection';
+	        states[Connection.CELL_2G]	= 'Cell 2G connection';
+	        states[Connection.CELL_3G]	= 'Cell 3G connection';
+	        states[Connection.CELL_4G]	= 'Cell 4G connection';
+	        states[Connection.NONE]   	= 'No network connection';
+
+	        alert('Connection type: ' + states[networkState]);
+	    }
+        
+        </script>
+      </head>
+      <body>
+        <p>A dialog box will report the network state.</p>
+      </body>
+    </html>
+
+iOS Quirks
+----------
+
+- iOS cannot detect the type of cellular network connection.
+    - `navigator.network.connection.type` is set to `Connection.CELL_2G` for all cellular data.
+
+Bada Quirks
+-----------
+
+- Bada can only detect a WiFi or cellular connection.
+    - `navigator.network.connection.type` is set to `Connection.CELL_2G` for all cellular data.
+
+webOS Quirks
+------------
+
+- Only shows that a connection is available, but not which type.
+
+Windows Phone Quirks
+--------------------
+
+- Windows Phone Emulator always detects `navigator.network.connection.type` as `Connection.UNKNOWN`.
+
+Tizen Quirks
+--------------------
+
+- Tizen can only detect a WiFi or cellular connection.
+    - `navigator.network.connection.type` is set to `Connection.CELL_2G` for all cellular data.
diff --git a/docs/en/2.1.0/cordova/contacts/Contact/contact.md b/docs/en/2.1.0/cordova/contacts/Contact/contact.md
new file mode 100644
index 0000000..0ba3474
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/Contact/contact.md
@@ -0,0 +1,232 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Contact
+=======
+
+Contains properties that describe a contact, such as a user's personal or business contact.
+
+Properties
+----------
+
+- __id:__ A globally unique identifier. _(DOMString)_
+- __displayName:__ The name of this Contact, suitable for display to end-users. _(DOMString)_
+- __name:__ An object containing all components of a persons name. _(ContactName)_
+- __nickname:__ A casual name to address the contact by. _(DOMString)_
+- __phoneNumbers:__ An array of all the contact's phone numbers. _(ContactField[])_
+- __emails:__ An array of all the contact's email addresses. _(ContactField[])_
+- __addresses:__ An array of all the contact's addresses. _(ContactAddress[])_
+- __ims:__ An array of all the contact's IM addresses. _(ContactField[])_
+- __organizations:__ An array of all the contact's organizations. _(ContactOrganization[])_
+- __birthday:__ The birthday of the contact. _(Date)_
+- __note:__ A note about the contact. _(DOMString)_
+- __photos:__ An array of the contact's photos. _(ContactField[])_
+- __categories:__  An array of all the contacts user defined categories. _(ContactField[])_
+- __urls:__  An array of web pages associated to the contact. _(ContactField[])_
+
+Methods
+-------
+
+- __clone__: Returns a new Contact object that is a deep copy of the calling object, with the id property set to `null`. 
+- __remove__: Removes the contact from the device contacts database.  An error callback is called with a `ContactError` object if the removal is unsuccessful.
+- __save__: Saves a new contact to the device contacts database, or updates an existing contact if a contact with the same __id__ already exists.
+
+
+Details
+-------
+
+The `Contact` object represents a user contact.  Contacts can be created, saved to, or removed from the device contacts database.  Contacts can also be retrieved (individually or in bulk) from the database by invoking the `contacts.find` method.
+
+_Note: Not all of the above contact fields are supported on every device platform.  Please check each platform's Quirks section for information about which fields are supported._
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Bada 1.2 & 2.0
+
+Save Quick Example
+------------------
+
+	function onSuccess(contact) {
+		alert("Save Success");
+	};
+
+	function onError(contactError) {
+		alert("Error = " + contactError.code);
+	};
+
+	// create a new contact object
+    var contact = navigator.contacts.create();
+	contact.displayName = "Plumber";
+	contact.nickname = "Plumber"; 		//specify both to support all devices
+	
+	// populate some fields
+	var name = new ContactName();
+	name.givenName = "Jane";
+	name.familyName = "Doe";
+	contact.name = name;
+	
+	// save to device
+	contact.save(onSuccess,onError);
+
+Clone Quick Example
+-------------------
+
+	// clone the contact object
+	var clone = contact.clone();
+	clone.name.givenName = "John";
+	console.log("Original contact name = " + contact.name.givenName);
+	console.log("Cloned contact name = " + clone.name.givenName); 
+
+Remove Quick Example
+--------------------
+
+    function onSuccess() {
+        alert("Removal Success");
+    };
+
+    function onError(contactError) {
+        alert("Error = " + contactError.code);
+    };
+
+	// remove the contact from the device
+	contact.remove(onSuccess,onError);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+		    // create
+		    var contact = navigator.contacts.create();
+			contact.displayName = "Plumber";
+			contact.nickname = "Plumber"; 		//specify both to support all devices
+			var name = new ContactName();
+			name.givenName = "Jane";
+			name.familyName = "Doe";
+			contact.name = name;
+
+			// save
+			contact.save(onSaveSuccess,onSaveError);
+			
+			// clone
+			var clone = contact.clone();
+			clone.name.givenName = "John";
+			console.log("Original contact name = " + contact.name.givenName);
+			console.log("Cloned contact name = " + clone.name.givenName); 
+			
+			// remove
+			contact.remove(onRemoveSuccess,onRemoveError);
+        }
+        
+        // onSaveSuccess: Get a snapshot of the current contacts
+        //
+        function onSaveSuccess(contact) {
+			alert("Save Success");
+        }
+    
+        // onSaveError: Failed to get the contacts
+        //
+        function onSaveError(contactError) {
+			alert("Error = " + contactError.code);
+        }
+        
+        // onRemoveSuccess: Get a snapshot of the current contacts
+        //
+        function onRemoveSuccess(contacts) {
+			alert("Removal Success");
+        }
+    
+        // onRemoveError: Failed to get the contacts
+        //
+        function onRemoveError(contactError) {
+			alert("Error = " + contactError.code);
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Find Contacts</p>
+      </body>
+    </html>
+
+Android 2.X Quirks
+------------------
+
+- __categories:__  This property is not support by Android 2.X devices, and will always be returned as `null`.
+
+Android 1.X Quirks
+------------------
+
+- __name:__ This property is not support by Android 1.X devices, and will always be returned as `null`.
+- __nickname:__ This property is not support by Android 1.X devices, and will always be returned as `null`.
+- __birthday:__ This property is not support by Android 1.X devices, and will always be returned as `null`.
+- __photos:__ This property is not support by Android 1.X devices, and will always be returned as `null`.
+- __categories:__  This property is not support by Android 1.X devices, and will always be returned as `null`.
+- __urls:__  This property is not support by Android 1.X devices, and will always be returned as `null`.
+
+
+BlackBerry WebWorks (OS 5.0 and higher) Quirks
+---------------------------------------------
+
+- __id:__ Supported.  Assigned by device when contact is saved.
+- __displayName:__ Supported.  Stored in BlackBerry __user1__ field.
+- __nickname:__ This property is not supported, and will always be returned as `null`. 
+- __phoneNumbers:__ Partially supported.  Phone numbers will be stored in BlackBerry fields __homePhone1__ and __homePhone2__ if _type_ is 'home', __workPhone1__ and __workPhone2__ if _type_ is 'work', __mobilePhone__ if _type_ is 'mobile', __faxPhone__ if _type_ is 'fax', __pagerPhone__ if _type_ is 'pager', and __otherPhone__ if _type_ is none of the above.
+- __emails:__ Partially supported.  The first three email addresses will be stored in the BlackBerry __email1__, __email2__, and __email3__ fields, respectively.
+- __addresses:__ Partially supported.  The first and second addresses will be stored in the BlackBerry __homeAddress__ and __workAddress__ fields, respectively.
+- __ims:__ This property is not supported, and will always be returned as `null`. 
+- __organizations:__ Partially supported.  The __name__ and __title__ of the first organization are stored in the BlackBerry __company__ and __title__ fields, respectively.
+- __photos:__ - Partially supported.  A single thumbnail-sized photo is supported.  To set a contact's photo, pass in a either a Base64 encoded image, or a URL pointing to the image.  The image will be scaled down before saving to the BlackBerry contacts database.   The contact photo is returned as a Base64 encoded image.
+- __categories:__  Partially supported.  Only 'Business' and 'Personal' categories are supported. 
+- __urls:__  Partially supported. The first url is stored in BlackBerry __webpage__ field.
+
+iOS Quirks
+----------
+- __displayName:__ This property is not supported by iOS and will be returned as `null` unless there is no ContactName specified.  If there is no ContactName, then composite name, __nickame__ or "" is returned for __displayName__, respectively. 
+- __birthday:__ For input, this property must be provided as a JavaScript Date object. It is returned as a JavaScript Date object.
+- __photos:__ Returned Photo is stored in the application's temporary directory and a File URL to photo is returned.  Contents of temporary folder is deleted when application exits. 
+- __categories:__  This property is not currently supported and will always be returned as `null`.
+
+
+Bada Quirks
+-----------
+
+- __displayName:__ This property is not supported
+- __birthday:__ This property is not supported
+- __photos:__ This property should be a list with one URL to a photo
+- __categories:__ This property is not supported
+- __ims:__ This property is not supported
diff --git a/docs/en/2.1.0/cordova/contacts/ContactAddress/contactaddress.md b/docs/en/2.1.0/cordova/contacts/ContactAddress/contactaddress.md
new file mode 100644
index 0000000..e682e82
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/ContactAddress/contactaddress.md
@@ -0,0 +1,170 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+ContactAddress
+==============
+
+Contains address properties for a `Contact` object.
+
+Properties
+----------
+- __pref:__ Set to `true` if this `ContactAddress` contains the user's preferred value. _(boolean)_
+- __type:__ A string that tells you what type of field this is (example: 'home'). _(DOMString)
+- __formatted:__ The full address formatted for display. _(DOMString)_
+- __streetAddress:__ The full street address. _(DOMString)_
+- __locality:__ The city or locality. _(DOMString)_
+- __region:__ The state or region. _(DOMString)_
+- __postalCode:__ The zip code or postal code. _(DOMString)_
+- __country:__ The country name. _(DOMString)_
+
+Details
+-------
+
+The `ContactAddress` object stores the properties of a single address of a contact.  A `Contact` object can have one or more addresses in a  `ContactAddress[]` array. 
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Bada 1.2 & 2.0
+
+Quick Example
+-------------
+
+	// display the address information for all contacts
+    function onSuccess(contacts) {
+		for (var i=0; i<contacts.length; i++) {
+			for (var j=0; j<contacts[i].addresses.length; j++) {
+				alert("Pref: " + contacts[i].addresses[j].pref + "\n" +
+						"Type: " + contacts[i].addresses[j].type + "\n" +
+						"Formatted: " + contacts[i].addresses[j].formatted + "\n" + 
+						"Street Address: "  + contacts[i].addresses[j].streetAddress + "\n" + 
+						"Locality: "  + contacts[i].addresses[j].locality + "\n" + 
+						"Region: "  + contacts[i].addresses[j].region + "\n" + 
+						"Postal Code: "  + contacts[i].addresses[j].postalCode + "\n" + 
+						"Country: "  + contacts[i].addresses[j].country);
+			}
+		}
+    };
+
+    function onError(contactError) {
+        alert('onError!');
+    };
+
+    // find all contacts
+    var options = new ContactFindOptions();
+	options.filter=""; 
+	var filter = ["displayName","addresses"];
+    navigator.contacts.find(filter, onSuccess, onError, options);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+		    // find all contacts
+		    var options = new ContactFindOptions();
+			options.filter=""; 
+			var filter = ["displayName","addresses"];
+		    navigator.contacts.find(filter, onSuccess, onError, options);
+        }
+    
+        // onSuccess: Get a snapshot of the current contacts
+        //
+		function onSuccess(contacts) {
+			// display the address information for all contacts
+			for (var i=0; i<contacts.length; i++) {
+				for (var j=0; j<contacts[i].addresses.length; j++) {
+					alert("Pref: " + contacts[i].addresses[j].pref + "\n" +
+							"Type: " + contacts[i].addresses[j].type + "\n" +
+							"Formatted: " + contacts[i].addresses[j].formatted + "\n" + 
+							"Street Address: "  + contacts[i].addresses[j].streetAddress + "\n" + 
+							"Locality: "  + contacts[i].addresses[j].locality + "\n" + 
+							"Region: "  + contacts[i].addresses[j].region + "\n" + 
+							"Postal Code: "  + contacts[i].addresses[j].postalCode + "\n" + 
+							"Country: "  + contacts[i].addresses[j].country);
+				}
+			}
+		};
+    
+        // onError: Failed to get the contacts
+        //
+        function onError(contactError) {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Find Contacts</p>
+      </body>
+    </html>
+
+Android 2.X Quirks
+------------------
+
+- __pref:__ This property is not supported by Android 2.X devices and will always return `false`.
+
+Android 1.X Quirks
+------------------
+
+- __pref:__ This property is not supported by Android 1.X devices and will always return `false`.
+- __type:__ This property is not supported by Android 1.X devices and will always return `null`.
+- __streetAddress:__ This property is not support by Android 1.X devices, and will always return `null`.
+- __locality:__ This property is not support by Android 1.X devices, and will always return `null`.
+- __region:__ This property is not support by Android 1.X devices, and will always return `null`.
+- __postalCode:__ This property is not support by Android 1.X devices, and will always return `null`.
+- __country:__ This property is not support by Android 1.X devices, and will always return `null`.
+
+BlackBerry WebWorks (OS 5.0 and higher) Quirks
+--------------------------------------------
+- __pref:__ This property is not supported on Blackberry devices and will always return `false`.
+- __type:__ Partially supported.  Only one each of "Work" and "Home" type addresses can be stored per contact. 
+- __formatted:__ Partially supported.  Will return concatenation of all BlackBerry address fields.
+- __streetAddress:__ Supported.  Will return concatenation of BlackBerry __address1__ and __address2__ address fields. 
+- __locality:__ Supported.  Stored in BlackBerry __city__ address field.
+- __region:__ Supported.  Stored in BlackBerry __stateProvince__ address field.
+- __postalCode:__ Supported.  Stored in BlackBerry __zipPostal__ address field.
+- __country:__ Supported.
+
+iOS Quirks
+----------
+- __pref:__ This property is not supported on iOS devices and will always return `false`.
+- __formatted:__ Not currently supported.
+
+Bada Quirks
+-----------
+- __formatted:__ This property is not supported
+- __type:__ Has to be one of the following: WORK, HOME
diff --git a/docs/en/2.1.0/cordova/contacts/ContactError/contactError.md b/docs/en/2.1.0/cordova/contacts/ContactError/contactError.md
new file mode 100644
index 0000000..45b5873
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/ContactError/contactError.md
@@ -0,0 +1,45 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+ContactError
+========
+
+A `ContactError` object is returned to the `contactError` callback when an error occurs.
+
+Properties
+----------
+
+- __code:__ One of the predefined error codes listed below.
+
+Constants
+---------
+
+- `ContactError.UNKNOWN_ERROR`
+- `ContactError.INVALID_ARGUMENT_ERROR`
+- `ContactError.TIMEOUT_ERROR`
+- `ContactError.PENDING_OPERATION_ERROR`
+- `ContactError.IO_ERROR`
+- `ContactError.NOT_SUPPORTED_ERROR`
+- `ContactError.PERMISSION_DENIED_ERROR`
+
+Description
+-----------
+
+The `ContactError` object is returned to the user through the `contactError` callback function when an error occurs.
+
diff --git a/docs/en/2.1.0/cordova/contacts/ContactField/contactfield.md b/docs/en/2.1.0/cordova/contacts/ContactField/contactfield.md
new file mode 100644
index 0000000..7ada3b3
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/ContactField/contactfield.md
@@ -0,0 +1,146 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+ContactField
+============
+
+Supports generic fields in a `Contact` object.  Some properties that are stored as `ContactField` objects include email addresses, phone numbers, and urls.
+
+Properties
+----------
+
+- __type:__ A string that tells you what type of field this is (example: 'home'). _(DOMString)_
+- __value:__ The value of the field (such as a phone number or email address). _(DOMString)_
+- __pref:__ Set to `true` if this `ContactField` contains the user's preferred value. _(boolean)_
+
+Details
+-------
+
+The `ContactField` object is a reusable component that is used to support contact fields in a generic fashion.  Each `ContactField` object contains a value property, a type property, and a pref property.  A `Contact` object stores several properties in `ContactField[]` arrays, such as phone numbers and email addresses.
+
+In most instances, there are no pre-determined values for the __type__ attribute of a `ContactField` object.  For example, a phone number can have __type__ values of 'home', 'work', 'mobile', 'iPhone', or any other value that is supported by the contact database on a particular device platform.  However, in the case of the `Contact` __photos__ field, Cordova makes use of the __type__ field to indicate the format of the returned image.  Cordova will return __type: 'url'__ when the __value__ attribute contains a URL to the photo image, or __type: 'base64'__ when the returned __value__ attribute contains a Base64 encoded image string.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Bada 1.2 & 2.0
+
+Quick Example
+-------------
+
+	// create a new contact
+	var contact = navigator.contacts.create();
+	
+	// store contact phone numbers in ContactField[]
+	var phoneNumbers = [];
+	phoneNumbers[0] = new ContactField('work', '212-555-1234', false);
+	phoneNumbers[1] = new ContactField('mobile', '917-555-5432', true); // preferred number
+	phoneNumbers[2] = new ContactField('home', '203-555-7890', false);
+	contact.phoneNumbers = phoneNumbers;
+	
+	// save the contact
+	contact.save();
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			// create a new contact
+			var contact = navigator.contacts.create();
+
+			// store contact phone numbers in ContactField[]
+			var phoneNumbers = [];
+			phoneNumbers[0] = new ContactField('work', '212-555-1234', false);
+			phoneNumbers[1] = new ContactField('mobile', '917-555-5432', true); // preferred number
+			phoneNumbers[2] = new ContactField('home', '203-555-7890', false);
+			contact.phoneNumbers = phoneNumbers;
+
+			// save the contact
+			contact.save();
+
+			// search contacts, returning display name and phone numbers
+			var options = new ContactFindOptions();
+			options.filter="";
+			filter = ["displayName","phoneNumbers"];
+			navigator.contacts.find(filter, onSuccess, onError, options);
+        }
+    
+        // onSuccess: Get a snapshot of the current contacts
+        //
+		function onSuccess(contacts) {
+			for (var i=0; i<contacts.length; i++) {
+				// display phone numbers
+				for (var j=0; j<contacts[i].phoneNumbers.length; j++) {
+					alert("Type: " + contacts[i].phoneNumbers[j].type + "\n" + 
+							"Value: "  + contacts[i].phoneNumbers[j].value + "\n" + 
+							"Preferred: "  + contacts[i].phoneNumbers[j].pref);
+				}
+			}
+		};
+    
+        // onError: Failed to get the contacts
+        //
+        function onError(contactError) {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Find Contacts</p>
+      </body>
+    </html>
+
+Android Quirks
+--------------
+
+- __pref:__ This property is not support by Android devices, and will always return `false`.
+
+BlackBerry WebWorks (OS 5.0 and higher) Quirks
+--------------------------------------------
+
+- __type:__ Partially supported.  Used for phone numbers.
+- __value:__ Supported.
+- __pref:__ This property is not supported, and will always return `false`.
+
+iOS Quirks
+-----------
+- __pref:__ This property is not supported on iOS devices and will always return `false`.
+
+Bada Quirks
+-----------
+- __type:__ Property has to be one of the following for Email or Address fields: "WORK", "HOME". Property has to be one of the following for Phone fields: "WORK", "HOME", "VOICE", "FAX", "MSG", "CELL", "PAGER","BBS", "MODEM", "CAR", "ISDN","VIDEO", "PCS"
diff --git a/docs/en/2.1.0/cordova/contacts/ContactFindOptions/contactfindoptions.md b/docs/en/2.1.0/cordova/contacts/ContactFindOptions/contactfindoptions.md
new file mode 100644
index 0000000..c46ec9a
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/ContactFindOptions/contactfindoptions.md
@@ -0,0 +1,116 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+ContactFindOptions
+==================
+
+Contains properties that can be used to filter the results of a `contacts.find` operation.
+
+Properties
+----------
+
+- __filter:__ The search string used to find contacts. _(DOMString)_ (Default: "")
+- __multiple:__ Determines if the find operation should return multiple contacts. _(Boolean)_ (Default: false)
+
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Bada 1.2 & 2.0
+
+Quick Example
+-------------
+
+	// success callback
+    function onSuccess(contacts) {
+		for (var i=0; i<contacts.length; i++) {
+			alert(contacts[i].displayName);
+		}
+    };
+
+	// error callback
+    function onError(contactError) {
+        alert('onError!');
+    };
+
+	// specify contact search criteria
+    var options = new ContactFindOptions();
+	options.filter="";			// empty search string returns all contacts
+	options.multiple=true;		// return multiple results
+	filter = ["displayName"];	// return contact.displayName field
+	
+	// find contacts
+    navigator.contacts.find(filter, onSuccess, onError, options);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			// specify contact search criteria
+		    var options = new ContactFindOptions();
+			options.filter="";			// empty search string returns all contacts
+			options.multiple=true;		// return multiple results
+			filter = ["displayName"];	// return contact.displayName field
+
+			// find contacts
+		    navigator.contacts.find(filter, onSuccess, onError, options);
+        }
+    
+        // onSuccess: Get a snapshot of the current contacts
+        //
+		function onSuccess(contacts) {
+			for (var i=0; i<contacts.length; i++) {
+				alert(contacts[i].displayName);
+			}
+		};
+    
+        // onError: Failed to get the contacts
+        //
+        function onError(contactError) {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Find Contacts</p>
+      </body>
+    </html>
+
+Bada Quirks
+-----------
+__filter:__ Property can only apply to the following: "firstName", "lastName", "nickname", "phoneNumber", "email", "address"
diff --git a/docs/en/2.1.0/cordova/contacts/ContactName/contactname.md b/docs/en/2.1.0/cordova/contacts/ContactName/contactname.md
new file mode 100644
index 0000000..ebae72c
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/ContactName/contactname.md
@@ -0,0 +1,145 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+ContactName
+===========
+
+Contains name properties of a `Contact` object.
+
+Properties
+----------
+
+- __formatted:__ The complete name of the contact. _(DOMString)_
+- __familyName:__ The contacts family name. _(DOMString)_
+- __givenName:__ The contacts given name. _(DOMString)_
+- __middleName:__ The contacts middle name. _(DOMString)_
+- __honorificPrefix:__ The contacts prefix (example Mr. or Dr.) _(DOMString)_
+- __honorificSuffix:__ The contacts suffix (example Esq.). _(DOMString)_
+
+Details
+-------
+
+The `ContactName` object stores name properties of a contact.
+
+Supported Platforms
+-------------------
+
+- Android 2.X
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Bada 1.2 & 2.0
+
+Quick Example
+-------------
+
+    function onSuccess(contacts) {
+		for (var i=0; i<contacts.length; i++) {
+			alert("Formatted: " + contacts[i].name.formatted + "\n" + 
+					"Family Name: "  + contacts[i].name.familyName + "\n" + 
+					"Given Name: "  + contacts[i].name.givenName + "\n" + 
+					"Middle Name: "  + contacts[i].name.middleName + "\n" + 
+					"Suffix: "  + contacts[i].name.honorificSuffix + "\n" + 
+					"Prefix: "  + contacts[i].name.honorificSuffix);
+		}
+    };
+
+    function onError(contactError) {
+        alert('onError!');
+    };
+
+    var options = new ContactFindOptions();
+	options.filter="";
+	filter = ["displayName","name"];
+    navigator.contacts.find(filter, onSuccess, onError, options);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			var options = new ContactFindOptions();
+			options.filter="";
+			filter = ["displayName","name"];
+			navigator.contacts.find(filter, onSuccess, onError, options);
+        }
+    
+        // onSuccess: Get a snapshot of the current contacts
+        //
+		function onSuccess(contacts) {
+			for (var i=0; i<contacts.length; i++) {
+				alert("Formatted: " + contacts[i].name.formatted + "\n" + 
+						"Family Name: "  + contacts[i].name.familyName + "\n" + 
+						"Given Name: "  + contacts[i].name.givenName + "\n" + 
+						"Middle Name: "  + contacts[i].name.middleName + "\n" + 
+						"Suffix: "  + contacts[i].name.honorificSuffix + "\n" + 
+						"Prefix: "  + contacts[i].name.honorificPrefix);
+			}
+		};
+    
+        // onError: Failed to get the contacts
+        //
+        function onError(contactError) {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Find Contacts</p>
+      </body>
+    </html>
+
+Android Quirks
+------------
+- __formatted:__ Partially supported.  Will return the concatenation of honorificPrefix, givenName, middleName, familyName and honorificSuffix but will not store.
+
+BlackBerry WebWorks (OS 5.0 and higher) Quirks
+---------------------------------------------
+
+- __formatted:__ Partially supported.  Will return concatenation of BlackBerry __firstName__ and __lastName__ fields.
+- __familyName:__ Supported.  Stored in BlackBerry __lastName__ field.
+- __givenName:__ Supported.  Stored in BlackBerry __firstName__ field.
+- __middleName:__ This property is not supported, and will always return `null`.
+- __honorificPrefix:__ This property is not supported, and will always return `null`.
+- __honorificSuffix:__ This property is not supported, and will always return `null`.
+
+iOS Quirks
+------------
+- __formatted:__ Partially supported.  Will return iOS Composite Name but will not store.
+
+Bada Quirks
+-----------
+- __formatted:__ Property not supported
+- __middleName:__ Property not supported
+_ __honorificPrefix:__ Property not supported
+- __honorificSuffix:__ Property not supported
diff --git a/docs/en/2.1.0/cordova/contacts/ContactOrganization/contactorganization.md b/docs/en/2.1.0/cordova/contacts/ContactOrganization/contactorganization.md
new file mode 100644
index 0000000..3ba3e10
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/ContactOrganization/contactorganization.md
@@ -0,0 +1,153 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+ContactOrganization
+===================
+
+Contains organization properties of a `Contact` object.
+
+Properties
+----------
+- __pref:__ Set to `true` if this `ContactOrganization` contains the user's preferred value. _(boolean)_
+- __type:__ A string that tells you what type of field this is (example: 'home'). _(DOMString)
+- __name:__ The name of the organization. _(DOMString)_
+- __department:__ The department the contract works for. _(DOMString)_
+- __title:__ The contacts title at the organization. _(DOMString)_
+
+Details
+-------
+
+The `ContactOrganization` object stores a contact's organization properties.  A `Contact` object stores one or more `ContactOrganization` objects in an array. 
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Bada 1.2
+
+Quick Example
+-------------
+
+    function onSuccess(contacts) {
+		for (var i=0; i<contacts.length; i++) {
+			for (var j=0; j<contacts[i].organizations.length; j++) {
+				alert("Pref: " + contacts[i].organizations[j].pref + "\n" +
+						"Type: " + contacts[i].organizations[j].type + "\n" +
+						"Name: " + contacts[i].organizations[j].name + "\n" + 
+						"Department: "  + contacts[i].organizations[j].department + "\n" + 
+						"Title: "  + contacts[i].organizations[j].title);
+			}
+		}
+    };
+
+    function onError(contactError) {
+        alert('onError!');
+    };
+
+    var options = new ContactFindOptions();
+	options.filter="";
+	filter = ["displayName","organizations"];
+    navigator.contacts.find(filter, onSuccess, onError, options);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			var options = new ContactFindOptions();
+			options.filter="";
+			filter = ["displayName","organizations"];
+			navigator.contacts.find(filter, onSuccess, onError, options);
+        }
+    
+        // onSuccess: Get a snapshot of the current contacts
+        //
+		function onSuccess(contacts) {
+			for (var i=0; i<contacts.length; i++) {
+				for (var j=0; j<contacts[i].organizations.length; j++) {
+					alert("Pref: " + contacts[i].organizations[j].pref + "\n" +
+							"Type: " + contacts[i].organizations[j].type + "\n" +
+							"Name: " + contacts[i].organizations[j].name + "\n" + 
+							"Department: "  + contacts[i].organizations[j].department + "\n" + 
+							"Title: "  + contacts[i].organizations[j].title);
+				}
+			}
+		};
+    
+        // onError: Failed to get the contacts
+        //
+        function onError(contactError) {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Find Contacts</p>
+      </body>
+    </html>
+	
+
+Android 2.X Quirks
+------------------
+
+- __pref:__ This property is not supported by Android 2.X devices and will always return `false`.
+
+Android 1.X Quirks
+------------------
+
+- __pref:__ This property is not supported by Android 1.X devices and will always return `false`.
+- __type:__ This property is not supported by Android 1.X devices and will always return `null`.
+- __title:__ This property is not supported by Android 1.X devices, and will always be returned as `null`. 
+
+BlackBerry WebWorks (OS 5.0 and higher) Quirks
+--------------------------------------------
+- __pref:__ This property is not supported by Blackberry devices and will always return `false`.
+- __type:__ This property is not supported by Blackberry devices and will always return `null`.
+- __name:__ Partially supported.  The first organization name will be stored in the BlackBerry __company__ field.
+- __department:__ This property is not supported, and will always be returned as `null`.
+- __title:__ Partially supported.  The first organization title will be stored in the BlackBerry __jobTitle__ field.
+
+iOS Quirks
+-----------
+- __pref:__ This property is not supported on iOS devices and will always return `false`.
+- __type:__ This property is not supported on iOS devices and will always return `null`.
+- __name:__ Partially supported.  The first organization name will be stored in the iOS __kABPersonOrganizationProperty__ field.
+- __department__: Partially supported.  The first department name will be stored in the iOS __kABPersonDepartmentProperty__ field.
+- __title__: Partially supported.  The first title will be stored in the iOS __kABPersonJobTitleProperty__ field.
+
+Bada 2.0 Quirks
+---------------
+- ContactOrganization not supported
diff --git a/docs/en/2.1.0/cordova/contacts/contacts.create.md b/docs/en/2.1.0/cordova/contacts/contacts.create.md
new file mode 100644
index 0000000..b58e6fb
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/contacts.create.md
@@ -0,0 +1,77 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+contacts.create
+===============
+
+Returns a new Contact object.
+
+    var contact = navigator.contacts.create(properties);
+
+Description
+-----------
+
+contacts.create is a synchronous function that returns a new `Contact` object.
+
+This method does not persist the Contact object to the device contacts database.  To persist the Contact object to the device, invoke the `Contact.save` method.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Bada 1.2 & 2.0
+
+Quick Example
+-------------
+
+    var myContact = navigator.contacts.create({"displayName": "Test User"});
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			var myContact = navigator.contacts.create({"displayName": "Test User"});
+			myContact.note = "This contact has a note.";
+			console.log("The contact, " + myContact.displayName + ", note: " + myContact.note);
+        }
+    
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Create Contact</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/contacts/contacts.find.md b/docs/en/2.1.0/cordova/contacts/contacts.find.md
new file mode 100644
index 0000000..2345a11
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/contacts.find.md
@@ -0,0 +1,117 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+contacts.find
+=============
+
+Queries the device contacts database and returns one or more `Contact` objects, each containing the fields specified.
+
+    navigator.contacts.find(contactFields, contactSuccess, contactError, contactFindOptions);
+
+Description
+-----------
+
+contacts.find is an asynchronous function that queries the device contacts database and returns an array of `Contact` objects.  The resulting objects are passed to the `contactSuccess` callback function specified by the __contactSuccess__ parameter.  
+
+Users must specify the contact fields to be used as a search qualifier in the __contactFields__ parameter.  Only the fields specified in the __contactFields__ parameter will be returned as properties of the `Contact` objects that are passed to the __contactSuccess__ callback function.  A zero-length __contactFields__ parameter will result in an array of `Contact` objects with only the `id` property populated. A __contactFields__ value of ["*"] will return all contact fields. 
+
+The __contactFindOptions.filter__ string can be used as a search filter when querying the contacts database.  If provided, a case-insensitive, partial value match is applied to each field specified in the __contactFields__ parameter.  If a match is found in a comparison with _any_ of the specified fields, the contact is returned.
+
+Parameters
+----------
+
+- __contactFields:__ Contact fields to be used as search qualifier. Only these fields will have values in the resulting `Contact` objects. _(DOMString[])_ [Required]
+- __contactSuccess:__ Success callback function that is invoked with the contacts returned from the contacts database. [Required]
+- __contactError:__ Error callback function. Invoked when error occurs. [Optional]
+- __contactFindOptions:__ Search options to filter contacts. [Optional]
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Bada 1.2 & 2.0
+
+Quick Example
+-------------
+
+    function onSuccess(contacts) {
+        alert('Found ' + contacts.length + ' contacts.');
+    };
+
+    function onError(contactError) {
+        alert('onError!');
+    };
+
+    // find all contacts with 'Bob' in any name field
+    var options = new ContactFindOptions();
+	options.filter="Bob";
+	options.multiple=true; 
+	var fields = ["displayName", "name"];
+    navigator.contacts.find(fields, onSuccess, onError, options);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+		    // find all contacts with 'Bob' in any name field
+		    var options = new ContactFindOptions();
+			options.filter="Bob"; 
+			var fields = ["displayName", "name"];
+		    navigator.contacts.find(fields, onSuccess, onError, options);
+        }
+    
+        // onSuccess: Get a snapshot of the current contacts
+        //
+        function onSuccess(contacts) {
+			for (var i=0; i<contacts.length; i++) {
+				console.log("Display Name = " + contacts[i].displayName);
+			}
+        }
+    
+        // onError: Failed to get the contacts
+        //
+        function onError(contactError) {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Find Contacts</p>
+      </body>
+    </html>
+    
+
diff --git a/docs/en/2.1.0/cordova/contacts/contacts.md b/docs/en/2.1.0/cordova/contacts/contacts.md
new file mode 100644
index 0000000..c5db19d
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/contacts.md
@@ -0,0 +1,108 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Contacts
+========
+
+> The `contacts` object provides access to the device contacts database.
+
+Methods
+-------
+
+- contacts.create
+- contacts.find
+
+Arguments
+---------
+
+- contactFields
+- contactSuccess
+- contactError
+- contactFindOptions
+
+Objects
+-------
+
+- Contact
+- ContactName
+- ContactField
+- ContactAddress
+- ContactOrganization
+- ContactFindOptions
+- ContactError
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Contacts" value="org.apache.cordova.ContactManager" />
+
+#### app/AndroidManifest.xml
+
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+
+### Bada
+
+#### manifest.xml
+
+    <Privilege>
+        <Name>ADDRESSBOOK</Name>
+    </Privilege>
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Contact" value="org.apache.cordova.pim.Contact" />
+
+#### www/config.xml
+
+    <feature id="blackberry.find"        required="true" version="1.0.0.0" />
+    <feature id="blackberry.identity"    required="true" version="1.0.0.0" />
+    <feature id="blackberry.pim.Address" required="true" version="1.0.0.0" />
+    <feature id="blackberry.pim.Contact" required="true" version="1.0.0.0" />
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>Contacts</key>
+        <string>CDVContacts</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+#### Properties/WPAppManifest.xml
+
+    <Capabilities>
+        <Capability Name="ID_CAP_CONTACTS" />
+    </Capabilities>
+
+Reference: [Application Manifest for Windows Phone](http://msdn.microsoft.com/en-us/library/ff769509%28v=vs.92%29.aspx)
diff --git a/docs/en/2.1.0/cordova/contacts/parameters/contactError.md b/docs/en/2.1.0/cordova/contacts/parameters/contactError.md
new file mode 100644
index 0000000..6b50ddc
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/parameters/contactError.md
@@ -0,0 +1,27 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+contactError
+============
+
+Error callback function for contact functions.
+
+    function(error) {
+        // Handle the error
+    }
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/contacts/parameters/contactFields.md b/docs/en/2.1.0/cordova/contacts/parameters/contactFields.md
new file mode 100644
index 0000000..66c9d3d
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/parameters/contactFields.md
@@ -0,0 +1,25 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+contactFields
+=============
+
+Required parameter of the `contacts.find` method.  Use this parameter to specify which fields should be included in the `Contact` objects resulting from a find operation.
+
+    ["name", "phoneNumbers", "emails"]
diff --git a/docs/en/2.1.0/cordova/contacts/parameters/contactFindOptions.md b/docs/en/2.1.0/cordova/contacts/parameters/contactFindOptions.md
new file mode 100644
index 0000000..2eb9afc
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/parameters/contactFindOptions.md
@@ -0,0 +1,35 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+contactFindOptions
+==================
+
+Optional parameter of the `contacts.find` method.  Use this parameter to filter the contacts returned from the contacts database.
+
+    { 
+		filter: "",
+		multiple: true,
+	};
+
+Options
+-------
+
+- __filter:__ The search string used to filter contacts. _(DOMString)_ (Default: "")
+- __multiple:__ Determines if the find operation should return multiple contacts. _(Boolean)_ (Default: false)
+
diff --git a/docs/en/2.1.0/cordova/contacts/parameters/contactSuccess.md b/docs/en/2.1.0/cordova/contacts/parameters/contactSuccess.md
new file mode 100644
index 0000000..9068218
--- /dev/null
+++ b/docs/en/2.1.0/cordova/contacts/parameters/contactSuccess.md
@@ -0,0 +1,40 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+contactSuccess
+==============
+
+Success callback function that provides the `Contact` array resulting from a `contacts.find` operation.
+
+    function(contacts) {
+        // Do something
+    }
+
+Parameters
+----------
+
+- __contacts:__ The contact array resulting from a find operation. (`Contact`)
+
+Example
+-------
+
+    function contactSuccess(contacts) {
+		for (var i=0; i<contacts.length; i++) {
+			console.log("Display Name = " + contacts[i].displayName;
+    }
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/device/device.cordova.md b/docs/en/2.1.0/cordova/device/device.cordova.md
new file mode 100644
index 0000000..6ee2b29
--- /dev/null
+++ b/docs/en/2.1.0/cordova/device/device.cordova.md
@@ -0,0 +1,80 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+device.cordova
+===============
+
+Get the version of Cordova running on the device.
+
+    var string = device.cordova;
+    
+Description
+-----------
+
+`device.cordova` returns the version of Cordova running on the device.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- Tizen
+
+Quick Example
+-------------
+
+    var name = device.cordova;
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+    
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device Cordova: '  + device.cordova  + '<br />' + 
+                                'Device Platform: ' + device.platform + '<br />' + 
+                                'Device UUID: '     + device.uuid     + '<br />' + 
+                                'Device Version: '  + device.version  + '<br />';
+        }
+
+        </script>
+      </head>
+      <body>
+        <p id="deviceProperties">Loading device properties...</p>
+      </body>
+    </html>
+
diff --git a/docs/en/2.1.0/cordova/device/device.md b/docs/en/2.1.0/cordova/device/device.md
new file mode 100644
index 0000000..ffbe066
--- /dev/null
+++ b/docs/en/2.1.0/cordova/device/device.md
@@ -0,0 +1,103 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Device
+======
+
+> The `device` object describes the device's hardware and software.
+
+Properties
+----------
+
+- device.name
+- device.cordova
+- device.platform
+- device.uuid
+- device.version
+
+Variable Scope
+--------------
+
+Since `device` is assigned to the `window` object, it is implicitly in the global scope.
+
+    // These reference the same `device`
+    var phoneName = window.device.name;
+    var phoneName = device.name;
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Device" value="org.apache.cordova.Device" />
+
+#### app/AndroidManifest.xml
+
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+
+### Bada
+
+#### manifest.xml
+
+    <Privilege>
+        <Name>SYSTEM_SERVICE</Name>
+    </Privilege>
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Device" value="org.apache.cordova.device.Device" />
+
+#### www/config.xml
+
+    <feature id="blackberry.app" required="true" version="1.0.0.0" />
+    <rim:permissions>
+        <rim:permit>read_device_identifying_information</rim:permit>
+    </rim:permissions>
+
+### iOS
+
+    No permissions are required.
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+#### Properties/WPAppManifest.xml
+
+    <Capabilities>
+        <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
+        <Capability Name="ID_CAP_IDENTITY_DEVICE" />
+        <Capability Name="ID_CAP_IDENTITY_USER" />
+    </Capabilities>
+
+Reference: [Application Manifest for Windows Phone](http://msdn.microsoft.com/en-us/library/ff769509%28v=vs.92%29.aspx)
+
+### Tizen
+
+#### config.xml
+
+    <feature name="http://tizen.org/api/systeminfo" required="true"/>
+
+Reference: [Application Manifest for Tizen Web Application](https://developer.tizen.org/help/topic/org.tizen.help.gs/Creating%20a%20Project.html?path=0_1_1_3#8814682_CreatingaProject-EditingconfigxmlFeatures)
diff --git a/docs/en/2.1.0/cordova/device/device.name.md b/docs/en/2.1.0/cordova/device/device.name.md
new file mode 100644
index 0000000..85285a5
--- /dev/null
+++ b/docs/en/2.1.0/cordova/device/device.name.md
@@ -0,0 +1,113 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+device.name
+===========
+
+Get the device's model name.
+
+    var string = device.name;
+    
+Description
+-----------
+
+`device.name` returns the name of the device's model or product. This value is set by the device manufacturer and may be different across versions of the same product.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // Android:    Nexus One       returns "Passion" (Nexus One code name)
+    //             Motorola Droid  returns "voles"
+    // BlackBerry: Torch 9800      returns "9800"
+    // iPhone:     All devices     returns a name set by iTunes e.g. "Joe's iPhone"
+    //
+    var name = device.name;
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+    
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device Cordova: '  + device.cordova + '<br />' + 
+                                'Device Platform: ' + device.platform + '<br />' + 
+                                'Device UUID: '     + device.uuid     + '<br />' + 
+                                'Device Version: '  + device.version  + '<br />';
+        }
+
+        </script>
+      </head>
+      <body>
+        <p id="deviceProperties">Loading device properties...</p>
+      </body>
+    </html>
+
+
+Android Quirks
+--------------
+
+- Gets the [product name](http://developer.android.com/reference/android/os/Build.html#PRODUCT) instead of the [model name](http://developer.android.com/reference/android/os/Build.html#MODEL).
+    - The product name is often the code name given during production.
+    - e.g. Nexus One returns "Passion", Motorola Droid returns "voles"
+
+iPhone Quirks
+-------------
+
+- Gets the [device's custom name](http://developer.apple.com/iphone/library/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/doc/uid/TP40006902-CH3-SW13) instead of the [device model name](http://developer.apple.com/iphone/library/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/doc/uid/TP40006902-CH3-SW1).
+    - The custom name is set by the owner in iTunes.
+    - e.g. "Joe's iPhone"
+
+Windows Phone 7 Quirks
+-------------
+
+- returns the manufacturer specified device name, for example, the Samsung Focus returns 'SGH-i917'
+
+Bada Quirks
+-----------
+- returns the manufacturer model name. For example 'Samsung Wave S8500'
+
+Tizen Quirks
+-----------
+- returns the device model assigned by the vendor. For example 'TIZEN'
diff --git a/docs/en/2.1.0/cordova/device/device.platform.md b/docs/en/2.1.0/cordova/device/device.platform.md
new file mode 100644
index 0000000..555aca6
--- /dev/null
+++ b/docs/en/2.1.0/cordova/device/device.platform.md
@@ -0,0 +1,97 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+device.platform
+===============
+
+Get the device's operating system name.
+
+    var string = device.platform;
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // Depending on the device, a few examples are:
+    //   - "Android"
+    //   - "BlackBerry"
+    //   - "iPhone"
+    //   - "webOS"
+    //   - "WinCE"
+    //   - "Tizen"
+    var devicePlatform = device.platform;
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+    
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device Cordova: '  + device.cordova  + '<br />' + 
+                                'Device Platform: ' + device.platform + '<br />' + 
+                                'Device UUID: '     + device.uuid     + '<br />' + 
+                                'Device Version: '  + device.version  + '<br />';
+        }
+
+        </script>
+      </head>
+      <body>
+        <p id="deviceProperties">Loading device properties...</p>
+      </body>
+    </html>
+    
+iPhone Quirks
+-------------
+
+The iPhone returns `iPhone` as the platform. The iPad returns `iPad` as the platform.  In the simulator they will return `iPhone Simulator` and `iPad Simulator` respectively.  These are inaccurate in all cases because Apple has rebranded the iPhone operating system as `iOS`.
+
+BlackBerry Quirks
+-----------------
+
+Devices may return the device platform version instead of the platform name.  For example, the Storm2 9550 would return '2.13.0.95' or similar.
+
+Windows Phone 7 Quirks
+-----------------
+
+Windows Phone 7 devices report platform as 'WinCE'
diff --git a/docs/en/2.1.0/cordova/device/device.uuid.md b/docs/en/2.1.0/cordova/device/device.uuid.md
new file mode 100644
index 0000000..d3f8270
--- /dev/null
+++ b/docs/en/2.1.0/cordova/device/device.uuid.md
@@ -0,0 +1,107 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+device.uuid
+===========
+
+Get the device's Universally Unique Identifier ([UUID](http://en.wikipedia.org/wiki/Universally_Unique_Identifier)).
+
+    var string = device.uuid;
+    
+Description
+-----------
+
+The details of how a UUID is generated are determined by the device manufacturer and specific to the device's platform or model.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // Android: Returns a random 64-bit integer (as a string, again!)
+    //          The integer is generated on the device's first boot
+    //
+    // BlackBerry: Returns the PIN number of the device
+    //             This is a nine-digit unique integer (as a string, though!)
+    //
+    // iPhone: (Paraphrased from the UIDevice Class documentation)
+    //         Returns a string of hash values created from multiple hardware identifies.
+    //         It is guaranteed to be unique for every device and cannot be tied
+    //         to the user account.
+    // Windows Phone 7 : Returns a hash of device+current user, 
+    // if the user is not defined, a guid is generated and will persist until the app is uninstalled
+    // 
+    // webOS: returns the device NDUID
+    //
+    // Tizen: returns the device IMEI (International Mobile Equipment Identity or IMEI is a number
+    // unique to every GSM and UMTS mobile phone.
+    var deviceID = device.uuid;
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+    
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device Cordova: '  + device.cordova  + '<br />' + 
+                                'Device Platform: ' + device.platform + '<br />' + 
+                                'Device UUID: '     + device.uuid     + '<br />' + 
+                                'Device Version: '  + device.version  + '<br />';
+        }
+
+        </script>
+      </head>
+      <body>
+        <p id="deviceProperties">Loading device properties...</p>
+      </body>
+    </html>
+
+iOS Quirk
+-------------
+
+The uuid for iOS is not unique for a device, but is unique per application per install. This will change if you delete the app and re-install, and possibly also when you upgrade your iOS version, or even upgrade your app per version (as we've seen in iOS 5.1). Not a reliable value.
+
+Windows Phone 7 Quirks
+-------------
+
+The uuid for Windows Phone 7 requires the permission ID_CAP_IDENTITY_DEVICE.  Microsoft will likely be deprecating this property in the near future.  If the capablility is not available, the application generates a persistent guid, that will be maintained for the install-lifetime of the application on the device.
diff --git a/docs/en/2.1.0/cordova/device/device.version.md b/docs/en/2.1.0/cordova/device/device.version.md
new file mode 100644
index 0000000..951d86b
--- /dev/null
+++ b/docs/en/2.1.0/cordova/device/device.version.md
@@ -0,0 +1,86 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+device.version
+==============
+
+Get the operating system version.
+
+    var string = device.version;
+
+Supported Platforms
+-------------------
+
+- Android 2.1+
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // Android:    Froyo OS would return "2.2"
+    //             Eclair OS would return "2.1", "2.0.1", or "2.0"
+    //             Version can also return update level "2.1-update1" 
+    //
+    // BlackBerry: Torch 9800 using OS 6.0 would return "6.0.0.600"
+    //
+    // iPhone:     iOS 3.2 returns "3.2"
+    //
+    // Windows Phone 7: returns current OS version number, ex. on Mango returns 7.10.7720
+    // webOS: webOS 2.2.4 return 2.2.4
+    // Tizen: returns "TIZEN_20120425_2"
+    var deviceVersion = device.version;
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+        
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device Cordova: '  + device.cordova  + '<br />' + 
+                                'Device Platform: ' + device.platform + '<br />' + 
+                                'Device UUID: '     + device.uuid     + '<br />' + 
+                                'Device Version: '  + device.version  + '<br />';
+        }
+
+        </script>
+      </head>
+      <body>
+        <p id="deviceProperties">Loading device properties...</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.backbutton.md b/docs/en/2.1.0/cordova/events/events.backbutton.md
new file mode 100644
index 0000000..7e060bb
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.backbutton.md
@@ -0,0 +1,87 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+backbutton
+===========
+
+This is an event that fires when the user presses the back button.
+
+    document.addEventListener("backbutton", yourCallbackFunction, false);
+
+Details
+-------
+
+If you need to override the default back button behaviour you can register an event listener for the 'backbutton' event.  It is no longer necessary to call any other method to over ride the back button behaviour.  Now, you only need to register an event listener for 'backbutton'.
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+    document.addEventListener("backbutton", onBackKeyDown, false);
+
+    function onBackKeyDown() {
+        // Handle the back button
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Cordova Back Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to call Cordova methods
+        //
+        function onDeviceReady() {
+            // Register the event listener
+            document.addEventListener("backbutton", onBackKeyDown, false);
+        }
+        
+        // Handle the back button
+        //
+        function onBackKeyDown() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.batterycritical.md b/docs/en/2.1.0/cordova/events/events.batterycritical.md
new file mode 100644
index 0000000..0f810c8
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.batterycritical.md
@@ -0,0 +1,94 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+batterycritical
+===========
+
+This is an event that fires when a Cordova application detects the battery has reached the critical level threshold.
+
+    window.addEventListener("batterycritical", yourCallbackFunction, false);
+
+Details
+-------
+
+This event that fires when a Cordova application detects the percentage of battery has reached the critical battery threshold. This value is device specific.
+
+The batterycritical handler will be called with an object that contains two properties:
+
+- __level:__ The percentage of battery (0-100). _(Number)_
+- __isPlugged:__ A boolean that represents whether or not the device is plugged in or not. _(Boolean)_
+
+Typically, you will want to attach an event listener with `window.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- iOS
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- Tizen
+
+Quick Example
+-------------
+
+    window.addEventListener("batterycritical", onBatteryCritical, false);
+
+    function onBatteryCritical(info) {
+        // Handle the battery critical event
+       	alert("Battery Level Critical " + info.level + "%\nRecharge Soon!"); 
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Cordova Battery Criticaly Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        // 
+	    function onLoad() {
+    	    document.addEventListener("deviceready", onDeviceReady, false);
+    	}
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+		    window.addEventListener("batterycritical", onBatteryCritical, false);
+        }
+
+        // Handle the batterycritical event
+        //
+        function onBatteryCritical(info) {
+	       	alert("Battery Level Critical " + info.level + "%\nRecharge Soon!"); 
+        }
+        
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.batterylow.md b/docs/en/2.1.0/cordova/events/events.batterylow.md
new file mode 100644
index 0000000..1fc79e4
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.batterylow.md
@@ -0,0 +1,94 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+batterylow
+===========
+
+This is an event that fires when a Cordova application detects the battery has reached the low level threshold.
+
+    window.addEventListener("batterylow", yourCallbackFunction, false);
+
+Details
+-------
+
+This event that fires when a Cordova application detects the percentage of battery has reached the low battery threshold. This value is device specific.
+
+The batterylow handler will be called with an object that contains two properties:
+
+- __level:__ The percentage of battery (0-100). _(Number)_
+- __isPlugged:__ A boolean that represents whether or not the device is plugged in or not. _(Boolean)_
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- iOS
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- Tizen
+
+Quick Example
+-------------
+
+    window.addEventListener("batterylow", onBatteryLow, false);
+
+    function onBatteryLow(info) {
+        // Handle the battery low event
+       	alert("Battery Level Low " + info.level + "%"); 
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Cordova Device Ready Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        // 
+	    function onLoad() {
+    	    document.addEventListener("deviceready", onDeviceReady, false);
+    	}
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+		    window.addEventListener("batterylow", onBatteryLow, false);
+        }
+
+        // Handle the batterylow event
+        //
+        function onBatteryLow(info) {
+	       	alert("Battery Level Low " + info.level + "%"); 
+        }
+        
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.batterystatus.md b/docs/en/2.1.0/cordova/events/events.batterystatus.md
new file mode 100644
index 0000000..77f238a
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.batterystatus.md
@@ -0,0 +1,102 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+batterystatus
+===========
+
+This is an event that fires when a Cordova application detects a change in the battery status.
+
+    window.addEventListener("batterystatus", yourCallbackFunction, false);
+
+Details
+-------
+
+This event that fires when a Cordova application detects the percentage of battery has changed by at least 1 percent. It is also fired if the device has been plugged in or un-plugged.
+
+The battery status handler will be called with an object that contains two properties:
+
+- __level:__ The percentage of battery (0-100). _(Number)_
+- __isPlugged:__ A boolean that represents whether or not the device is plugged in or not. _(Boolean)_
+
+Typically, you will want to attach an event listener with `window.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- iOS
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- Windows Phone 7 ( Mango )
+- Tizen
+
+Windows Phone 7 Quirks
+----------------------
+
+The `level` property is unavailable as Windows Phone 7 does not provide
+native APIs for determining battery level. The `isPlugged` parameter
+_is_ supported.
+
+Quick Example
+-------------
+
+    window.addEventListener("batterystatus", onBatteryStatus, false);
+
+    function onBatteryStatus(info) {
+        // Handle the online event
+       	console.log("Level: " + info.level + " isPlugged: " + info.isPlugged); 
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Cordova Device Ready Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        // 
+	    function onLoad() {
+    	    document.addEventListener("deviceready", onDeviceReady, false);
+    	}
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+		    window.addEventListener("batterystatus", onBatteryStatus, false);
+        }
+
+        // Handle the batterystatus event
+        //
+        function onBatteryStatus(info) {
+        	console.log("Level: " + info.level + " isPlugged: " + info.isPlugged); 
+        }
+        
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.deviceready.md b/docs/en/2.1.0/cordova/events/events.deviceready.md
new file mode 100644
index 0000000..7d8afe5
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.deviceready.md
@@ -0,0 +1,88 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+deviceready
+===========
+
+This is an event that fires when Cordova is fully loaded.
+
+    document.addEventListener("deviceready", yourCallbackFunction, false);
+
+Details
+-------
+
+This is a very important event that every Cordova application should use.
+
+Cordova consists of two code bases: native and JavaScript. While the native code is loading, a custom loading image is displayed. However, JavaScript is only loaded once the DOM loads. This means your web application could, potentially, call a Cordova JavaScript function before it is loaded.
+
+The Cordova `deviceready` event fires once Cordova has fully loaded. After the device has fired, you can safely make calls to Cordova function.
+
+Typically, you will want to attach an event listener with `document.addEventListener` once the HTML document's DOM has loaded.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7
+- Bada 1.2 & 2.x
+- Tizen
+
+Quick Example
+-------------
+
+    document.addEventListener("deviceready", onDeviceReady, false);
+
+    function onDeviceReady() {
+        // Now safe to use the Cordova API
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Cordova Device Ready Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            // Now safe to use the Cordova API
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.endcallbutton.md b/docs/en/2.1.0/cordova/events/events.endcallbutton.md
new file mode 100644
index 0000000..42db21d
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.endcallbutton.md
@@ -0,0 +1,86 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+endcallbutton
+===========
+
+This is an event that fires when the user presses the end call button.
+
+    document.addEventListener("endcallbutton", yourCallbackFunction, false);
+
+Details
+-------
+
+If you need to override the default end call behaviour you can register an event listener for the 'endcallbutton' event.
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- BlackBerry WebWorks (OS 5.0 and higher)
+
+Quick Example
+-------------
+
+    document.addEventListener("endcallbutton", onEndCallKeyDown, false);
+
+    function onEndCallKeyDown() {
+        // Handle the end call button
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                          "http://www.w3.org/TR/html4/strict.dtd">
+    <html>
+      <head>
+        <title>Cordova End Call Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            // Register the event listener
+            document.addEventListener("endcallbutton", onEndCallKeyDown, false);
+        }
+
+        // Handle the end call button
+        //
+        function onEndCallKeyDown() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.md b/docs/en/2.1.0/cordova/events/events.md
new file mode 100644
index 0000000..7128b64
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.md
@@ -0,0 +1,101 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Events
+======
+
+> Cordova lifecycle events.
+
+Event Types
+-----------
+
+- deviceready
+- pause
+- resume
+- online
+- offline
+- backbutton
+- batterycritical
+- batterylow
+- batterystatus
+- menubutton
+- searchbutton
+- startcallbutton
+- endcallbutton
+- volumedownbutton
+- volumeupbutton
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Battery" value="org.apache.cordova.BatteryListener" />
+
+#### app/AndroidManifest.xml
+
+    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
+
+### Bada
+
+#### manifest.xml
+
+    <Privilege>
+        <Name>SYSTEM_SERVICE</Name>
+    </Privilege>
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Battery" value="org.apache.cordova.battery.Battery" />
+
+#### www/config.xml
+
+    <feature id="blackberry.app"          required="true" version="1.0.0.0" />
+    <feature id="blackberry.app.event"    required="true" version="1.0.0.0" />
+    <feature id="blackberry.system.event" required="true" version="1.0.0.0" />
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>Battery</key>
+        <string>CDVBattery</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+    No permissions are required.
+
+### Tizen
+
+#### config.xml
+
+    <feature name="http://tizen.org/api/systeminfo" required="true"/>
+
+Reference: [Application Manifest for Tizen Web Application](https://developer.tizen.org/help/topic/org.tizen.help.gs/Creating%20a%20Project.html?path=0_1_1_3#8814682_CreatingaProject-EditingconfigxmlFeatures)
diff --git a/docs/en/2.1.0/cordova/events/events.menubutton.md b/docs/en/2.1.0/cordova/events/events.menubutton.md
new file mode 100644
index 0000000..b3f0539
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.menubutton.md
@@ -0,0 +1,87 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+menubutton
+===========
+
+This is an event that fires when the user presses the menu button.
+
+    document.addEventListener("menubutton", yourCallbackFunction, false);
+
+Details
+-------
+
+If you need to override the default menu button behaviour you can register an event listenter for the 'menubutton' event.
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+
+Quick Example
+-------------
+
+    document.addEventListener("menubutton", onMenuKeyDown, false);
+
+    function onMenuKeyDown() {
+        // Handle the back button
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                          "http://www.w3.org/TR/html4/strict.dtd">
+    <html>
+      <head>
+        <title>Cordova Menu Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            // Register the event listener
+            document.addEventListener("menubutton", onMenuKeyDown, false);
+        }
+
+        // Handle the menu button
+        //
+        function onMenuKeyDown() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.offline.md b/docs/en/2.1.0/cordova/events/events.offline.md
new file mode 100644
index 0000000..5e196eb
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.offline.md
@@ -0,0 +1,96 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+offline
+===========
+
+This is an event that fires when a Cordova application is offline (not connected to the Internet).
+
+    document.addEventListener("offline", yourCallbackFunction, false);
+
+Details
+-------
+
+When the application's network connection changes to being offline, the offline event is fired.  
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7
+- Tizen
+
+Quick Example
+-------------
+
+    document.addEventListener("offline", onOffline, false);
+
+    function onOffline() {
+        // Handle the offline event
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Cordova Offline Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+		    document.addEventListener("offline", onOffline, false);
+        }
+
+        // Handle the offline event
+        //
+        function onOffline() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
+
+iOS Quirks
+--------------------------
+During initial startup, the first offline event (if applicable) will take at least a second to fire.
+
+Windows Phone 7 Quirks
+--------------------------
+When running in the Emulator, the connection.status of the device is always unknown, and this event will NOT fire.
diff --git a/docs/en/2.1.0/cordova/events/events.online.md b/docs/en/2.1.0/cordova/events/events.online.md
new file mode 100644
index 0000000..d6ab6d0
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.online.md
@@ -0,0 +1,96 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+online
+===========
+
+This is an event that fires when a Cordova application is online (connected to the Internet).
+
+    document.addEventListener("online", yourCallbackFunction, false);
+
+Details
+-------
+
+When the application's network connection changes to being online, the online event is fired.  
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7
+- Tizen
+
+Quick Example
+-------------
+
+    document.addEventListener("online", onOnline, false);
+
+    function onOnline() {
+        // Handle the online event
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Cordova Online Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            document.addEventListener("online", onOnline, false);
+        }
+
+        // Handle the online event
+        //
+        function onOnline() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
+
+iOS Quirks
+--------------------------
+During initial startup, the first online event (if applicable) will take at least a second to fire.
+
+Windows Phone 7 Quirks
+--------------------------
+When running in the Emulator, the connection.status of the device is always unknown, and this event will NOT fire.
diff --git a/docs/en/2.1.0/cordova/events/events.pause.md b/docs/en/2.1.0/cordova/events/events.pause.md
new file mode 100644
index 0000000..833fe3f
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.pause.md
@@ -0,0 +1,97 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+pause
+===========
+
+This is an event that fires when a Cordova application is put into the background.
+
+    document.addEventListener("pause", yourCallbackFunction, false);
+
+Details
+-------
+
+Cordova consists of two code bases: native and JavaScript. While the native code puts the application into the background the pause event is fired.  
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7
+
+Quick Example
+-------------
+
+    document.addEventListener("pause", onPause, false);
+
+    function onPause() {
+        // Handle the pause event
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Cordova Pause Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+		    document.addEventListener("pause", onPause, false);
+        }
+
+        // Handle the pause event
+        //
+        function onPause() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
+
+iOS Quirks
+--------------------------
+In the pause handler, any calls that go through Objective-C will not work, nor will any calls that are interactive, like alerts. This means that you cannot call console.log (and its variants), or any calls from Plugins or the Cordova API. These will only be processed when the app resumes (processed on the next run-loop).
+
+- __resign__ event 
+
+    This iOS specific event is available as a variant of the **pause** event, and is often used to detect when the "Lock" button has been pressed to lock the device when your app is the foreground app. If your app (and device) is enabled for multi-tasking, this will be paired with a subsequent **pause** event, but only under iOS 5 (effectively all "locked" apps in iOS 5 that have multi-tasking enabled are put to the background). 
+    
+    Under iOS 5, if you want your app to still run when the device is locked, you will have to disable multi-tasking (UIApplicationExitsOnSuspend - YES) for your app. This is different when you are on iOS 4 - to have your app run when the device is locked, the multi-tasking setting for your app does not matter.
diff --git a/docs/en/2.1.0/cordova/events/events.resume.md b/docs/en/2.1.0/cordova/events/events.resume.md
new file mode 100644
index 0000000..229ba83
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.resume.md
@@ -0,0 +1,108 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+resume
+===========
+
+This is an event that fires when a Cordova application is retrieved from the background.
+
+    document.addEventListener("resume", yourCallbackFunction, false);
+
+Details
+-------
+
+Cordova consists of two code bases: native and JavaScript. While the native code pulls the application from the background the resume event is fired.  
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7
+
+Quick Example
+-------------
+
+    document.addEventListener("resume", onResume, false);
+
+    function onResume() {
+        // Handle the resume event
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Cordova Resume Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            document.addEventListener("resume", onResume, false);
+        }
+
+        // Handle the resume event
+        //
+        function onResume() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
+
+iOS Quirks
+--------------------------
+Any calls to console.log during your **pause** event handler will be run now when the app resumes, see the iOS Quirks section for the **pause** event for an explanation. 
+
+- __active__ event 
+
+    This iOS specific event is available as a variant of the **resume** event, and is often used to detect when the "Lock" button has been pressed to unlock the device when your app is the foreground app. If your app (and device) is enabled for multi-tasking, this will be paired with a subsequent **resume** event, but only under iOS 5 (effectively all "locked" apps in iOS 5 that have multi-tasking enabled are put to the background). 
+    
+    Under iOS 5,  if you want your app to still run when the device is locked, you will have to disable multi-tasking (UIApplicationExitsOnSuspend - YES) for your app. This is different when you are on iOS 4 - to have your app run when the device is locked, the multi-tasking setting for your app does not matter.
+
+- __resume__ event 
+
+    Interactive functions like alert() when the resume event fires will need to be wrapped in a setTimeout call with a timeout value of zero, or else the app will hang. e.g.
+
+        document.addEventListener("resume", onResume, false);
+        function onResume() {
+           setTimeout(function() {
+                  // TODO: do your thing!
+                }, 0);
+        }
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/events/events.searchbutton.md b/docs/en/2.1.0/cordova/events/events.searchbutton.md
new file mode 100644
index 0000000..51eede7
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.searchbutton.md
@@ -0,0 +1,86 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+searchbutton
+===========
+
+This is an event that fires when the user presses the search button on Android.
+
+    document.addEventListener("searchbutton", yourCallbackFunction, false);
+
+Details
+-------
+
+If you need to override the default search button behaviour on Android you can register an event listener for the 'searchbutton' event.
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+
+Quick Example
+-------------
+
+    document.addEventListener("searchbutton", onSearchKeyDown, false);
+
+    function onSearchKeyDown() {
+        // Handle the search button
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                          "http://www.w3.org/TR/html4/strict.dtd">
+    <html>
+      <head>
+        <title>Cordova Search Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            // Register the event listener
+            document.addEventListener("searchbutton", onSearchKeyDown, false);
+        }
+
+        // Handle the search button
+        //
+        function onSearchKeyDown() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.startcallbutton.md b/docs/en/2.1.0/cordova/events/events.startcallbutton.md
new file mode 100644
index 0000000..82f876d
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.startcallbutton.md
@@ -0,0 +1,86 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+startcallbutton
+===========
+
+This is an event that fires when the user presses the start call button.
+
+    document.addEventListener("startcallbutton", yourCallbackFunction, false);
+
+Details
+-------
+
+If you need to override the default start call behaviour you can register an event listener for the 'startcallbutton' event.
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- BlackBerry WebWorks (OS 5.0 and higher)
+
+Quick Example
+-------------
+
+    document.addEventListener("startcallbutton", onStartCallKeyDown, false);
+
+    function onStartCallKeyDown() {
+        // Handle the start call button
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                          "http://www.w3.org/TR/html4/strict.dtd">
+    <html>
+      <head>
+        <title>Cordova Start Call Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            // Register the event listener
+            document.addEventListener("startcallbutton", onStartCallKeyDown, false);
+        }
+
+        // Handle the start call button
+        //
+        function onStartCallKeyDown() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.volumedownbutton.md b/docs/en/2.1.0/cordova/events/events.volumedownbutton.md
new file mode 100644
index 0000000..4813479
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.volumedownbutton.md
@@ -0,0 +1,86 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+volumedownbutton
+===========
+
+This is an event that fires when the user presses the volume down button.
+
+    document.addEventListener("volumedownbutton", yourCallbackFunction, false);
+
+Details
+-------
+
+If you need to override the default volume down behaviour you can register an event listener for the 'volumedownbutton' event.
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- BlackBerry WebWorks (OS 5.0 and higher)
+
+Quick Example
+-------------
+
+    document.addEventListener("volumedownbutton", onVolumeDownKeyDown, false);
+
+    function onVolumeDownKeyDown() {
+        // Handle the volume down button
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                          "http://www.w3.org/TR/html4/strict.dtd">
+    <html>
+      <head>
+        <title>Cordova Volume Down Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            // Register the event listener
+            document.addEventListener("volumedownbutton", onVolumeDownKeyDown, false);
+        }
+
+        // Handle the volume down button
+        //
+        function onVolumeDownKeyDown() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/events/events.volumeupbutton.md b/docs/en/2.1.0/cordova/events/events.volumeupbutton.md
new file mode 100644
index 0000000..8cea5be
--- /dev/null
+++ b/docs/en/2.1.0/cordova/events/events.volumeupbutton.md
@@ -0,0 +1,86 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+volumeupbutton
+===========
+
+This is an event that fires when the user presses the volume up button.
+
+    document.addEventListener("volumeupbutton", yourCallbackFunction, false);
+
+Details
+-------
+
+If you need to override the default volume up behaviour you can register an event listener for the 'volumeupbutton' event.
+
+Typically, you will want to attach an event listener with `document.addEventListener` once you receive the Cordova 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- BlackBerry WebWorks (OS 5.0 and higher)
+
+Quick Example
+-------------
+
+    document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false);
+
+    function onVolumeUpKeyDown() {
+        // Handle the volume up button
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                          "http://www.w3.org/TR/html4/strict.dtd">
+    <html>
+      <head>
+        <title>Cordova Volume Up Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when Cordova is loaded.
+        //
+        // At this point, the document has loaded but cordova-2.1.0.js has not.
+        // When Cordova is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is loaded and it is now safe to make calls Cordova methods
+        //
+        function onDeviceReady() {
+            // Register the event listener
+            document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false);
+        }
+
+        // Handle the volume up button
+        //
+        function onVolumeUpKeyDown() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/file/directoryentry/directoryentry.md b/docs/en/2.1.0/cordova/file/directoryentry/directoryentry.md
new file mode 100644
index 0000000..1726beb
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/directoryentry/directoryentry.md
@@ -0,0 +1,381 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+DirectoryEntry
+==============
+
+This object represents a directory on a file system.  It is defined in the [W3C Directories and Systems](http://www.w3.org/TR/file-system-api/) specification.
+
+Properties
+----------
+
+- __isFile:__ Always false. _(boolean)_
+- __isDirectory:__ Always true. _(boolean)_
+- __name:__ The name of the DirectoryEntry, excluding the path leading to it. _(DOMString)_
+- __fullPath:__ The full absolute path from the root to the DirectoryEntry. _(DOMString)_
+
+NOTE: The following attributes are defined by the W3C specification, but are __not supported__ by Cordova:
+
+- __filesystem:__ The file system on which the DirectoryEntry resides. _(FileSystem)_
+
+Methods
+-------
+
+The following methods can be invoked on a DirectoryEntry object:
+
+- __getMetadata__: Look up metadata about a directory.
+- __setMetadata__: Set metadata on a directory.
+- __moveTo__: Move a directory to a different location on the file system.
+- __copyTo__: Copy a directory to a different location on the file system.
+- __toURL__: Return a URL that can be used to locate a directory.
+- __remove__: Delete a directory.  The directory must be empty.
+- __getParent__: Look up the parent directory.
+- __createReader__: Create a new DirectoryReader that can read entries from a directory.
+- __getDirectory__: Create or look up a directory.
+- __getFile__: Create or look up a file.
+- __removeRecursively__: Delete a directory and all of its contents.
+
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+getMetadata
+-----------
+
+Look up metadata about a directory.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called with a Metadata object. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs retrieving the Metadata. Invoked with a FileError object. _(Function)_
+
+
+__Quick Example__
+
+    function success(metadata) {
+        console.log("Last Modified: " + metadata.modificationTime);
+    }
+
+    function fail(error) {
+        alert(error.code);
+    }
+
+    // Request the metadata object for this entry
+    entry.getMetadata(success, fail);
+
+setMetadata
+----------------
+
+Set metadata on a directory.
+**Only works on iOS currently** - this will set the extended attributes of a directory.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called when the metadata was successfully set. _(Function)_
+- __errorCallback__ - A callback that is called when the metadata was not successfully set. _(Function)_
+- __metadataObject__ - An object that contains the metadata keys and values. _(Object)_
+
+
+__Quick Example__
+
+    function success() {
+        console.log("The metadata was successfully set.");
+    }
+
+    function fail() {
+        alert("There was an error in setting the metadata");
+    }
+
+    // Set the metadata
+    entry.setMetadata(success, fail, { "com.apple.MobileBackup": 1});
+__iOS Quirk__
+
+- only the **"com.apple.MobileBackup"** extended attribute is supported. Set the value to **1** to NOT enable the directory to be backed up by iCloud. Set the value to **0** to re-enable the directory to be backed up by iCloud.
+
+__Quick Example__
+
+    function setFolderMetadata(localFileSystem, subFolder, metadataKey, metadataValue) 
+    {
+	    var onSetMetadataWin = function() {
+	      console.log("success setting metadata")
+	    }
+        var onSetMetadataFail = function() {
+	      console.log("error setting metadata")
+        }
+
+	    var onGetDirectoryWin = function(parent) {
+	      parent.setMetadata(onSetMetadataWin, onSetMetadataFail, { metadataKey: metadataValue});
+	    }
+	    var onGetDirectoryFail = function() {
+	      console.log("error getting dir")
+	    }
+
+	    var onFSWin = function(fileSystem) {
+	      fileSystem.root.getDirectory(subFolder, {create: true, exclusive: false}, onGetDirectoryWin, onGetDirectoryFail);
+	    }
+
+	    var onFSFail = function(evt) {
+		  console.log(evt.target.error.code);
+	    }
+
+	    window.requestFileSystem(localFileSystem, 0, onFSWin, onFSFail);
+    }
+
+	setFolderMetadata(LocalFileSystem.PERSISTENT, "Backups", "com.apple.MobileBackup", 1);
+
+moveTo
+------
+
+Move a directory to a different location on the file system. It is an error to attempt to:
+
+- move a directory inside itself or to any child at any depth;
+- move a directory into its parent if a name different from its current one is not provided;
+- move a directory to a path occupied by a file;
+- move a directory to a path occupied by a directory which is not empty.
+
+In addition, an attempt to move a directory on top of an existing empty directory must attempt to delete and replace that directory.
+
+__Parameters:__
+
+- __parent__ - The parent directory to which to move the directory. _(DirectoryEntry)_
+- __newName__ - The new name of the directory. Defaults to the current name if unspecified. _(DOMString)_
+- __successCallback__ - A callback that is called with the DirectoryEntry object of the new directory. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when attempting to move the directory.  Invoked with a FileError object. _(Function)_
+
+
+__Quick Example__
+
+    function success(entry) {
+        console.log("New Path: " + entry.fullPath);
+    }
+
+    function fail(error) {
+        alert(error.code);
+    }
+
+	function moveDir(entry) {
+        var parent = document.getElementById('parent').value,
+            parentName = parent.substring(parent.lastIndexOf('/')+1),
+            newName = document.getElementById('newName').value,
+            parentEntry = new DirectoryEntry(parentName, parent);
+
+        // move the directory to a new directory and rename it
+        entry.moveTo(parentEntry, newName, success, fail);
+    }
+
+copyTo
+------
+
+Copy a directory to a different location on the file system. It is an error to attempt to:
+
+- copy a directory inside itself at any depth;
+- copy a directory into its parent if a name different from its current one is not provided.
+
+Directory copies are always recursive - that is, they copy all contents of the directory.
+
+__Parameters:__
+
+- __parent__ - The parent directory to which to copy the directory. _(DirectoryEntry)_
+- __newName__ - The new name of the directory. Defaults to the current name if unspecified. _(DOMString)_
+- __successCallback__ - A callback that is called with the DirectoryEntry object of the new directory. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when attempting to copy the underlying directory.  Invoked with a FileError object. _(Function)_
+
+
+__Quick Example__
+
+	function win(entry) {
+		console.log("New Path: " + entry.fullPath);
+	}
+
+	function fail(error) {
+		alert(error.code);
+	}
+
+	function copyDir(entry) {
+        var parent = document.getElementById('parent').value,
+            parentName = parent.substring(parent.lastIndexOf('/')+1),
+            newName = document.getElementById('newName').value,
+            parentEntry = new DirectoryEntry(parentName, parent);
+
+        // copy the directory to a new directory and rename it
+        entry.copyTo(parentEntry, newName, success, fail);
+    }
+
+
+toURL
+-----
+
+Returns a URL that can be used to locate the directory.
+
+__Quick Example__
+
+    // Get the URL for this directory
+    var dirURL = entry.toURL();
+    console.log(dirURL);
+
+
+remove
+------
+
+Deletes a directory. It is an error to attempt to:
+
+- delete a directory that is not empty;
+- delete the root directory of a filesystem.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called after the directory has been deleted.  Invoked with no parameters. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when attempting to delete the directory.  Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+    function success(entry) {
+        console.log("Removal succeeded");
+    }
+
+    function fail(error) {
+        alert('Error removing directory: ' + error.code);
+    }
+
+    // remove this directory
+    entry.remove(success, fail);
+
+
+getParent
+---------
+
+Look up the parent DirectoryEntry containing the directory.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called with the directory's parent DirectoryEntry. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when attempting to retrieve the parent DirectoryEntry.  Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+    function success(parent) {
+        console.log("Parent Name: " + parent.name);
+    }
+
+    function fail(error) {
+        alert('Failed to get parent directory: ' + error.code);
+    }
+
+	// Get the parent DirectoryEntry
+	entry.getParent(success, fail);
+
+
+createReader
+------------
+
+Creates a new DirectoryReader to read entries in a directory.
+
+__Quick Example__
+
+    // create a directory reader
+    var directoryReader = entry.createReader();
+
+
+getDirectory
+------------
+
+Creates or looks up an existing directory.  It is an error to attempt to:
+
+- create a directory whose immediate parent does not yet exist.
+
+__Parameters:__
+
+- __path__ - The path to the directory to be looked up or created.  Either an absolute path, or a relative path from this DirectoryEntry. _(DOMString)_
+- __options__ - Options to specify whether the directory is created if it doesn't exist.  _(Flags)_
+- __successCallback__ - A callback that is invoked with a DirectoryEntry object. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs creating or looking up the directory.  Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+    function success(parent) {
+        console.log("Parent Name: " + parent.name);
+    }
+
+    function fail(error) {
+        alert("Unable to create new directory: " + error.code);
+    }
+
+    // Retrieve an existing directory, or create it if it does not already exist
+    entry.getDirectory("newDir", {create: true, exclusive: false}, success, fail);
+
+
+getFile
+-------
+
+Creates or looks up a file.  It is an error to attempt to:
+
+- create a file whose immediate parent does not yet exist.
+
+__Parameters:__
+
+- __path__ - The path to the file to be looked up or created.  Either an absolute path, or a relative path from this DirectoryEntry. _(DOMString)_
+- __options__ - Options to specify whether the file is created if it doesn't exist.  _(Flags)_
+- __successCallback__ - A callback that is invoked with a FileEntry object. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs creating or looking up the file.  Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+    function success(parent) {
+        console.log("Parent Name: " + parent.name);
+    }
+
+    function fail(error) {
+        alert("Failed to retrieve file: " + error.code);
+    }
+
+    // Retrieve an existing file, or create it if it does not exist
+    entry.getFile("newFile.txt", {create: true, exclusive: false}, success, fail);
+
+
+removeRecursively
+-----------------
+
+Deletes a directory and all of its contents.  In the event of an error (e.g. trying to delete
+a directory that contains a file that cannot be removed), some of the contents of the directory may
+be deleted.   It is an error to attempt to:
+
+- delete the root directory of a filesystem.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called after the DirectoryEntry has been deleted.  Invoked with no parameters. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when attempting to delete the DirectoryEntry.  Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+    function success(parent) {
+        console.log("Remove Recursively Succeeded");
+    }
+
+    function fail(error) {
+        alert("Failed to remove directory or it's contents: " + error.code);
+    }
+
+    // remove the directory and all it's contents
+    entry.removeRecursively(success, fail);
diff --git a/docs/en/2.1.0/cordova/file/directoryreader/directoryreader.md b/docs/en/2.1.0/cordova/file/directoryreader/directoryreader.md
new file mode 100644
index 0000000..58e59ba
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/directoryreader/directoryreader.md
@@ -0,0 +1,66 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+DirectoryReader
+===============
+
+An object that lists files and directories in a directory.  Defined in the [Directories and Systems](http://www.w3.org/TR/file-system-api/) specification.
+
+Methods
+-------
+
+- __readEntries__: Read the entries in a directory. 
+
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+readEntries
+-----------
+
+Read the entries in this directory.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is passed an array of FileEntry and DirectoryEntry objects. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs retrieving the directory listing. Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+	
+    function success(entries) {
+        var i;
+        for (i=0; i<entries.length; i++) {
+            console.log(entries[i].name);
+        }
+    }
+
+    function fail(error) {
+        alert("Failed to list directory contents: " + error.code);
+    }
+
+    // Get a directory reader
+    var directoryReader = dirEntry.createReader();
+
+    // Get a list of all the entries in the directory
+    directoryReader.readEntries(success,fail);
diff --git a/docs/en/2.1.0/cordova/file/file.md b/docs/en/2.1.0/cordova/file/file.md
new file mode 100644
index 0000000..0f93e22
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/file.md
@@ -0,0 +1,100 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+File
+==========
+
+>  This API is based on the W3C [File API](http://www.w3.org/TR/FileAPI). An API to read, write and navigate file system hierarchies.
+
+Objects
+-------
+
+- DirectoryEntry
+- DirectoryReader
+- File
+- FileEntry
+- FileError
+- FileReader
+- FileSystem
+- FileTransfer
+- FileTransferError
+- FileUploadOptions
+- FileUploadResult
+- FileWriter
+- Flags
+- LocalFileSystem
+- Metadata
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="File" value="org.apache.cordova.FileUtils" />
+    <plugin name="FileTransfer" value="org.apache.cordova.FileTransfer" />
+
+#### app/AndroidManifest.xml
+
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+### Bada
+
+    No permissions are required.
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="File" value="org.apache.cordova.file.FileManager" />
+    <plugin name="FileTransfer" value="org.apache.cordova.http.FileTransfer" />
+
+#### www/config.xml
+
+    <feature id="blackberry.io.file" required="true" version="1.0.0.0" />
+    <feature id="blackberry.utils"   required="true" version="1.0.0.0" />
+    <feature id="blackberry.io.dir"  required="true" version="1.0.0.0" />
+    <rim:permissions>
+        <rim:permit>access_shared</rim:permit>
+    </rim:permissions>
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>File</key>
+        <string>CDVFile</string>
+    </dict>
+
+    <key>Plugins</key>
+    <dict>
+        <key>FileTransfer</key>
+        <string>CDVFileTransfer</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+    No permissions are required.
diff --git a/docs/en/2.1.0/cordova/file/fileentry/fileentry.md b/docs/en/2.1.0/cordova/file/fileentry/fileentry.md
new file mode 100644
index 0000000..4137ba9
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/fileentry/fileentry.md
@@ -0,0 +1,324 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+FileEntry
+==========
+
+This object represents a file on a file system.  It is defined in the [W3C Directories and Systems](http://www.w3.org/TR/file-system-api/) specification.
+
+Properties
+----------
+
+- __isFile:__ Always true. _(boolean)_
+- __isDirectory:__ Always false. _(boolean)_
+- __name:__ The name of the FileEntry, excluding the path leading to it. _(DOMString)_
+- __fullPath:__ The full absolute path from the root to the FileEntry. _(DOMString)_
+
+NOTE: The following attributes are defined by the W3C specification, but are __not supported__ by Cordova:
+
+- __filesystem:__ The file system on which the FileEntry resides. _(FileSystem)_
+
+
+Methods
+-------
+
+- __getMetadata__: Look up metadata about a file.
+- __setMetadata__: Set metadata on a file.
+- __moveTo__: Move a file to a different location on the file system.
+- __copyTo__: Copy a file to a different location on the file system.
+- __toURL__: Return a URL that can be used to locate a file.
+- __remove__: Delete a file.
+- __getParent__: Look up the parent directory.
+- __createWriter__: Creates a FileWriter object that can be used to write to a file.
+- __file__: Creates a File object containing file properties.
+
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+
+getMetadata
+----------------
+
+Look up metadata about a file.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called with a Metadata object. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs retrieving the Metadata. Invoked with a FileError object. _(Function)_
+
+
+__Quick Example__
+
+    function success(metadata) {
+        console.log("Last Modified: " + metadata.modificationTime);
+    }
+
+    function fail(error) {
+        alert(error.code);
+    }
+
+    // Request the metadata object for this entry
+    entry.getMetadata(success, fail);
+
+
+setMetadata
+----------------
+
+Set metadata on a file.
+**Only works on iOS currently** - this will set the extended attributes of a file.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called when the metadata was successfully set. _(Function)_
+- __errorCallback__ - A callback that is called when the metadata was not successfully set. _(Function)_
+- __metadataObject__ - An object that contains the metadata keys and values. _(Object)_
+
+
+__Quick Example__
+
+    function success() {
+        console.log("The metadata was successfully set.");
+    }
+
+    function fail() {
+        alert("There was an error in setting the metadata");
+    }
+
+    // Set the metadata
+    entry.setMetadata(success, fail, { "com.apple.MobileBackup": 1});
+__iOS Quirk__
+
+- only the **"com.apple.MobileBackup"** extended attribute is supported. Set the value to **1** to NOT enable the file to be backed up by iCloud. Set the value to **0** to re-enable the file to be backed up by iCloud.
+
+__Quick Example__
+
+    function setFileMetadata(localFileSystem, filePath, metadataKey, metadataValue) 
+    {
+	    var onSetMetadataWin = function() {
+	      console.log("success setting metadata")
+	    }
+        var onSetMetadataFail = function() {
+	      console.log("error setting metadata")
+        }
+
+	    var onGetFileWin = function(parent) {
+	      parent.setMetadata(onSetMetadataWin, onSetMetadataFail, { metadataKey: metadataValue});
+	    }
+	    var onGetFileFail = function() {
+	      console.log("error getting file")
+	    }
+
+	    var onFSWin = function(fileSystem) {
+	      fileSystem.root.getFile(filePath, {create: true, exclusive: false}, onGetFileWin, onGetFileFail);
+	    }
+
+	    var onFSFail = function(evt) {
+		  console.log(evt.target.error.code);
+	    }
+
+	    window.requestFileSystem(localFileSystem, 0, onFSWin, onFSFail);
+    }
+
+	setFileMetadata(LocalFileSystem.PERSISTENT, "Backups/sqlite.db", "com.apple.MobileBackup", 1);
+
+moveTo
+------
+
+Move a file to a different location on the file system. It is an error to attempt to:
+
+- move a file into its parent if a name different from its current one isn't provided;
+- move a file to a path occupied by a directory;
+
+In addition, an attempt to move a file on top of an existing file must attempt to delete and replace that file.
+
+__Parameters:__
+
+- __parent__ - The parent directory to which to move the file. _(DirectoryEntry)_
+- __newName__ - The new name of the file. Defaults to the current name if unspecified. _(DOMString)_
+- __successCallback__ - A callback that is called with the FileEntry object of the new file. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when attempting to move the file.  Invoked with a FileError object. _(Function)_
+
+
+__Quick Example__
+
+    function success(entry) {
+        console.log("New Path: " + entry.fullPath);
+    }
+
+    function fail(error) {
+        alert(error.code);
+    }
+
+    function moveFile(entry) {
+        var parent = document.getElementById('parent').value,
+            parentName = parent.substring(parent.lastIndexOf('/')+1),
+            parentEntry = new DirectoryEntry(parentName, parent);
+
+        // move the file to a new directory and rename it
+        entry.moveTo(parentEntry, "newFile.txt", success, fail);
+    }
+
+
+copyTo
+------
+
+Copy a file to a new location on the file system.  It is an error to attempt to:
+
+- copy a file into its parent if a name different from its current one is not provided.
+
+__Parameters:__
+
+- __parent__ - The parent directory to which to copy the file. _(DirectoryEntry)_
+- __newName__ - The new name of the file. Defaults to the current name if unspecified. _(DOMString)_
+- __successCallback__ - A callback that is called with the FileEntry object of the new file. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when attempting to copy the file.  Invoked with a FileError object. _(Function)_
+
+
+__Quick Example__
+
+    function win(entry) {
+	    console.log("New Path: " + entry.fullPath);
+    }
+
+    function fail(error) {
+	    alert(error.code);
+    }
+
+    function copyFile(entry) {
+        var parent = document.getElementById('parent').value,
+            parentName = parent.substring(parent.lastIndexOf('/')+1),
+            parentEntry = new DirectoryEntry(parentName, parent);
+
+        // copy the file to a new directory and rename it
+        entry.copyTo(parentEntry, "file.copy", success, fail);
+    }
+
+
+toURL
+-----
+
+Returns a URL that can be used to locate the file.
+
+__Quick Example__
+
+    // Request the URL for this entry
+    var fileURL = entry.toURL();
+    console.log(fileURL);
+
+
+remove
+------
+
+Deletes a file.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called after the file has been deleted.  Invoked with no parameters. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when attempting to delete the file.  Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+    function success(entry) {
+        console.log("Removal succeeded");
+    }
+
+    function fail(error) {
+        alert('Error removing file: ' + error.code);
+    }
+
+    // remove the file
+    entry.remove(success, fail);
+
+
+getParent
+---------
+
+Look up the parent DirectoryEntry containing the file.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called with the file's parent DirectoryEntry. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when attempting to retrieve the parent DirectoryEntry.  Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+    function success(parent) {
+        console.log("Parent Name: " + parent.name);
+    }
+
+    function fail(error) {
+        alert(error.code);
+    }
+
+    // Get the parent DirectoryEntry
+    entry.getParent(success, fail);
+
+
+createWriter
+------------
+
+Create a FileWriter object associated with the file that the FileEntry represents.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called with a FileWriter object. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs while attempting to create the FileWriter.  Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+    function success(writer) {
+        writer.write("Some text to the file");
+    }
+
+    function fail(error) {
+        alert(error.code);
+    }
+
+    // create a FileWriter to write to the file
+    entry.createWriter(success, fail);
+
+
+file
+----
+
+Return a File object that represents the current state of the file that this FileEntry represents.
+
+__Parameters:__
+
+- __successCallback__ - A callback that is called with a File object. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs when creating the File object (e.g. the underlying file no longer exists).  Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+    function success(file) {
+        console.log("File size: " + file.size);
+    }
+
+    function fail(error) {
+        alert("Unable to retrieve file properties: " + error.code);
+    }
+
+    // obtain properties of a file
+    entry.file(success, fail);
diff --git a/docs/en/2.1.0/cordova/file/fileerror/fileerror.md b/docs/en/2.1.0/cordova/file/fileerror/fileerror.md
new file mode 100644
index 0000000..75511c5
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/fileerror/fileerror.md
@@ -0,0 +1,49 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+FileError
+========
+
+A 'FileError' object is set when an error occurs in any of the File API methods. 
+
+Properties
+----------
+
+- __code:__ One of the predefined error codes listed below.
+
+Constants
+---------
+
+- `FileError.NOT_FOUND_ERR`
+- `FileError.SECURITY_ERR`
+- `FileError.ABORT_ERR`
+- `FileError.NOT_READABLE_ERR`
+- `FileError.ENCODING_ERR`
+- `FileError.NO_MODIFICATION_ALLOWED_ERR`
+- `FileError.INVALID_STATE_ERR`
+- `FileError.SYNTAX_ERR`
+- `FileError.INVALID_MODIFICATION_ERR`
+- `FileError.QUOTA_EXCEEDED_ERR`
+- `FileError.TYPE_MISMATCH_ERR`
+- `FileError.PATH_EXISTS_ERR`
+
+Description
+-----------
+
+The `FileError` object is the only parameter of any of the File API's error callbacks.  Developers must read the code property to determine the type of error.
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/file/fileobj/fileobj.md b/docs/en/2.1.0/cordova/file/fileobj/fileobj.md
new file mode 100644
index 0000000..5c37994
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/fileobj/fileobj.md
@@ -0,0 +1,45 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+File
+====
+
+This object contains attributes of a single file.
+
+Properties
+----------
+
+- __name:__ The name of the file. _(DOMString)_
+- __fullPath:__ The full path of the file including the file name. _(DOMString)_
+- __type:__ The mime type of the file. _(DOMString)_
+- __lastModifiedDate:__ The last time the file was modified. _(Date)_
+- __size:__ The size of the file in bytes. _(long)_
+
+Details
+-------
+
+The `File` object contains attributes of a single file.  You can get an instance of a File object by calling the __file__ method of a `FileEntry` object.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
diff --git a/docs/en/2.1.0/cordova/file/filereader/filereader.md b/docs/en/2.1.0/cordova/file/filereader/filereader.md
new file mode 100644
index 0000000..61ca501
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/filereader/filereader.md
@@ -0,0 +1,196 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+FileReader
+==========
+
+FileReader is an object that allows one to read a file.
+
+Properties
+----------
+
+- __readyState:__ One of the three states the reader can be in EMPTY, LOADING or DONE.
+- __result:__ The contents of the file that has been read. _(DOMString)_
+- __error:__ An object containing errors. _(FileError)_
+- __onloadstart:__ Called when the read starts. . _(Function)_
+- __onprogress:__ Called while reading the file, reports progress (progess.loaded/progress.total). _(Function)_ -NOT SUPPORTED
+- __onload:__ Called when the read has successfully completed. _(Function)_
+- __onabort:__ Called when the read has been aborted. For instance, by invoking the abort() method. _(Function)_
+- __onerror:__ Called when the read has failed. _(Function)_
+- __onloadend:__ Called when the request has completed (either in success or failure).  _(Function)_
+
+Methods
+-------
+
+- __abort__: Aborts reading file. 
+- __readAsDataURL__: Read file and return data as a base64 encoded data url.
+- __readAsText__: Reads text file.
+
+Details
+-------
+
+The `FileReader` object is a way to read files from the devices file system.  Files can be read as text or as a base64 data encoded string.  Users register their own event listners to receive the loadstart, progress, load, loadend, error and abort events.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+Read As Data URL 
+----------------
+
+__Parameters:__
+- file - the file object to read
+
+
+Quick Example
+-------------
+
+	function win(file) {
+		var reader = new FileReader();
+		reader.onloadend = function(evt) {
+        	console.log("read success");
+            console.log(evt.target.result);
+        };
+		reader.readAsDataURL(file);
+	};
+
+	var fail = function(evt) {
+    	console.log(error.code);
+	};
+	
+    entry.file(win, fail);
+
+Read As Text
+------------
+
+__Parameters:__
+
+- file - the file object to read
+- encoding - the encoding to use to encode the file's content. Default is UTF8.
+
+Quick Example
+-------------
+
+	function win(file) {
+		var reader = new FileReader();
+		reader.onloadend = function(evt) {
+        	console.log("read success");
+            console.log(evt.target.result);
+        };
+		reader.readAsText(file);
+	};
+
+	var fail = function(evt) {
+    	console.log(error.code);
+	};
+	
+    entry.file(win, fail);
+
+Abort Quick Example
+-------------------
+
+	function win(file) {
+		var reader = new FileReader();
+		reader.onloadend = function(evt) {
+        	console.log("read success");
+            console.log(evt.target.result);
+        };
+		reader.readAsText(file);
+		reader.abort();
+	};
+
+    function fail(error) {
+    	console.log(error.code);
+    }
+	
+    entry.file(win, fail);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>FileReader Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
+        }
+		
+		function gotFS(fileSystem) {
+			fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
+		}
+		
+		function gotFileEntry(fileEntry) {
+			fileEntry.file(gotFile, fail);
+		}
+		
+        function gotFile(file){
+			readDataUrl(file);
+			readAsText(file);
+		}
+        
+        function readDataUrl(file) {
+            var reader = new FileReader();
+            reader.onloadend = function(evt) {
+                console.log("Read as data URL");
+                console.log(evt.target.result);
+            };
+            reader.readAsDataURL(file);
+        }
+        
+        function readAsText(file) {
+            var reader = new FileReader();
+            reader.onloadend = function(evt) {
+                console.log("Read as text");
+                console.log(evt.target.result);
+            };
+            reader.readAsText(file);
+        }
+        
+        function fail(evt) {
+            console.log(evt.target.error.code);
+        }
+        
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Read File</p>
+      </body>
+    </html>
+
+iOS Quirks
+----------
+- __encoding__ parameter is not supported, UTF8 encoding is always used.
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/file/filesystem/filesystem.md b/docs/en/2.1.0/cordova/file/filesystem/filesystem.md
new file mode 100644
index 0000000..4274315
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/filesystem/filesystem.md
@@ -0,0 +1,91 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+FileSystem
+==========
+
+This object represents a file system.
+
+Properties
+----------
+
+- __name:__ The name of the file system. _(DOMString)_
+- __root:__ The root directory of the file system. _(DirectoryEntry)_
+
+Details
+-------
+
+The `FileSystem` object represents information about the file system. The name of the file system will be unique across the list of exposed file systems.  The root property contains a `DirectoryEntry` object which represents the root directory of the file system.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+File System Quick Example
+-------------------------
+
+	function onSuccess(fileSystem) {
+		console.log(fileSystem.name);
+		console.log(fileSystem.root.name);
+	}
+	
+	// request the persistent file system
+	window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, null);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>File System Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
+        }
+
+		function onFileSystemSuccess(fileSystem) {
+			console.log(fileSystem.name);
+			console.log(fileSystem.root.name);
+		}
+		
+		function fail(evt) {
+			console.log(evt.target.error.code);
+		}
+		
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>File System</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/file/filetransfer/filetransfer.md b/docs/en/2.1.0/cordova/file/filetransfer/filetransfer.md
new file mode 100644
index 0000000..884ad49
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/filetransfer/filetransfer.md
@@ -0,0 +1,217 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+FileTransfer
+==========
+
+FileTransfer is an object that allows you to upload files to a server or download files from a server.
+
+Properties
+----------
+
+N/A
+
+Methods
+-------
+
+- __upload__: sends a file to a server. 
+- __download__: downloads a file from server.
+
+Details
+-------
+
+The `FileTransfer` object provides a way to upload files to a remote server using an HTTP multi-part POST request.  Both HTTP and HTTPS protocols are supported.  Optional parameters can be specified by passing a FileUploadOptions object to the upload method.  On successful upload, the success callback will be called with a FileUploadResult object.  If an error occurs, the error callback will be invoked with a FileTransferError object.
+It is also possible to download a file from remote and save it on the device (only iOS and Android).
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+upload
+--------------
+
+__Parameters:__
+
+- __filePath__ - Full path of the file on the device
+- __server__ - URL of the server to receive the file (must already be encoded using encodeURI())
+- __successCallback__ - A callback that is called with a Metadata object. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs retrieving the Metadata. Invoked with a FileError object. _(Function)_
+- __options__ - Optional parameters such as file name and mimetype
+
+__Quick Example__
+	
+    // !! Assumes variable fileURI contains a valid URI to a  text file on the device
+	
+  	var win = function(r) {
+        console.log("Code = " + r.responseCode);
+        console.log("Response = " + r.response);
+        console.log("Sent = " + r.bytesSent);
+	}
+	
+    var fail = function(error) {
+        alert("An error has occurred: Code = " + error.code);
+        console.log("upload error source " + error.source);
+        console.log("upload error target " + error.target);
+    }
+	
+	var options = new FileUploadOptions();
+	options.fileKey="file";
+	options.fileName=fileURI.substr(fileURI.lastIndexOf('/')+1);
+	options.mimeType="text/plain";
+
+    var params = new Object();
+	params.value1 = "test";
+	params.value2 = "param";
+		
+	options.params = params;
+	
+	var ft = new FileTransfer();
+    ft.upload(fileURI, encodeURI("http://some.server.com/upload.php"), win, fail, options);
+    
+__Full Example__
+
+    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+    <html>
+    <head>
+        <title>File Transfer Example</title>
+    
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+            
+            // Wait for Cordova to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+            
+            // Cordova is ready
+            //
+            function onDeviceReady() {
+                
+                // Retrieve image file location from specified source
+                navigator.camera.getPicture(uploadPhoto,
+                                            function(message) { alert('get picture failed'); },
+                                            { quality: 50, 
+                                            destinationType: navigator.camera.DestinationType.FILE_URI,
+                                            sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY }
+                                            );
+                
+            }
+            
+            function uploadPhoto(imageURI) {
+                var options = new FileUploadOptions();
+                options.fileKey="file";
+                options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
+                options.mimeType="image/jpeg";
+                
+                var params = new Object();
+                params.value1 = "test";
+                params.value2 = "param";
+                
+                options.params = params;
+                
+                var ft = new FileTransfer();
+                ft.upload(imageURI, encodeURI("http://some.server.com/upload.php"), win, fail, options);
+            }
+            
+            function win(r) {
+                console.log("Code = " + r.responseCode);
+                console.log("Response = " + r.response);
+                console.log("Sent = " + r.bytesSent);
+            }
+            
+            function fail(error) {
+                alert("An error has occurred: Code = " + error.code);
+                console.log("upload error source " + error.source);
+                console.log("upload error target " + error.target);
+            }
+            
+            </script>
+    </head>
+    <body>
+        <h1>Example</h1>
+        <p>Upload File</p>
+    </body>
+    </html>
+    
+iOS Quirks
+----------
+
+Setting headers for FileTransfer Upload:
+
+__Quick Example__
+
+    function win(r) {
+        console.log("Code = " + r.responseCode);
+        console.log("Response = " + r.response);
+        console.log("Sent = " + r.bytesSent);
+    }
+    
+    function fail(error) {
+        alert("An error has occurred: Code = " + error.code);
+        console.log("upload error source " + error.source);
+        console.log("upload error target " + error.target);
+    }
+    
+    var uri = encodeURI("http://some.server.com/upload.php");
+    
+    var options = new FileUploadOptions();
+    options.fileKey="file";
+    options.fileName=fileURI.substr(fileURI.lastIndexOf('/')+1);
+    options.mimeType="text/plain";
+        
+    var params = new Object();
+    params.headers={'headerParam':'headerValue'};
+    
+    options.params = params;
+    
+    var ft = new FileTransfer();
+    ft.upload(fileURI, uri, win, fail, options);    
+
+download
+--------------
+
+__Parameters:__
+
+- __source__ - URL of the server to download the file (must already be encoded using encodeURI())
+- __target__ - Full path of the file on the device
+- __successCallback__ - A callback that is called with a FileEntry object. _(Function)_
+- __errorCallback__ - A callback that is called if an error occurs retrieving the Metadata. Invoked with a FileError object. _(Function)_
+
+__Quick Example__
+
+     // !! Assumes variable url contains a valid URI to a file on a server and filePath is a valid path on the device
+
+    var fileTransfer = new FileTransfer();
+    var uri = encodeURI("http://some.server.com/download.php");
+    
+    fileTransfer.download(
+        uri,
+        filePath,
+        function(entry) {
+            console.log("download complete: " + entry.fullPath);
+        },
+        function(error) {
+            console.log("download error source " + error.source);
+            console.log("download error target " + error.target);
+            console.log("upload error code" + error.code);
+        }
+    );
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/file/filetransfererror/filetransfererror.md b/docs/en/2.1.0/cordova/file/filetransfererror/filetransfererror.md
new file mode 100644
index 0000000..a643bf3
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/filetransfererror/filetransfererror.md
@@ -0,0 +1,43 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+FileTransferError
+========
+
+A `FileTransferError` object is returned via the error callback when an error occurs.
+
+Properties
+----------
+
+- __code__ One of the predefined error codes listed below. (Number)
+- __source__ URI to the source (String)
+- __target__ URI to the target (String)
+- __http_status__ HTTP status code.  This attribute is only available when a response code is received from the HTTP connection. (Number)
+
+Constants
+---------
+
+- `FileTransferError.FILE_NOT_FOUND_ERR`
+- `FileTransferError.INVALID_URL_ERR`
+- `FileTransferError.CONNECTION_ERR`
+
+Description
+-----------
+
+The `FileTransferError` object is returned via the error callback when an error occurs when uploading or downloading a file.
diff --git a/docs/en/2.1.0/cordova/file/fileuploadoptions/fileuploadoptions.md b/docs/en/2.1.0/cordova/file/fileuploadoptions/fileuploadoptions.md
new file mode 100644
index 0000000..5246ce8
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/fileuploadoptions/fileuploadoptions.md
@@ -0,0 +1,45 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+FileUploadOptions
+========
+
+A `FileUploadOptions` object can be passed to the FileTransfer objects upload method in order to specify additional parameters to the upload script.
+
+Properties
+----------
+
+- __fileKey:__ The name of the form element.  If not set defaults to "file". (DOMString)
+- __fileName:__ The file name you want the file to be saved as on the server.  If not set defaults to "image.jpg". (DOMString)
+- __mimeType:__ The mime type of the data you are uploading.  If not set defaults to "image/jpeg". (DOMString)
+- __params:__ A set of optional key/value pairs to be passed along in the HTTP request. (Object)
+- __chunkedMode:__ Should the data be uploaded in chunked streaming mode. If not set defaults to "true". (Boolean)
+- __headers:__ A map of header name => header value. To specify multiple values for a header, use an array of values. (Object)
+
+
+Description
+-----------
+
+A `FileUploadOptions` object can be passed to the FileTransfer objects upload method in order to specify additional parameters to the upload script.
+
+WP7 Quirk
+---------
+
+- __chunkedMode:__
+    This parameter is ignored on WP7.    
diff --git a/docs/en/2.1.0/cordova/file/fileuploadresult/fileuploadresult.md b/docs/en/2.1.0/cordova/file/fileuploadresult/fileuploadresult.md
new file mode 100644
index 0000000..f21d036
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/fileuploadresult/fileuploadresult.md
@@ -0,0 +1,40 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+FileUploadResult
+========
+
+A `FileUploadResult` object is returned via the success callback of the FileTransfer upload method.
+
+Properties
+----------
+
+- __bytesSent:__ The number of bytes sent to the server as part of the upload. (long)
+- __responseCode:__ The HTTP response code returned by the server. (long)
+- __response:__ The HTTP response returned by the server. (DOMString)
+
+Description
+-----------
+
+The `FileUploadResult` object is returned via the success callback of the FileTransfer upload method.
+
+iOS Quirks
+----------
+- iOS does not include values for responseCode nor bytesSent in the success callback FileUploadResult object. 
+
diff --git a/docs/en/2.1.0/cordova/file/filewriter/filewriter.md b/docs/en/2.1.0/cordova/file/filewriter/filewriter.md
new file mode 100644
index 0000000..a44e172
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/filewriter/filewriter.md
@@ -0,0 +1,194 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+FileWriter
+==========
+
+FileWriter is an object that allows one to write a file.
+
+Properties
+----------
+
+- __readyState:__ One of the three states the reader can be in INIT, WRITING or DONE.
+- __fileName:__ The name of the file to be written. _(DOMString)_
+- __length:__ The length of the file to be written. _(long)_
+- __position:__ The current position of the file pointer. _(long)_
+- __error:__ An object containing errors. _(FileError)_
+- __onwritestart:__ Called when the write starts. . _(Function)_
+- __onprogress:__ Called while writing the file, reports progress (progess.loaded/progress.total). _(Function)_ -NOT SUPPORTED
+- __onwrite:__ Called when the request has completed successfully.  _(Function)_
+- __onabort:__ Called when the write has been aborted. For instance, by invoking the abort() method. _(Function)_
+- __onerror:__ Called when the write has failed. _(Function)_
+- __onwriteend:__ Called when the request has completed (either in success or failure).  _(Function)_
+
+Methods
+-------
+
+- __abort__: Aborts writing file. 
+- __seek__: Moves the file pointer to the byte specified.
+- __truncate__: Shortens the file to the length specified.
+- __write__: Writes data to the file with a UTF-8 encoding.
+
+Details
+-------
+
+The `FileWriter` object is a way to write files to the device file system (UTF-8 encoded).  Users register their own event listeners to receive the writestart, progress, write, writeend, error and abort events.
+
+A FileWriter is created for a single file. You can use it to write to a file multiple times. The FileWriter maintains the file's position and length attributes, so you can seek and write anywhere in the file. By default, the FileWriter writes to the beginning of the file (will overwrite existing data). Set the optional append boolean to true in the FileWriter's constructor to begin writing to the end of the file.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+Seek Quick Example
+------------------------------
+
+	function win(writer) {
+		// fast forwards file pointer to end of file
+		writer.seek(writer.length);	
+	};
+
+	var fail = function(evt) {
+    	console.log(error.code);
+	};
+	
+    entry.createWriter(win, fail);
+
+Truncate Quick Example
+--------------------------
+
+	function win(writer) {
+		writer.truncate(10);	
+	};
+
+	var fail = function(evt) {
+    	console.log(error.code);
+	};
+	
+    entry.createWriter(win, fail);
+
+Write Quick Example
+-------------------	
+
+	function win(writer) {
+		writer.onwrite = function(evt) {
+        	console.log("write success");
+        };
+		writer.write("some sample text");
+	};
+
+	var fail = function(evt) {
+    	console.log(error.code);
+	};
+	
+    entry.createWriter(win, fail);
+
+Append Quick Example
+--------------------	
+
+	function win(writer) {
+		writer.onwrite = function(evt) {
+        	console.log("write success");
+        };
+        writer.seek(writer.length);
+		writer.write("appended text");
+	};
+
+	var fail = function(evt) {
+    	console.log(error.code);
+	};
+	
+    entry.createWriter(win, fail);
+	
+Abort Quick Example
+-------------------
+
+	function win(writer) {
+		writer.onwrite = function(evt) {
+        	console.log("write success");
+        };
+		writer.write("some sample text");
+		writer.abort();
+	};
+
+	var fail = function(evt) {
+    	console.log(error.code);
+	};
+	
+    entry.createWriter(win, fail);
+
+Full Example
+------------
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>FileWriter Example</title>
+    
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+    
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+    
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
+        }
+    
+        function gotFS(fileSystem) {
+            fileSystem.root.getFile("readme.txt", {create: true, exclusive: false}, gotFileEntry, fail);
+        }
+    
+        function gotFileEntry(fileEntry) {
+            fileEntry.createWriter(gotFileWriter, fail);
+        }
+    
+        function gotFileWriter(writer) {
+            writer.onwriteend = function(evt) {
+                console.log("contents of file now 'some sample text'");
+                writer.truncate(11);  
+                writer.onwriteend = function(evt) {
+                    console.log("contents of file now 'some sample'");
+                    writer.seek(4);
+                    writer.write(" different text");
+                    writer.onwriteend = function(evt){
+                        console.log("contents of file now 'some different text'");
+                    }
+                };
+            };
+            writer.write("some sample text");
+        }
+    
+        function fail(error) {
+            console.log(error.code);
+        }
+    
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Write File</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/file/flags/flags.md b/docs/en/2.1.0/cordova/file/flags/flags.md
new file mode 100644
index 0000000..054c2fc
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/flags/flags.md
@@ -0,0 +1,46 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Flags
+=====
+
+This object is used to supply arguments to the `DirectoryEntry` __getFile__ and __getDirectory__ methods, which look up or create files and directories, respectively.
+
+Properties
+----------
+
+- __create:__ Used to indicate that the file or directory should be created, if it does not exist. _(boolean)_
+- __exclusive:__ By itself, exclusive has no effect. Used with create, it causes the file or directory creation to fail if the target path already exists. _(boolean)_
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+    // Get the data directory, creating it if it doesn't exist.
+    dataDir = fileSystem.root.getDirectory("data", {create: true});
+
+    // Create the lock file, if and only if it doesn't exist.
+    lockFile = dataDir.getFile("lockfile.txt", {create: true, exclusive: true});
diff --git a/docs/en/2.1.0/cordova/file/localfilesystem/localfilesystem.md b/docs/en/2.1.0/cordova/file/localfilesystem/localfilesystem.md
new file mode 100644
index 0000000..903362e
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/localfilesystem/localfilesystem.md
@@ -0,0 +1,110 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+LocalFileSystem
+===============
+
+This object provides a way to obtain root file systems.
+
+Methods
+----------
+
+- __requestFileSystem:__ Requests a filesystem. _(Function)_
+- __resolveLocalFileSystemURI:__ Retrieve a DirectoryEntry or FileEntry using local URI. _(Function)_
+
+Constants
+---------
+
+- `LocalFileSystem.PERSISTENT`: Used for storage that should not be removed by the user agent without application or user permission.
+- `LocalFileSystem.TEMPORARY`: Used for storage with no guarantee of persistence.
+
+Details
+-------
+
+The `LocalFileSystem` object methods are defined on the __window__ object.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+Request File System Quick Example
+---------------------------------
+
+	function onSuccess(fileSystem) {
+		console.log(fileSystem.name);
+	}
+	
+	// request the persistent file system
+	window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onError);
+
+Resolve Local File System URI Quick Example
+-------------------------------------------
+
+	function onSuccess(fileEntry) {
+		console.log(fileEntry.name);
+	}
+
+	window.resolveLocalFileSystemURI("file:///example.txt", onSuccess, onError);
+	
+Full Example
+------------
+
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Local File System Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
+			window.resolveLocalFileSystemURI("file:///example.txt", onResolveSuccess, fail);
+        }
+
+		function onFileSystemSuccess(fileSystem) {
+			console.log(fileSystem.name);
+		}
+
+		function onResolveSuccess(fileEntry) {
+			console.log(fileEntry.name);
+		}
+		
+		function fail(evt) {
+			console.log(evt.target.error.code);
+		}
+		
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Local File System</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/file/metadata/metadata.md b/docs/en/2.1.0/cordova/file/metadata/metadata.md
new file mode 100644
index 0000000..0bc75e5
--- /dev/null
+++ b/docs/en/2.1.0/cordova/file/metadata/metadata.md
@@ -0,0 +1,51 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Metadata
+==========
+
+This interface supplies information about the state of a file or directory.
+
+Properties
+----------
+
+- __modificationTime:__ This is the time at which the file or directory was last modified. _(Date)_
+
+Details
+-------
+
+The `Metadata` object represents information about the state of a file or directory.  You can get an instance of a Metadata object by calling the __getMetadata__ method of a `DirectoryEntry` or `FileEntry` object.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+	function win(metadata) {
+		console.log("Last Modified: " + metadata.modificationTime);
+	}
+	
+	// Request the metadata object for this entry
+	entry.getMetadata(win, null);
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/geolocation/Coordinates/coordinates.md b/docs/en/2.1.0/cordova/geolocation/Coordinates/coordinates.md
new file mode 100644
index 0000000..552f26e
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/Coordinates/coordinates.md
@@ -0,0 +1,126 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Coordinates
+===========
+
+A set of properties that describe the geographic coordinates of a position.
+
+Properties
+----------
+
+* __latitude__: Latitude in decimal degrees. _(Number)_
+* __longitude__: Longitude in decimal degrees. _(Number)_
+* __altitude__: Height of the position in meters above the ellipsoid. _(Number)_
+* __accuracy__: Accuracy level of the latitude and longitude coordinates in meters. _(Number)_
+* __altitudeAccuracy__: Accuracy level of the altitude coordinate in meters. _(Number)_
+* __heading__: Direction of travel, specified in degrees counting clockwise relative to the true north. _(Number)_
+* __speed__: Current ground speed of the device, specified in meters per second. _(Number)_
+
+Description
+-----------
+
+The `Coordinates` object is created and populated by Cordova, and attached to the `Position` object. The `Position` object is then returned to the user through a callback function.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // onSuccess Callback
+    //
+    var onSuccess = function(position) {
+        alert('Latitude: '          + position.coords.latitude          + '\n' +
+              'Longitude: '         + position.coords.longitude         + '\n' +
+              'Altitude: '          + position.coords.altitude          + '\n' +
+              'Accuracy: '          + position.coords.accuracy          + '\n' +
+              'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
+              'Heading: '           + position.coords.heading           + '\n' +
+              'Speed: '             + position.coords.speed             + '\n' +
+              'Timestamp: '         + position.timestamp                + '\n');
+    };
+
+    // onError Callback
+    //
+    var onError = function() {
+        alert('onError!');
+    };
+
+    navigator.geolocation.getCurrentPosition(onSuccess, onError);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Geolocation Position Example</title>
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Set an event to wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is loaded and Ready
+        //
+        function onDeviceReady() {
+            navigator.geolocation.getCurrentPosition(onSuccess, onError);
+        }
+    
+        // Display `Position` properties from the geolocation
+        //
+        function onSuccess(position) {
+            var div = document.getElementById('myDiv');
+        
+            div.innerHTML = 'Latitude: '             + position.coords.latitude  + '<br/>' +
+                            'Longitude: '            + position.coords.longitude + '<br/>' +
+                            'Altitude: '             + position.coords.altitude  + '<br/>' +
+                            'Accuracy: '             + position.coords.accuracy  + '<br/>' +
+                            'Altitude Accuracy: '    + position.coords.altitudeAccuracy  + '<br/>' +
+                            'Heading: '              + position.coords.heading   + '<br/>' +
+                            'Speed: '                + position.coords.speed     + '<br/>';
+        }
+    
+        // Show an alert if there is a problem getting the geolocation
+        //
+        function onError() {
+            alert('onError!');
+        }
+
+        </script>
+      </head>
+      <body>
+        <div id="myDiv"></div>
+      </body>
+    </html>
+    
+Android Quirks
+-------------
+
+__altitudeAccuracy:__ This property is not support by Android devices, it will always return null.
diff --git a/docs/en/2.1.0/cordova/geolocation/Position/position.md b/docs/en/2.1.0/cordova/geolocation/Position/position.md
new file mode 100644
index 0000000..ea39932
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/Position/position.md
@@ -0,0 +1,120 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Position
+========
+
+Contains `Position` coordinates and timestamp, created by the geolocation API.
+
+Properties
+----------
+
+- __coords:__ A set of geographic coordinates. _(Coordinates)_
+- __timestamp:__ Creation timestamp for `coords`. _(Date)_
+
+Description
+-----------
+
+The `Position` object is created and populated by Cordova, and returned to the user through a callback function.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // onSuccess Callback
+    //
+    var onSuccess = function(position) {
+        alert('Latitude: '          + position.coords.latitude          + '\n' +
+              'Longitude: '         + position.coords.longitude         + '\n' +
+              'Altitude: '          + position.coords.altitude          + '\n' +
+              'Accuracy: '          + position.coords.accuracy          + '\n' +
+              'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
+              'Heading: '           + position.coords.heading           + '\n' +
+              'Speed: '             + position.coords.speed             + '\n' +
+              'Timestamp: '         + position.timestamp                + '\n');
+    };
+
+    // onError Callback receives a PositionError object
+    //
+    function onError(error) {
+        alert('code: '    + error.code    + '\n' +
+              'message: ' + error.message + '\n');
+    }
+
+    navigator.geolocation.getCurrentPosition(onSuccess, onError);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            navigator.geolocation.getCurrentPosition(onSuccess, onError);
+        }
+    
+        // onSuccess Geolocation
+        //
+        function onSuccess(position) {
+            var element = document.getElementById('geolocation');
+            element.innerHTML = 'Latitude: '           + position.coords.latitude              + '<br />' +
+                                'Longitude: '          + position.coords.longitude             + '<br />' +
+                                'Altitude: '           + position.coords.altitude              + '<br />' +
+                                'Accuracy: '           + position.coords.accuracy              + '<br />' +
+                                'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +
+                                'Heading: '            + position.coords.heading               + '<br />' +
+                                'Speed: '              + position.coords.speed                 + '<br />' +
+                                'Timestamp: '          + 
+     position.timestamp                    + '<br />';
+        }
+    
+	    // onError Callback receives a PositionError object
+	    //
+	    function onError(error) {
+	        alert('code: '    + error.code    + '\n' +
+	              'message: ' + error.message + '\n');
+	    }
+
+        </script>
+      </head>
+      <body>
+        <p id="geolocation">Finding geolocation...</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/geolocation/PositionError/positionError.md b/docs/en/2.1.0/cordova/geolocation/PositionError/positionError.md
new file mode 100755
index 0000000..5fda2f5
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/PositionError/positionError.md
@@ -0,0 +1,59 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+PositionError
+========
+
+A `PositionError` object is returned to the `geolocationError` callback when an error occurs.
+
+Properties
+----------
+
+- __code:__ One of the predefined error codes listed below.
+- __message:__ Error message describing the details of the error encountered.
+
+Constants
+---------
+
+- `PositionError.PERMISSION_DENIED`
+- `PositionError.POSITION_UNAVAILABLE`
+- `PositionError.TIMEOUT`
+
+Description
+-----------
+
+The `PositionError` object is returned to the user through the `geolocationError` callback function when an error occurs with geolocation.
+
+### `PositionError.PERMISSION_DENIED`
+
+Returned when the user does not allow your application to retrieve
+position information. This is dependent on the platform.
+
+### `PositionError.POSITION_UNAVAILABLE`
+
+Returned when the device was unable to retrieve a position. In general
+this means the device has no network connectivity and/or cannot get a
+satellite fix.
+
+### `PositionError.TIMEOUT`
+
+Returned when the device was unable to retrieve a position within the
+time specified in the `geolocationOptions`' `timeout` property. When using
+in conjunction with `geolocation.watchPosition`, this error could be
+called into the `geolocationError` callback every `timeout` milliseconds.
diff --git a/docs/en/2.1.0/cordova/geolocation/geolocation.clearWatch.md b/docs/en/2.1.0/cordova/geolocation/geolocation.clearWatch.md
new file mode 100644
index 0000000..2ad51d0
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/geolocation.clearWatch.md
@@ -0,0 +1,118 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+geolocation.clearWatch
+======================
+
+Stop watching for changes to the device's location referenced by the `watchID` parameter.
+
+    navigator.geolocation.clearWatch(watchID);
+
+Parameters
+----------
+
+- __watchID:__ The id of the `watchPosition` interval to clear. (String)
+
+Description
+-----------
+
+`geolocation.clearWatch` stops watching changes to the device's location by clearing the `geolocation.watchPosition` referenced by `watchID`.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // Options: watch for changes in position, and use the most
+    // accurate position acquisition method available.
+    //
+    var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { enableHighAccuracy: true });
+
+    // ...later on...
+
+    navigator.geolocation.clearWatch(watchID);
+
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        var watchID = null;
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            // Get the most accurate position updates available on the
+            // device.
+            var options = { enableHighAccuracy: true };
+            watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
+        }
+    
+        // onSuccess Geolocation
+        //
+        function onSuccess(position) {
+            var element = document.getElementById('geolocation');
+            element.innerHTML = 'Latitude: '  + position.coords.latitude      + '<br />' +
+                                'Longitude: ' + position.coords.longitude     + '<br />' +
+                                '<hr />'      + element.innerHTML;
+        }
+
+        // clear the watch that was started earlier
+        // 
+        function clearWatch() {
+            if (watchID != null) {
+                navigator.geolocation.clearWatch(watchID);
+                watchID = null;
+            }
+        }
+    
+	    // onError Callback receives a PositionError object
+	    //
+	    function onError(error) {
+	      alert('code: '    + error.code    + '\n' +
+	            'message: ' + error.message + '\n');
+	    }
+
+        </script>
+      </head>
+      <body>
+        <p id="geolocation">Watching geolocation...</p>
+    	<button onclick="clearWatch();">Clear Watch</button>     
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/geolocation/geolocation.getCurrentPosition.md b/docs/en/2.1.0/cordova/geolocation/geolocation.getCurrentPosition.md
new file mode 100644
index 0000000..439f0af
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/geolocation.getCurrentPosition.md
@@ -0,0 +1,127 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+geolocation.getCurrentPosition
+==============================
+
+Returns the device's current position as a `Position` object.
+
+    navigator.geolocation.getCurrentPosition(geolocationSuccess, 
+                                             [geolocationError], 
+                                             [geolocationOptions]);
+
+Parameters
+----------
+
+- __geolocationSuccess__: The callback that is called with the current position.
+- __geolocationError__: (Optional) The callback that is called if there was an error.
+- __geolocationOptions__: (Optional) The geolocation options.
+
+Description
+-----------
+
+`geolocation.getCurrentPositon` is an asynchronous function. It returns the device's current position to the `geolocationSuccess` callback with a `Position` object as the parameter.  If there is an error, the `geolocationError` callback is invoked with a `PositionError` object.
+
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // onSuccess Callback
+    //   This method accepts a `Position` object, which contains
+    //   the current GPS coordinates
+    //
+    var onSuccess = function(position) {
+        alert('Latitude: '          + position.coords.latitude          + '\n' +
+              'Longitude: '         + position.coords.longitude         + '\n' +
+              'Altitude: '          + position.coords.altitude          + '\n' +
+              'Accuracy: '          + position.coords.accuracy          + '\n' +
+              'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
+              'Heading: '           + position.coords.heading           + '\n' +
+              'Speed: '             + position.coords.speed             + '\n' +
+              'Timestamp: '         + position.timestamp                + '\n');
+    };
+
+    // onError Callback receives a PositionError object
+    //
+    function onError(error) {
+        alert('code: '    + error.code    + '\n' +
+              'message: ' + error.message + '\n');
+    }
+
+    navigator.geolocation.getCurrentPosition(onSuccess, onError);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            navigator.geolocation.getCurrentPosition(onSuccess, onError);
+        }
+    
+        // onSuccess Geolocation
+        //
+        function onSuccess(position) {
+            var element = document.getElementById('geolocation');
+            element.innerHTML = 'Latitude: '           + position.coords.latitude              + '<br />' +
+                                'Longitude: '          + position.coords.longitude             + '<br />' +
+                                'Altitude: '           + position.coords.altitude              + '<br />' +
+                                'Accuracy: '           + position.coords.accuracy              + '<br />' +
+                                'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +
+                                'Heading: '            + position.coords.heading               + '<br />' +
+                                'Speed: '              + position.coords.speed                 + '<br />' +
+                                'Timestamp: '          +                                   position.timestamp          + '<br />';
+        }
+    
+        // onError Callback receives a PositionError object
+        //
+        function onError(error) {
+            alert('code: '    + error.code    + '\n' +
+                    'message: ' + error.message + '\n');
+        }
+
+        </script>
+      </head>
+      <body>
+        <p id="geolocation">Finding geolocation...</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/geolocation/geolocation.md b/docs/en/2.1.0/cordova/geolocation/geolocation.md
new file mode 100644
index 0000000..9bdd8d6
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/geolocation.md
@@ -0,0 +1,108 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Geolocation
+===========
+
+> The `geolocation` object provides access to the device's GPS sensor.
+
+Geolocation provides location information for the device, such as latitude and longitude. Common sources of location information include Global Positioning System (GPS) and location inferred from network signals such as IP address, RFID, WiFi and Bluetooth MAC addresses, and GSM/CDMA cell IDs. No guarantee is given that the API returns the device's actual location.
+
+This API is based on the [W3C Geolocation API Specification](http://dev.w3.org/geo/api/spec-source.html).  Some devices (Android, BlackBerry, Bada, Windows Phone 7, webOS and Tizen, to be specific) already provide an implementation of this spec.  For those devices, the built-in support is used instead of replacing it with Cordova's implementation.  For devices that don't have geolocation support, the Cordova implementation adheres to the W3C specification.
+
+Methods
+-------
+
+- geolocation.getCurrentPosition
+- geolocation.watchPosition
+- geolocation.clearWatch
+
+
+Arguments
+---------
+
+- geolocationSuccess
+- geolocationError
+- geolocationOptions
+
+Objects (Read-Only)
+-------------------
+
+- Position
+- PositionError
+- Coordinates
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Geolocation" value="org.apache.cordova.GeoBroker" />
+
+#### app/AndroidManifest.xml
+
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
+
+### Bada
+
+    No permissions are required.
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Geolocation" value="org.apache.cordova.geolocation.Geolocation" />
+
+#### www/config.xml
+
+    <rim:permissions>
+        <rim:permit>read_geolocation</rim:permit>
+    </rim:permissions>
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>Geolocation</key>
+        <string>CDVLocation</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+#### Properties/WPAppManifest.xml
+
+    <Capabilities>
+        <Capability Name="ID_CAP_LOCATION" />
+    </Capabilities>
+
+Reference: [Application Manifest for Windows Phone](http://msdn.microsoft.com/en-us/library/ff769509%28v=vs.92%29.aspx)
+
+### Tizen
+
+    No permissions are required.
diff --git a/docs/en/2.1.0/cordova/geolocation/geolocation.watchPosition.md b/docs/en/2.1.0/cordova/geolocation/geolocation.watchPosition.md
new file mode 100644
index 0000000..e0feb3b
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/geolocation.watchPosition.md
@@ -0,0 +1,129 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+geolocation.watchPosition
+=========================
+
+Watches for changes to the device's current position.
+
+    var watchId = navigator.geolocation.watchPosition(geolocationSuccess,
+                                                      [geolocationError],
+                                                      [geolocationOptions]);
+
+Parameters
+----------
+
+- __geolocationSuccess__: The callback that is called with the current position.
+- __geolocationError__: (Optional) The callback that is called if there was an error.
+- __geolocationOptions__: (Optional) The geolocation options.
+
+Returns
+-------
+
+- __String__: returns a watch id that references the watch position interval. The watch id should be used with `geolocation.clearWatch` to stop watching for changes in position.
+
+Description
+-----------
+
+`geolocation.watchPosition` is an asynchronous function. It returns the device's current position when a change in position has been detected.  When the device has retrieved a new location, the `geolocationSuccess` callback is invoked with a `Position` object as the parameter.  If there is an error, the `geolocationError` callback is invoked with a `PositionError` object.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // onSuccess Callback
+    //   This method accepts a `Position` object, which contains
+    //   the current GPS coordinates
+    //
+    function onSuccess(position) {
+        var element = document.getElementById('geolocation');
+        element.innerHTML = 'Latitude: '  + position.coords.latitude      + '<br />' +
+                            'Longitude: ' + position.coords.longitude     + '<br />' +
+                            '<hr />'      + element.innerHTML;
+    }
+
+    // onError Callback receives a PositionError object
+    //
+    function onError(error) {
+        alert('code: '    + error.code    + '\n' +
+              'message: ' + error.message + '\n');
+    }
+
+    // Options: throw an error if no update is received every 30 seconds.
+    //
+    var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { timeout: 30000 });
+    
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        var watchID = null;
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            // Throw an error if no update is received every 30 seconds
+            var options = { timeout: 30000 };
+            watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
+        }
+    
+        // onSuccess Geolocation
+        //
+        function onSuccess(position) {
+            var element = document.getElementById('geolocation');
+            element.innerHTML = 'Latitude: '  + position.coords.latitude      + '<br />' +
+                                'Longitude: ' + position.coords.longitude     + '<br />' +
+                                '<hr />'      + element.innerHTML;
+        }
+    
+	    // onError Callback receives a PositionError object
+	    //
+	    function onError(error) {
+	        alert('code: '    + error.code    + '\n' +
+	              'message: ' + error.message + '\n');
+	    }
+
+        </script>
+      </head>
+      <body>
+        <p id="geolocation">Watching geolocation...</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/geolocation/parameters/geolocation.options.md b/docs/en/2.1.0/cordova/geolocation/parameters/geolocation.options.md
new file mode 100644
index 0000000..d822d24
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/parameters/geolocation.options.md
@@ -0,0 +1,41 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+geolocationOptions
+==================
+
+Optional parameters to customize the retrieval of the geolocation
+`Position`.
+
+    { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true };
+
+Options
+-------
+
+- __enableHighAccuracy:__ Provides a hint that the application would like to receive the best possible results. By default, the device will attempt to retrieve a `Position` using network-based methods. Setting this property to `true` tells the framework to use more accurate methods, such as satellite positioning. _(Boolean)_
+- __timeout:__ The maximum length of time (milliseconds) that is allowed to pass from the call to `geolocation.getCurrentPosition` or `geolocation.watchPosition` until the corresponding `geolocationSuccess` callback is invoked. If the `geolocationSuccess` callback is not invoked within this time, the `geolocationError` callback will be invoked with a `PositionError.TIMEOUT` error code. NOTE: when used in conjunction with `geolocation.watchPosition`, the `geolocationError` callback could be called on an interval every `timeout` milliseconds! _(Number)_
+- __maximumAge:__ Accept a cached position whose age is no greater than the specified time in milliseconds. _(Number)_
+
+Android Quirks
+--------------
+
+The Android 2.x simulators will not return a geolocation result unless the enableHighAccuracy option is set to true.
+
+    { enableHighAccuracy: true }
+
diff --git a/docs/en/2.1.0/cordova/geolocation/parameters/geolocationError.md b/docs/en/2.1.0/cordova/geolocation/parameters/geolocationError.md
new file mode 100644
index 0000000..c0091a0
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/parameters/geolocationError.md
@@ -0,0 +1,32 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+geolocationError
+================
+
+The user's callback function that is called when there is an error for geolocation functions.
+
+    function(error) {
+        // Handle the error
+    }
+
+Parameters
+----------
+
+- __error:__ The error returned by the device. (`PositionError`)
diff --git a/docs/en/2.1.0/cordova/geolocation/parameters/geolocationSuccess.md b/docs/en/2.1.0/cordova/geolocation/parameters/geolocationSuccess.md
new file mode 100644
index 0000000..b70a579
--- /dev/null
+++ b/docs/en/2.1.0/cordova/geolocation/parameters/geolocationSuccess.md
@@ -0,0 +1,46 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+geolocationSuccess
+==================
+
+The user's callback function that is called when a geolocation position becomes available (when using with `geolocation.getCurrentPosition`), or when the position changes (when using with `geolocation.watchPosition`).
+
+    function(position) {
+        // Do something
+    }
+
+Parameters
+----------
+
+- __position:__ The geolocation position returned by the device. (`Position`)
+
+Example
+-------
+
+    function geolocationSuccess(position) {
+        alert('Latitude: '          + position.coords.latitude          + '\n' +
+              'Longitude: '         + position.coords.longitude         + '\n' +
+              'Altitude: '          + position.coords.altitude          + '\n' +
+              'Accuracy: '          + position.coords.accuracy          + '\n' +
+              'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
+              'Heading: '           + position.coords.heading           + '\n' +
+              'Speed: '             + position.coords.speed             + '\n' +
+              'Timestamp: '         + position.timestamp                + '\n');
+    }
diff --git a/docs/en/2.1.0/cordova/media/MediaError/mediaError.md b/docs/en/2.1.0/cordova/media/MediaError/mediaError.md
new file mode 100644
index 0000000..ab79258
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/MediaError/mediaError.md
@@ -0,0 +1,44 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+MediaError
+==========
+
+A `MediaError` object is returned to the `mediaError` callback function when an error occurs.
+
+Properties
+----------
+
+- __code:__ One of the predefined error codes listed below.
+- __message:__ Error message describing the details of the error.
+
+Constants
+---------
+
+- `MediaError.MEDIA_ERR_ABORTED`
+- `MediaError.MEDIA_ERR_NETWORK`
+- `MediaError.MEDIA_ERR_DECODE`
+- `MediaError.MEDIA_ERR_NONE_SUPPORTED`
+
+
+Description
+-----------
+
+The `MediaError` object is returned to the user through the `mediaError` callback function when an error occurs.
+
diff --git a/docs/en/2.1.0/cordova/media/Parameters/mediaError.md b/docs/en/2.1.0/cordova/media/Parameters/mediaError.md
new file mode 100644
index 0000000..e1803b4
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/Parameters/mediaError.md
@@ -0,0 +1,32 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+mediaError
+==========
+
+A user specified callback function that is invoked when there is an error in media functions.
+
+    function(error) {
+        // Handle the error
+    }
+
+Parameters
+----------
+
+- __error:__ The error returned by the device. (`MediaError`)
diff --git a/docs/en/2.1.0/cordova/media/capture/CaptureCB.md b/docs/en/2.1.0/cordova/media/capture/CaptureCB.md
new file mode 100644
index 0000000..5f31fd0
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/CaptureCB.md
@@ -0,0 +1,44 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+CaptureCB
+=========
+
+> Invoked upon a successful media capture operation.
+
+    function captureSuccess( MediaFile[] mediaFiles ) { ... };
+
+Description
+-----------
+
+This function is invoked after a successful capture operation has completed.  This means a media file has been captured, and either the user has exited the media capture application, or the capture limit has been reached.
+
+Each MediaFile object describes a captured media file.  
+
+Quick Example
+-------------
+
+    // capture callback
+    function captureSuccess(mediaFiles) {
+        var i, path, len;
+        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
+            path = mediaFiles[i].fullPath;
+            // do something interesting with the file
+        }
+    };
diff --git a/docs/en/2.1.0/cordova/media/capture/CaptureError.md b/docs/en/2.1.0/cordova/media/capture/CaptureError.md
new file mode 100644
index 0000000..5f98d51
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/CaptureError.md
@@ -0,0 +1,37 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+CaptureError
+============
+
+> Encapsulates the error code resulting from a failed media capture operation.
+
+Properties
+----------
+
+- __code:__ One of the pre-defined error codes listed below.
+
+Constants
+---------
+
+- CaptureError.`CAPTURE_INTERNAL_ERR`: Camera or microphone failed to capture image or sound. 
+- CaptureError.`CAPTURE_APPLICATION_BUSY`: Camera application or audio capture application is currently serving other capture request.
+- CaptureError.`CAPTURE_INVALID_ARGUMENT`: Invalid use of the API (e.g. limit parameter has value less than one).
+- CaptureError.`CAPTURE_NO_MEDIA_FILES`: User exited camera application or audio capture application before capturing anything.
+- CaptureError.`CAPTURE_NOT_SUPPORTED`: The requested capture operation is not supported.
diff --git a/docs/en/2.1.0/cordova/media/capture/CaptureErrorCB.md b/docs/en/2.1.0/cordova/media/capture/CaptureErrorCB.md
new file mode 100644
index 0000000..948140a
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/CaptureErrorCB.md
@@ -0,0 +1,40 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+CaptureErrorCB
+==============
+
+> Invoked if an error occurs during a media capture operation.
+
+    function captureError( CaptureError error ) { ... };
+
+Description
+-----------
+
+This function is invoked if an error occurs when trying to launch a media capture operation and the capture application is busy, if an error occurs while the capture operation is taking place, or if the capture operation has been canceled by the user before any media files have been captured.
+
+This function is invoked with a CaptureError object containing an appropriate error code.
+
+Quick Example
+-------------
+
+    // capture error callback
+    var captureError = function(error) {
+        navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
+    };
diff --git a/docs/en/2.1.0/cordova/media/capture/ConfigurationData.md b/docs/en/2.1.0/cordova/media/capture/ConfigurationData.md
new file mode 100644
index 0000000..c166b3e
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/ConfigurationData.md
@@ -0,0 +1,62 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+ConfigurationData
+=================
+
+> Encapsulates a set of media capture parameters that a device supports.
+
+Description
+-----------
+
+This object is used to describe media capture modes supported by the device.  The configuration data includes the MIME type, and capture dimensions (for video or image capture).  
+
+The MIME types should adhere to [RFC2046](http://www.ietf.org/rfc/rfc2046.txt).  Examples:
+
+- video/3gpp
+- video/quicktime
+- image/jpeg
+- audio/amr
+- audio/wav 
+
+Properties
+----------
+
+- __type:__ The ASCII-encoded string in lower case representing the media type. (DOMString)
+- __height:__ The height of the image or video in pixels.  In the case of a sound clip, this attribute has value 0. (Number)
+- __width:__ The width of the image or video in pixels.  In the case of a sound clip, this attribute has value 0. (Number)
+
+Quick Example
+-------------
+
+    // retrieve supported image modes
+    var imageModes = navigator.device.capture.supportedImageModes;
+
+    // Select mode that has the highest horizontal resolution
+    var width = 0;
+    var selectedmode;
+    for each (var mode in imageModes) {
+        if (mode.width > width) {
+            width = mode.width;
+            selectedmode = mode;
+        }
+    }
+
+
+Not supported by any platform.  All configuration data arrays are empty.
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/media/capture/MediaFile.getFormatData.md b/docs/en/2.1.0/cordova/media/capture/MediaFile.getFormatData.md
new file mode 100644
index 0000000..40736cd
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/MediaFile.getFormatData.md
@@ -0,0 +1,53 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+MediaFile.getFormatData
+=======================
+
+> Retrieves format information about the media capture file.
+
+    mediaFile.getFormatData( 
+        MediaFileDataSuccessCB successCallback, 
+        [MediaFileDataErrorCB errorCallback]
+    );
+
+Description
+-----------
+
+This function asynchronously attempts to retrieve the format information for the media file.  If successful, it invokes the MediaFileDataSuccessCB callback with a MediaFileData object.  If the attempt fails, this function will invoke the MediaFileDataErrorCB callback.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+BlackBerry WebWorks Quirks
+--------------------------
+There is no API that provides format information of media files.  Therefore, all MediaFileData objects will be returned with default values.  See MediaFileData documentation.
+
+Android Quirks
+--------------
+The API for retrieving media file format information is limited.  Therefore, not all MediaFileData properties are supported.  See MediaFileData documentation.
+
+iOS Quirks
+----------
+The API for retrieving media file format information is limited.  Therefore, not all MediaFileData properties are supported.  See MediaFileData documentation.
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/media/capture/MediaFile.md b/docs/en/2.1.0/cordova/media/capture/MediaFile.md
new file mode 100644
index 0000000..fe3d9a1
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/MediaFile.md
@@ -0,0 +1,37 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+MediaFile
+=========
+
+> Encapsulates properties of a media capture file.
+
+Properties
+----------
+
+- __name:__ The name of the file, without path information. (DOMString)
+- __fullPath:__ The full path of the file, including the name. (DOMString)
+- __type:__ The mime type (DOMString)
+- __lastModifiedDate:__ The date and time that the file was last modified. (Date)
+- __size:__ The size of the file, in bytes. (Number)
+
+Methods
+-------
+
+- __MediaFile.getFormatData:__ Retrieves the format information of the media file.
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/media/capture/MediaFileData.md b/docs/en/2.1.0/cordova/media/capture/MediaFileData.md
new file mode 100644
index 0000000..93ed349
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/MediaFileData.md
@@ -0,0 +1,62 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+MediaFileData
+=============
+
+> Encapsulates format information about a media file.
+
+Properties
+----------
+
+- __codecs:__ The actual format of the audio and video content. (DOMString)
+- __bitrate:__ The average bitrate of the content.  In case of an image, this attribute has value 0. (Number)
+- __height:__ The height of the image or video in pixels. In the case of a sound clip, this attribute has value 0. (Number)
+- __width:__ The width of the image or video in pixels. In the case of a sound clip, this attribute has value 0. (Number)
+- __duration:__ The length of the video or sound clip in seconds. In the case of an image, this attribute has value 0. (Number)
+
+BlackBerry WebWorks Quirks
+--------------------------
+There is no API that provides format information of media files.  So the MediaFileData object returned by the MediaFile.getFormatData function will have the following default values:
+
+- __codecs:__ Not supported. The attribute will always be null.
+- __bitrate:__ Not supported.  The attribute will always be 0.
+- __height:__ Not supported.  The attribute will always be 0.
+- __width:__ Not supported.  The attribute will always be 0.
+- __duration:__ Not supported.  The attribute will always be 0.
+
+Android Quirks
+--------------
+Support for the MediaFileData properties is as follows:
+
+- __codecs:__ Not supported.  The attribute will always be null.
+- __bitrate:__ Not supported.  The attribute will always be 0.
+- __height:__ Supported.  (Image and video files only).  
+- __width:__ Supported.  (Image and video files only). 
+- __duration:__ Supported.  (Audio and video files only).
+
+iOS Quirks
+----------
+Support for the MediaFileData properties is as follows:
+
+- __codecs:__ Not supported.  The attribute will always be null.
+- __bitrate:__ Supported on iOS4 devices for audio only. The attribute will always be 0 for image and video.
+- __height:__ Supported.  (Image and video files only).  
+- __width:__ Supported.  (Image and video files only). 
+- __duration:__ Supported.  (Audio and video files only).
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/media/capture/capture.md b/docs/en/2.1.0/cordova/media/capture/capture.md
new file mode 100644
index 0000000..5fbf0a4
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/capture.md
@@ -0,0 +1,134 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Capture
+=======
+
+> Provides access to the audio, image, and video capture capabilities of the device.
+
+Objects
+-------
+
+- Capture
+- CaptureAudioOptions
+- CaptureImageOptions
+- CaptureVideoOptions
+- CaptureCB
+- CaptureErrorCB
+- ConfigurationData
+- MediaFile
+- MediaFileData
+
+Methods
+-------
+
+- capture.captureAudio
+- capture.captureImage
+- capture.captureVideo
+- MediaFile.getFormatData
+
+Scope
+-----
+
+The __capture__ object is assigned to the __navigator.device__ object, and therefore has global scope.
+
+    // The global capture object
+    var capture = navigator.device.capture;
+
+Properties
+----------
+
+- __supportedAudioModes:__ The audio recording formats supported by the device. (ConfigurationData[])
+- __supportedImageModes:__ The recording image sizes and formats supported by the device. (ConfigurationData[])
+- __supportedVideoModes:__ The recording video resolutions and formats supported by the device. (ConfigurationData[])
+
+Methods
+-------
+
+- capture.captureAudio: Launch the device audio recording application for recording audio clip(s).
+- capture.captureImage: Launch the device camera application for taking image(s).
+- capture.captureVideo: Launch the device video recorder application for recording video(s).
+
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Capture" value="org.apache.cordova.Capture"/>
+
+#### app/AndroidManifest.xml
+
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />   
+
+### Bada
+
+#### manifest.xml
+
+    <Privilege>
+        <Name>RECORDING</Name>
+    </Privilege>
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Capture" value="org.apache.cordova.capture.MediaCapture" />
+
+#### www/config.xml
+
+    <feature id="blackberry.system"  required="true" version="1.0.0.0" />
+    <feature id="blackberry.io.file" required="true" version="1.0.0.0" />
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>Capture</key>
+        <string>CDVCapture</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+#### Properties/WPAppManifest.xml
+
+    <Capabilities>
+        <Capability Name="ID_CAP_MEDIALIB" />
+        <Capability Name="ID_CAP_MICROPHONE" />
+        <Capability Name="ID_HW_FRONTCAMERA" />
+        <Capability Name="ID_CAP_ISV_CAMERA" />
+        <Capability Name="ID_CAP_CAMERA" />
+    </Capabilities>
diff --git a/docs/en/2.1.0/cordova/media/capture/captureAudio.md b/docs/en/2.1.0/cordova/media/capture/captureAudio.md
new file mode 100644
index 0000000..2767549
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/captureAudio.md
@@ -0,0 +1,140 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+capture.captureAudio
+====================
+
+> Start the audio recorder application and return information about captured audio clip file(s).
+
+    navigator.device.capture.captureAudio( 
+	    CaptureCB captureSuccess, CaptureErrorCB captureError,  [CaptureAudioOptions options]
+	);
+
+Description
+-----------
+
+This method starts an asynchronous operation to capture audio recordings using the device's default audio recording application.  The operation allows the device user to capture multiple recordings in a single session.
+
+The capture operation ends when either the user exits the audio recording application, or the maximum number of recordings, specified by the __limit__ parameter in CaptureAudioOptions, has been reached.  If no value is provided for the __limit__ parameter, a default value of one (1) is used, and the capture operation will terminate after the user records a single audio clip.
+
+When the capture operation is finished, it will invoke the CaptureCB callback with an array of MediaFile objects describing each captured audio clip file.  If the operation is terminated by the user before an audio clip is captured, the CaptureErrorCB callback will be invoked with a CaptureError object with the CaptureError.`CAPTURE_NO_MEDIA_FILES` error code.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+    // capture callback
+    var captureSuccess = function(mediaFiles) {
+        var i, path, len;
+        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
+            path = mediaFiles[i].fullPath;
+            // do something interesting with the file
+        }
+    };
+
+    // capture error callback
+    var captureError = function(error) {
+        navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
+    };
+
+    // start audio capture
+    navigator.device.capture.captureAudio(captureSuccess, captureError, {limit:2});
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Capture Audio</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8" src="json2.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Called when capture operation is finished
+        //
+        function captureSuccess(mediaFiles) {
+            var i, len;
+            for (i = 0, len = mediaFiles.length; i < len; i += 1) {
+                uploadFile(mediaFiles[i]);
+            }	    
+        }
+
+        // Called if something bad happens.
+        // 
+        function captureError(error) {
+	        var msg = 'An error occurred during capture: ' + error.code;
+            navigator.notification.alert(msg, null, 'Uh oh!');
+        }
+
+        // A button will call this function
+        //
+        function captureAudio() {
+            // Launch device audio recording application, 
+            // allowing user to capture up to 2 audio clips
+            navigator.device.capture.captureAudio(captureSuccess, captureError, {limit: 2});
+        }
+
+        // Upload files to server
+        function uploadFile(mediaFile) {
+            var ft = new FileTransfer(),
+                path = mediaFile.fullPath,
+                name = mediaFile.name;
+
+            ft.upload(path,
+                "http://my.domain.com/upload.php",
+                function(result) {
+                    console.log('Upload success: ' + result.responseCode);
+                    console.log(result.bytesSent + ' bytes sent');
+                },
+                function(error) {
+                    console.log('Error uploading file ' + path + ': ' + error.code);
+                },
+                { fileName: name });   
+        }
+
+        </script>
+        </head>
+        <body>
+            <button onclick="captureAudio();">Capture Audio</button> <br>
+        </body>
+    </html>
+
+BlackBerry WebWorks Quirks
+--------------------------
+
+- Cordova for BlackBerry WebWorks attempts to launch the __Voice Notes Recorder__ application, provided by RIM, to capture the audio recordings.  The developer will receive a CaptureError.`CAPTURE_NOT_SUPPORTED` error code if the application is not installed on the device.
+
+iOS Quirks
+----------
+
+- iOS does not have a default audio recording application so a simple user interface is provided.
+
+Windows Phone 7 Quirks
+----------
+
+- Windows Phone 7 does not have a default audio recording application so a simple user interface is provided.
diff --git a/docs/en/2.1.0/cordova/media/capture/captureAudioOptions.md b/docs/en/2.1.0/cordova/media/capture/captureAudioOptions.md
new file mode 100644
index 0000000..19ec58b
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/captureAudioOptions.md
@@ -0,0 +1,56 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+CaptureAudioOptions
+===================
+
+> Encapsulates audio capture configuration options.
+
+Properties
+----------
+
+- __limit:__ The maximum number of audio clips the device user can record in a single capture operation.  The value must be greater than or equal to 1 (defaults to 1).
+- __duration:__ The maximum duration of an audio sound clip, in seconds.
+- __mode:__ The selected audio mode.  The value must match one of the elements in `capture.supportedAudioModes`.
+
+Quick Example
+-------------
+
+    // limit capture operation to 3 media files, no longer than 10 seconds each
+    var options = { limit: 3, duration: 10 };
+
+    navigator.device.capture.captureAudio(captureSuccess, captureError, options);
+
+Android Quirks
+--------------
+
+- The __duration__ parameter is not supported.  Recording lengths cannot be limited programmatically.
+- The __mode__ parameter is not supported.  The audio recording format cannot be altered programmatically.  Recordings are encoded using Adaptive Multi-Rate (AMR) format (audio/amr).
+
+BlackBerry WebWorks Quirks
+--------------------------
+
+- The __duration__ parameter is not supported.  Recording lengths cannot be limited programmatically.
+- The __mode__ parameter is not supported.  The audio recording format cannot be altered programmatically.  Recordings are encoded using Adaptive Multi-Rate (AMR) format (audio/amr).
+
+iOS Quirks
+----------
+
+- The __limit__ parameter is not supported. One recording can be created for each invocation.
+- The __mode__ parameter is not supported.  The audio recording format cannot be altered programmatically.  Recordings are encoded using Waveform Audio (WAV) format (audio/wav).
diff --git a/docs/en/2.1.0/cordova/media/capture/captureImage.md b/docs/en/2.1.0/cordova/media/capture/captureImage.md
new file mode 100644
index 0000000..14f0eb6
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/captureImage.md
@@ -0,0 +1,158 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+capture.captureImage
+====================
+
+> Start the camera application and return information about captured image file(s).
+
+    navigator.device.capture.captureImage( 
+	    CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureImageOptions options]
+	);
+
+Description
+-----------
+
+This method starts an asynchronous operation to capture images using the device camera application.  The operation allows the device user to capture multiple images in a single session.
+
+The capture operation ends when either the user exits the camera application, or the maximum number of images, specified by the __limit__ parameter in CaptureImageOptions, has been reached.  If no value is provided for the __limit__ parameter, a default value of one (1) is used, and the capture operation will terminate after the user captures a single image.
+
+When the capture operation is finished, it will invoke the CaptureCB callback with an array of MediaFile objects describing each captured image file.  If the operation is terminated by the user before an image is captured, the CaptureErrorCB callback will be invoked with a CaptureError object with the CaptureError.`CAPTURE_NO_MEDIA_FILES` error code.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Bada 2.x
+
+Windows Phone 7 Quirks
+----------------------
+
+Invoking the native camera application while your device is connected
+via Zune will not work, and the error callback will be triggered.
+
+Quick Example
+-------------
+
+    // capture callback
+    var captureSuccess = function(mediaFiles) {
+        var i, path, len;
+        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
+            path = mediaFiles[i].fullPath;
+            // do something interesting with the file
+        }
+    };
+
+    // capture error callback
+    var captureError = function(error) {
+        navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
+    };
+
+    // start image capture
+    navigator.device.capture.captureImage(captureSuccess, captureError, {limit:2});
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Capture Image</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8" src="json2.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Called when capture operation is finished
+        //
+        function captureSuccess(mediaFiles) {
+            var i, len;
+            for (i = 0, len = mediaFiles.length; i < len; i += 1) {
+                uploadFile(mediaFiles[i]);
+            }	    
+        }
+
+        // Called if something bad happens.
+        // 
+        function captureError(error) {
+	        var msg = 'An error occurred during capture: ' + error.code;
+            navigator.notification.alert(msg, null, 'Uh oh!');
+        }
+
+        // A button will call this function
+        //
+        function captureImage() {
+            // Launch device camera application, 
+            // allowing user to capture up to 2 images
+            navigator.device.capture.captureImage(captureSuccess, captureError, {limit: 2});
+        }
+
+        // Upload files to server
+        function uploadFile(mediaFile) {
+            var ft = new FileTransfer(),
+                path = mediaFile.fullPath,
+                name = mediaFile.name;
+
+            ft.upload(path,
+                "http://my.domain.com/upload.php",
+                function(result) {
+                    console.log('Upload success: ' + result.responseCode);
+                    console.log(result.bytesSent + ' bytes sent');
+                },
+                function(error) {
+                    console.log('Error uploading file ' + path + ': ' + error.code);
+                },
+                { fileName: name });   
+        }
+
+        </script>
+        </head>
+        <body>
+            <button onclick="captureImage();">Capture Image</button> <br>
+        </body>
+    </html>
+
+
+Bada Quirks
+-----------
+
+Bada supports _captureImage_ just like the other platforms. However there is _another_ mode where you can capture a video or an image straight in the webview without launching any camera app. In order to do that you need to:
+
+1. create a _&#60;div&#62;_ element somewhere in your document and give it an id (such as "preview"). 
+
+        <div id="preview"></div>
+
+2. Initialize the camera preview with the following method
+
+        navigator.camera.showPreview("preview");
+
+3. Once you get the preview you can
+
+    3.1 Capture an image with
+
+        var options = { destinationFilename: "images/cam01.jpg", highRes: false};
+        navigator.capture.captureImage(success, fail, options);
+    
+3. Hide the camera preview with the following method
+
+        navigator.camera.hidePreview("preview");
+
diff --git a/docs/en/2.1.0/cordova/media/capture/captureImageOptions.md b/docs/en/2.1.0/cordova/media/capture/captureImageOptions.md
new file mode 100644
index 0000000..763a389
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/captureImageOptions.md
@@ -0,0 +1,53 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+CaptureImageOptions
+===================
+
+> Encapsulates image capture configuration options.
+
+Properties
+----------
+
+- __limit:__ The maximum number of images the device user can capture in a single capture operation.  The value must be greater than or equal to 1 (defaults to 1).
+- __mode:__ The selected image mode.  The value must match one of the elements in `capture.supportedImageModes`.
+
+Quick Example
+-------------
+
+    // limit capture operation to 3 images
+    var options = { limit: 3 };
+
+    navigator.device.capture.captureImage(captureSuccess, captureError, options);
+
+Android Quirks
+--------------
+
+- The __mode__ parameter is not supported.  The image size and format cannot be altered programmatically; however, the image size can be altered by the device user.  Images are saved in JPEG format (image/jpeg).
+
+BlackBerry WebWorks Quirks
+--------------------------
+
+- The __mode__ parameter is not supported.  The image size and format cannot be altered programmatically; however, the image size can be altered by the device user.  Images are saved in JPEG format (image/jpeg).
+
+iOS Quirks
+----------
+
+- The __limit__ parameter is not supported. One image is taken per invocation.
+- The __mode__ parameter is not supported.  The image size and format cannot be altered programmatically.  Images are saved in JPEG format (image/jpeg).
diff --git a/docs/en/2.1.0/cordova/media/capture/captureVideo.md b/docs/en/2.1.0/cordova/media/capture/captureVideo.md
new file mode 100644
index 0000000..5da4934
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/captureVideo.md
@@ -0,0 +1,159 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+capture.captureVideo
+====================
+
+> Start the video recorder application and return information about captured video clip file(s).
+
+    navigator.device.capture.captureVideo( 
+	    CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureVideoOptions options]
+	);
+
+Description
+-----------
+
+This method starts an asynchronous operation to capture video recordings using the device video recording application.  The operation allows the device user to capture multiple recordings in a single session.
+
+The capture operation ends when either the user exits the video recording application, or the maximum number of recordings, specified by the __limit__ parameter in CaptureVideoOptions, has been reached.  If no value is provided for the __limit__ parameter, a default value of one (1) is used, and the capture operation will terminate after the user records a single video clip.
+
+When the capture operation is finished, it will invoke the CaptureCB callback with an array of MediaFile objects describing each captured video clip file.  If the operation is terminated by the user before an video clip is captured, the CaptureErrorCB callback will be invoked with a CaptureError object with the CaptureError.`CAPTURE_NO_MEDIA_FILES` error code.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Bada 2.x
+
+Quick Example
+-------------
+
+    // capture callback
+    var captureSuccess = function(mediaFiles) {
+        var i, path, len;
+        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
+            path = mediaFiles[i].fullPath;
+            // do something interesting with the file
+        }
+    };
+
+    // capture error callback
+    var captureError = function(error) {
+        navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
+    };
+
+    // start video capture
+    navigator.device.capture.captureVideo(captureSuccess, captureError, {limit:2});
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Capture Video</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8" src="json2.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Called when capture operation is finished
+        //
+        function captureSuccess(mediaFiles) {
+            var i, len;
+            for (i = 0, len = mediaFiles.length; i < len; i += 1) {
+                uploadFile(mediaFiles[i]);
+            }	    
+        }
+
+        // Called if something bad happens.
+        // 
+        function captureError(error) {
+	        var msg = 'An error occurred during capture: ' + error.code;
+            navigator.notification.alert(msg, null, 'Uh oh!');
+        }
+
+        // A button will call this function
+        //
+        function captureVideo() {
+            // Launch device video recording application, 
+            // allowing user to capture up to 2 video clips
+            navigator.device.capture.captureVideo(captureSuccess, captureError, {limit: 2});
+        }
+
+        // Upload files to server
+        function uploadFile(mediaFile) {
+            var ft = new FileTransfer(),
+                path = mediaFile.fullPath,
+                name = mediaFile.name;
+
+            ft.upload(path,
+                "http://my.domain.com/upload.php",
+                function(result) {
+                    console.log('Upload success: ' + result.responseCode);
+                    console.log(result.bytesSent + ' bytes sent');
+                },
+                function(error) {
+                    console.log('Error uploading file ' + path + ': ' + error.code);
+                },
+                { fileName: name });   
+        }
+
+        </script>
+        </head>
+        <body>
+            <button onclick="captureVideo();">Capture Video</button> <br>
+        </body>
+    </html>
+
+BlackBerry WebWorks Quirks
+--------------------------
+
+- Cordova for BlackBerry WebWorks attempts to launch the __Video Recorder__ application, provided by RIM, to capture the video recordings.  The developer will receive a CaptureError.`CAPTURE_NOT_SUPPORTED` error code if the application is not installed on the device.
+
+Bada 2.x Quirks
+---------------
+
+Bada supports _captureVideo_ just like the other platforms. However there is _another_ mode where you can capture a video or an image straight in the webview without launching any camera apps. In order to do that you need to:
+
+1. create a _&#60;div&#62;_ element somewhere in your document and give it an id (such as "preview"). 
+
+        <div id="preview"></div>
+
+2. Initialize the camera preview with the following method
+
+        navigator.camera.showPreview("preview");
+
+3. Once you get the preview you can
+
+    3.1 Start capturing a video with
+
+        navigator.capture.startVideoCapture(success, fail, {duration: 5000, destinationFilename: "videos/a.3gp"});
+    
+    3.2 Stop the video capture with
+
+        navigator.capture.stopVideoCapture();
+
+3. Hide the camera preview with the following method
+
+        navigator.camera.hidePreview("preview");
+
diff --git a/docs/en/2.1.0/cordova/media/capture/captureVideoOptions.md b/docs/en/2.1.0/cordova/media/capture/captureVideoOptions.md
new file mode 100644
index 0000000..95711f1
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/capture/captureVideoOptions.md
@@ -0,0 +1,59 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+CaptureVideoOptions
+===================
+
+> Encapsulates video capture configuration options.
+
+Properties
+----------
+
+- __limit:__ The maximum number of video clips the device user can capture in a single capture operation.  The value must be greater than or equal to 1 (defaults to 1).
+- __duration:__ The maximum duration of a video clip, in seconds.
+- __mode:__ The selected video capture mode.  The value must match one of the elements in `capture.supportedVideoModes`.
+
+Quick Example
+-------------
+
+    // limit capture operation to 3 video clips
+    var options = { limit: 3 };
+
+    navigator.device.capture.captureVideo(captureSuccess, captureError, options);
+
+Android Quirks
+--------------
+
+- The __duration__ parameter is not supported.  Recording lengths cannot be limited programmatically.
+- The __mode__ parameter is not supported.  The video size and format cannot be altered programmatically; however, these parameters can be changed by the device user. By default, videos are recorded in 3GPP (video/3gpp) format.
+
+
+BlackBerry WebWorks Quirks
+--------------------------
+
+- The __duration__ parameter is not supported.  Recording lengths cannot be limited programmatically.
+- The __mode__ parameter is not supported.  The video size and format cannot be altered programmatically; however, these parameters can be changed by the device user. By default, videos are recorded in 3GPP (video/3gpp) format.
+
+iOS Quirks
+----------
+
+- The __limit__ parameter is not supported.  One video is recorded per invocation.
+- The __duration__ parameter is not supported.  Recording lengths cannot be limited programmatically.
+- The __mode__ parameter is not supported.  The video size and format cannot be altered programmatically. By default, videos are recorded in MOV (video/quicktime) format.
+
diff --git a/docs/en/2.1.0/cordova/media/media.getCurrentPosition.md b/docs/en/2.1.0/cordova/media/media.getCurrentPosition.md
new file mode 100644
index 0000000..5f59769
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.getCurrentPosition.md
@@ -0,0 +1,174 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+media.getCurrentPosition
+========================
+
+Returns the current position within an audio file.
+
+    media.getCurrentPosition(mediaSuccess, [mediaError]);
+
+Parameters
+----------
+
+- __mediaSuccess__: The callback that is called with the current position in seconds.
+- __mediaError__: (Optional) The callback that is called if there was an error.
+
+Description
+-----------
+
+Function `media.getCurrentPosition` is an asynchronous function that returns the current position of the underlying audio file of a Media object. Also updates the ___position__ parameter within the Media object. 
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Tizen
+
+Quick Example
+-------------
+
+        // Audio player
+        //
+        var my_media = new Media(src, onSuccess, onError);
+
+        // Update media position every second
+        var mediaTimer = setInterval(function() {
+            // get media position
+            my_media.getCurrentPosition(
+                // success callback
+                function(position) {
+                    if (position > -1) {
+                        console.log((position) + " sec");
+                    }
+                },
+                // error callback
+                function(e) {
+                    console.log("Error getting pos=" + e);
+                }
+            );
+        }, 1000);
+
+
+Full Example
+------------
+
+        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+        <html>
+          <head>
+            <title>Media Example</title>
+        
+            <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for Cordova to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // Cordova is ready
+            //
+            function onDeviceReady() {
+                playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
+            }
+        
+            // Audio player
+            //
+            var my_media = null;
+            var mediaTimer = null;
+        
+            // Play audio
+            //
+            function playAudio(src) {
+                // Create Media object from src
+                my_media = new Media(src, onSuccess, onError);
+        
+                // Play audio
+                my_media.play();
+        
+                // Update my_media position every second
+                if (mediaTimer == null) {
+                    mediaTimer = setInterval(function() {
+                        // get my_media position
+                        my_media.getCurrentPosition(
+                            // success callback
+                            function(position) {
+                                if (position > -1) {
+                                    setAudioPosition((position) + " sec");
+                                }
+                            },
+                            // error callback
+                            function(e) {
+                                console.log("Error getting pos=" + e);
+                                setAudioPosition("Error: " + e);
+                            }
+                        );
+                    }, 1000);
+                }
+            }
+        
+            // Pause audio
+            // 
+            function pauseAudio() {
+                if (my_media) {
+                    my_media.pause();
+                }
+            }
+        
+            // Stop audio
+            // 
+            function stopAudio() {
+                if (my_media) {
+                    my_media.stop();
+                }
+                clearInterval(mediaTimer);
+                mediaTimer = null;
+            }
+        
+            // onSuccess Callback
+            //
+            function onSuccess() {
+                console.log("playAudio():Audio Success");
+            }
+        
+            // onError Callback 
+            //
+            function onError(error) {
+                alert('code: '    + error.code    + '\n' + 
+                      'message: ' + error.message + '\n');
+            }
+        
+            // Set audio position
+            // 
+            function setAudioPosition(position) {
+                document.getElementById('audio_position').innerHTML = position;
+            }
+        
+            </script>
+          </head>
+          <body>
+            <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
+            <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
+            <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
+            <p id="audio_position"></p>
+          </body>
+        </html>
diff --git a/docs/en/2.1.0/cordova/media/media.getDuration.md b/docs/en/2.1.0/cordova/media/media.getDuration.md
new file mode 100644
index 0000000..ac0e59f
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.getDuration.md
@@ -0,0 +1,166 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+media.getDuration
+=================
+
+Returns the duration of an audio file.
+
+    media.getDuration();
+
+
+Description
+-----------
+
+Function `media.getDuration` is a synchronous function that returns the duration of the audio file in seconds, if known.  If the duration is unknown, a value of -1 is returned.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Tizen
+
+Quick Example
+-------------
+
+        // Audio player
+        //
+        var my_media = new Media(src, onSuccess, onError);
+
+        // Get duration
+        var counter = 0;
+        var timerDur = setInterval(function() {
+            counter = counter + 100;
+            if (counter > 2000) {
+                clearInterval(timerDur);
+            }
+            var dur = my_media.getDuration();
+            if (dur > 0) {
+                clearInterval(timerDur);
+                document.getElementById('audio_duration').innerHTML = (dur) + " sec";
+            }
+       }, 100);
+
+
+Full Example
+------------
+
+        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                              "http://www.w3.org/TR/html4/strict.dtd">
+        <html>
+          <head>
+            <title>Media Example</title>
+        
+            <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for Cordova to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // Cordova is ready
+            //
+            function onDeviceReady() {
+                playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
+            }
+        
+            // Audio player
+            //
+            var my_media = null;
+            var mediaTimer = null;
+        
+            // Play audio
+            //
+            function playAudio(src) {
+                // Create Media object from src
+                my_media = new Media(src, onSuccess, onError);
+        
+                // Play audio
+                my_media.play();
+        
+                // Update my_media position every second
+                if (mediaTimer == null) {
+                    mediaTimer = setInterval(function() {
+                        // get my_media position
+                        my_media.getCurrentPosition(
+                            // success callback
+                            function(position) {
+                                if (position > -1) {
+                                    setAudioPosition((position) + " sec");
+                                }
+                            },
+                            // error callback
+                            function(e) {
+                                console.log("Error getting pos=" + e);
+                                setAudioPosition("Error: " + e);
+                            }
+                        );
+                    }, 1000);
+                }
+            }
+        
+            // Pause audio
+            // 
+            function pauseAudio() {
+                if (my_media) {
+                    my_media.pause();
+                }
+            }
+        
+            // Stop audio
+            // 
+            function stopAudio() {
+                if (my_media) {
+                    my_media.stop();
+                }
+                clearInterval(mediaTimer);
+                mediaTimer = null;
+            }
+        
+            // onSuccess Callback
+            //
+            function onSuccess() {
+                console.log("playAudio():Audio Success");
+            }
+        
+            // onError Callback 
+            //
+            function onError(error) {
+                alert('code: '    + error.code    + '\n' + 
+                      'message: ' + error.message + '\n');
+            }
+        
+            // Set audio position
+            // 
+            function setAudioPosition(position) {
+                document.getElementById('audio_position').innerHTML = position;
+            }
+        
+            </script>
+          </head>
+          <body>
+            <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
+            <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
+            <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
+            <p id="audio_position"></p>
+          </body>
+        </html>
diff --git a/docs/en/2.1.0/cordova/media/media.md b/docs/en/2.1.0/cordova/media/media.md
new file mode 100644
index 0000000..4f8fb22
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.md
@@ -0,0 +1,142 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Media
+=====
+
+> The `Media` object provides the ability to record and play back audio files on a device.
+
+    var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]);
+
+
+Note: The current implementation does not adhere to a W3C specification for media capture, and is provided for convenience only.  A future implementation will adhere to the latest W3C specification and may deprecate the current APIs.
+
+Parameters
+----------
+
+- __src__: A URI containing the audio content. _(DOMString)_
+- __mediaSuccess__: (Optional) The callback that is invoked after a Media object has completed the current play/record or stop action. _(Function)_
+- __mediaError__: (Optional) The callback that is invoked if there was an error. _(Function)_
+- __mediaStatus__: (Optional) The callback that is invoked to indicate status changes. _(Function)_
+
+Constants
+---------
+
+The following constants are reported as the only parameter to the __mediaStatus__ callback function.
+
+- `Media.MEDIA_NONE`     = 0;
+- `Media.MEDIA_STARTING` = 1;
+- `Media.MEDIA_RUNNING`  = 2;
+- `Media.MEDIA_PAUSED`   = 3;
+- `Media.MEDIA_STOPPED`  = 4;
+
+Methods
+-------
+
+- media.getCurrentPosition: Returns the current position within an audio file.
+- media.getDuration: Returns the duration of an audio file.
+- media.play: Start or resume playing audio file.
+- media.pause: Pause playing audio file.
+- media.release: Releases the underlying OS'es audio resources.
+- media.seekTo: Moves the position within the audio file.
+- media.startRecord: Start recording audio file.
+- media.stopRecord: Stop recording audio file.
+- media.stop: Stop playing audio file.
+
+Additional ReadOnly Parameters
+---------------------
+
+- __position__: The position within the audio playback in seconds.
+    - Not automatically updated during play, call `getCurrentPosition` to update.
+- __duration__: The duration of the media in seconds.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7.5
+- Tizen
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Media" value="org.apache.cordova.AudioHandler" />
+
+#### app/AndroidManifest.xml
+
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+### Bada
+
+#### manifest.xml
+
+    <Privilege>
+        <Name>RECORDING</Name>
+    </Privilege>
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Capture" value="org.apache.cordova.media.MediaCapture" />
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>Media</key>
+        <string>CDVSound</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+#### Properties/WPAppManifest.xml
+
+    <Capabilities>
+        <Capability Name="ID_CAP_MEDIALIB" />
+        <Capability Name="ID_CAP_MICROPHONE" />
+        <Capability Name="ID_HW_FRONTCAMERA" />
+        <Capability Name="ID_CAP_ISV_CAMERA" />
+        <Capability Name="ID_CAP_CAMERA" />
+    </Capabilities>
+
+Reference: [Application Manifest for Windows Phone](http://msdn.microsoft.com/en-us/library/ff769509%28v=vs.92%29.aspx)
+
+### Tizen
+
+    No permissions are required.
+
+
+### Windows Phone Quirks
+    Only one media file can be played back at a time.
+    There are strict restrictions as to how your application interacts with other media. See http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh184838(v=vs.92).aspx     
diff --git a/docs/en/2.1.0/cordova/media/media.pause.md b/docs/en/2.1.0/cordova/media/media.pause.md
new file mode 100644
index 0000000..a68b3d3
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.pause.md
@@ -0,0 +1,171 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+media.pause
+===========
+
+Pauses playing an audio file.
+
+    media.pause();
+
+
+Description
+-----------
+
+Function `media.pause` is a synchronous function that pauses playing an audio file.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Tizen
+    
+Quick Example
+-------------
+
+    // Play audio
+    //
+    function playAudio(url) {
+        // Play the audio file at url
+        var my_media = new Media(url,
+            // success callback
+            function() {
+                console.log("playAudio():Audio Success");
+            },
+            // error callback
+            function(err) {
+                console.log("playAudio():Audio Error: "+err);
+        });
+
+        // Play audio
+        my_media.play();
+
+        // Pause after 10 seconds
+        setTimeout(function() {
+            media.pause();
+        }, 10000);        
+    }
+
+
+Full Example
+------------
+
+        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                              "http://www.w3.org/TR/html4/strict.dtd">
+        <html>
+          <head>
+            <title>Media Example</title>
+        
+            <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for Cordova to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // Cordova is ready
+            //
+            function onDeviceReady() {
+                playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
+            }
+        
+            // Audio player
+            //
+            var my_media = null;
+            var mediaTimer = null;
+        
+            // Play audio
+            //
+            function playAudio(src) {
+                // Create Media object from src
+                my_media = new Media(src, onSuccess, onError);
+        
+                // Play audio
+                my_media.play();
+        
+                // Update my_media position every second
+                if (mediaTimer == null) {
+                    mediaTimer = setInterval(function() {
+                        // get my_media position
+                        my_media.getCurrentPosition(
+                            // success callback
+                            function(position) {
+                                if (position > -1) {
+                                    setAudioPosition((position) + " sec");
+                                }
+                            },
+                            // error callback
+                            function(e) {
+                                console.log("Error getting pos=" + e);
+                                setAudioPosition("Error: " + e);
+                            }
+                        );
+                    }, 1000);
+                }
+            }
+        
+            // Pause audio
+            // 
+            function pauseAudio() {
+                if (my_media) {
+                    my_media.pause();
+                }
+            }
+        
+            // Stop audio
+            // 
+            function stopAudio() {
+                if (my_media) {
+                    my_media.stop();
+                }
+                clearInterval(mediaTimer);
+                mediaTimer = null;
+            }
+        
+            // onSuccess Callback
+            //
+            function onSuccess() {
+                console.log("playAudio():Audio Success");
+            }
+        
+            // onError Callback 
+            //
+            function onError(error) {
+                alert('code: '    + error.code    + '\n' + 
+                      'message: ' + error.message + '\n');
+            }
+        
+            // Set audio position
+            // 
+            function setAudioPosition(position) {
+                document.getElementById('audio_position').innerHTML = position;
+            }
+        
+            </script>
+          </head>
+          <body>
+            <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
+            <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
+            <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
+            <p id="audio_position"></p>
+          </body>
+        </html>
diff --git a/docs/en/2.1.0/cordova/media/media.play.md b/docs/en/2.1.0/cordova/media/media.play.md
new file mode 100644
index 0000000..aca77c6
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.play.md
@@ -0,0 +1,189 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+media.play
+==========
+
+Starts or resumes playing an audio file.
+
+    media.play();
+
+
+Description
+-----------
+
+Function `media.play` is a synchronous function that starts or resumes playing an audio file.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Tizen
+
+Quick Example
+-------------
+
+    // Play audio
+    //
+    function playAudio(url) {
+        // Play the audio file at url
+        var my_media = new Media(url,
+            // success callback
+            function() {
+                console.log("playAudio():Audio Success");
+            },
+            // error callback
+            function(err) {
+                console.log("playAudio():Audio Error: "+err);
+        });
+
+        // Play audio
+        my_media.play();
+    }
+
+
+Full Example
+------------
+
+        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                              "http://www.w3.org/TR/html4/strict.dtd">
+        <html>
+          <head>
+            <title>Media Example</title>
+        
+            <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for Cordova to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // Cordova is ready
+            //
+            function onDeviceReady() {
+                playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
+            }
+        
+            // Audio player
+            //
+            var my_media = null;
+            var mediaTimer = null;
+        
+            // Play audio
+            //
+            function playAudio(src) {
+            	if (my_media == null) {
+                	// Create Media object from src
+                	my_media = new Media(src, onSuccess, onError);
+            	} // else play current audio
+                // Play audio
+                my_media.play();
+        
+                // Update my_media position every second
+                if (mediaTimer == null) {
+                    mediaTimer = setInterval(function() {
+                        // get my_media position
+                        my_media.getCurrentPosition(
+                            // success callback
+                            function(position) {
+                                if (position > -1) {
+                                    setAudioPosition((position) + " sec");
+                                }
+                            },
+                            // error callback
+                            function(e) {
+                                console.log("Error getting pos=" + e);
+                                setAudioPosition("Error: " + e);
+                            }
+                        );
+                    }, 1000);
+                }
+            }
+        
+            // Pause audio
+            // 
+            function pauseAudio() {
+                if (my_media) {
+                    my_media.pause();
+                }
+            }
+        
+            // Stop audio
+            // 
+            function stopAudio() {
+                if (my_media) {
+                    my_media.stop();
+                }
+                clearInterval(mediaTimer);
+                mediaTimer = null;
+            }
+        
+            // onSuccess Callback
+            //
+            function onSuccess() {
+                console.log("playAudio():Audio Success");
+            }
+        
+            // onError Callback 
+            //
+            function onError(error) {
+                alert('code: '    + error.code    + '\n' + 
+                      'message: ' + error.message + '\n');
+            }
+        
+            // Set audio position
+            // 
+            function setAudioPosition(position) {
+                document.getElementById('audio_position').innerHTML = position;
+            }
+        
+            </script>
+          </head>
+          <body>
+            <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
+            <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
+            <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
+            <p id="audio_position"></p>
+          </body>
+        </html>
+
+BlackBerry WebWorks Quirks
+----------
+
+- BlackBerry devices support a limited number of simultaneous audio channels. CDMA devices only support a single audio channel. Other devices support up to two simultaneous channels. Attempting to play more audio files then the supported amount will result in previous playback being stopped.
+
+iOS Quirk
+---------
+
+- __numberOfLoops__
+ 
+    Pass in this option to the **play** method to specify the number of times you want the media file to play. e.g:
+    
+        var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3")
+        myMedia.play({ numberOfLoops: 2 })
+
+- __playAudioWhenScreenIsLocked__
+ 
+    Pass in this option to the **play** method to specify whether you want to play the audio of the media file when the screen is locked (this defaults to true if not set). If this is set to true, it will ignore the state of the hardware mute button. e.g:
+    
+        var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3")
+        myMedia.play({ playAudioWhenScreenIsLocked : false })
diff --git a/docs/en/2.1.0/cordova/media/media.release.md b/docs/en/2.1.0/cordova/media/media.release.md
new file mode 100644
index 0000000..4975f6c
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.release.md
@@ -0,0 +1,155 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+media.release
+=================
+
+Releases the underlying operating systems audio resources.
+
+    media.release();
+
+
+Description
+-----------
+
+Function `media.release` is a synchronous function that releases the underlying operating systems audio resources.  This function is particularly important for Android as there are a finite amount of OpenCore instances for media playback.  Developers should call the 'release' function when they no longer need the Media resource.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Tizen
+
+Quick Example
+-------------
+
+        // Audio player
+        //
+        var my_media = new Media(src, onSuccess, onError);
+        
+        my_media.play();
+        my_media.stop();
+        my_media.release();
+
+Full Example
+------------
+
+        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                              "http://www.w3.org/TR/html4/strict.dtd">
+        <html>
+          <head>
+            <title>Media Example</title>
+        
+            <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for Cordova to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // Cordova is ready
+            //
+            function onDeviceReady() {
+                playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
+            }
+        
+            // Audio player
+            //
+            var my_media = null;
+            var mediaTimer = null;
+        
+            // Play audio
+            //
+            function playAudio(src) {
+                // Create Media object from src
+                my_media = new Media(src, onSuccess, onError);
+        
+                // Play audio
+                my_media.play();
+        
+                // Update my_media position every second
+                if (mediaTimer == null) {
+                    mediaTimer = setInterval(function() {
+                        // get my_media position
+                        my_media.getCurrentPosition(
+                            // success callback
+                            function(position) {
+                                if (position > -1) {
+                                    setAudioPosition((position) + " sec");
+                                }
+                            },
+                            // error callback
+                            function(e) {
+                                console.log("Error getting pos=" + e);
+                                setAudioPosition("Error: " + e);
+                            }
+                        );
+                    }, 1000);
+                }
+            }
+        
+            // Pause audio
+            // 
+            function pauseAudio() {
+                if (my_media) {
+                    my_media.pause();
+                }
+            }
+        
+            // Stop audio
+            // 
+            function stopAudio() {
+                if (my_media) {
+                    my_media.stop();
+                }
+                clearInterval(mediaTimer);
+                mediaTimer = null;
+            }
+        
+            // onSuccess Callback
+            //
+            function onSuccess() {
+                console.log("playAudio():Audio Success");
+            }
+        
+            // onError Callback 
+            //
+            function onError(error) {
+                alert('code: '    + error.code    + '\n' + 
+                      'message: ' + error.message + '\n');
+            }
+        
+            // Set audio position
+            // 
+            function setAudioPosition(position) {
+                document.getElementById('audio_position').innerHTML = position;
+            }
+        
+            </script>
+          </head>
+          <body>
+            <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
+            <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
+            <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
+            <p id="audio_position"></p>
+          </body>
+        </html>
diff --git a/docs/en/2.1.0/cordova/media/media.seekTo.md b/docs/en/2.1.0/cordova/media/media.seekTo.md
new file mode 100644
index 0000000..15b26af
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.seekTo.md
@@ -0,0 +1,158 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+media.seekTo
+========================
+
+Sets the current position within an audio file.
+
+    media.seekTo(milliseconds);
+
+Parameters
+----------
+
+- __milliseconds__: The position to set the playback position within the audio in milliseconds. .
+
+
+Description
+-----------
+
+Function `media.seekTo` is an asynchronous function that updates the current position of the underlying audio file of a Media object. Also updates the ___position__ parameter within the Media object. 
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 6.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Tizen
+
+Quick Example
+-------------
+
+        // Audio player
+        //
+        var my_media = new Media(src, onSuccess, onError);
+		my_media.play();
+        // SeekTo to 10 seconds after 5 seconds
+        setTimeout(function() {
+            my_media.seekTo(10000);
+        }, 5000);
+
+
+Full Example
+------------
+
+        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                      "http://www.w3.org/TR/html4/strict.dtd">
+        <html>
+          <head>
+            <title>Media Example</title>
+        
+            <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for Cordova to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // Cordova is ready
+            //
+            function onDeviceReady() {
+                playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
+            }
+        
+            // Audio player
+            //
+            var my_media = null;
+            var mediaTimer = null;
+        
+            // Play audio
+            //
+            function playAudio(src) {
+                // Create Media object from src
+                my_media = new Media(src, onSuccess, onError);
+        
+                // Play audio
+                my_media.play();
+                // Update media position every second
+        		mediaTimer = setInterval(function() {
+            		// get media position
+           			my_media.getCurrentPosition(
+                		// success callback
+                		function(position) {
+                    		if (position > -1) {
+                        		setAudioPosition(position + " sec");
+                    		}
+                		},
+                		// error callback
+                		function(e) {
+                    		console.log("Error getting pos=" + e);
+                		}
+            		);
+        		}, 1000);
+        		// SeekTo to 10 seconds after 5 seconds
+        		setTimeout(function() {
+            		my_media.seekTo(10000);
+           		}, 5000);
+     		}
+        
+            // Stop audio
+            // 
+            function stopAudio() {
+                if (my_media) {
+                    my_media.stop();
+                }
+                clearInterval(mediaTimer);
+                mediaTimer = null;
+            }
+        
+            // onSuccess Callback
+            //
+            function onSuccess() {
+                console.log("playAudio():Audio Success");
+            }
+        
+            // onError Callback 
+            //
+            function onError(error) {
+                alert('code: '    + error.code    + '\n' + 
+                      'message: ' + error.message + '\n');
+            }
+        
+            // Set audio position
+            // 
+            function setAudioPosition(position) {
+                document.getElementById('audio_position').innerHTML = position;
+            }
+        
+            </script>
+          </head>
+          <body>
+            <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
+            <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
+            <p id="audio_position"></p>
+          </body>
+        </html>
+
+BlackBerry WebWorks Quirks
+----------
+
+- This API is not supported on BlackBerry OS 5 devices.
diff --git a/docs/en/2.1.0/cordova/media/media.startRecord.md b/docs/en/2.1.0/cordova/media/media.startRecord.md
new file mode 100644
index 0000000..9d12933
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.startRecord.md
@@ -0,0 +1,146 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+media.startRecord
+=================
+
+Starts recording an audio file.
+
+    media.startRecord();
+
+
+Description
+-----------
+
+Function `media.startRecord` is a synchronous function that starts recording an audio file.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+    
+Quick Example
+-------------
+
+    // Record audio
+    // 
+    function recordAudio() {
+        var src = "myrecording.mp3";
+        var mediaRec = new Media(src,
+            // success callback
+            function() {
+                console.log("recordAudio():Audio Success");
+            },
+            
+            // error callback
+            function(err) {
+                console.log("recordAudio():Audio Error: "+ err.code);
+            });
+
+        // Record audio
+        mediaRec.startRecord();
+    }
+
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Record audio
+        // 
+        function recordAudio() {
+            var src = "myrecording.mp3";
+            var mediaRec = new Media(src, onSuccess, onError);
+
+            // Record audio
+            mediaRec.startRecord();
+
+            // Stop recording after 10 sec
+            var recTime = 0;
+            var recInterval = setInterval(function() {
+                recTime = recTime + 1;
+                setAudioPosition(recTime + " sec");
+                if (recTime >= 10) {
+                    clearInterval(recInterval);
+                    mediaRec.stopRecord();
+                }
+            }, 1000);
+        }
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            recordAudio();
+        }
+    
+        // onSuccess Callback
+        //
+        function onSuccess() {
+            console.log("recordAudio():Audio Success");
+        }
+    
+        // onError Callback 
+        //
+        function onError(error) {
+            alert('code: '    + error.code    + '\n' + 
+                  'message: ' + error.message + '\n');
+        }
+
+        // Set audio position
+        // 
+        function setAudioPosition(position) {
+            document.getElementById('audio_position').innerHTML = position;
+        }
+
+        </script>
+      </head>
+      <body>
+        <p id="media">Recording audio...</p>
+        <p id="audio_position"></p>
+      </body>
+    </html>
+
+BlackBerry WebWorks Quirks
+----------
+
+- BlackBerry devices record audio in Adaptive Multi-Rate format. The specified file must end with a .amr extension.
+
+iOS Quirks
+----------
+
+- The file to record to must already exist and should be of type .wav. The File API's can be used to create the file.
+
+Tizen Quirks
+----------
+
+- This API is not supported on Tizen devices.
diff --git a/docs/en/2.1.0/cordova/media/media.stop.md b/docs/en/2.1.0/cordova/media/media.stop.md
new file mode 100644
index 0000000..1b8227c
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.stop.md
@@ -0,0 +1,170 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+media.stop
+==========
+
+Stops playing an audio file.
+
+    media.stop();
+
+
+Description
+-----------
+
+Function `media.stop` is a synchronous function that stops playing an audio file.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+- Tizen
+
+Quick Example
+-------------
+
+    // Play audio
+    //
+    function playAudio(url) {
+        // Play the audio file at url
+        var my_media = new Media(url,
+            // success callback
+            function() {
+                console.log("playAudio():Audio Success");
+            },
+            // error callback
+            function(err) {
+                console.log("playAudio():Audio Error: "+err);
+        });
+
+        // Play audio
+        my_media.play();
+
+        // Pause after 10 seconds
+        setTimeout(function() {
+            my_media.stop();
+        }, 10000);        
+    }
+
+Full Example
+------------
+
+        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+                              "http://www.w3.org/TR/html4/strict.dtd">
+        <html>
+          <head>
+            <title>Media Example</title>
+        
+            <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for Cordova to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // Cordova is ready
+            //
+            function onDeviceReady() {
+                playAudio("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3");
+            }
+        
+            // Audio player
+            //
+            var my_media = null;
+            var mediaTimer = null;
+        
+            // Play audio
+            //
+            function playAudio(src) {
+                // Create Media object from src
+                my_media = new Media(src, onSuccess, onError);
+        
+                // Play audio
+                my_media.play();
+        
+                // Update my_media position every second
+                if (mediaTimer == null) {
+                    mediaTimer = setInterval(function() {
+                        // get my_media position
+                        my_media.getCurrentPosition(
+                            // success callback
+                            function(position) {
+                                if (position > -1) {
+                                    setAudioPosition((position) + " sec");
+                                }
+                            },
+                            // error callback
+                            function(e) {
+                                console.log("Error getting pos=" + e);
+                                setAudioPosition("Error: " + e);
+                            }
+                        );
+                    }, 1000);
+                }
+            }
+        
+            // Pause audio
+            // 
+            function pauseAudio() {
+                if (my_media) {
+                    my_media.pause();
+                }
+            }
+        
+            // Stop audio
+            // 
+            function stopAudio() {
+                if (my_media) {
+                    my_media.stop();
+                }
+                clearInterval(mediaTimer);
+                mediaTimer = null;
+            }
+        
+            // onSuccess Callback
+            //
+            function onSuccess() {
+                console.log("playAudio():Audio Success");
+            }
+        
+            // onError Callback 
+            //
+            function onError(error) {
+                alert('code: '    + error.code    + '\n' + 
+                      'message: ' + error.message + '\n');
+            }
+        
+            // Set audio position
+            // 
+            function setAudioPosition(position) {
+                document.getElementById('audio_position').innerHTML = position;
+            }
+        
+            </script>
+          </head>
+          <body>
+            <a href="#" class="btn large" onclick="playAudio('http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3');">Play Audio</a>
+            <a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
+            <a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
+            <p id="audio_position"></p>
+          </body>
+        </html>
diff --git a/docs/en/2.1.0/cordova/media/media.stopRecord.md b/docs/en/2.1.0/cordova/media/media.stopRecord.md
new file mode 100644
index 0000000..0259c2b
--- /dev/null
+++ b/docs/en/2.1.0/cordova/media/media.stopRecord.md
@@ -0,0 +1,141 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+media.stopRecord
+================
+
+Stops recording an audio file.
+
+    media.stopRecord();
+
+
+Description
+-----------
+
+Function `media.stopRecord` is a synchronous function that stops recording an audio file.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+    
+Quick Example
+-------------
+
+    // Record audio
+    // 
+    function recordAudio() {
+        var src = "myrecording.mp3";
+        var mediaRec = new Media(src,
+            // success callback
+            function() {
+                console.log("recordAudio():Audio Success");
+            },
+            
+            // error callback
+            function(err) {
+                console.log("recordAudio():Audio Error: "+ err.code);
+            });
+
+        // Record audio
+        mediaRec.startRecord();
+
+        // Stop recording after 10 seconds
+        setTimeout(function() {
+            mediaRec.stopRecord();
+        }, 10000);
+    }
+
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Record audio
+        // 
+        function recordAudio() {
+            var src = "myrecording.mp3";
+            var mediaRec = new Media(src, onSuccess, onError);
+
+            // Record audio
+            mediaRec.startRecord();
+
+            // Stop recording after 10 sec
+            var recTime = 0;
+            var recInterval = setInterval(function() {
+                recTime = recTime + 1;
+                setAudioPosition(recTime + " sec");
+                if (recTime >= 10) {
+                    clearInterval(recInterval);
+                    mediaRec.stopRecord();
+                }
+            }, 1000);
+        }
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            recordAudio();
+        }
+    
+        // onSuccess Callback
+        //
+        function onSuccess() {
+            console.log("recordAudio():Audio Success");
+        }
+    
+        // onError Callback 
+        //
+        function onError(error) {
+            alert('code: '    + error.code    + '\n' + 
+                  'message: ' + error.message + '\n');
+        }
+
+        // Set audio position
+        // 
+        function setAudioPosition(position) {
+            document.getElementById('audio_position').innerHTML = position;
+        }
+
+        </script>
+      </head>
+      <body>
+        <p id="media">Recording audio...</p>
+        <p id="audio_position"></p>
+      </body>
+    </html>
+
+Tizen Quirks
+----------
+
+- This API is not supported on Tizen devices.
diff --git a/docs/en/2.1.0/cordova/notification/notification.alert.md b/docs/en/2.1.0/cordova/notification/notification.alert.md
new file mode 100644
index 0000000..2ade0c4
--- /dev/null
+++ b/docs/en/2.1.0/cordova/notification/notification.alert.md
@@ -0,0 +1,117 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+notification.alert
+==================
+
+Shows a custom alert or dialog box.
+
+    navigator.notification.alert(message, alertCallback, [title], [buttonName])
+
+- __message:__ Dialog message (`String`)
+- __alertCallback:__ Callback to invoke when alert dialog is dismissed. (`Function`)
+- __title:__ Dialog title (`String`) (Optional, Default: "Alert")
+- __buttonName:__ Button name (`String`) (Optional, Default: "OK")
+    
+Description
+-----------
+
+Most Cordova implementations use a native dialog box for this feature.  However, some platforms simply use the browser's `alert` function, which is typically less customizable.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    // Android / BlackBerry WebWorks (OS 5.0 and higher) / iPhone / Tizen
+    //
+    function alertDismissed() {
+        // do something
+    }
+
+    navigator.notification.alert(
+        'You are the winner!',  // message
+        alertDismissed,         // callback
+        'Game Over',            // title
+        'Done'                  // buttonName
+    );
+        
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Notification Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            // Empty
+        }
+    
+        // alert dialog dismissed
+	    function alertDismissed() {
+	        // do something
+	    }
+
+        // Show a custom alert
+        //
+        function showAlert() {
+		    navigator.notification.alert(
+		        'You are the winner!',  // message
+		        alertDismissed,         // callback
+		        'Game Over',            // title
+		        'Done'                  // buttonName
+		    );
+        }
+    
+        </script>
+      </head>
+      <body>
+        <p><a href="#" onclick="showAlert(); return false;">Show Alert</a></p>
+      </body>
+    </html>
+
+Windows Phone 7 Quirks
+-------------
+
+- Ignores button names, always uses 'OK'
+- There is no built in browser alert, so if you want to just write alert('foo'); you can assign window.alert = navigator.notification.alert;
+- alert + confirm calls are non-blocking, and result is only available asyncronously.
+
+Bada 2.x Quirks
+---------------
+- alert uses javascript alert
diff --git a/docs/en/2.1.0/cordova/notification/notification.beep.md b/docs/en/2.1.0/cordova/notification/notification.beep.md
new file mode 100644
index 0000000..34554cd
--- /dev/null
+++ b/docs/en/2.1.0/cordova/notification/notification.beep.md
@@ -0,0 +1,120 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+notification.beep
+=================
+
+The device will play a beep sound.
+
+    navigator.notification.beep(times);
+
+- __times:__ The number of times to repeat the beep (`Number`)
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- Tizen
+
+Quick Example
+-------------
+
+    // Beep twice!
+    navigator.notification.beep(2);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Notification Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            // Empty
+        }
+
+        // Show a custom alert
+        //
+        function showAlert() {
+		    navigator.notification.alert(
+		        'You are the winner!',  // message
+		        'Game Over',            // title
+		        'Done'                  // buttonName
+		    );
+        }
+
+        // Beep three times
+        //
+        function playBeep() {
+            navigator.notification.beep(3);
+        }
+
+        // Vibrate for 2 seconds
+        //
+        function vibrate() {
+            navigator.notification.vibrate(2000);
+        }
+
+        </script>
+      </head>
+      <body>
+        <p><a href="#" onclick="showAlert(); return false;">Show Alert</a></p>
+        <p><a href="#" onclick="playBeep(); return false;">Play Beep</a></p>
+        <p><a href="#" onclick="vibrate(); return false;">Vibrate</a></p>
+      </body>
+    </html>
+
+Android Quirks
+--------------
+
+- Android plays the default "Notification ringtone" specified under the "Settings/Sound & Display" panel.
+
+iPhone Quirks
+-------------
+
+- Ignores the beep count argument.
+- There is no native beep API for iPhone.
+  - Cordova implements beep by playing an audio file via the media API.
+  - The user must provide a file with the desired beep tone.
+  - This file must be less than 30 seconds long, located in the www/ root, and must be named `beep.wav`.
+
+Windows Phone 7 Quirks
+-------------
+
+- WP7 Cordova lib includes a generic beep file that is used. 
+
+Tizen Quirks
+-------------
+
+  - Tizen implements beep by playing an audio file via the media API.
+  - This beep file must be short, named `beep.wav` and has to be located in a 'sounds' sub-directory of the application root disctory.
diff --git a/docs/en/2.1.0/cordova/notification/notification.confirm.md b/docs/en/2.1.0/cordova/notification/notification.confirm.md
new file mode 100755
index 0000000..0c7ed7b
--- /dev/null
+++ b/docs/en/2.1.0/cordova/notification/notification.confirm.md
@@ -0,0 +1,133 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+notification.confirm
+====================
+
+Shows a customizable confirmation dialog box.
+
+    navigator.notification.confirm(message, confirmCallback, [title], [buttonLabels])
+
+- __message:__ Dialog message (`String`)
+- __confirmCallback:__ - Callback to invoke with index of button pressed (1, 2 or 3). (`Function`)
+- __title:__ Dialog title (`String`) (Optional, Default: "Confirm")
+- __buttonLabels:__ Comma separated string with button labels (`String`) (Optional, Default: "OK,Cancel")
+    
+Description
+-----------
+
+Function `notification.confirm` displays a native dialog box that is more customizable than the browser's `confirm` function.
+
+confirmCallback
+---------------
+
+The `confirmCallback` is called when the user has pressed one of the buttons on the confirmation dialog box.
+
+The callback takes the argument `buttonIndex` (`Number`), which is the index of the pressed button. It's important to note that the index uses one-based indexing, so the value will be `1`, `2`, `3`, etc.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+- Bada 1.2 & 2.x
+- Tizen
+
+Quick Example
+-------------
+
+	// process the confirmation dialog result
+	function onConfirm(buttonIndex) {
+		alert('You selected button ' + buttonIndex);
+	}
+
+    // Show a custom confirmation dialog
+    //
+    function showConfirm() {
+        navigator.notification.confirm(
+	        'You are the winner!',  // message
+			onConfirm,				// callback to invoke with index of button pressed
+	        'Game Over',            // title
+	        'Restart,Exit'          // buttonLabels
+        );
+    }
+        
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Notification Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            // Empty
+        }
+    
+		// process the confirmation dialog result
+		function onConfirm(buttonIndex) {
+			alert('You selected button ' + buttonIndex);
+		}
+
+        // Show a custom confirmation dialog
+        //
+        function showConfirm() {
+            navigator.notification.confirm(
+		        'You are the winner!',  // message
+				onConfirm,				// callback to invoke with index of button pressed
+		        'Game Over',            // title
+		        'Restart,Exit'          // buttonLabels
+            );
+        }
+    
+        </script>
+      </head>
+      <body>
+        <p><a href="#" onclick="showConfirm(); return false;">Show Confirm</a></p>
+      </body>
+    </html>
+
+Windows Phone 7 Quirks
+----------------------
+
+- Ignores button names, always `'OK|Cancel'`.
+- There is no built-in browser function for `window.confirm`
+    - You can bind `window.confirm` by assigning `window.confirm = navigator.notification.confirm;`.
+- Calls to `alert` and `confirm` are non-blocking and result is only available asyncronously.
+
+Bada 2.x Quirks
+---------------
+
+- `confirm` uses the browser's built-in `alert` function.
+
+Bada 1.2 Quirks
+---------------
+
+- Ignore button names, always `'OK|Cancel'`.
diff --git a/docs/en/2.1.0/cordova/notification/notification.md b/docs/en/2.1.0/cordova/notification/notification.md
new file mode 100644
index 0000000..91925e3
--- /dev/null
+++ b/docs/en/2.1.0/cordova/notification/notification.md
@@ -0,0 +1,84 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Notification
+============
+
+> Visual, audible, and tactile device notifications.
+
+Methods
+-------
+
+- notification.alert
+- notification.confirm
+- notification.beep
+- notification.vibrate
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Notification" value="org.apache.cordova.Notification"/>
+
+#### app/AndroidManifest.xml
+
+    <uses-permission android:name="android.permission.VIBRATE" />
+
+### Bada
+
+#### manifest.xml
+
+    <Privilege>
+        <Name>SYSTEM_SERVICE</Name>
+    </Privilege>
+
+### BlackBerry WebWorks
+
+#### www/plugins.xml
+
+    <plugin name="Notification" value="org.apache.cordova.notification.Notification" />
+
+#### www/config.xml
+
+    <feature id="blackberry.ui.dialog" />
+
+### iOS
+
+#### App/Supporting Files/Cordova.plist
+
+    <key>Plugins</key>
+    <dict>
+        <key>Notification</key>
+        <string>CDVNotification</string>
+    </dict>
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+    No permissions are required.
+
+### Tizen
+
+    No permissions are required.
diff --git a/docs/en/2.1.0/cordova/notification/notification.vibrate.md b/docs/en/2.1.0/cordova/notification/notification.vibrate.md
new file mode 100644
index 0000000..24462e0
--- /dev/null
+++ b/docs/en/2.1.0/cordova/notification/notification.vibrate.md
@@ -0,0 +1,103 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+notification.vibrate
+====================
+
+Vibrates the device for the specified amount of time.
+
+    navigator.notification.vibrate(milliseconds)
+
+- __time:__ Milliseconds to vibrate the device. 1000 milliseconds equals 1 second (`Number`)
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7
+- Bada 1.2 & 2.x
+
+Quick Example
+-------------
+
+    // Vibrate for 2.5 seconds
+    //
+    navigator.notification.vibrate(2500);
+
+Full Example
+------------
+    
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Notification Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+            // Empty
+        }
+    
+        // Show a custom alert
+        //
+        function showAlert() {
+		    navigator.notification.alert(
+		        'You are the winner!',  // message
+		        'Game Over',            // title
+		        'Done'                  // buttonName
+		    );
+        }
+    
+        // Beep three times
+        //
+        function playBeep() {
+            navigator.notification.beep(3);
+        }
+    
+        // Vibrate for 2 seconds
+        //
+        function vibrate() {
+            navigator.notification.vibrate(2000);
+        }
+
+        </script>
+      </head>
+      <body>
+        <p><a href="#" onclick="showAlert(); return false;">Show Alert</a></p>
+        <p><a href="#" onclick="playBeep(); return false;">Play Beep</a></p>
+        <p><a href="#" onclick="vibrate(); return false;">Vibrate</a></p>
+      </body>
+    </html>
+
+iPhone Quirks
+-------------
+
+- __time:__ Ignores the time and vibrates for a pre-set amount of time.
+
+        navigator.notification.vibrate();
+        navigator.notification.vibrate(2500);   // 2500 is ignored
diff --git a/docs/en/2.1.0/cordova/storage/database/database.md b/docs/en/2.1.0/cordova/storage/database/database.md
new file mode 100644
index 0000000..da37947
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/database/database.md
@@ -0,0 +1,125 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Database
+=======
+
+Contains methods that allow the user to manipulate the Database
+
+Methods
+-------
+
+- __transaction__: Runs a database transaction. 
+- __changeVersion__: method allows scripts to atomically verify the version number and change it at the same time as doing a schema update. 
+
+Details
+-------
+
+A Database object is returned from a call to `window.openDatabase()`.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 6.0 and higher)
+- iPhone
+- webOS
+- Tizen
+
+Transaction Quick Example
+------------------
+	function populateDB(tx) {
+		 tx.executeSql('DROP TABLE IF EXISTS DEMO');
+		 tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
+		 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
+		 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
+	}
+	
+	function errorCB(err) {
+		alert("Error processing SQL: "+err.code);
+	}
+	
+	function successCB() {
+		alert("success!");
+	}
+	
+	var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+	db.transaction(populateDB, errorCB, successCB);
+
+Change Version Quick Example
+-------------------
+
+	var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+	db.changeVersion("1.0", "1.1");
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Storage Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+			db.transaction(populateDB, errorCB, successCB);
+        }
+		
+		// Populate the database 
+		//
+		function populateDB(tx) {
+			 tx.executeSql('DROP TABLE IF EXISTS DEMO');
+			 tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
+			 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
+			 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
+		}
+		
+		// Transaction error callback
+		//
+		function errorCB(tx, err) {
+			alert("Error processing SQL: "+err);
+		}
+		
+		// Transaction success callback
+		//
+		function successCB() {
+			alert("success!");
+		}
+	
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Database</p>
+      </body>
+    </html>
+
+Android 1.X Quirks
+------------------
+
+- __changeVersion:__ This method is not support by Android 1.X devices.
diff --git a/docs/en/2.1.0/cordova/storage/localstorage/localstorage.md b/docs/en/2.1.0/cordova/storage/localstorage/localstorage.md
new file mode 100644
index 0000000..87a2f29
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/localstorage/localstorage.md
@@ -0,0 +1,121 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+localStorage
+===============
+
+Provides access to a W3C Storage interface (http://dev.w3.org/html5/webstorage/#the-localstorage-attribute)
+
+    var storage = window.localStorage;
+
+Methods
+-------
+
+- __key__: Returns the name of the key at the position specified. 
+- __getItem__: Returns the item identified by it's key.
+- __setItem__: Saves and item at the key provided.
+- __removeItem__: Removes the item identified by it's key.
+- __clear__: Removes all of the key value pairs.
+
+Details
+-----------
+
+localStorage provides an interface to a W3C Storage interface.  It allows one to save data as key-value pairs.
+
+Note: window.sessionStorage provides the same interface, but is cleared between app launches.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 6.0 and higher)
+- iPhone
+- Windows Phone 7
+- webOS
+- Tizen
+
+Key Quick Example
+-------------
+
+    var keyName = window.localStorage.key(0);
+
+Set Item Quick Example
+-------------
+
+    window.localStorage.setItem("key", "value");
+
+Get Item Quick Example
+-------------
+
+	var value = window.localStorage.getItem("key");
+	// value is now equal to "value"
+
+Remove Item Quick Example
+-------------
+
+	window.localStorage.removeItem("key");
+
+Clear Quick Example
+-------------
+
+	window.localStorage.clear();
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Storage Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			window.localStorage.setItem("key", "value");
+			var keyname = window.localStorage.key(i);
+			// keyname is now equal to "key"
+			var value = window.localStorage.getItem("key");
+			// value is now equal to "value"
+			window.localStorage.removeItem("key");
+			window.localStorage.setItem("key2", "value2");
+			window.localStorage.clear();
+			// localStorage is now empty
+        }
+    
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>localStorage</p>
+      </body>
+    </html>
+
+
+Windows Phone 7 Quirks
+-------------
+
+- dot notation is NOT available on Windows Phone. Be sure to use : window.localStorage.setItem/getItem, and not the w3 spec defined calls to window.localStorage.someKey = 'someValue';
diff --git a/docs/en/2.1.0/cordova/storage/parameters/display_name.md b/docs/en/2.1.0/cordova/storage/parameters/display_name.md
new file mode 100644
index 0000000..69af089
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/parameters/display_name.md
@@ -0,0 +1,23 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+database_displayname
+==================
+
+The display name of the database.
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/storage/parameters/name.md b/docs/en/2.1.0/cordova/storage/parameters/name.md
new file mode 100644
index 0000000..c39dcbf
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/parameters/name.md
@@ -0,0 +1,23 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+database_name
+============
+
+The name of the database.
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/storage/parameters/size.md b/docs/en/2.1.0/cordova/storage/parameters/size.md
new file mode 100644
index 0000000..9b46993
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/parameters/size.md
@@ -0,0 +1,23 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+database_size
+==============
+
+The size of the database in bytes.
\ No newline at end of file
diff --git a/docs/en/2.1.0/cordova/storage/parameters/version.md b/docs/en/2.1.0/cordova/storage/parameters/version.md
new file mode 100644
index 0000000..2e72923
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/parameters/version.md
@@ -0,0 +1,23 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+database_version
+=============
+
+The version of the database.
diff --git a/docs/en/2.1.0/cordova/storage/sqlerror/sqlerror.md b/docs/en/2.1.0/cordova/storage/sqlerror/sqlerror.md
new file mode 100644
index 0000000..b700222
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/sqlerror/sqlerror.md
@@ -0,0 +1,47 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+SQLError
+========
+
+A `SQLError` object is thrown when an error occurs.
+
+Properties
+----------
+
+- __code:__ One of the predefined error codes listed below.
+- __message:__ A description of the error.
+
+Constants
+---------
+
+- `SQLError.UNKNOWN_ERR`
+- `SQLError.DATABASE_ERR`
+- `SQLError.VERSION_ERR`
+- `SQLError.TOO_LARGE_ERR`
+- `SQLError.QUOTA_ERR`
+- `SQLError.SYNTAX_ERR`
+- `SQLError.CONSTRAINT_ERR`
+- `SQLError.TIMEOUT_ERR`
+
+Description
+-----------
+
+The `SQLError` object is thrown when an error occurs when manipulating a database.
+
diff --git a/docs/en/2.1.0/cordova/storage/sqlresultset/sqlresultset.md b/docs/en/2.1.0/cordova/storage/sqlresultset/sqlresultset.md
new file mode 100644
index 0000000..3def252
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/sqlresultset/sqlresultset.md
@@ -0,0 +1,140 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+SQLResultSet
+=======
+
+When the executeSql method of a SQLTransaction is called it will invoke it's callback with a SQLResultSet.
+
+Properties
+-------
+
+- __insertId__: the row ID of the row that the SQLResultSet object's SQL statement inserted into the database
+- __rowsAffected__: the number of rows that were changed by the SQL statement.  If the statement did not affect any rows then it is set to 0. 
+- __rows__: a SQLResultSetRowList representing the rows returned.  If no rows are returned the object will be empty.
+
+Details
+-------
+
+When you call the SQLTransaction executeSql method its callback methods will be called with a SQLResultSet object.  The result object has three properties.  The first is the `insertId` which will return the row number of a success SQL insert statement.  If the SQL statement is not an insert then the `insertId` is not set.  The `rowsAffected` is always 0 for a SQL select statement.  For insert or update statements it returns the number of rows that have been modified.  The final property is of type SQLResultSetList and it contains the data returned from a SQL select statement.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 6.0 and higher)
+- iPhone
+- webOS
+- Tizen
+
+Execute SQL Quick Example
+------------------
+
+	function queryDB(tx) {
+		tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
+	}
+
+	function querySuccess(tx, results) {
+    console.log("Returned rows = " + results.rows.length);
+    // this will be true since it was a select statement and so rowsAffected was 0
+    if (!resultSet.rowsAffected) {
+      console.log('No rows affected!');
+      return false;
+    }
+    // for an insert statement, this property will return the ID of the last inserted row
+    console.log("Last inserted row ID = " + results.insertId);
+	}
+	
+	function errorCB(err) {
+		alert("Error processing SQL: "+err.code);
+	}
+	
+	var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+	db.transaction(queryDB, errorCB);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Storage Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+		// Populate the database 
+		//
+		function populateDB(tx) {
+			tx.executeSql('DROP TABLE IF EXISTS DEMO');
+			tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
+			tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
+			tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
+		}
+
+		// Query the database
+		//
+		function queryDB(tx) {
+			tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
+		}
+
+		// Query the success callback
+		//
+		function querySuccess(tx, results) {
+      console.log("Returned rows = " + results.rows.length);
+      // this will be true since it was a select statement and so rowsAffected was 0
+      if (!results.rowsAffected) {
+        console.log('No rows affected!');
+        return false;
+      }
+      // for an insert statement, this property will return the ID of the last inserted row
+      console.log("Last inserted row ID = " + results.insertId);
+		}
+
+		// Transaction error callback
+		//
+		function errorCB(err) {
+			console.log("Error processing SQL: "+err.code);
+		}
+
+		// Transaction success callback
+		//
+		function successCB() {
+			var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+			db.transaction(queryDB, errorCB);
+		}
+
+		// Cordova is ready
+		//
+		function onDeviceReady() {
+			var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+			db.transaction(populateDB, errorCB, successCB);
+		}
+	
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Database</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/storage/sqlresultsetlist/sqlresultsetlist.md b/docs/en/2.1.0/cordova/storage/sqlresultsetlist/sqlresultsetlist.md
new file mode 100644
index 0000000..d8380e6
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/sqlresultsetlist/sqlresultsetlist.md
@@ -0,0 +1,137 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+SQLResultSetList
+=======
+
+One of the properties of the SQLResultSet containing the rows returned from a SQL query.
+
+Properties
+-------
+
+- __length__: the number of rows returned by the SQL query
+
+Methods
+-------
+
+- __item__: returns the row at the specified index represented by a JavaScript object.
+
+Details
+-------
+
+The SQLResultSetList contains the data returned from a SQL select statement.  The object contains a length property letting you know how many rows the select statement has been returned.  To get a row of data you would call the `item` method specifing an index.  The item method returns a JavaScript Object who's properties are the columns of the database the select statement was executed against.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 6.0 and higher)
+- iPhone
+- webOS
+- Tizen
+
+Execute SQL Quick Example
+------------------
+
+	function queryDB(tx) {
+		tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
+	}
+
+	function querySuccess(tx, results) {
+		var len = results.rows.length;
+	   	console.log("DEMO table: " + len + " rows found.");
+	   	for (var i=0; i<len; i++){
+	        console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
+		}
+	}
+	
+	function errorCB(err) {
+		alert("Error processing SQL: "+err.code);
+	}
+	
+	var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+	db.transaction(queryDB, errorCB);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Storage Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+		// Populate the database 
+		//
+		function populateDB(tx) {
+			tx.executeSql('DROP TABLE IF EXISTS DEMO');
+			tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
+			tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
+			tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
+		}
+
+		// Query the database
+		//
+		function queryDB(tx) {
+			tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
+		}
+
+		// Query the success callback
+		//
+		function querySuccess(tx, results) {
+			var len = results.rows.length;
+			console.log("DEMO table: " + len + " rows found.");
+			for (var i=0; i<len; i++){
+				console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
+			}
+		}
+
+		// Transaction error callback
+		//
+		function errorCB(err) {
+			console.log("Error processing SQL: "+err.code);
+		}
+
+		// Transaction success callback
+		//
+		function successCB() {
+			var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+			db.transaction(queryDB, errorCB);
+		}
+
+		// Cordova is ready
+		//
+		function onDeviceReady() {
+			var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+			db.transaction(populateDB, errorCB, successCB);
+		}
+	
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Database</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/storage/sqltransaction/sqltransaction.md b/docs/en/2.1.0/cordova/storage/sqltransaction/sqltransaction.md
new file mode 100644
index 0000000..f52e640
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/sqltransaction/sqltransaction.md
@@ -0,0 +1,114 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+SQLTransaction
+=======
+
+Contains methods that allow the user to execute SQL statements against the Database.
+
+Methods
+-------
+
+- __executeSql__: executes a SQL statement
+
+Details
+-------
+
+When you call a Database objects transaction method it's callback methods will be called with a SQLTransaction object.  The user can build up a database transaction by calling the executeSql method multiple times.  
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 6.0 and higher)
+- iPhone
+- webOS
+- Tizen
+
+Execute SQL Quick Example
+------------------
+
+	function populateDB(tx) {
+		 tx.executeSql('DROP TABLE IF EXISTS DEMO');
+		 tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
+		 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
+		 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
+	}
+	
+	function errorCB(err) {
+		alert("Error processing SQL: "+err);
+	}
+	
+	function successCB() {
+		alert("success!");
+	}
+	
+	var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+	db.transaction(populateDB, errorCB, successCB);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Storage Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
+			db.transaction(populateDB, errorCB, successCB);
+        }
+		
+		// Populate the database 
+		//
+		function populateDB(tx) {
+			 tx.executeSql('DROP TABLE IF EXISTS DEMO');
+			 tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
+			 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
+			 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
+		}
+		
+		// Transaction error callback
+		//
+		function errorCB(err) {
+			alert("Error processing SQL: "+err);
+		}
+		
+		// Transaction success callback
+		//
+		function successCB() {
+			alert("success!");
+		}
+	
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>SQLTransaction</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/cordova/storage/storage.md b/docs/en/2.1.0/cordova/storage/storage.md
new file mode 100644
index 0000000..0cc437a
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/storage.md
@@ -0,0 +1,83 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Storage
+==========
+
+> Provides access to the devices storage options.
+
+This API is based on the [W3C Web SQL Database Specification](http://dev.w3.org/html5/webdatabase/) and [W3C Web Storage API Specification](http://dev.w3.org/html5/webstorage/). Some devices already provide an implementation of this spec. For those devices, the built-in support is used instead of replacing it with Cordova's implementation. For devices that don't have storage support, Cordova's implementation should be compatible with the W3C specification.
+
+Methods
+-------
+
+- openDatabase
+
+Arguments
+---------
+
+- database_name
+- database_version
+- database_displayname
+- database_size
+
+Objects
+-------
+
+- Database
+- SQLTransaction
+- SQLResultSet
+- SQLResultSetList
+- SQLError
+- localStorage
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/plugins.xml
+
+    <plugin name="Storage" value="org.apache.cordova.Storage" />
+
+### Bada
+
+    No permissions are required.
+
+### BlackBerry WebWorks
+
+#### www/config.xml
+
+    <feature id="blackberry.widgetcache" required="true" version="1.0.0.0" />
+
+### iOS
+
+    No permissions are required.
+
+### webOS
+
+    No permissions are required.
+
+### Windows Phone
+
+    No permissions are required.
+
+### Tizen
+
+    No permissions are required.
diff --git a/docs/en/2.1.0/cordova/storage/storage.opendatabase.md b/docs/en/2.1.0/cordova/storage/storage.opendatabase.md
new file mode 100644
index 0000000..7a58a17
--- /dev/null
+++ b/docs/en/2.1.0/cordova/storage/storage.opendatabase.md
@@ -0,0 +1,75 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+openDatabase
+===============
+
+Returns a new Database object.
+
+    var dbShell = window.openDatabase(database_name, database_version, database_displayname, database_size);
+
+Description
+-----------
+
+window.openDatabase returns a new Database object.
+
+This method will create a new SQL Lite Database and return a Database object.  Use the Database Object to manipulate the data.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 6.0 and higher)
+- iPhone
+- webOS
+- Tizen
+
+Quick Example
+-------------
+
+    var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Storage Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for Cordova to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // Cordova is ready
+        //
+        function onDeviceReady() {
+			var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
+        }
+		
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Open Database</p>
+      </body>
+    </html>
diff --git a/docs/en/2.1.0/guide/command-line/index.md b/docs/en/2.1.0/guide/command-line/index.md
new file mode 100644
index 0000000..49d4ebc
--- /dev/null
+++ b/docs/en/2.1.0/guide/command-line/index.md
@@ -0,0 +1,190 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+# Command-Line Usage
+
+Cordova now ships with a set of command-line tools that make it easier
+for you to develop cross-platform applications. You can build, clean,
+and launch an emulator with a single command. You can consider these
+instructions as an alternative to the Getting Started guides. Whereas
+the Getting Started guides help you get setup with the default IDEs and
+tooling surrounding the platforms you are working with, the command-line
+tools aim to provide a shell-based approach to creating and working with
+Cordova projects.
+
+## Supported Platforms
+
+* [iOS](#Command-Line%20Usage_ios)
+* [Android](#Command-Line%20Usage_android)
+* [BlackBerry](#Command-Line%20Usage_blackberry)
+
+## iOS
+
+The iOS command-line tools are built upon shell scripts and rely on
+XCode command-line tools such as `xcode-select` and `xcodebuild`.
+
+### Create a project
+
+Run the `create` command with the following parameters:
+
+* Path to your new Cordova iOS project
+* Package name, following reverse-domain style convention
+* Project name
+
+<!-- -->
+
+    $ ./path/to/cordova-ios/bin/create /path/to/my_new_cordova_project com.example.cordova_project_name CordovaProjectName
+
+### Build a project
+
+    $ /path/to/my_new_cordova_project/cordova/debug
+
+### Launch emulator
+
+    $ /path/to/my_new_cordova_project/cordova/emulate
+
+### Logging
+
+    $ /path/to/my_new_cordova_project/cordova/log
+
+
+## Android
+
+The Android command-line tools are built upon shell scripts. You _must_
+have the Android SDK's `tools` and `platform-tools` folders in your
+PATH!
+
+### Create a project
+
+Run the `create` command with the following parameters:
+
+* Path to your new Cordova Android project
+* Package name, following reverse-domain style convention
+* Main Activity name
+
+<!-- -->
+
+    $ /path/to/cordova-android/bin/create /path/to/my_new_cordova_project com.example.cordova_project_name CordovaProjectName
+
+or, on **Windows**
+
+    $ /path/to/cordova-android/bin/create.bat /path/to/my_new_cordova_project com.example.cordova_project_name CordovaProjectName
+
+### Build a project
+
+    $ /path/to/my_new_cordova_project/cordova/debug
+
+or, on **Windows**
+
+    $ /path/to/my_new_cordova_project/cordova/debug.bat
+
+### Launch emulator
+
+    $ /path/to/my_new_cordova_project/cordova/emulate
+
+or, on **Windows**
+
+    $ /path/to/my_new_cordova_project/cordova/emulate.bat
+
+Make sure you have created at least one Android Virtual Device. If you did not it will ask you to create one with the `android` command.
+If you have multiple AVDs, it will prompt you to select an AVD.
+
+### Logging
+
+    $ /path/to/my_new_cordova_project/cordova/log
+
+or, on **Windows**
+
+    $ /path/to/my_new_cordova_project/cordova/log.bat
+
+### Cleaning
+
+    $ /path/to/my_new_cordova_project/cordova/clean
+
+or, on **Windows**
+
+    $ /path/to/my_new_cordova_project/cordova/clean.bat
+
+### Clean, build, deploy and launch
+
+    $ /path/to/my_new_cordova_project/cordova/BOOM
+
+or, on **Windows**
+
+    $ /path/to/my_new_cordova_project/cordova/BOOM.bat
+
+Make sure you have an emulator or a device connected.
+
+
+## BlackBerry
+
+The BlackBerry command-line tools are built upon shell scripts.
+
+### Create a project
+
+Run the `create` command with the following parameters:
+
+* Path to your new Cordova BlackBerry project
+* Application name
+
+<!-- -->
+
+    $ /path/to/cordova-blackberry-webworks/bin/create /path/to/my_new_cordova_project CordovaProjectName
+
+or, on **Windows**
+
+    $ /path/to/cordova-blackberry-webworks/bin/create.bat /path/to/my_new_cordova_project CordovaProjectName
+
+### Build a project
+
+For BlackBerry projects, please make sure you customize the
+`project.properties` file in the root of your Cordova project folder.
+This is necessary for things like supplying your BlackBerry signing key
+password, location of the BlackBerry WebWorks SDK, and location of
+BlackBerry simulator executables.
+
+    $ /path/to/my_new_cordova_project/cordova/debug
+
+or, on **Windows**
+
+    $ /path/to/my_new_cordova_project/cordova/debug.bat
+
+### Launch emulator
+
+For BlackBerry projects, please make sure you customize the
+`project.properties` file in the root of your Cordova project folder.
+This is necessary for things like supplying your BlackBerry signing key
+password, location of the BlackBerry WebWorks SDK, and location of
+BlackBerry simulator executables.
+
+    $ /path/to/my_new_cordova_project/cordova/emulate
+
+or, on **Windows**
+
+    $ /path/to/my_new_cordova_project/cordova/emulate.bat
+
+### Logging
+
+Unfortunately streaming logs directly from the device is not
+supported at this time. However, BlackBerry offers built-in Web
+Inspector support for Playbook and BlackBerry smartphone devices running
+BlackBerry OS 7.0 and above. Additionally, you can access your
+application's logs (including any calls to `console.log`) on your device
+by holding down the ALT key from the home screen and hitting "lglg"
+keys.
diff --git a/docs/en/2.1.0/guide/cordova-webview/android.md b/docs/en/2.1.0/guide/cordova-webview/android.md
new file mode 100644
index 0000000..6618ccd
--- /dev/null
+++ b/docs/en/2.1.0/guide/cordova-webview/android.md
@@ -0,0 +1,66 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Embedding Cordova WebView on Android
+====================================
+
+Beginning in Cordova 1.9, with the assistance of the `CordovaActivity`, you can use Cordova as a component in a larger native Android application. This component is known in Android
+as the `CordovaWebView`. New Cordova-based applications from 1.9 onwards will be using the `CordovaWebView` as its main view, whether the legacy `DroidGap` approach is 
+used or not.
+
+The prerequisites are the same as the prerequisites for Android application development. It is assumed that you are familiar with Android development. If not, please
+look at the Getting Started guide to developing a Cordova Application and start there before continuing with this approach. This is not the main approach used
+to author Android Cordova applications. Thus the instructions are currently manual.  In the future, we may try to further automate project generation via this method.
+
+Prerequisites
+-------------
+
+1. **Cordova 1.9** or greater
+2. Android SDK updated with 15
+
+Guide to using CordovaWebView in an Android Project
+---------------------------------------------------
+
+1. Use `bin/create` to fetch the commons-codec-1.6.jar
+2. `cd` into `/framework` and run `ant jar` to build the cordova jar (it
+   will create the .jar file in the form `cordova-x.x.x.jar` in the
+   `/framework` folder)
+3. Copy the cordova jar into your Android project's `/libs` directory
+4. Edit your application's `main.xml` file (under `/res/xml`) to look similar the following. The `layout_height`, `layout_width` and `id` can be modified to suit your application
+
+        <org.apache.cordova.CordovaWebView
+            android:id="@+id/tutorialView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+
+5. Modify your activity so that it implements the `CordovaInterface`.  It is recommended that you implement the methods that are included.  You may wish to copy the methods from `/framework/src/org/apache/cordova/DroidGap.java`, or you may wish to implement your own methods.  Below is a fragment of code from a basic application that uses the interface (note how the view id referenced matches the `id` attribute specified in the above XML fragment from step 4):
+
+        public class CordovaViewTestActivity extends Activity implements CordovaInterface {
+            CordovaWebView cwv;
+            /* Called when the activity is first created. */
+            @Override
+            public void onCreate(Bundle savedInstanceState) {
+                super.onCreate(savedInstanceState);
+                setContentView(R.layout.main);
+                cwv = (CordovaWebView) findViewById(R.id.tutorialView);
+                cwv.loadUrl("file:///android_asset/www/index.html");
+            }
+
+6. Copy your application's HTML and JavaScript used to the `/assets/www` directory of your Android project
+7. Copy `cordova.xml` and `plugins.xml` from `/framework/res/xml` to the `/res/xml` folder in your project
diff --git a/docs/en/2.1.0/guide/cordova-webview/index.md b/docs/en/2.1.0/guide/cordova-webview/index.md
new file mode 100644
index 0000000..d3e2e72
--- /dev/null
+++ b/docs/en/2.1.0/guide/cordova-webview/index.md
@@ -0,0 +1,27 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Embedding WebView
+=================
+
+> Implement the Cordova WebView in your own project.
+
+- Embedding Cordova WebView on Android
+- Embedding Cordova WebView on iOS
+
diff --git a/docs/en/2.1.0/guide/cordova-webview/ios.md b/docs/en/2.1.0/guide/cordova-webview/ios.md
new file mode 100644
index 0000000..78197b6
--- /dev/null
+++ b/docs/en/2.1.0/guide/cordova-webview/ios.md
@@ -0,0 +1,131 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Embedding Cordova WebView on iOS
+================================
+
+Beginning with Cordova 1.4, you can use Cordova as a component in your iOS applications. This component is code-named "Cleaver".
+
+New Cordova-based applications created using the Xcode template provided in Cordova 1.4 or greater use Cleaver, and this template is considered the reference implementation for Cleaver.
+
+Beginning with Cordova 2.0.0 and greater, we only support the sub-project based Cleaver implementation from now on.
+
+Prerequisites
+-------------
+
+1. **Cordova 2.1.0** or greater
+2. **Xcode 4.3** or greater
+3. `Cordova.plist` file (from a [newly created](guide_command-line_index.md.html#Command-Line%20Usage_ios) Cordova project)
+
+
+Adding Cleaver to your Xcode project (CordovaLib sub-project)
+-------------------------------------------------------------
+
+1. **Download and extract the Cordova source** to a **permanent folder location** on your hard drive (say to ~/Documents/Cordova)
+2. **Quit Xcode** if it is running.
+3. **Navigate** to the directory where you put the downloaded source above, using **Terminal.app**.
+4. **Copy** the `Cordova.plist` file into your project folder on disk (see **Prerequisites** above)
+5. **Drag and drop** the `Cordova.plist` file into the Project Navigator of Xcode
+6. **Choose** the radio-button **"Create groups for any added folders"**, select the **Finish** button
+7. **Drag and drop** the `CordovaLib.xcodeproj` file into the Project Navigator of Xcode (from the permanent folder location above, and it should be in the CordovaLib sub-folder)
+8. Select `CordovaLib.xcodeproj` in the Project Navigator
+9. Press the key combination **Option-Command-1** to show the **File Inspector**
+10. Choose **"Relative to Group"** in the **File Inspector** for the drop-down menu for **Location** 
+11. Select the **project icon** in the Project Navigator, select your **Target**, then select the **"Build Settings"** tab
+12. Add `-all_load` and `-Obj-C` - for the **"Other Linker Flags"** value
+13. Click on the **project icon** in the Project Navigator, select your **Target**, then select the **"Build Phases"** tab
+14. Expand **"Link Binaries with Libraries"** 
+15. Select the **"+" button**, and add these **frameworks** (and optionally in the Project Navigator, **move** them under the Frameworks group):
+
+        AddressBook.framework
+        AddressBookUI.framework
+        AudioToolbox.framework
+        AVFoundation.framework
+        CoreLocation.framework
+        MediaPlayer.framework
+        QuartzCore.framework
+        SystemConfiguration.framework
+        MobileCoreServices.framework
+        CoreMedia.framework
+
+16. Expand **"Target Dependencies"** - the top box labeled like this if you have multiple boxes!
+17. Select the **"+" button**, and add the `CordovaLib` build product
+18. Expand **"Link Binaries with Libraries"** - the top box labeled like
+    this if you have multiple boxes!
+19. Select the **"+" button**, and add `libCordova.a`
+20. Set the Xcode preference **"Xcode Preferences -> Locations -> Derived Data -> Advanced…"** to **"Unique"**
+21. Select the **project icon** in the Project Navigator, select your **Target**, then select the **"Build Settings"** tab
+22. Search for **"Header Search Paths"**. For that setting, add these three values below (with quotes):
+
+        "$(TARGET_BUILD_DIR)/usr/local/lib/include"
+    
+        "$(OBJROOT)/UninstalledProducts/include"
+    
+        "$(BUILT_PRODUCTS_DIR)"
+
+    With **Cordova 2.1.0**, CordovaLib has been upgraded to use **Automatic Reference Counting (ARC)**. You don't need to upgrade to **ARC** to use CordovaLib, but if you want to upgrade your project to use **ARC**, please use the Xcode migration wizard from the menu: **Edit -> Refactor -> Convert to Objective-C ARC…**, **de-select libCordova.a**, then run the wizard to completion. 
+    
+Using CDVViewController in your code
+------------------------------------
+
+1. Add this **header**:
+
+        #import <Cordova/CDVViewController.h>
+
+2. Instantiate a **new** `CDVViewController`, and retain it somewhere: 
+
+        CDVViewController* viewController = [CDVViewController new];
+
+3. (_OPTIONAL_) Set the `wwwFolderName` property (defaults to `"www"`):
+
+        viewController.wwwFolderName = @"myfolder";
+
+4. (_OPTIONAL_) Set the `startPage` property (defaults to `"index.html"`):
+
+        viewController.startPage = @"mystartpage.html";
+
+5. (_OPTIONAL_) Set the `useSplashScreen` property (defaults to `NO`):
+
+        viewController.useSplashScreen = YES;
+
+6. Set the **view frame** (always set this as the last property):
+
+        viewController.view.frame = CGRectMake(0, 0, 320, 480);
+
+7. **Add** Cleaver to your view:
+
+        [myView addSubview:viewController.view];
+
+Adding your HTML, CSS and JavaScript assets
+-------------------------------------------
+
+1. Create a **new folder** in your project **on disk**, for example, name it `www`
+2. Put your **HTML, CSS and JavaScript assets** into this folder
+3. **Drag and drop** the folder into the Project Navigator of Xcode
+4. **Choose** the radio-button **"Create folder references for any added folders"**
+5. **Set the appropriate `wwwFolderName` and `startPage` properties** for the folder you created in **(1)** or use the defaults (see previous section) when you instantiate the `CDVViewController`.
+
+        /*
+         if you created a folder called 'myfolder' and
+         you want the file 'mypage.html' in it to be 
+         the startPage
+        */
+        viewController.wwwFolderName = @"myfolder";
+        viewController.startPage = @"mypage.html"
+
diff --git a/docs/en/2.1.0/guide/getting-started/android/index.md b/docs/en/2.1.0/guide/getting-started/android/index.md
new file mode 100644
index 0000000..7fad9db
--- /dev/null
+++ b/docs/en/2.1.0/guide/getting-started/android/index.md
@@ -0,0 +1,137 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Getting Started with Android
+============================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+
+1. Requirements
+---------------
+
+- Eclipse 3.4+
+
+
+2. Install SDK + Cordova
+------------------------
+
+- Download and install [Eclipse Classic](http://www.eclipse.org/downloads/)
+- Download and install [Android SDK](http://developer.android.com/sdk/index.html)
+- Download and install [ADT Plugin](http://developer.android.com/sdk/eclipse-adt.html#installing)
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the Android directory.
+
+ 3. Setup New Project
+---------------------
+
+- Launch Eclipse, and select menu item **New Project**
+    ![](img/guide/getting-started/android/step_1.png)
+- Then specify new application project
+    ![](img/guide/getting-started/android/step_2.png)
+- Then speciy an Application Name, a Project Name and Package Name with Namespace
+    ![](img/guide/getting-started/android/step_3.png)
+- Then select a graphic
+    ![](img/guide/getting-started/android/step_4.png)
+- Then Create a Blank Activity
+    ![](img/guide/getting-started/android/step_5.png)
+- Make sure the activity doesn't inherit from anything.  You most likely won't have PhoneGap on your Eclipse Workspace.  Once this is done, click finish
+    
+- In the root directory of your project, create two new directories:
+ 	- **/libs**
+ 	- **assets/www**
+- Copy **cordova-2.0.0.js** from your Cordova download earlier to **assets/www**
+- Copy **cordova-2.0.0.jar** from your Cordova download earlier to **/libs**
+- Copy **xml** folder from your Cordova download earlier to **/res**
+
+- Verify that **cordova-2.0.0.jar** is listed in the Build Path for your project. Right click on the /libs folder and go to **Build Paths/ &gt; Configure Build Path...**. Then, in the Libraries tab, add **cordova-2.0.0.jar** to the project. If Eclipse is being temperamental, you might need to refresh (F5) the project once again.
+
+    ![](img/guide/getting-started/android/buildPath.jpg)
+
+- Edit your project's main Java file found in the **src** folder in Eclipse:
+	- Add **import org.apache.cordova.*;**
+	- Change the class's extend from **Activity** to **DroidGap**
+	- Replace the **setContentView()** line with **super.loadUrl("file:///android_asset/www/index.html");**	
+
+	![](img/guide/getting-started/android/javaSrc.jpg)
+	
+- Right click on AndroidManifest.xml and select **Open With &gt; Text Editor**
+- Paste the following permissions between the **&lt;uses-sdk.../&gt;** and **&lt;application.../&gt;** tags.
+
+        <supports-screens 
+            android:largeScreens="true" 
+            android:normalScreens="true" 
+            android:smallScreens="true" 
+            android:resizeable="true" 
+            android:anyDensity="true" />
+        <uses-permission android:name="android.permission.VIBRATE" />
+        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+        <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
+        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+        <uses-permission android:name="android.permission.INTERNET" />
+        <uses-permission android:name="android.permission.RECEIVE_SMS" />
+        <uses-permission android:name="android.permission.RECORD_AUDIO" />
+        <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+        <uses-permission android:name="android.permission.READ_CONTACTS" />
+        <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+        <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+        <uses-permission android:name="android.permission.BROADCAST_STICKY" />
+*Note You are adding a blanket list of permissions to your application. You should remove permissions you aren't using before submitting your application to Google Play.
+- Support orientation changes by pasting the following inside the **&lt;activity&gt;** tag.
+
+        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
+
+- Your AndroidManifest.xml file should look like
+
+    ![](img/guide/getting-started/android/manifest.png)
+
+4. Hello World
+--------------    
+
+- Create and open a new file named **index.html** in the **assets/www** directory. Paste the following code:
+
+        <!DOCTYPE HTML>
+        <html>
+        <head>
+        <title>Cordova</title>
+        <script type="text/javascript" charset="utf-8" src="cordova-1.9.0.js"></script>
+        </head>
+        <body>
+        <h1>Hello World</h1>
+        </body>
+        </html>
+
+5A. Deploy to Simulator
+-----------------------
+
+- Right click the project and go to **Run As &gt; Android Application**
+- Eclipse will ask you to select an appropriate AVD. If there isn't one, then you'll need to create it.
+
+
+5B. Deploy to Device
+--------------------
+
+- Make sure USB debugging is enabled on your device and plug it into your system. (**Settings &gt; Applications &gt; Development**)
+- Right click the project and go to **Run As &gt; Android Application**
+
+
+Done!
+-----
diff --git a/docs/en/2.1.0/guide/getting-started/bada/index.md b/docs/en/2.1.0/guide/getting-started/bada/index.md
new file mode 100644
index 0000000..aa68e52
--- /dev/null
+++ b/docs/en/2.1.0/guide/getting-started/bada/index.md
@@ -0,0 +1,93 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Getting Started with Bada
+=========================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+1. Requirements
+---------------
+
+- Windows
+- You need the bada 1.2 SDK to use cordova-bada (which is no longer available on Samsung&apos;s website)
+
+2. Install SDK + Cordova
+-------------------------
+
+- Download and install the [Bada SDK](http://developer.bada.com) (Windows only). 
+- Donwload the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the bada directory.
+
+
+3. Setup New Project
+--------------------
+- In Bada IDE, select _File_ -> Import project -> Bada C++ / Flash Project. 
+    - Note: Bada 1.2 select "Bada Application Project"
+    
+    ![](img/guide/getting-started/bada/import_bada_project.png)
+
+- Make sure "Select root directory is checked" and then click Browse
+- Browse to Cordova bada project folder (bada for 1.2 and bada-wac for 2.x) and select it. Make sure "Copy projects into workspace is checked"
+    
+    ![](img/guide/getting-started/bada/import_bada_project.png)
+
+- Click "Finish"
+
+    ![](img/guide/getting-started/bada/bada_project.png)
+ 
+4. Hello World
+--------------
+
+**Bada 2.x**: Your HTML/CSS/Javascript code lives under the Res/ folder. Make sure your index.html contains the following two lines in the <head> section.
+
+
+        <link href="osp://webapp/css/style.css" rel="stylesheet" type="text/css" />
+        <script type="text/javascript" src="osp://webapp/js/webapp_core.js"></script>
+
+**Bada 1.2**: Your HTML/CSS/Javascript code lives under the Res/ folder. Make sure your index.html contains the following line.
+
+        <script type="text/javascript" src="cordova/cordova.js"> </script>
+
+5A. Deploy to Simulator
+-----------------------
+
+- **Bada 2.x**: Right click on your project s folder and select Run As -&gt; bada Emulator Web Application 
+    
+    ![](img/guide/getting-started/bada/bada_1_run.png)
+
+- **Bada 1.2**: Right click on your project&apos; folder and select Build configurations -&gt; Set Active -&gt; Simulator-Debug
+
+    ![](img/guide/getting-started/bada/bada_set_target.png)
+
+- Right click on your project&apos;s folder and select Run As -&gt; bada Simulator Application. You need to close the emulator every time you update your app!
+
+5B. Deploy to Device
+--------------------
+
+- Make sure your device is properly configured 
+
+**Bada 2.x**: Right click on your project&apos;s folder and select Run As -&gt; bada Target Web Application
+
+**Bada 1.2**:
+- Right click on your project&apos;s folder and select Build configurations -> Set Active -> Target-Debug
+- Right click on your project&apos;s folder and select Run As -> bada Target Application. You need to close the emulator every time you update your app!
+
+
+Done!
+-----
diff --git a/docs/en/2.1.0/guide/getting-started/blackberry/index.md b/docs/en/2.1.0/guide/getting-started/blackberry/index.md
new file mode 100644
index 0000000..178cba1
--- /dev/null
+++ b/docs/en/2.1.0/guide/getting-started/blackberry/index.md
@@ -0,0 +1,101 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Getting Started with Blackberry
+============================
+
+Cordova for BlackBerry makes use of the [BlackBerry WebWorks framework](https://bdsc.webapps.blackberry.com/html5). BlackBerry WebWorks tooling is available for Windows or Mac environments. WebWorks applications can ONLY be deployed to BlackBerry devices running OS 5.0 and higher or the BlackBerry PlayBook operating system.
+
+1.  Requirements
+---------------
+
+- Windows XP (32-bit) or Windows 7 (32-bit and 64-bit) or Mac OSX 10.6.4+
+- Java Development Kit (JDK)
+    - Windows: [Oracle JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html#jdk) (32-Bit Version)
+    - Mac OS X: Versions prior to Mac OS X 10.7 provided Java by default.  OS X 10.7+ requires installation of [Java](http://support.apple.com/kb/DL1421).
+-   Apache Ant
+    - Windows: [Apache Ant](http://ant.apache.org/bindownload.cgi).
+    - Mac OS X: Apache Ant is bundled with Java install.
+
+2.  Install SDK + Cordova
+-------------------------
+
+- PlayBook development requires the [Adobe Air SDK](http://www.adobe.com/devnet/air/air-sdk-download.html)
+- Download and install one or more of the WebWorks SDKs. Keep note of the install directory.
+    - Smartphone Development: [BlackBerry WebWorks Smartphone SDK](https://bdsc.webapps.blackberry.com/html5/download/sdk)
+    - PlayBook Development: [BlackBerry WebWorks Tablet OS SDK](https://bdsc.webapps.blackberry.com/html5/download/sdk)
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents.
+
+3.  Setup New Project
+--------------------
+
+- Open up a command prompt/terminal and navigate to where you extracted Cordova.
+- There is a directory for each platform that Cordova supports.  CD into the blackberry directory.
+- The blackberry directory contains two directories, `sample` and `www`.  The `sample` folder contains a complete Cordova project.  Copy the `sample` folder to another location on your computer.
+- Change to the newly created directory.
+- Open up the project.properties file with your favorite editor and edit the entries for `blackberry.bbwp.dir=` and/or `playbook.bbwp.dir=`. Set the  value(s) to the directory containing the `bbwp` binary in the WebWorks SDK(s) installed earlier.
+
+4.  Hello World
+--------------
+
+Build the Cordova sample project by typing `ant target build` in your command prompt/terminal while you are in your project's directory. Replace `target` with either `blackberry` or `playbook`. Note this is a sample Cordova project and not a basic hello world application. The provided index.html in the www contains example usages of many of the Cordova API.
+
+5A.  Deploy to Simulator
+--------------------------------------
+
+BlackBerry smartphone simulators are only available on Windows. PlayBook simulators require VMWare Player (Windows) or VMWare Fusion (Mac OS X). The WebWorks SDK provides a default simulator. Additional simulators are [available](http://us.blackberry.com/developers/resources/simulators.jsp).
+
+- Open the project.properties file with your favorite editor and customize the following properties.
+    - Smartphone (Optional)
+        - `blackberry.sim.dir` : Path to directory containing simulator. On windows file separator '\' must be escaped '\\\'.
+        - `blackberry.sim.bin` : Name of the simulator executable in the specified directory.
+    - Playbook
+        - `playbook.sim.ip` : IP address of simulator obtained when placing the simulator in developer mode through simulator security settings.
+        - `playbook.sim.password` : Simulator password which can be set through simulator security settings.
+- While in your project directory, in command prompt/terminal type `ant target load-simulator`. Replace `target` with either `blackberry` or `playbook`.  Note, for PlayBook the simulator virtual image must already be started.
+- The application will be installed in the All Applications section in the simulator.  Note, on BlackBerry OS 5 the application is installed in the Downloads folder.
+
+5B.  Deploy to Device (Windows and Mac)
+--------------------------------------
+
+- Deploying to a device requires signing keys which can be obtained from RIM.
+    - Fill out this [form](https://bdsc.webapps.blackberry.com/html5/signingkey). to request signing keys.
+    - Install the signing keys once they have been received:
+        - [Setup Smartphone Signing keys](https://bdsc.webapps.blackberry.com/html5/documentation/ww_publishing/signing_setup_smartphone_apps_1920010_11.html)
+        - [Setup Tablet Signing keys](https://bdsc.webapps.blackberry.com/html5/documentation/ww_publishing/signing_setup_tablet_apps_1920009_11.html)
+- Install [BlackBerry Desktop Sofware](http://us.blackberry.com/apps-software/desktop/) to be able to install a signed application to a smartphone device attached via USB.
+- Open the project.properties file with your favorite editor and customize the following properties:
+    - Smartphone (Optional)
+        - `blackberry.sigtool.password` : Password used when code signing keys were registered.  If not specified, a prompt will occur.
+    - Playbook (Required)
+        - `playbook.sigtool.csk.password` : Signing key password.
+        - `playbook.sigtool.p12.password` : Signing key password.
+        - `playbook.device.ip` : IP address of device obtained when placing the device in developer mode through device security settings.
+        - `playbook.device.password` : Device password which is set through device security settings.
+- While in your project directory, in command prompt/terminal type `ant target load-device`. Replace `target` with either `blackberry` or `playbook`.
+- The application will be installed in the All Applications section in the device.  Note, on BlackBerry OS 5 the application is installed in the Downloads folder.
+
+Additional Information
+----------------------
+
+The following articles provide help to issues you may encounter when developing a Cordova application which is based on the BlackBerry WebWorks framework.
+
+- [BlackBerry WebWorks Development Pitfalls](http://supportforums.blackberry.com/t5/Web-and-WebWorks-Development/Common-BlackBerry-WebWorks-development-pitfalls-that-can-be/ta-p/624712)
+- [Best practices for packaging WebWorks applications](https://bdsc.webapps.blackberry.com/html5/documentation/ww_developing/bestpractice_compiling_ww_apps_1873324_11.html)
+
diff --git a/docs/en/2.1.0/guide/getting-started/index.md b/docs/en/2.1.0/guide/getting-started/index.md
new file mode 100644
index 0000000..66b0b97
--- /dev/null
+++ b/docs/en/2.1.0/guide/getting-started/index.md
@@ -0,0 +1,30 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Getting Started Guides
+======================
+
+- Getting Started with Android
+- Getting Started with Blackberry
+- Getting Started with iOS
+- Getting Started with Symbian
+- Getting Started with WebOS
+- Getting Started with Windows Phone
+- Getting Started with Bada
+- Getting Started with Tizen
diff --git a/docs/en/2.1.0/guide/getting-started/ios/index.md b/docs/en/2.1.0/guide/getting-started/ios/index.md
new file mode 100644
index 0000000..21cc987
--- /dev/null
+++ b/docs/en/2.1.0/guide/getting-started/ios/index.md
@@ -0,0 +1,116 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Getting Started with iOS
+========================
+
+This guide describes how to set up your development environment for Apache Cordova and run a sample Apache Cordova application.
+
+Requirements
+------------
+- Xcode 4.3+
+- Xcode Command Line Tools 
+- Intel-based computer with Mac OS X Lion or greater (10.7+)
+- Necessary for installing on device:
+    - Apple iOS device (iPhone, iPad, iPod Touch)
+    - iOS developer certificate
+
+Install the iOS SDK and Apache Cordova
+----------------------------------
+
+- Install **Xcode** from the [Mac App Store](http://itunes.apple.com/us/app/xcode/id497799835?mt=12) or [Apple Developer Downloads](http://developer.apple.com/downloads)
+- Install the **Xcode Command Line Tools** (**Xcode Preferences -> Downloads -> Components -> Command Line Tools -> Install**).
+- Download the latest release of [Apache Cordova](http://phonegap.com/download)
+    - extract its contents
+    - Apache Cordova iOS is found under `lib/ios`
+
+
+Install CordovaLib 
+------------------
+
+1. **Download** the Cordova source
+2. **Extract** to source to their final permanent location on your hard drive (for example, to ~/Documents/CordovaLib-2.X.X)
+3. There is no step 3
+
+Create a New Project
+--------------------
+
+- Launch **Terminal.app**
+- Drag the **bin** folder (located in the permanent folder location of Cordova, from the **"Install CordovaLib"** section above) to the **Terminal.app** icon in your Dock, it should launch a new Terminal window
+- Type in `./create <project_folder_path> <package_name> <project_name>` then press **"Enter"**
+
+        <project_folder_path> is the path to your new Cordova iOS project (it must be empty if it exists)
+        <package_name> is the package name, following reverse-domain style convention
+        <project_name> is the project name
+        
+    ![](img/guide/getting-started/ios/bin_create_project.png)
+
+
+- **Locate** your new project folder that you just created
+- **Launch** the .xcodeproj file in the folder
+
+    
+Deploy to Simulator
+-------------------
+
+- Change the **Target** in the **Scheme** drop-down menu on the toolbar to **"HelloWorld"** (your project name)
+- Change the **Active SDK** in the **Scheme** drop-down menu on the toolbar to **iOS [version] Simulator**
+
+    ![](img/guide/getting-started/ios/active_scheme_simulator.png)
+
+- Select the **Run** button in your project window's toolbar
+
+Deploy to Device
+----------------
+
+- Open `HelloWorld-Info.plist`, under the **Resources** group
+- Change **BundleIdentifier** to the identifier provided by Apple or your own bundle identifier
+    - If you have a developer license, you can run the [Assistant](http://developer.apple.com/iphone/manage/overview/index.action) to register your app
+- Change the **Target** in the **Scheme** drop-down menu on the toolbar to **"HelloWorld"** (your project name)
+- Change the **Active SDK** in the Scheme drop-down menu on the toolbar to **[Your Device Name]**
+    - You will need to have your device connected via USB
+
+    ![](img/guide/getting-started/ios/active_scheme_device.png)
+    
+- Select the **Run** button in your project window's toolbar
+
+Results
+----------------
+- You should see the screen below, with a pulsating green **"device is ready"** message
+
+    ![](img/guide/getting-started/ios/HelloWorldStandard.png)
+    
+Problems in Xcode
+----------------
+If you have compilation problems related to missing headers, the build products should **build into the same build directory**. You may need to set the preference **"Xcode Preferences -> Locations -> Derived Data -> Advanced…"** to **"Unique"**. This is the default setting for Xcode on a fresh new install, if you upgraded from older versions of Xcode, you might have a legacy preference in there that you need to update.
+
+
+Build Your App
+--------------
+
+You now have an Xcode project setup and you can build and run on the Simulator and device.
+It is important to understand that you do not need to use Xcode to write your web application.
+You can use your favourite text editor and simply rebuild your project using Xcode, or the [command-line tools](guide_command-line_index.md.html#Command-Line%20Usage) in your project folder (under the **cordova** sub-folder)
+Xcode will automatically detect the files that are changed in `www`.
+
+Problems in the Command Line Tools
+----------------
+If you see this error: **"Error: No developer directory found at /Developer. Run /usr/bin/xcode-select to update the developer directory path."** Run this to set your Developer folder:
+
+        sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer
diff --git a/docs/en/2.1.0/guide/getting-started/symbian/index.md b/docs/en/2.1.0/guide/getting-started/symbian/index.md
new file mode 100644
index 0000000..26ff6e4
--- /dev/null
+++ b/docs/en/2.1.0/guide/getting-started/symbian/index.md
@@ -0,0 +1,78 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Getting Started with Symbian
+============================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+Video Tutorials:
+----------------
+
+- [Cordova Installer - Xcode 4 Template](http://www.youtube.com/v/R9zktJUN7AI?autoplay=1)
+
+
+1. Requirements
+---------------
+
+- Windows, OS X, or Linux
+
+There are also [QT for Symbian](http://wiki.phonegap.com/w/page/16494811/PhoneGap-Symbian-%28Qt%29) and [Symbian with Sony Ericsson](http://wiki.phonegap.com/w/page/16494782/Getting-Started-with-PhoneGap-Symbian-(WRT-on-Sony-Ericsson)) guides.
+
+
+2. Install SDK + Cordova
+-------------------------
+
+- Download and install [cygwin](http://www.cygwin.com/setup.exe) (Windows only). Make sure you select "make" as it is not included by default
+- Donwload the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the Android directory.
+
+
+3. Setup New Project
+--------------------
+
+- In cygwin, navigate to where you extracted Cordova and go into the Symbian directory</li>
+
+ 
+4. Hello World
+--------------
+
+- Open up index.html located in phonegap/symbian/framework/www with your favourite editor. 
+- In the `body` tag, remove the line `"Build your phonegap app here! Dude!"` and add the line `<h1>Hello World</h1>`
+- In cygwin/terminal, type make. This will produce phonegap-symbian.wrt/app.wgz. 
+
+
+5A. Deploy to Simulator
+-----------------------
+
+- For Mac or Linux you should install [Aptana Studio](http://www.aptana.org/products/studio2/download) and [Nokia WRT Plug-in for Aptana Studio](http://www.forum.nokia.com/info/sw.nokia.com/id/00d62bd8-4214-4c86-b608-5f11b94dad54/Nokia_WRT_Plug_in_for_Aptana_Studio.html). This has a browser-based javascript emulator
+- For Windows you can download the [S60 SDK](http://www.forum.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html) which includes the S60 Emulator
+- Load the phonegap-symbian.wrt/app.wgz file into the emulator.
+
+
+5B. Deploy to Device
+--------------------
+
+- Load the phonegap-symbian.wrt/app.wgz file into the device using bluetooth or email.
+
+
+Done!
+-----
+
+You can also checkout more detailed version of this guide [here](http://wiki.phonegap.com/w/page/16494780/Getting-Started-with-Phonegap-Nokia-WRT).
+
diff --git a/docs/en/2.1.0/guide/getting-started/tizen/index.md b/docs/en/2.1.0/guide/getting-started/tizen/index.md
new file mode 100644
index 0000000..b77906f
--- /dev/null
+++ b/docs/en/2.1.0/guide/getting-started/tizen/index.md
@@ -0,0 +1,108 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Getting Started with Tizen
+=========================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+1. Requirements
+---------------
+
+- Linux Ubuntu 10.04/10.10/11.04/11.10 32-bit, Windows XP SP3/7 32-bit.
+
+2. Install SDK + Cordova
+-------------------------
+
+- Download and install the [Tizen SDK](https://developer.tizen.org/sdk).
+- Donwload the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the tizen directory.
+- (optional) Install Tizen Cordova template projects: copy the `/templates` directory content into you Tizen Eclipse IDE web templates directory (e.g: `/home/my_username/tizen-sdk/IDE/Templates/web`).
+
+3. Setup New Project
+--------------------
+
+- **Method #1: Import a Cordova Tizen project sample**
+    - Launch Tizen Eclipse IDE
+    - Select  **File** -> **Import** -> **Tizen Web Project**
+
+    ![](img/guide/getting-started/tizen/import_project.png)
+
+    - Click **Next**
+    - Make sure that **Select root directory** is checked
+    - Make sure **Copy projects into workspace** is checked
+    - Click **Browse**
+    - Browse to one of the Cordova Tizen "samples" project directory (e.g: `/cordova-basic`) and select it
+
+    ![](img/guide/getting-started/tizen/import_widget.png)
+
+    - Click **Finish**
+
+    ![](img/guide/getting-started/tizen/project_explorer.png)
+
+    - Your project should now have been imported and appear **Project Explorer** view
+
+- **Method #2: Use Tizen Eclipse IDE Cordova Tizen project templates**
+    - Launch Tizen Eclipse IDE
+    - Select  **File** -> **New** -> **Tizen Web Project**
+    - Select **User Template** and **User defined** items
+    - Select one of the Tizen Cordova template (e.g: **CordovaBasicTemplate**)
+    - Fill-up the **Project name** and its target **Location**
+
+    ![](img/guide/getting-started/tizen/project_template.png)
+
+    - Click **Finish**
+
+    ![](img/guide/getting-started/tizen/project_explorer.png)
+
+    - Your project should now have been created and appear **Project Explorer** view
+
+4. Hello World
+--------------
+- To build your project:
+
+    - **Right Click** your project in the **Project Explorer** view and Select **Build Project**
+
+    ![](img/guide/getting-started/tizen/build_project.png)
+
+    - A widget package should have been generated in your project root directory (e.g: `cordova-basic.wgt`)
+
+    - **Note** that the provided samples Tizen Cordova projects are not basic hello world applications. They contain a simple example usage of the Battery Cordova API.
+
+
+5A. Deploy to Simulator
+-----------------------
+
+- **Right Click** your project in the **Project Explorer** view and Select **Run As** and **Tizen Web Simulator Application**
+
+    ![](img/guide/getting-started/tizen/runas_web_sim_app.png)
+
+5B. Deploy to Device/Emulator
+--------------------
+
+- Make sure that your target device is properly launched/connected/configured ("Date and Time" settings must have been set correctly)
+- Select your application deployement target with the **Connection Explorer** view (Select **Window** Menu -> **Show View** -> **Connection Explorer** )
+
+    ![](img/guide/getting-started/tizen/connection_explorer.png)
+
+- **Right Click** your project in the **Project Explorer** view and Select **Run As** and **Tizen Web Application**
+
+    ![](img/guide/getting-started/tizen/runas_web_app.png)
+
+Done!
+-----
diff --git a/docs/en/2.1.0/guide/getting-started/webos/index.md b/docs/en/2.1.0/guide/getting-started/webos/index.md
new file mode 100644
index 0000000..37ab244
--- /dev/null
+++ b/docs/en/2.1.0/guide/getting-started/webos/index.md
@@ -0,0 +1,79 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Getting Started with WebOS
+==========================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+Video Tutorials:
+----------------
+
+- [Cordova and HP Palm webOS quick start video](http://www.youtube.com/v/XEnAUbDRZfw?autoplay=1)
+- [How to convert iPhone app to a Palm](http://www.youtube.com/v/wWoJfQw79XI?autoplay=1)
+
+
+1. Requirements
+---------------
+
+- Windows, OS X, or Linux
+
+
+2. Install SDK + Cordova
+----------------------------
+
+- Download and install [Virtual Box](http://www.virtualbox.org/)
+- Download and install [WebOS SDK](http://developer.palm.com/index.php?option=com_content&view=article&layout=page&id=1788&Itemid=321/)
+- Download and install [cygwin SDK](http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;layout=page&amp;id=1788&amp;Itemid=321)  (Windows only). Make sure you select "make" as it is not included by default
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the webOS directory.
+- Download and install XCode from the [Mac App Store](http://itunes.apple.com/ca/app/xcode/id497799835?mt=12) (OSX only)
+- Download and install Command Line Tools for XCode (OSX only); this can be done by going to XCode's Preferences -> Downloads -> Components and then click install on Command Line Tools
+
+ 
+3. Setup New Project
+--------------------
+
+- Open up terminal/cygwin and navigate to where you extracted your Cordova Download. Go into the webOS directory.
+
+
+4. Hello World
+--------------
+
+In phonegap/webOS/framework/www, open up index.html with your favourite editor. After the body tag add `<h1>Hello World</h1>`
+
+
+5A. Deploy to Simulator
+-----------------------
+
+- Open up your Palm Emulator from your applications folder/start menu.
+- Type `make` in your terminal/cygwin while in the webOS directory.
+
+
+5B. Deploy to Device
+--------------------
+
+- Make sure your device is in [Developer Mode and plug it in.](http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;id=1552&amp;Itemid=59#dev_mode)
+- Type `make` in your terminal/cygwin while in the webOS directory.
+       
+
+Done!
+-----
+
+You can also checkout more detailed version of this guide [here](http://wiki.phonegap.com/w/page/16494781/Getting-Started-with-PhoneGap-webOS).
+
diff --git a/docs/en/2.1.0/guide/getting-started/windows-phone/index.md b/docs/en/2.1.0/guide/getting-started/windows-phone/index.md
new file mode 100644
index 0000000..4a7374e
--- /dev/null
+++ b/docs/en/2.1.0/guide/getting-started/windows-phone/index.md
@@ -0,0 +1,101 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Getting Started with Windows Phone
+==================================
+
+This guide describes how to set up your development environment for Cordova and run a sample application.  Note that Cordova used to be called PhoneGap, so some of the sites still use the old PhoneGap name.
+
+Video Tutorials:
+----------------
+
+- [Cordova and Windows Phone quick setup video](http://www.youtube.com/v/wO9xdRcNHIM?autoplay=1)
+- [Cordova and Windows Phone deep dive](http://www.youtube.com/v/BJFX1GRUXj8?autoplay=1)
+
+
+1. Requirements
+---------------
+
+- Windows 7 or Windows Vista with SP2
+
+Note: Running in VM has issues, if you are on a Mac, you will need to setup a bootcamp partition with Windows 7 or Vista
+
+Necessary for Installing on Device and Submitting to Market Place:
+
+- Become an [App Hub member](http://create.msdn.com/en-US/home/membership).
+
+
+2. Install SDK + Cordova
+----------------------------
+
+- Download and install [Windows Phone  SDK](http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=27570/)
+- Download the latest copy of [Cordova](http://phonegap.com/download) and extract its contents. We will be working with the subfolder: lib\windows-phone\
+- copy the file CordovaStarter-x.x.x.zip to the folder : \My Documents\Visual Studio 2010\Templates\ProjectTemplates\
+if you have just installed VisualStudio, you should launch it once to create this folder
+if you prefer, you may add the project instead to the "Silverlight for Windows Phone" subfolder of "Visual C#". This is up to you, and only affects where the project template is shown when creating a new project. Also, You may need to create this folder.
+
+
+
+3. Setup New Project
+--------------------
+
+- Open Visual Studio Express for Windows Phone and choose **New Project**.
+- Select **CordovaStarter**. ( the version number will be displayed in the template description )
+- - note: If you do not see it, you may have to select the top level 'Visual C#' to see it
+- Give your project a name, and select OK.
+
+    ![](img/guide/getting-started/windows-phone/wpnewproj.PNG)
+
+ 
+4. Review the project structure
+-------------------------------
+
+- The 'www' folder contains your Cordova html/js/css and any other resources included in your app.
+- Any content that you add here needs to be a part of the Visual Studio project, and it must be set as content. 
+
+    ![](img/guide/getting-started/windows-phone/wp7projectstructure.PNG)
+
+
+5. Build and Deploy to Emulator
+-------------------------------
+
+- Make sure to have **Windows Phone Emulator** selected in the top drop-down menu.
+- Hit the green **play button** beside the Windows Phone Emulator drop-down menu to start debugging or press F5.
+
+    ![](img/guide/getting-started/windows-phone/wprun.png)
+    ![](img/guide/getting-started/windows-phone/wpfirstrun.PNG)
+
+
+6. Build your project for the device
+------------------------------------
+
+In order to test your application on a device, the device must be registered. Click [here](http://msdn.microsoft.com/en-us/library/gg588378(v=VS.92).aspx) to read documentation on deploying and testing on your Windows Phone.
+
+- Make sure your phone is connected, and the screen is unlocked
+- In Visual Studio, select 'Windows Phone Device' from the top drop-down menu.
+- Hit the green **play button** beside the drop-down menu to start debugging or press F5.
+
+    ![](img/guide/getting-started/windows-phone/wpd.png)
+
+
+Done!
+-----
+
+You can also checkout more detailed version of this guide [here](http://wiki.phonegap.com/w/page/48672055/Getting%20Started%20with%20PhoneGap%20Windows%20Phone%207).
+
diff --git a/docs/en/2.1.0/guide/plugin-development/android/index.md b/docs/en/2.1.0/guide/plugin-development/android/index.md
new file mode 100644
index 0000000..2fc8761
--- /dev/null
+++ b/docs/en/2.1.0/guide/plugin-development/android/index.md
@@ -0,0 +1,154 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements. See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership. The ASF licenses this file
+         to you 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.
+---
+
+# Developing a Plugin on Android
+
+Writing a plugin requires an understanding of the architecture of Cordova-Android. Cordova-Android consists
+of an Android WebView with hooks attached to it. These plugins are represented as class mappings in the config.xml
+file.
+
+A plugin will consist of at least a single Java class that extends the `Plugin` class. A plugin **must**
+have a method called `execute` that must return a `PluginResult` object. In addition to this, there is a best practice that
+the plugin should handle pause and resume events, and should handle message passing between plugins.
+
+## Plugin Class Mapping 
+
+The JavaScript portion of a plugin always uses the `cordova.exec` method as follows:
+
+    exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
+
+This will marshall a request from the WebView to the Android native
+side, more or less boiling down to calling the `action` method on the
+`service` class, with the arguments passed in the `args` Array.
+
+Whether you distribute your plugin as Java file or as a JAR of its own, the plugin must be added to the `config.xml` file in your Cordova-Android application's `res/xml/` folder.
+
+    <plugin name="<service_name>" value="<full_name_including_namespace>"/>
+
+The service name should match what you use in the JavaScript `exec` call, and the value will be the full name of the Java class including the namespace. Without this added, the plugin may compile but 
+will not be reachable by Cordova.
+
+## Writing an Android Java Plugin
+
+We have JavaScript to fire off a plugin request to the native side. We
+have the Android Java plugin mapped properly via the `config.xml` file.
+So what does the final Android Java Plugin class look like?
+
+What gets dispatched to the plugin via JavaScript's `exec` function gets
+passed into the Plugin class's `execute` method. Most `execute`
+implementations look like this:
+
+    public PluginResult execute(String action, JSONArray args, String callbackId) {
+        PluginResult.Status status = PluginResult.Status.OK;
+        String result = "";
+
+        try {
+            if (action.equals("beep")) {
+                this.beep(args.getLong(0));
+            }
+            return new PluginResult(status, result);
+        } catch (JSONException e) {
+            return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
+        }
+    }
+
+Essentially we compare the value of the `action` parameter, and dispatch
+the request off to a (private) method in the class, optionally passing
+some of the parameters to the method.
+
+When catching exceptions and returning errors, it's important that the error we return to JavaScript match the Java exception as much as possible, for clarity.
+
+### Echo Plugin Android Plugin
+
+We would add the following to our config.xml:
+
+    <plugin name="Echo" value="org.apache.cordova.plugin.Echo" />
+
+Then we would add the following file to
+`src/org/apache/cordova/plugin/Echo.java` inside our Cordova-Android
+application:
+
+    package org.apache.cordova.plugin;
+
+    import org.apache.cordova.api.Plugin;
+    import org.apache.cordova.api.PluginResult;
+    import org.json.JSONArray;
+    import org.json.JSONException;
+    import org.json.JSONObject;
+
+    /**
+     * This class echoes a string called from JavaScript.
+     */
+    public class App extends Plugin {
+
+        /**
+         * Executes the request and returns PluginResult.
+         *
+         * @param action        The action to execute.
+         * @param args          JSONArry of arguments for the plugin.
+         * @param callbackId    The callback id used when calling back into JavaScript.
+         * @return              A PluginResult object with a status and message.
+         */
+        public PluginResult execute(String action, JSONArray args, String callbackId) {
+            try {
+                if (action.equals("echo")) {
+                    String echo = args.getString(0); 
+                    if (echo != null && echo.length() > 0) { 
+                        return new PluginResult(PluginResult.Status.OK, echo);
+                    } else {
+                        return new PluginResult(PluginResult.Status.ERROR);
+                    }
+                } else {
+                    return new PluginResult(PluginResult.Status.INVALID_ACTION);
+                }
+            } catch (JSONException e) {
+                return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
+            }
+        }
+    }
+
+Let's take a look at the code. At the top we have all of the necessary
+Cordova `import`s. Our class extends from `Plugin` - very important. The
+one method that the `Plugin` interface demands is the `execute` method.
+The method first compares against `action`: this plugin only supports
+one action, the `echo` action. Any other action will return a
+`PluginResult` with a status of `INVALID_ACTION` - this will translate
+into an error callback invocation on the JavaScript side. Next, we grab
+the echo string using the `getString` method on our `args`, telling it
+we want to get the 0th parameter in the parameter array. We do a bit of
+parameter checking: make sure it is not `null`, and make sure it is not
+a zero-length string. If it is, we return a `PluginResult` with an
+`ERROR` status (which, by now, you should now will invoke the error
+callback). If all of those checks pass, then we return a `PluginResult`
+with an `OK` status, and pass in the `echo` string we received in the
+first place as a parameter. This will finally translate into a success
+callback invocation on the JavaScript side. It will also pass the `echo`
+parameter as a parameter into the JavaScript success callback function.
+
+## Debugging Plugins
+
+Eclipse can be used to debug an Android project, and the plugins can be debugged if the Java source is included in the project. Only the latest version of the Android Dev Tools is known to allow source code attachment to JAR dependencies, this is not fully supported at this time.
+
+## Common Pitfalls
+
+* Plugins have access to a `CordovaInterface` object. This object has access to the Android `Activity` that is running the application. This is the `Context` required to launch
+a new Android `Intent`. The `CordovaInterface` allows plugins to start an `Activity` for a result, and to set the callback plugin for when the `Intent` comes back to the application. This is important, since the
+`Intent`s system is how Android communicates between processes.
+* Plugins do not have direct access to the `Context` as they have in the past. The legacy `ctx` member is deprecated, and will be removed six months after 2.0 is released. All the methods that `ctx` has exist on the `Context`, so both `getContext()` and `getActivity()` are capable of returning the proper object required.
+* Avoid calling JavaScript using `webView.loadUrl()`. The reason we have a callback server is to allow JavaScript execution to be thread-safe, and `loadUrl` explicitly interrupts the UI thread, and can affect the usability of your plugin.
diff --git a/docs/en/2.1.0/guide/plugin-development/bada/index.md b/docs/en/2.1.0/guide/plugin-development/bada/index.md
new file mode 100644
index 0000000..258bb23
--- /dev/null
+++ b/docs/en/2.1.0/guide/plugin-development/bada/index.md
@@ -0,0 +1,74 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Developing a Plugin on Bada
+===========================
+
+Plugins are only supported on Bada 2.0 and above. Bada 1.2 does not support plugins.
+
+The Bada implementation is a full javascript implementation. Therefore, adding a custom plugin involves updating CordovaJS with your plugin code. Follow these steps to add a simple _Hello World_ plugin:
+
+1. Clone the CordovaJS repository
+
+        git clone https://git-wip-us.apache.org/repos/asf/incubuator-cordova-js.git
+
+2. Create a new javascript file under __lib/bada/plugin/bada/__ and name it _HelloWorld.js_. Add the following content:
+
+        function HelloWorld() {
+        }
+
+        HelloWorld.prototype.printHello = function(success, fail, arg) {
+            alert(Osp.Core.StringHelper('Hello %1', arg[0]));
+        }
+
+        module.exports = new HelloWorld();
+
+3. Add a link to your newly created plugin in __lib/bada/platform.js__ under the objects property:
+    
+        objects: {
+            ...
+            HelloWorld: {
+                'cordova/plugin/bada/HelloWorld' 
+            },
+            ...
+        }
+        ...
+4. Update the plugin list under __lib/bada/exec.js__ to include your plugin
+
+        var plugins = {
+            ...
+            "HelloWorld": require('cordova/plugin/bada/HelloWorld')
+        };
+5. Now you can write your user-facing javascript however you like but remember that in order for your plugin to execute you need to call the following method
+
+        exec(succes, fail, 'HelloWorld', 'printHello', ['Jackson!']);
+
+    success is the success callback that gets executed when the plugin succeeds
+    fail is the failure callback that gets executed if the plugin fails
+    'HelloWorld' is the name of your plugin
+    'printHello' is your plugin action
+    Finally, the last argument is your plugin parameters (if any).
+
+6. Run the following command to generate the new common javascript (make sure you have the jake npm module installed)
+
+        jake
+
+7. Copy the newly generated javascript under __pkg/cordova.bada.js__ to your Bada project under __Res/js__
+
+6. That is it! You can now add new Bada plugins and implement the many features that are not currently supported by Cordova Bada.
diff --git a/docs/en/2.1.0/guide/plugin-development/blackberry/index.md b/docs/en/2.1.0/guide/plugin-development/blackberry/index.md
new file mode 100644
index 0000000..8d5cd02
--- /dev/null
+++ b/docs/en/2.1.0/guide/plugin-development/blackberry/index.md
@@ -0,0 +1,136 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Developing a Plugin on BlackBerry
+=================================
+
+## How to make the Echo plugin on Blackberry
+
+In this article, we will explore how to develop the Echo plugin on BlackBerry. If you haven't read the
+top level article about the JavaScript part of the plugin, it would be best if you read that first
+and then this article. In addition, please download the [Cordova Blackberry repo](https://git-wip-us.apache.org/repos/asf?p=incubator-cordova-blackberry-webworks.git;a=summary).
+
+To note, the Corodova-BlackBerry project allows you to deploy to BlackBerry devices like the 
+Torch, Bold, etc and as well as the Playbook. There exists a distinction between deploying to
+normal BlackBerry hand held devices (ie, Torch and Bold) and the Playbook. The code base between
+the two are separate so when you develop for one, you have to duplicate your efforts for the other!
+Therefore in this article, the focus will be on the hand held devices and not the tablet. In the future,
+this guide should cover both platforms.
+
+Continuing on from the previous article, the Echo plugin is essentially returning whatever message a user 
+provides to the `window.echo` function. 
+
+The Echo function:
+
+    window.echo = function(str, callback) {
+            cordova.exec(callback, function(err) {
+                callback('Nothing to echo.');
+            }, "Echo", "echo", [str]);
+        };
+
+## Modifying plugins.xml
+
+This file resides in your project's www folder and contains all of the references to the plugins that 
+your Cordova project uses. We are going to add an additional reference so that when cordova.exec is called,
+Cordova will know how to map the "Echo" argument of `cordova.exec` to the Echo class that we want to write natively.
+
+    <plugins>
+      ...
+      <plugin name="Echo" value="org.apache.cordova.echo.Echo"/>
+      ...
+    </plugins>
+
+## Adding Echo.java
+
+If you notice the structure of the value attribute, you'll see a defined path that leads to the Echo
+plugin. In the root folder of the Cordova BlackBerry Webworks repo, look for a folder called framework.
+This folder contains all of the source code that runs natively on the BlackBerry. cd into the folder 
+structure until you reach the path: `framework/ext/src/org/apache/cordova`. At this point, you'll see
+all of the plugin folders and inside each folder is the plugins' source code. So, we will add
+the folder echo to `framework/ext/src/org/apache/cordova/echo` and create a file called `Echo.java`
+at `framework/ext/src/org/apache/cordova/echo/Echo.java`.
+
+## Writing Echo.java
+
+The basic idea of writing a plugin is to create a class that extends the Plugin class and have
+a method called execute to return a PluginResult class. Any call to cordova.exec will pass in 
+the action that we want to execute within the class as well as the arguments. In this case,
+"echo" is the action we want to execute within the class "Echo" and [str] are the arguments we are passing in.
+
+    package org.apache.cordova.echo;
+
+    import org.apache.cordova.api.Plugin;
+    import org.apache.cordova.api.PluginResult;
+    import org.apache.cordova.json4j.JSONArray;
+    import org.apache.cordova.json4j.JSONException;
+    import org.apache.cordova.json4j.JSONObject;
+    /**
+     * A simple plugin to demonstrate how to build a plugin for Blackberry
+     * Basically echos back the msg that a user calls to this plugin 
+     */
+    public final class Echo extends Plugin {
+
+        public static final String echo = "echo";
+
+        public PluginResult execute(String action, JSONArray args, String callbackId) {
+            PluginResult result = new PluginResult(PluginResult.Status.INVALID_ACTION, "Echo: Invalid action:" + action);
+            if(action.equals(echo)){
+                try {
+                    String theMsg = args.getString(0);
+                    if(theMsg!= null || theMsg.length()>0){   
+                        result = new PluginResult(PluginResult.Status.OK, theMsg);
+                    }else{
+                        result = new PluginResult(PluginResult.Status.ERROR, "Nothing to echo.");
+                    }
+                } catch (JSONException e) {
+                    result = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
+                }
+            }
+
+            return result;
+        }
+
+    }
+
+So if we look at the code above, we can see that within the execute method, we are first looking for
+what actions are coming in. The Echo plugin has only one action, "echo" so we will be only checking for 
+that. If our plugin had more actions, it's simply a matter of adding more if-conditionals to check
+for those actions.
+
+We are then going to grab the message coming in from the arguments which is supplied by the args parameter.
+We can grab the first argument by simply doing `String theMsg = args.getString(0);`.
+
+We will do some error checking and if the message looks okay, we will instantiate a new PluginResult with
+an ok status: PluginResult.Status.OK and return the message: theMsg. After this, we will then return the 
+result which will then pass back to JavaScript to be fired in the success callback. If something should fail, 
+we can return various status exceptions like PluginResult.Status.ERROR, PluginResult.Status.JSON_EXCEPTION,
+or PluginResult.Status.INVALID_ACTION. When these types of results are passed back, they will fire the fail 
+callback in JavaScript. 
+
+## Updating the .jar in your project's www folder
+
+The addition of the Echo.java needs to be updated in your project so to build the .jar file, cd
+to the root directory of the BlackBerry Webworks repo. Use the ant command:
+
+    ant update -Dproject.path="~/path_to_my_project"
+
+This will build a new .jar file in the build/ext folder. Copy the `build/ext/cordova.jar` file into your
+project/www/ext folder. 
+
+If all goes well, that should allow you to use the Echo plugin in BlackBerry.
diff --git a/docs/en/2.1.0/guide/plugin-development/index.md b/docs/en/2.1.0/guide/plugin-development/index.md
new file mode 100644
index 0000000..2c6f0cf
--- /dev/null
+++ b/docs/en/2.1.0/guide/plugin-development/index.md
@@ -0,0 +1,112 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+# Plugin Development Guide
+
+A Cordova plugin bridges a bit of functionality between the WebView
+powering a Cordova application and the native platform the Cordova
+application is running on. Plugins are composed of a single JavaScript
+interface used across all platforms, and native implementations
+following platform-specific Plugin interfaces that the JavaScript will
+call into. It should be noted that all of the core Cordova APIs are
+implemented using this exact architecture.
+
+This guide will go through each step necessary to write a simple Echo
+Plugin. The Echo Plugin will pass a string from JavaScript and send it
+into the native environment for the supported platforms. The native code
+will then return the same string back into the callbacks inside the
+plugin's JavaScript.
+
+This guide should give anyone the necessary overview and level of
+detail to write more complex plugins.
+
+## JavaScript
+
+The entry point for any plugin is JavaScript. The reason developers use
+Cordova is so they can use and write JavaScript, not Objective-C,
+not Java, not C#. The JavaScript interface for your plugin is the
+front-facing and arguably most important part of your Cordova plugin.
+
+You can structure your plugin's JavaScript however you like. The one
+thing you _must_ use to communicate between the Cordova JavaScript
+ and native environments is the `cordova.exec` function. Here is an example:
+
+    cordova.exec(function(winParam) {}, function(error) {}, "service",
+                 "action", ["firstArgument", "secondArgument", 42,
+                 false]);
+
+The parameters explained in more detail:
+
+1. `function(winParam) {}` - Success function callback. Assuming your
+   `exec` call completes successfully, this function will be invoked
+    (optionally with any parameters you pass back to it)
+2. `function(error) {}` - Error function callback. If the operation does
+   not complete successfully, this function will be invoked (optionally
+   with an error parameter)
+3. `"service"` - The service name to call into on the native side. This
+   will be mapped to a native class. More on this in the native guides
+   below
+4. `"action"` - The action name to call into. This is picked up by the
+   native class receiving the `exec` call, and, depending on the
+   platform, essentially maps to a class's method. For more detail
+   please check out the native guides located at the end of this article.
+5. `[/* arguments */]` - Arguments to get passed into the native
+   environment
+
+### Echo Plugin JavaScript Example
+
+    window.echo = function(str, callback) {
+        cordova.exec(callback, function(err) {
+            callback('Nothing to echo.');
+        }, "Echo", "echo", [str]);
+    };
+
+Let's dive into this. The plugin attaches itself to `window`,
+specifically to the `echo` function. Plugin users would then use it as
+follows:
+
+    window.echo("echome", function(echoValue) {
+        alert(echoValue == "echome"); // should alert true.
+    });
+
+First, let's take a look at the last three arguments to the `exec`
+function. We will be calling the `Echo` "service", requesting the `echo`
+"action", and passing an array of arguments containing the echo string,
+which is the first parameter into the `window.echo` function.
+
+The success callback passed into `exec` is simply a reference to the
+callback function that `window.echo` takes. We do a bit more for the
+error callback: if the native side fires off the error callback, we
+simply invoke the success callback and pass into it a "default" string.
+
+## Native
+
+Once you have defined a JavaScript for your plugin, you need to
+complement it with at least one native implementation. Below are
+specific guides for each platform Cordova supports. The below guides
+will continue on building the simple Echo Plugin example we started in
+this guide.
+
+- Developing a Plugin on Android
+- Developing a Plugin on Bada
+- Developing a Plugin on BlackBerry
+- Developing a Plugin on iOS
+- Developing a Plugin on webOS
+- Developing a Plugin on Windows Phone
+- Developing a Plugin on Tizen
diff --git a/docs/en/2.1.0/guide/plugin-development/ios/index.md b/docs/en/2.1.0/guide/plugin-development/ios/index.md
new file mode 100644
index 0000000..4d1891d
--- /dev/null
+++ b/docs/en/2.1.0/guide/plugin-development/ios/index.md
@@ -0,0 +1,175 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements. See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership. The ASF licenses this file
+         to you 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.
+---
+
+# Developing a Plugin on iOS
+
+Writing a plugin requires an understanding of the architecture of Cordova-iOS. Cordova-iOS consists of a UIWebView where intercept commands passed in as url changes. These plugins are represented as class mappings in the Cordova.plist file, under the Plugins key.
+
+A plugin is an Objective-C class that extends the `CDVPlugin` class.
+
+## Plugin Class Mapping 
+
+The JavaScript portion of a plugin always uses the `cordova.exec` method as follows:
+
+    exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
+
+This will marshall a request from the UIWebView to the iOS native side, more or less boiling down to calling the `action` method on the `service` class, with the arguments passed in the `args` Array. 
+
+The plugin must be added to `Plugins` key (a Dictionary) of the `Cordova.plist` file in your Cordova-iOS application's project folder.
+
+    <key>service_name</key>
+    <string>PluginClassName</string>
+
+The key `service_name` should match what you use in the JavaScript `exec` call, and the value will be the name of the Objective-C class of the plugin. Without this added, the plugin may compile but will not be reachable by Cordova.
+
+## Writing an iOS Cordova Plugin
+
+We have JavaScript fire off a plugin request to the native side. We have the iOS Objective-C plugin mapped properly via the `Cordova.plist` file. So what does the final iOS Objective-C Plugin class look like?
+
+What gets dispatched to the plugin via JavaScript's `exec` function gets passed into the corresponding Plugin class's `action` method. A plugin method has this signature:
+
+    - (void) myMethod:(CDVInvokedUrlCommand*)command
+    {
+        CDVPluginResult* pluginResult = nil;
+        NSString* javaScript = nil;
+
+        @try {
+            NSString* myarg = [command.arguments objectAtIndex:0];
+
+            if (myarg != nil) {
+                pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
+                javaScript = [pluginResult toSuccessCallbackString:command.callbackId];
+            } 
+        } @catch (id exception) {
+            pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_JSON_EXCEPTION messageAsString:[exception reason]];
+            javaScript = [pluginResult toErrorCallbackString:command.callbackId];
+        }
+
+        [self writeJavascript:javaScript];
+    }
+    
+1. [CDVInvokedUrlCommand.h](https://github.com/apache/incubator-cordova-ios/blob/master/CordovaLib/Classes/CDVInvokedUrlCommand.h)
+2. [CDVPluginResult.h](https://github.com/apache/incubator-cordova-ios/blob/master/CordovaLib/Classes/CDVPluginResult.h)
+
+  
+## Plugin Signatures
+
+The **new signature** supported beginning in **Cordova 2.1.0** is:
+
+        - (void) myMethod:(CDVInvokedUrlCommand*)command;
+
+The **old (deprecated)** signature is:
+
+        - (void) myMethod:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
+
+Basically, the options dictionary has been removed for the new signature, and the callbackId is not the 0th index item for the arguments array, but it is now in a separate property. 
+
+## Echo Plugin iOS Plugin
+
+We would add the following to the `Plugins` key (a Dictionary) of the project's `Cordova.plist` file:
+
+    <key>Echo</key>
+    <string>Echo</string>
+
+Then we would add the following files (`Echo.h` and `Echo.m`) to the Plugins folder inside our Cordova-iOS
+application folder:
+
+    /********* Echo.h Cordova Plugin Header *******/
+
+    #import <Cordova/CDV.h>
+
+    @interface Echo : CDVPlugin
+
+    - (void) echo:(CDVInvokedUrlCommand*)command;
+
+    @end
+    
+    /********* Echo.m Cordova Plugin Implementation *******/
+    
+    #import "Echo.h"
+    #import <Cordova/CDV.h>
+
+    @implementation Echo
+
+    - (void) echo:(CDVInvokedUrlCommand*)command
+    {
+        CDVPluginResult* pluginResult = nil;
+        NSString* javaScript = nil;
+
+        @try {
+            NSString* echo = [command.arguments objectAtIndex:0];
+
+            if (echo != nil && [echo length] > 0) {
+                pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:echo];
+                javaScript = [pluginResult toSuccessCallbackString:command.callbackId];
+            } else {
+                pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];
+                javaScript = [pluginResult toErrorCallbackString:command.callbackId];
+            }
+        } @catch (NSException* exception) {
+            pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_JSON_EXCEPTION messageAsString:[exception reason]];
+            javaScript = [pluginResult toErrorCallbackString:command.callbackId];
+        }
+
+        [self writeJavascript:javaScript];
+    }
+
+    @end
+
+
+Let's take a look at the code. At the top we have all of the necessary Cordova imports. Our class extends from `CDVPlugin` - very important. 
+
+This plugin only supports one action, the `echo` action. First, we grab the echo string using the `objectAtIndex` method on our `args`, telling it we want to get the 0th parameter in the arguments array. We do a bit of parameter checking: make sure it is not `nil`, and make sure it is not a zero-length string.
+
+If it is, we return a `PluginResult` with an `ERROR` status. If all of those checks pass, then we return a `PluginResult` with an `OK` status, and pass in the `echo` string we received in the first place as a parameter. Then, we convert the `PluginResult` to JavaScript by calling either the `toSuccessCallbackString` (if it was OK) or `toErrorCallbackString` (if it was an error) methods.
+
+Finally we write the JavaScript back to the UIWebView, which will execute the JavaScript that will callback to success or failure callbacks of the exec method on the JavaScript side. If the success callback was called, it will pass the `echo` parameter as a parameter.
+
+## Advanced Plugin Functionality
+
+See other methods that you can override in:
+
+1. [CDVPlugin.h](https://github.com/apache/incubator-cordova-ios/blob/master/CordovaLib/Classes/CDVPlugin.h)
+2. [CDVPlugin.m](https://github.com/apache/incubator-cordova-ios/blob/master/CordovaLib/Classes/CDVPlugin.m)
+
+For example, you can hook into the pause, resume, app terminate and handleOpenURL events.
+
+## Debugging Plugins
+
+To debug the Objective-C side, you would use Xcode's built in debugger. For JavaScript, you can use [Weinre, an Apache Cordova Project](https://github.com/apache/incubator-cordova-weinre) or [iWebInspector, a third-party utility](http://www.iwebinspector.com/)
+
+For iOS 6, you would use Safari 6.0 to simply attach to your app running in the iOS 6 Simulator.
+
+## Common Pitfalls
+
+* Don't forget to add your plugin's mapping to Cordova.plist - if you forgot, an error will be printed to the Xcode console log
+* Don't forget to add any hosts you connect to in the [whitelist](guide_whitelist_index.md.html#Domain%20Whitelist%20Guide) - if you forgot, an error will be printed to the Xcode console log
+* If you handle the resume event, and the app resumes, you can hang the app if you send out a JavaScript call that executes a native function, like alerts. To be safe, wrap your JavaScript call in a setTimeout call, with a timeout value of zero:
+
+        setTimeout(function() {
+            // do your thing here!
+        }, 0);
+
+## Deprecated Plugin Signature Note
+
+The **old (deprecated)** signature is:
+
+        - (void) myMethod:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
+
+The options parameter for the Objective-C plugin method is being deprecated, and it should not be used. For legacy reasons - the last JavaScript object passed in the args Array will be passed in as the options dictionary of the method in Objective-C. You must make sure that any JavaScript object that is passed in as an element in the args array occurs as the last item in the Array, if not it will throw off the array index of all subsequent parameters of the Array in Objective-C. Only one JavaScript object is supported for the options dictionary, and only the last one encountered will be passed to the native method. It is because of these error-prone reasons that they are being deprecated.
\ No newline at end of file
diff --git a/docs/en/2.1.0/guide/plugin-development/tizen/index.md b/docs/en/2.1.0/guide/plugin-development/tizen/index.md
new file mode 100644
index 0000000..5736f29
--- /dev/null
+++ b/docs/en/2.1.0/guide/plugin-development/tizen/index.md
@@ -0,0 +1,23 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Developing a Plugin on Tizen
+============================
+
+Plugins are currently not supported by the Tizen platform.
diff --git a/docs/en/2.1.0/guide/plugin-development/webos/index.md b/docs/en/2.1.0/guide/plugin-development/webos/index.md
new file mode 100644
index 0000000..a66ef9f
--- /dev/null
+++ b/docs/en/2.1.0/guide/plugin-development/webos/index.md
@@ -0,0 +1,23 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Developing a Plugin on webOS
+============================
+
+Plugins are currently not supported by the webOS platform.
diff --git a/docs/en/2.1.0/guide/plugin-development/windows-phone/index.md b/docs/en/2.1.0/guide/plugin-development/windows-phone/index.md
new file mode 100644
index 0000000..c33a54f
--- /dev/null
+++ b/docs/en/2.1.0/guide/plugin-development/windows-phone/index.md
@@ -0,0 +1,191 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Developing a Plugin on Windows Phone
+====================================
+
+Writing a plugin for Cordova on Windows Phone requires a basic understanding of
+the architecture of Cordova. Cordova-WP7 consists of a WebBrowser which hosts the
+application javascript code and manages native API calls. There is a BaseCommand
+(`WP7CordovaClassLib.Cordova.Commands.BaseCommand`) class in C# which you can extend,
+and it comes with the majority of the 'plumbing' built for you already.
+
+1. Select your project, and right click choose 'Add -> New Item ...'
+    - Preferably add it to the 'Plugins' folder, but it is up to you
+2. Select 'Class' and name it `Echo.cs`
+    - The name of this class must EXACTLY match what you call into `cordova.exec(win, fail, "Echo", ...)`
+3. Include the base classes implementation
+
+        using WP7CordovaClassLib.Cordova;
+        using WP7CordovaClassLib.Cordova.Commands;
+        using WP7CordovaClassLib.Cordova.JSON;
+
+4. Extend your class from BaseCommand
+
+        public class Echo : BaseCommand
+        {
+            // ...
+        }
+
+5. Add a method that is callable from JS
+
+        public class Echo : BaseCommand
+        {
+            public void echo(string options)
+            {
+                // all JS callable plugin methods MUST have this signature!
+                // public, returning void, 1 argument that is a string
+            }
+        }
+
+Namespaces
+----------
+
+The default namespace for unqualified commands is:
+
+    namespace Cordova.Extension.Commands
+    {
+        // ...
+    }
+
+If you would like to use your own namespace, you will need to make a fully qualified
+call to `cordova.exec`. For example, if you wanted to define your C# class like this:
+
+    namespace com.mydomain.cordovaExtensions
+    {
+        public class Echo : BaseCommand
+        {
+            // ...
+        }
+    }
+
+Then, in JS you would need to call exec like this:
+
+    codova.exec(win, fail, "com.mydomain.cordovaExtensions.Echo", ...);
+
+Interpretting your arguments in C#
+----------------------------------
+
+The data received by your plugin method is a string value, but in actuallality
+looking at our JavaScript code, we see our intention was to pass an array of strings.
+Looking back at our JS call to `cordova.exec`, we see we passed `[str]`:
+
+    cordova.exec(win, fail, "Echo", "echo", ["input string"]);
+
+If we inspect the options string passed in to our `Echo.echo` method, we will
+see that the value is actually:
+
+    "[\"input string\"]"
+
+All javascript exec arguments are JSON encoded before being passed into C#.
+
+If we want to treat this as the string we were expecting, we need to decode it.
+We can use simple JSON deserialization.
+
+    string optVal = JsonHelper.Deserialize<string[]>(options)[0];
+    // optVal now has the value of "input string"
+
+Passing results from C# to JS
+-----------------------------
+
+The base class BaseCommand provides methods for passing data to your JS callback handlers.
+To simply signal that the command has succeeded, when no additional result info is needed,
+you can can simply call:
+
+    DispatchCommandResult(); // calls back with an empty plugin result, considered a success callback
+
+To pass data back, you will need to call a different version of `DispatchCommandResult`:
+
+    DispatchCommandResult(new PluginResult(PluginResult.Status.OK, "Everything went as planned, this is a result that is passed to the success handler."));
+
+To pass structured object data back to JS, it should be encoded as a JSON string:
+
+    DispatchCommandResult(new PluginResult(PluginResult.Status.OK, "{result:\"super awesome!\"}"));
+
+If you need to signal that an error has occured, you can call `DispatchCommandResult` with a `PluginResult` object:
+
+    DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Echo signalled an error"));
+
+Handling serialization errors in your plugin's C# method
+--------------------------------------------------------
+
+When interpretting your arguments, it is a good idea to use a try/catch block
+in case we have bad input. This is a pattern used throughout the Cordova C# code:
+
+    string optVal = null;
+
+    try 
+    {
+        optVal = JsonHelper.Deserialize<string[]>(options)[0];
+    }
+    catch(Exception)
+    {
+        // simply catch the exception, we will handle null values and exceptions together
+    }
+
+    if (optVal == null)
+    {
+        DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+    }
+    else
+    {
+        // ... continue on to do our work
+    }
+
+Advanced Plugin Functionality
+-----------------------------
+
+See other methods that you can override in:
+
+1. [BaseCommand.cs](https://github.com/apache/incubator-cordova-wp7/blob/master/templates/standalone/cordovalib/Commands/BaseCommand.cs)
+
+For example, you can hook into the 'pause' and 'resume' application events.
+
+### Debugging Plugins
+
+To debug the C# side, you can use Visual Studio's debugger, just set a break point
+at any of the methods exposed by your class.
+
+Javascript is a little more difficult to debug on Windows Phone, you will need to
+use `console.log` to output the state of your plugin, or inform yourself of errors.
+
+Common Pitfalls
+---------------
+
+- Be careful when deciding on the arguments you pass to native in your JavaScript
+  implementation. Most device platforms expect the args passed to cordova.exec
+  to be an array, but if you have different types of objects in this array, it
+  becomes difficult or impossible to deserialize.
+
+        cordova.exec(win, fail, "ServiceName", "MethodName", ["this is a string", 54, {literal:'trouble'}]);
+
+    - This will mean that your C# code will receive a difficult to decode string value, such as:
+
+            "[\"this is a string\", 54, { literal:'trouble' }]"
+
+    - Consider converting ALL parameters to strings before calling exec:
+
+            cordova.exec(win, fail, "ServiceName", "MethodName", ["this is a string", "54", "{literal:'trouble'}"])	;
+
+            string[] optValues = JsonHelper.Deserialize<string[]>(options);
+
+- It is usually a good idea to do parameter checking in your JavaScript code,
+  before you call exec.  This will let you re-use more JS code between different
+  native implementations of your plugin.
+
diff --git a/docs/en/2.1.0/guide/upgrading/android/index.md b/docs/en/2.1.0/guide/upgrading/android/index.md
new file mode 100644
index 0000000..1c8f6de
--- /dev/null
+++ b/docs/en/2.1.0/guide/upgrading/android/index.md
@@ -0,0 +1,168 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Upgrading Cordova Android
+=========================
+
+
+This document is for people who need to upgrade their Cordova versions from an older version to a current version of Cordova.
+
+## Upgrade to 2.0.0 from 1.9.0 ##
+
+1. Remove cordova-1.9.0.jar from the libs directory in your project
+2. Add cordova-2.0.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new cordova-2.0.0.js into your project
+5. Update your HTML to use the new cordova-2.0.0.js file
+6. Copy the res/xml/config.xml to be the same as the one found in framework/res/xml/config.xmll
+
+### Notes about 2.0.0 release
+config.xml will be replacing cordova.xml and plugins.xml.  This new file is a combination of the previous two.  However, the
+old files are deprecated, and and while currently still work, will cease working in a future release.
+
+## Upgrade to 1.9.0 from 1.8.1 ##
+
+1. Remove cordova-1.8.0.jar from the libs directory in your project
+2. Add cordova-1.9.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new cordova-1.9.0.js into your project
+5. Update your HTML to use the new cordova-1.9.0.js file
+6. Update the res/xml/plugins.xml to be the same as the one found in framework/res/xml/plugins.xml
+
+### Notes about 1.9.0 release
+
+- Third-Party plugins may or may not work.  This is because of the introduction of the CordovaWebView.  These plugins need to get a context from the CordovaInterface using
+getContext() or getActivity().  If you are not an experienced Android developer, please contact the plugin maintainer and add this task to their bug tracker.
+
+## Upgrade to 1.8.0 from 1.8.0 ##
+
+1. Remove cordova-1.8.0.jar from the libs directory in your project
+2. Add cordova-1.8.1.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new cordova-1.8.1.js into your project
+5. Update your HTML to use the new cordova-1.8.1.js file
+6. Update the res/xml/plugins.xml to be the same as the one found in framework/res/xml/plugins.xml
+
+
+## Upgrade to 1.8.0 from 1.7.0 ##
+
+1. Remove cordova-1.7.0.jar from the libs directory in your project
+2. Add cordova-1.8.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new cordova-1.8.0.js into your project
+5. Update your HTML to use the new cordova-1.8.0.js file
+6. Update the res/xml/plugins.xml to be the same as the one found in framework/res/xml/plugins.xml
+
+
+
+
+## Upgrade to 1.8.0 from 1.7.0 ##
+
+1. Remove cordova-1.7.0.jar from the libs directory in your project
+2. Add cordova-1.8.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new cordova-1.8.0.js into your project
+5. Update your HTML to use the new cordova-1.8.0.js file
+6. Update the res/xml/plugins.xml to be the same as the one found in framework/res/xml/plugins.xml
+
+
+## Upgrade to 1.7.0 from 1.6.1 ##
+
+1. Remove cordova-1.6.1.jar from the libs directory in your project
+2. Add cordova-1.7.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new cordova-1.7.0.js into your project
+5. Update the res/xml/plugins.xml to be the same as the one found in framework/res/xml/plugins.xml
+
+
+## Upgrade to 1.6.1 from 1.6.0 ##
+
+1. Remove cordova-1.6.0.jar from the libs directory in your project
+2. Add cordova-1.6.1.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new cordova-1.6.1.js into your project
+5. Update the res/xml/plugins.xml to be the same as the one found in framework/res/xml/plugins.xml
+
+## Upgrade to 1.6.0 from 1.5.0 ##
+1. Remove cordova-1.5.0.jar from the libs directory in your project
+2. Add cordova-1.6.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new cordova-1.6.0.js into your project
+5. Update your HTML to use the new cordova-1.6.0.js file
+6. Update the res/xml/plugins.xml so that it is the same as the one found in framework/res/xml/plugins.xml
+7. Replace the res/xml/phonegap.xml with res/xml/cordova.xml so that it is the same as the one found in framework/res/xml/cordova.xml
+
+
+## Upgrade to 1.5.0 from 1.4.0##
+1. Remove phonegap-1.4.0.jar from the libs directory in your project
+2. Add cordova-1.5.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new cordova-1.5.0.js into your project
+5. Update your HTML to use the new cordova-1.5.0.js file
+6. Update the res/xml/plugins.xml so that it is the same as the one found in framework/res/xml/plugins.xml
+7. Replace the res/xml/phonegap.xml with res/xml/cordova.xml so that it is the same as the one found in framework/res/xml/cordova.xml
+
+## Upgrade to 1.4.0 from 1.3.0 ##
+1. Remove phonegap-1.3.0.jar from the libs directory in your project
+2. Add phonegap-1.4.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new phonegap-1.4.0.js into your project
+5. Update your HTML to use the new phonegap-1.4.0.js file
+6. Update the res/xml/plugins.xml so that it is the same as the one found in framework/res/xml/plugins.xml
+7. Update the res/xml/phonegap.xml so that it is the same as the one found in framework/res/xml/phonegap.xml
+
+
+## Upgrade to 1.3.0 from 1.2.0 ##
+1. Remove phonegap-1.2.0.jar from the libs directory in your project
+2. Add phonegap-1.3.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new phonegap-1.3.0.js into your project
+5. Update your HTML to use the new phonegap-1.2.0.js file
+6. Update the res/xml/plugins.xml so that it is the same as the one found in framework/res/xml/plugins.xml
+7. Update the res/xml/phonegap.xml so that it is the same as the one found in framework/res/xml/phonegap.xml
+
+
+## Upgrade to 1.2.0 from 1.1.0 ##
+1. Remove phonegap-1.1.0.jar from the libs directory in your project
+2. Add phonegap-1.2.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new phonegap-1.2.0.js into your project
+5. Update your HTML to use the new phonegap-1.2.0.js file
+6. Update the res/xml/plugins.xml so that it is the same as the one found in framework/res/xml/plugins.xml
+7. Update the res/xml/phonegap.xml so that it is the same as the one found in framework/res/xml/phonegap.xml
+
+
+## Upgrade to 1.1.0 from 1.0.0 ##
+1. Remove phonegap-1.0.0.jar from the libs directory in your project
+2. Add phonegap-1.1.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new phonegap-1.1.0.js into your project
+5. Update your HTML to use the new phonegap-1.1.0.js file
+6. Update the res/xml/plugins.xml so that it is the same as the one found in framework/res/xml/plugins.xml
+
+
+## Upgrade to 1.0.0 from 0.9.6 ##
+1. Remove phonegap-0.9.6.jar from the libs directory in your project
+2. Add phonegap-1.0.0.jar to the libs directory in your project
+3. If you are using Eclipse, please refresh your eclipse project and do a clean
+4. Copy the new phonegap-1.0.0.js into your project
+5. Update your HTML to use the new phonegap-1.0.0.js file
+6. Add the res/xml/plugins.xml so that it is the same as the one found in framework/res/xml/plugins.xml
+
+
diff --git a/docs/en/2.1.0/guide/upgrading/bada/index.md b/docs/en/2.1.0/guide/upgrading/bada/index.md
new file mode 100644
index 0000000..52d73ab
--- /dev/null
+++ b/docs/en/2.1.0/guide/upgrading/bada/index.md
@@ -0,0 +1,48 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Upgrading Cordova Bada
+======================
+
+This document is for people who need to upgrade their Cordova versions from an
+older version to a current version of Cordova.
+
+## Upgrade to 1.9.0 from 2.0.0 ##
+
+1. Update `Res/js/cordova.js` with the new JavaScript file.
+
+## Upgrade to 1.9.0 from 1.8.x ##
+
+1. Update `Res/js/cordova.js` with the new JavaScript file.
+
+## Upgrade to 1.8.x from 1.7.0 ##
+
+1. Remove the cordova.bada.js file from the Res/js directory 
+2. Add the new cordova.js file to your Res/js directory 
+3. Update your Res/index.html to reference cordova.js instead of cordova.bada.js 
+
+Change this line:
+
+    <script type="text/javascript" src="./js/cordova.bada.js"></script>
+to:
+
+    <script type="text/javascript" src="./js/cordova.js"></script>
+
+As of Cordova 1.8, Bada 1.2 is no longer supported! The repository will be kept
+there as an archive for people who still want to use it. It contains some outdated APIs.
diff --git a/docs/en/2.1.0/guide/upgrading/blackberry/index.md b/docs/en/2.1.0/guide/upgrading/blackberry/index.md
new file mode 100644
index 0000000..e7853e6
--- /dev/null
+++ b/docs/en/2.1.0/guide/upgrading/blackberry/index.md
@@ -0,0 +1,117 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Upgrading Cordova BlackBerry
+============================
+
+This document is for people who need to upgrade their Cordova versions from an older version to a current version of Cordova.
+
+## Upgrade to 2.0.0 from 1.9.0 ##
+
+Updating just the www folder:
+
+1. Open your `www/` folder, which contains your app.
+2. Remove and update the .jar file in the `ext/` folder.
+3. Update the contents of the `ext-air/` folder.
+4. Copy the new `cordova-2.0.0.js` into your project.
+    - If playbook, then update the .js file in the `playbook/` folder.
+5. Update your HTML to use the new `cordova-2.0.0.js` file.
+6. Update your `www/plugins.xml` file. Two plugins changed their
+   namespace/service label. Change the old entries for the Capture and
+   Contact plugins from:
+
+        <plugin name="Capture" value="org.apache.cordova.media.MediaCapture"/>
+        <plugin name="Contact" value="org.apache.cordova.pim.Contact"/>
+
+   To:
+
+        <plugin name="Capture" value="org.apache.cordova.capture.MediaCapture"/>
+        <plugin name="Contacts" value="org.apache.cordova.pim.Contact"/>
+
+
+Updating the sample folder (ie, updating using the ant tools):
+
+1. Open the `sample/lib/` folder.
+2. Update the .jar file in the `cordova.1.9.0/ext/` folder.
+3. Update the contents of the `cordova.1.9.0/ext-air/` folder.
+4. Update the .js file in the `cordova.1.9.0/javascript/` folder.
+5. Open the `sample/lib/` folder and rename the `cordova.1.9.0/` folder to `cordova.2.0.0/`.
+6. Type `ant blackberry build` or `ant playbook build` to update the `www/` folder with updated Cordova.
+7. Open the `www/` folder and update your HTML to use the new `cordova-2.0.0.js` file.
+8. Open the `www/` folder and update the `plugins.xml` file. Two plugins
+   changed their namespace/service label. Change the old entries for the
+   Capture and Contact plugins from:
+
+         <plugin name="Capture" value="org.apache.cordova.media.MediaCapture"/>
+         <plugin name="Contact" value="org.apache.cordova.pim.Contact"/>
+
+   To:
+
+         <plugin name="Capture" value="org.apache.cordova.capture.MediaCapture"/>
+         <plugin name="Contacts" value="org.apache.cordova.pim.Contact"/>
+
+
+
+
+- To upgrade to 1.8.0, please go from 1.7.0
+
+## Upgrade to 1.8.0 from 1.7.0 ##
+
+Updating just the www folder:
+
+1. Open your `www/` folder, which contains your app.
+2. Remove and update the .jar file in the `ext/` folder.
+3. Update the contents of the `ext-air/` folder.
+4. Copy the new `cordova-1.8.0.js` into your project.
+    - If playbook, then update the .js file in the `playbook/` folder.
+5. Update your HTML to use the new `cordova-1.8.0.js` file.
+6. Update your `www/plugins.xml` file. Two plugins changed their
+   namespace/service label. Change the old entries for the Capture and
+   Contact plugins from:
+
+        <plugin name="Capture" value="org.apache.cordova.media.MediaCapture"/>
+        <plugin name="Contact" value="org.apache.cordova.pim.Contact"/>
+
+   To:
+
+        <plugin name="Capture" value="org.apache.cordova.capture.MediaCapture"/>
+        <plugin name="Contacts" value="org.apache.cordova.pim.Contact"/>
+
+
+Updating the sample folder (ie, updating using the ant tools):
+
+1. Open the `sample/lib/` folder.
+2. Update the .jar file in the `cordova.1.7.0/ext/` folder.
+3. Update the contents of the `cordova.1.7.0/ext-air/` folder.
+4. Update the .js file in the `cordova.1.7.0/javascript/` folder.
+5. Open the `sample/lib/` folder and rename the `cordova.1.7.0/` folder to `cordova.1.8.0/`.
+6. Type `ant blackberry build` or `ant playbook build` to update the `www/` folder with updated Cordova.
+7. Open the `www/` folder and update your HTML to use the new `cordova-1.8.0.js` file.
+8. Open the `www/` folder and update the `plugins.xml` file. Two plugins
+   changed their namespace/service label. Change the old entries for the
+   Capture and Contact plugins from:
+
+         <plugin name="Capture" value="org.apache.cordova.media.MediaCapture"/>
+         <plugin name="Contact" value="org.apache.cordova.pim.Contact"/>
+
+   To:
+
+         <plugin name="Capture" value="org.apache.cordova.capture.MediaCapture"/>
+         <plugin name="Contacts" value="org.apache.cordova.pim.Contact"/>
+
diff --git a/docs/en/2.1.0/guide/upgrading/index.md b/docs/en/2.1.0/guide/upgrading/index.md
new file mode 100644
index 0000000..009d554
--- /dev/null
+++ b/docs/en/2.1.0/guide/upgrading/index.md
@@ -0,0 +1,32 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Upgrading Guides
+================
+
+> Learn how to upgrade an application to the latest Apache Cordova release.
+
+- Upgrading Cordova Android
+- Upgrading Cordova BlackBerry
+- Upgrading Cordova iOS
+- Upgrading Cordova Symbian
+- Upgrading Cordova webOS
+- Upgrading Cordova Windows Phone
+- Upgrading Cordova Bada
+- Upgrading Cordova Tizen
diff --git a/docs/en/2.1.0/guide/upgrading/ios/index.md b/docs/en/2.1.0/guide/upgrading/ios/index.md
new file mode 100644
index 0000000..94e9501
--- /dev/null
+++ b/docs/en/2.1.0/guide/upgrading/ios/index.md
@@ -0,0 +1,300 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Upgrading Cordova iOS
+=====================
+
+Please note that **Xcode 4 is required**. To submit to the Apple App Store, you must use the latest shipped version of the iOS SDK, which is iOS 5.1. The iOS 5.1 SDK requires Xcode 4.
+
+## Upgrading Cordova 2.0.0 projects to 2.1.0 ##
+
+With **Cordova 2.1.0**, CordovaLib has been upgraded to use **Automatic Reference Counting (ARC)**. You don't need to upgrade to **ARC** to use CordovaLib, but if you want to upgrade your project to use **ARC**, please use the Xcode migration wizard from the menu: **Edit -> Refactor -> Convert to Objective-C ARC…**, **de-select libCordova.a**, then run the wizard to completion. 
+
+1. **Download and extract the Cordova 2.1.0 source** to a **permanent folder location** on your hard drive (say to ~/Documents/Cordova-2.1.0)
+2. **Quit Xcode** if it is running.
+3. **Navigate** to the directory where you put the downloaded source above, using **Terminal.app**.
+5. [**Create a new project**](guide_command-line_index.md.html#Command-Line%20Usage_ios) from the command-line tools - you will have to grab the assets from this new project
+6. **Copy** the **www/cordova-2.1.0.js** file from the new project into your **www** folder, and delete your **www/cordova-2.0.0.js** file
+7. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **cordova-2.1.0.js** file
+8. Update (or replace, if you never changed the file) your **AppDelegate.m** according to the one from the new project:
+    - Edited -> application:didFinishLaunchingWithOptions:
+	- Added  -> application:supportedInterfaceOrientationsForWindow:
+9. Copy the **"cordova"** folder from the new project into your project's root folder **(in 2.1.0, this has the updated scripts to support paths with spaces)** 
+10. Remove the **VERSION** file reference from your **project** (**NOT** the one in CordovaLib)
+11. Next, update your CordovaLib sub-project reference. Beginning with Cordova 2.1.0, we are not using the CORDOVALIB Xcode variable anymore when referencing where CordovaLib resides, the reference is an absolute file reference now.
+    1. Launch **Terminal.app**
+    2. Go to the location where you installed Cordova **(see Step 1)**, in the **bin** sub-folder
+    3. Run the script below where the first parameter is the path to your project's **.xcodeproj** file:
+    
+        `update_cordova_subproject path/to/your/project/xcodeproj`
+
+
+## Upgrading Cordova 1.9.0 projects to 2.0.0 ##
+
+1. **Install** Cordova 2.0.0
+2. [**Create a new project**](guide_command-line_index.md.html#Command-Line%20Usage_ios) from the command-line tools - you will have to grab the assets from this new project
+3. **Copy** the **www/cordova-2.0.0.js** file from the new project into your **www** folder, and delete your **www/cordova-1.9.0.js** file
+4. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **cordova-2.0.0.js** file
+5. Copy the **"cordova"** folder from the new project into your project's root folder (if you want the project command-line tools) 
+6. **Add** a new entry under **Plugins** in your **Cordova.plist** file (under the **Supporting Files** group) - the key is **Device** and the value is **CDVDevice**
+7. Remove **Cordova.framework**
+8. Remove **verify.sh** from the **Supporting Files** group
+9. Select the **project icon** in the Project Navigator, select your project **Target**, then select the **"Build Settings"** tab
+10. Search for **"Preprocessor Macros"**, then remove all **"CORDOVA_FRAMEWORK=1"** values
+11. Locate the **CordovaLib** folder that was installed in your hard-drive under your home folder's **Documents** sub-folder.
+12. Locate the **CordovaLib.xcodeproj** file in the **CordovaLib** folder, then **drag and drop** the file into your project - it should appear as a **sub-project**.
+13. **Build** your project, you should get some **errors** relating to **#import** directives
+14. For the **#import errors**, change any **quote-based** imports in this style:
+
+        #import "CDV.h"
+        
+    to this **brackets-based** style:
+    
+        #import <Cordova/CDV.h>
+        
+    and remove any **#ifdef** wrappers around any Cordova imports, they are not needed anymore (the imports are **unified** now)    
+15. **Build** your project again, and it should not have any **#import** errors.
+16. Select the **project icon** in the Project Navigator, select your project **Target**, then select the **"Build Phases"** tab
+17. Expand the **"Target Dependencies"** phase, then select the **"+"** button
+18. Select the **"CordovaLib"** target, then select the **"Add"** button
+19. Expand the **first** **"Link Binary with Libraries"** phase (it should already contain a bunch of frameworks), then select the **"+"** button
+20. Select the **libCordova.a** static library, then select the **"Add"** button
+21. Delete the **"Run Script"** phase.
+22. Select the **project icon** in the Project Navigator, select your project **Target**, then select the **"Build Settings"** tab
+23. Search for **"Other Linker Flags"**, and add the values **-all_load** and **-Obj-C**
+24. Expand the **"CordovaLib" sub-project**
+25. Locate the **"VERSION"** file, drag it into your main project (we want to create a link to it, not a copy)
+26. Select the **"Create groups for any added folders"** radiobutton, then select the **"Finish"** button
+27. Select the **"VERSION"** file that you just dragged in a previous step
+28. Press the key combination **Option-Command-1** to show the **File Inspector** (or menuitem **View -> Utilities -> Show File Inspector**)
+29. Choose **"Relative to CORDOVALIB"** in the **File Inspector** for the drop-down menu for **Location**
+30. Set the Xcode preference **"Xcode Preferences -> Locations -> Derived Data -> Advanced…"** to **"Unique"** (this is so the unified headers can be found)
+31. Select the **project icon** in the Project Navigator, select your **Target**, then select the **"Build Settings"** tab
+32. Search for **"Header Search Paths"**. For that setting, add these three values below (with quotes):
+
+        "$(TARGET_BUILD_DIR)/usr/local/lib/include"
+    
+        "$(OBJROOT)/UninstalledProducts/include"
+    
+        "$(BUILT_PRODUCTS_DIR)"
+
+33. Search for **"Other Linker Flags"**. For that setting, add this value below:
+
+        -weak_framework CoreFoundation
+
+34. **Build** your project, it should compile and link with **no issues**.
+35. **Select your project** from the **Scheme** drop-down, and then select **"iPhone 5.1 Simulator"**
+36. Select the **Run** button
+
+**NOTE:**<br /> 
+If your project is **not working** as expected in the Simulator, please **take a note of any errors** in the **console log in Xcode** for clues.
+
+## Upgrading Cordova 1.8.x projects to 1.9.0 ##
+
+1. **Install** Cordova 1.9.0
+2. **Create a new project** - you will have to grab assets from this new project
+3. **Copy** the **www/cordova-1.9.0.js** file from the new project into your **www** folder, and delete your **www/cordova-1.8.x.js** file
+4. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **cordova-1.9.0.js** file
+
+**Note:**
+
+1.9.0 supports the new **"BackupWebStorage"** boolean setting in Cordova.plist. By default, this setting is turned on, set it to "false" to turn it off - especially for iOS 6 - see [Release Notes - Safari and UIKit Section](https://developer.apple.com/library/prerelease/ios/#releasenotes/General/RN-iOSSDK-6_0/_index.html)
+
+
+## Upgrading Cordova 1.7.0 projects to 1.8.x ##
+
+1. **Install** Cordova 1.8.0
+2. **Create a new project** - you will have to grab assets from this new project
+3. **Copy** the **www/cordova-1.8.0.js** file from the new project into your **www** folder, and delete your **www/cordova-1.7.x.js** file
+4. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **cordova-1.8.0.js** file
+
+If you intend on using the **Capture API**, you will need the new **iPad retina-display** assets:
+
+1.  **Copy** the **Resources/Capture.bundle** item from the new project into your project folder, over-writing your existing **Resources/Capture.bundle** item
+2.  In your project, select the **Capture.bundle** item into Xcode into your Project Navigator, and press the **Delete** key, then select **Remove Reference** from the dialog that pops up.
+3.  Drag the new **Capture.bundle** from Step 1. above into Xcode into your Project Navigator, and select the **Create groups for any added folders** radio-button
+
+## Upgrading Cordova 1.6.x projects to 1.7.0 ##
+
+1. **Install** Cordova 1.7.0
+2. **Create a new project** - you will have to grab assets from this new project
+3. **Copy** the **www/cordova-1.7.0.js** file from the new project into your **www** folder, and delete your **www/cordova-1.6.0.js** file
+4. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **cordova-1.7.0.js** file
+
+## Upgrading Cordova 1.5.0 projects to 1.6.x ##
+
+1. **Install** Cordova 1.6.1
+2. **Make a backup** of **AppDelegate.m**, **AppDelegate.h**, **MainViewController.m**, **MainViewController.h**, and **Cordova.plist** in your project
+3. **Create a new project** - you will have to grab assets from this new project
+4. **Copy** these files from the **new** project into your 1.5.0 based project folder on disk, **replacing** any old files (**backup** your files first from step 2 above):
+
+        AppDelegate.h
+        AppDelegate.m
+        MainViewController.h
+        MainViewController.m
+        Cordova.plist
+5. **Add** all the new **MainViewController** and **AppDelegate** files into your Xcode project
+6. **Copy** the **www/cordova-1.6.1.js** file from the new project into your **www** folder, and delete your **www/cordova-1.5.0.js** file
+7. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **cordova-1.6.1.js** file
+8. **Add** the new **Cordova.plist** file into your project - this is because the core plugin service names needed to be changed to match the ones from Android and Blackberry, for a unified Cordova JavaScript file (cordova-js). 
+9. **Integrate** any settings, **Plugins** and **ExternalHosts** entries that you had in your **backed-up Cordova.plist** into the new **Cordova.plist**
+10. **Integrate** any project specific code that you have in your **backed-up AppDelegate.h and AppDelegate.m** into the new AppDelegate files. Any **UIWebViewDelegate** or **CDVCommandDelegate** code in **AppDelegate.m** will need to go into MainViewController.m now (see commented out sections in that file)
+11. **Integrate** any project specific code that you have in your **backed-up MainViewController.h and MainViewController.m** into the new MainViewController files
+12. Click on the **project icon** in the Project Navigator, select your **Project**, then select the **"Build Settings"** tab
+13. Enter **"Compiler for C/C++/Objective-C"** in the search field
+14. Select the **"Apple LLVM Compiler 3.1"** value
+
+
+## Upgrading Cordova 1.4.x projects to 1.5.0 ##
+
+1. **Install** Cordova 1.5.0
+2. **Create a new project** and run it once - you will have to grab assets from this new project
+3. **Copy** the **www/cordova-1.5.0.js** file from the new project into your **www** folder, and delete your **www/phonegap-1.4.x.js** file
+4. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new Cordova **cordova-1.5.0.js** file
+5. Find **"PhoneGap.framework"** in your Project Navigator, select it
+6. Press the **Delete** key and delete the **"PhoneGap.framework"** reference in the Project Navigator
+7. Press the key combination **Option-Command-A**, which should drop down a sheet to add files to your project (the **"Add Files..." sheet**). Make sure the **"Created groups for any added folders"** radio-button is selected
+8. Press the key combination **Shift-Command-G**, which should drop down another sheet for you to go to a folder (the **"Go to the folder:" sheet**)
+9. Enter **"/Users/Shared/Cordova/Frameworks/Cordova.framework"** in the **"Go to the folder:" sheet** and then press the **"Go"** button
+10. Press the **"Add"** button in the **"Add Files..." sheet**
+11. **Select "Cordova.framework"** in the Project Navigator
+12. Press the key combination **Option-Command-1** to show the **File Inspector**
+13. Choose **"Absolute Path"** in the **File Inspector** for the drop-down menu for **Location**
+14. Press the key combination **Option-Command-A**, which should drop down a sheet to add files to your project (the **"Add Files..." sheet**). Make sure the **"Created groups for any added folders"** radio-button is selected
+15. Press the key combination **Shift-Command-G**, which should drop down another sheet for you to go to a folder (the **"Go to the folder:" sheet**)
+16. Enter **"~/Documents/CordovaLib/Classes/deprecated"** in the **"Go to the folder:" sheet** and then press the **"Go"** button
+17. Press the **"Add"** button in the **"Add Files..." sheet**
+18. In your **AppDelegate.h, AppDelegate.m, and MainViewController.h** files - replace the whole **#ifdef PHONEGAP_FRAMEWORK** block with:
+
+        #import "CDVDeprecated.h"
+19. Click on the **project icon** in the Project Navigator, select your **Target**, then select the **"Build Settings"** tab
+20. Search for **"Framework Search Paths"**
+21. Replace the existing value with **"/Users/Shared/Cordova/Frameworks"** 
+22. Search for **"Preprocessor Macros"**
+23. For the first (combined) value, replace the value with **"CORDOVA_FRAMEWORK=YES"**
+24. Select the **"Build Phases"** tab
+25. Expand **"Run Script"**
+26. Replace any occurrences of **PhoneGap** with **Cordova**
+27. Find your **"PhoneGap.plist"** file in the Project Navigator, and click on the filename once to enter name edit mode
+28. Rename **"PhoneGap.plist"** to **"Cordova.plist"**
+29. Right-click on **"Cordova.plist"** and choose **"Open As" --> "Source Code"**
+30. Press **Option-Command-F**, choose **"Replace"** from the drop-down on the top left of the Source window
+31. Enter **com.phonegap** for the Find string, and **org.apache.cordova** for the Replace string - then press the **"Replace All"** button
+32. Enter **PG** for the Find string, and **CDV** for the Replace string - then press the **"Replace All"** button
+33. Press **Command-B** to build, you will still have deprecations that you can get rid of in the future (see **CDVDeprecated.h** - replace classes in your code that use PG* to CDV*, for example)
+
+## Upgrading Cordova 1.4.0 projects to 1.4.1 ##
+
+1. **Install** Cordova 1.4.1
+2. **Make a backup** of **MainViewController.m**
+3. **Create a new project** - you will have to grab assets from this new project
+4. **Copy** the **MainViewController.m** file from the **new** project into your 1.4.0 based project folder on disk, **replacing** the old file (**backup** your files first from step 2 above).
+5. **Add** the **MainViewController.m** file into your Xcode project
+6. **Integrate** any project specific code that you have in your **backed-up MainViewController.m** into the new file
+7. Updating the phonegap-X.X.X.js file is optional, nothing has changed in the JavaScript between 1.4.0 and 1.4.1
+
+## Upgrading Cordova 1.3.0 projects to 1.4.0 ##
+
+1. **Install** Cordova 1.4.0
+2. **Make a backup** of **AppDelegate.m** and **AppDelegate.h** in your project
+3. **Create a new project** - you will have to grab assets from this new project
+4. **Copy** these files from the **new** project into your 1.3.0 based project folder on disk, **replacing** any old files (**backup** your files first from step 2 above):
+
+        AppDelegate.h
+        AppDelegate.m
+        MainViewController.h
+        MainViewController.m
+        MainViewController.xib
+5. **Add** all the **MainViewController** files into your Xcode project
+6. **Copy** the **www/phonegap-1.4.0.js** file from the new project into your **www** folder, and delete your **www/phonegap-1.3.0.js** file
+7. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **phonegap-1.4.0.js** file
+8. **Add** a new entry under **Plugins** in your **PhoneGap.plist** file - key is **com.phonegap.battery** and the value is **PGBattery**
+9. **Integrate** any project specific code that you have in your **backed-up AppDelegate.h and AppDelegate.m** into the new AppDelegate files
+
+## Upgrading Cordova 1.2.0 projects to 1.3.0 ##
+
+1. **Install** Cordova 1.3.0
+2. **Make a backup** of **AppDelegate.m** and **AppDelegate.h** in your project
+3. **Create a new project** - you will have to grab assets from this new project
+4. **Copy** these files from the **new** project into your 1.2.0 based project folder on disk, **replacing** any old files (**backup** your files first from step 2 above):
+
+        AppDelegate.h
+        AppDelegate.m
+        MainViewController.h
+        MainViewController.m
+        MainViewController.xib
+5. **Add** all the **MainViewController** files into your Xcode project
+6. **Copy** the **www/phonegap-1.3.0.js** file from the new project into your **www** folder, and delete your **www/phonegap-1.2.0.js** file
+7. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **phonegap-1.3.0.js** file
+8. **Add** a new entry under **Plugins** in your **PhoneGap.plist** file - key is **com.phonegap.battery** and the value is **PGBattery**
+9. **Integrate** any project specific code that you have in your **backed-up AppDelegate.h and AppDelegate.m** into the new AppDelegate files
+
+## Upgrading Cordova 1.1.0 projects to 1.2.0 ##
+
+1. **Install** Cordova 1.2.0
+2. **Make a backup** of **AppDelegate.m** and **AppDelegate.h** in your project
+3. **Create a new project** - you will have to grab assets from this new project
+4. **Copy** these files from the **new** project into your 1.1.0 based project folder on disk, **replacing** any old files (**backup** your files first from step 2 above):
+
+        AppDelegate.h
+        AppDelegate.m
+        MainViewController.h
+        MainViewController.m
+        MainViewController.xib
+5. **Add** all the **MainViewController** files into your Xcode project
+6. **Copy** the **www/phonegap-1.2.0.js** file from the new project into your **www** folder, and delete your **www/phonegap-1.1.0.js** file
+7. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **phonegap-1.2.0.js** file
+8. **Add** a new entry under **Plugins** in your **PhoneGap.plist** file - key is **com.phonegap.battery** and the value is **PGBattery**
+9. **Integrate** any project specific code that you have in your **backed-up AppDelegate.h and AppDelegate.m** into the new AppDelegate files
+
+## Upgrading Cordova 1.0.0 projects to 1.1.0 ##
+
+1. **Install** Cordova 1.1.0
+2. **Make a backup** of **AppDelegate.m** and **AppDelegate.h** in your project
+3. **Create a new project** - you will have to grab assets from this new project
+4. **Copy** these files from the **new** project into your 1.0.0 based project folder on disk, **replacing** any old files (**backup** your files first from step 2 above):
+
+        AppDelegate.h
+        AppDelegate.m
+        MainViewController.h
+        MainViewController.m
+        MainViewController.xib
+5. **Add** all the **MainViewController** files into your Xcode project
+6. **Copy** the **www/phonegap-1.1.0.js** file from the new project into your **www** folder, and delete your **www/phonegap-1.0.0.js** file
+7. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **phonegap-1.1.0.js** file
+8. **Add** a new entry under **Plugins** in your **PhoneGap.plist** file - key is **com.phonegap.battery** and the value is **PGBattery**
+9. **Integrate** any project specific code that you have in your **backed-up AppDelegate.h and AppDelegate.m** into the new AppDelegate files
+
+## Upgrading Cordova 0.9.6 projects to 1.0.0 ##
+
+1. **Install** Cordova 1.0.0
+2. **Make a backup** of **AppDelegate.m** and **AppDelegate.h** in your project
+3. **Create a new project** - you will have to grab assets from this new project
+4. **Copy** these files from the **new** project into your 0.9.6 based project folder on disk, **replacing** any old files (**backup** your files first from step 2 above):
+
+        AppDelegate.h
+        AppDelegate.m
+        MainViewController.h
+        MainViewController.m
+        MainViewController.xib
+5. **Add** all the **MainViewController** files into your Xcode project
+6. **Copy** the **www/phonegap-1.0.0.js** file from the new project into your **www** folder, and delete your **www/phonegap-0.9.6.js** file
+7. **Update** the Cordova script reference in your **www/index.html** file (and any other files that contain the script reference) to point to the new **phonegap-1.0.0.js** file
+8. **Add** a new entry under **Plugins** in your **PhoneGap.plist** file - key is **com.phonegap.battery** and the value is **PGBattery**
+9. **Integrate** any project specific code that you have in your **backed-up AppDelegate.h and AppDelegate.m** into the new AppDelegate files
diff --git a/docs/en/2.1.0/guide/upgrading/symbian/index.md b/docs/en/2.1.0/guide/upgrading/symbian/index.md
new file mode 100644
index 0000000..77c3d0e
--- /dev/null
+++ b/docs/en/2.1.0/guide/upgrading/symbian/index.md
@@ -0,0 +1,21 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Upgrading Cordova Symbian
+=========================
diff --git a/docs/en/2.1.0/guide/upgrading/tizen/index.md b/docs/en/2.1.0/guide/upgrading/tizen/index.md
new file mode 100644
index 0000000..e575141
--- /dev/null
+++ b/docs/en/2.1.0/guide/upgrading/tizen/index.md
@@ -0,0 +1,23 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Upgrading Cordova Tizen
+======================
+
+This document is for people who need to upgrade their Cordova versions from an older version to a current version of Cordova.
diff --git a/docs/en/2.1.0/guide/upgrading/webos/index.md b/docs/en/2.1.0/guide/upgrading/webos/index.md
new file mode 100644
index 0000000..a4d4bb1
--- /dev/null
+++ b/docs/en/2.1.0/guide/upgrading/webos/index.md
@@ -0,0 +1,38 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Upgrading Cordova webOS
+=======================
+
+This document is for people who need to upgrade their Cordova versions from an older version to a current version of Cordova.
+
+## Upgrade to 2.1.0 from 2.0.0 ##
+
+1. remove cordova-2.0.0.js from your project
+
+2. update the following line in your index.html:
+
+    change this:
+    <script type="text/javascript" src="cordova-2.0.0.js"></script> 
+    
+    to:
+    <script type="text/javascript" src="cordova-2.1.0.js"></script> 
+
+3. run the makefile to generate the newest version of the cordova-2.1.0.js file
+
diff --git a/docs/en/2.1.0/guide/upgrading/windows-phone/index.md b/docs/en/2.1.0/guide/upgrading/windows-phone/index.md
new file mode 100644
index 0000000..74cbaf3
--- /dev/null
+++ b/docs/en/2.1.0/guide/upgrading/windows-phone/index.md
@@ -0,0 +1,147 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Upgrading Cordova Windows Phone
+===============================
+
+This document is for people who need to upgrade their Cordova versions from an older version to a current version of Cordova.
+
+## Upgrade to 2.0.0 from 1.9.0 ##
+
+There have been considerable changes to the WP7 project structure in Apache Cordova 2.0.0 which make this upgrade a little more involved that the others. Essentially this is not an upgrade but creation of a new project and copy over of existing source files.
+
+### In Visual Studio's Solution Explorer window:
+1. Create a new Apache Cordova WP7 2.0 Project
+2. Copy the contents of your 'www' folder to the new project, and be sure these items are added to the VS project.
+3. Update your HTML to use the new cordova-2.0.0.js file.
+4. Copy and overwrite any splash screen, or icon images.
+5. Copy over any plugins from the plugins folder to the new project and ensure that they are also added to the VS project.
+6. Build and test.
+
+
+## Upgrade to 1.9.0 from 1.8.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.9.0.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.9.0.js file.
+
+
+## Upgrade to 1.8.0 from 1.7.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.8.0.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.8.0.js file.
+
+## Upgrade to 1.7.0 from 1.6.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.7.0.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.7.0.js file.
+
+## Upgrade to 1.6.1 from 1.6.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.6.1.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.6.1.js file.
+
+## Upgrade to 1.6.0 from 1.5.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.6.0.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.6.0.js file.
+
+## Upgrade to 1.5.0 from 1.4.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.5.0.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.5.0.js file.
+
+## Upgrade to 1.4.0 from 1.3.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.4.0.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.4.0.js file.
+
+## Upgrade to 1.3.0 from 1.2.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.3.0.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.3.0.js file.
+
+## Upgrade to 1.2.0 from 1.1.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.2.0.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.2.0.js file.
+
+## Upgrade to 1.1.0 from 1.0.0 ##
+
+### In Visual Studio's Solution Explorer window:
+1. Delete the file GapLib/WP7CordovaClassLib.dll from your project.
+2. Remove the reference to WP7CordovaClassLib in the References folder.
+3. Right-Click on References and Select 'Add Reference'
+4. Navigate to the new distribution and add the file 'WP7CordovaClassLib.dll'
+    - note: you can view the version of the DLL by right-clicking on the reference, and selecting Properties.
+5. Copy the new cordova-1.1.0.js into your project ( be sure it is marked as Content )
+6. Update your HTML to use the new cordova-1.1.0.js file.
\ No newline at end of file
diff --git a/docs/en/2.1.0/guide/whitelist/index.md b/docs/en/2.1.0/guide/whitelist/index.md
new file mode 100644
index 0000000..c7d8055
--- /dev/null
+++ b/docs/en/2.1.0/guide/whitelist/index.md
@@ -0,0 +1,189 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+Domain Whitelist Guide
+=====================
+
+Overview
+--------
+
+Domain whitelisting in Apache Cordova is a security model that controls access to outside domains, such as `http://google.com`. The default security policy is to block all network access. The application developer can then delcare access to specific network domains and subdomains.
+
+Specification
+-------------
+
+Domain whitelisting lays the ground work for the [W3C Widget Access][1] specification. In the Widget Access specification, the `<access>` element is used to declare access to specific network domains. In the future, Apache Cordova will abstract the platform whitelisting implementations to the W3C Widget Access specification. However, for now each platform must implement it's own domain whitelisting.
+
+Syntax
+------
+
+Access to [google.com][2]:
+
+    http://google.com
+
+Access to the secure [google.com][3] (`https://`):
+
+    https://google.com
+
+Access to the subdomain [maps.google.com][4]:
+
+    http://maps.google.com
+
+Access to all the subdomains on [google.com][2] (e.g. [mail.google.com][5] and [docs.google.com][6]):
+
+    http://*.google.com
+
+Access to all domains (e.g. [google.com][2] and [developer.mozilla.org][7]):
+
+    *
+
+Android
+-------
+
+### Details
+
+The whitelisting rules are found in `res/xml/cordova.xml` and declared with the element `<access origin="..." />`.
+
+Android has full support for the whitelisting syntax.
+
+### Syntax
+
+Access to [google.com][2]:
+
+    <access origin="http://google.com" />
+
+Bada
+----
+
+Domain whitelisting is unsupported on Bada. By default, all domains are accessible.
+
+BlackBerry
+----------
+
+### Details
+
+The whitelisting rules are found in `www/config.xml` and declared with the element `<access uri="..." />`.
+
+For a complete reference, see the [BlackBerry WebWorks Access Element documentation][8].
+
+### Syntax
+
+Access to [google.com][2]:
+
+    <access uri="http://google.com" subdomains="false" />
+
+Access to  [maps.google.com][4]:
+
+    <access uri="http://maps.google.com" subdomains="false" />
+
+Access to all the subdomains on [google.com][2]:
+
+    <access uri="http://google.com" subdomains="true" />
+
+Access to all domains, including `file://` protocol:
+
+    <access uri="*" subdomains="true" />
+
+iOS
+---
+
+### Details
+
+1. Open `Cordova.plist`.
+    - In Xcode, it is found at `AppName/Resources/Cordova.plist`
+    - In the directory, it is found at `AppName/Cordova.plist`
+2. Add a new `String` value under the `ExternalHosts` key.
+    - We recommend using Xcode to avoid editing raw XML.
+
+
+### Syntax
+
+Access to [google.com][2] and the secure [google.com][3] (`https://`):
+
+    google.com
+
+Access to the subdomain [maps.google.com][4]:
+
+    maps.google.com
+
+Access to all the subdomains on [google.com][2] (e.g. [mail.google.com][5] and [docs.google.com][6]):
+
+    *.google.com
+
+Access to all domains (e.g. [google.com][2] and [developer.mozilla.org][7]):
+
+    *
+
+Wildcards on iOS (`*`) are more flexible than the [W3C Widget Access][1] specification.
+
+Access to all subdomains and TLDs (`.com`, `.net`, etc):
+
+    *.google.*
+
+Symbian
+-------
+
+Domain whitelisting is unsupported on Symbian. By default, all domains are accessible.
+
+webOS
+-----
+
+Domain whitelisting is unsupported on webOS. By default, all domains are accessible.
+
+Windows Phone
+-------------
+
+Domain whitelisting is unsupported on Windows Phone. By default, all domains are accessible.
+
+Tizen
+----------
+
+### Details
+
+The domain whitelisting rules are found in `config.xml` located in your application root directory.
+They are declared with the element `<access origin="..." />`.
+For a complete reference, see the [Tizen Accessing External Network Resources documentation][10].
+
+### Syntax
+
+Access to [google.com][2]:
+
+    <access origin="http://google.com" subdomains="false" />
+
+Access to the secure [google.com][3] (`https://`):
+
+    <access origin="https://google.com" subdomains="false" />
+
+Access to all the subdomains on [google.com][2]:
+
+    <access origin="http://google.com" subdomains="true" />
+
+Access to all domains, including `file://` protocol:
+
+    <access origin="*" subdomains="true" />
+
+[1]: http://www.w3.org/TR/widgets-access/
+[2]: http://google.com
+[3]: https://google.com
+[4]: http://maps.google.com
+[5]: http://mail.google.com
+[6]: http://docs.google.com
+[7]: http://developer.mozilla.org
+[8]: https://developer.blackberry.com/html5/documentation/ww_developing/Access_element_834677_11.html
+[9]: https://developer.tizen.org/help/topic/org.tizen.help.gs/Creating%20a%20Project.html?path=0_1_1_4#8814682_CreatingaProject-AccessingExternalNetworkResources
diff --git a/docs/en/2.1.0/index.md b/docs/en/2.1.0/index.md
new file mode 100644
index 0000000..8bfe824
--- /dev/null
+++ b/docs/en/2.1.0/index.md
@@ -0,0 +1,107 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+         or more contributor license agreements.  See the NOTICE file
+         distributed with this work for additional information
+         regarding copyright ownership.  The ASF licenses this file
+         to you 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.
+---
+
+<div id="home">
+    <h1>API Reference</h1>
+    <ul>
+        <li>
+            <h2>Accelerometer</h2>
+            <span>Tap into the device's motion sensor.</span>
+        </li>
+        <li>
+            <h2>Camera</h2>
+            <span>Capture a photo using the device's camera.</span>
+        </li>
+        <li>
+            <h2>Capture</h2>
+            <span>Capture media files using device's media capture applications.</span>
+        </li>
+        <li>
+            <h2>Compass</h2>
+            <span>Obtain the direction that the device is pointing.</span>
+        </li>
+        <li>
+            <h2>Connection</h2>
+            <span>Quickly check the network state, and cellular network information.</span>
+        </li>
+        <li>
+            <h2>Contacts</h2>
+            <span>Work with the devices contact database.</span>
+        </li>
+        <li>
+            <h2>Device</h2>
+            <span>Gather device specific information.</span>
+        </li>
+        <li>
+            <h2>Events</h2>
+            <span>Hook into native events through JavaScript.</span>
+        </li>
+        <li>
+            <h2>File</h2>
+            <span>Hook into native file system through JavaScript.</span>
+        </li>
+        <li>
+            <h2>Geolocation</h2>
+            <span>Make your application location aware.</span>
+        </li>
+        <li>
+            <h2>Media</h2>
+            <span>Record and play back audio files.</span>
+        </li>
+        <li>
+            <h2>Notification</h2>
+            <span>Visual, audible, and tactile device notifications.</span>
+        </li>
+        <li>
+            <h2>Storage</h2>
+            <span>Hook into the devices native storage options.</span>
+        </li>
+    </ul>
+    <h1>Guides</h1>
+    <ul>
+        <li>
+            <h2>Getting Started Guides</h2>
+            <span>Setup each SDK and create your first Cordova app.</span>
+        </li>
+        <li>
+            <h2>Command-Line Usage</h2>
+            <span>Create, build, deploy, and debug from the command-line.</span>
+        </li>
+        <li>
+            <h2>Upgrading Guides</h2>
+            <span>Upgrade an application to the latest Cordova release.</span>
+        </li>
+        <li>
+            <h2>Plugin Development Guide</h2>
+            <span>Develop your first Cordova plugin.</span>
+        </li>
+        <li>
+            <h2>Domain Whitelist Guide</h2>
+            <span>Grant an application access to external domains.</span>
+        </li>
+        <li>
+            <h2>Embedding WebView</h2>
+            <span>Implement the Cordova WebView in your project.</span>
+        </li>
+        <li>
+            <h2><a href="_index.html">Keyword Index</a></h2>
+            <span>Full index of the Cordova Documentation.</span>
+        </li>
+    </ul>
+</div>