Add English version 1.2.0
diff --git a/docs/en/1.2.0/config.json b/docs/en/1.2.0/config.json
new file mode 100644
index 0000000..5b0a92e
--- /dev/null
+++ b/docs/en/1.2.0/config.json
@@ -0,0 +1,167 @@
+{
+    "language": "English",
+    "merge": {
+        "accelerometer.md": [
+            "phonegap/accelerometer/accelerometer.md",
+            "phonegap/accelerometer/accelerometer.getCurrentAcceleration.md",
+            "phonegap/accelerometer/accelerometer.watchAcceleration.md",
+            "phonegap/accelerometer/accelerometer.clearWatch.md",
+            "phonegap/accelerometer/acceleration/acceleration.md",
+            "phonegap/accelerometer/parameters/accelerometerSuccess.md",
+            "phonegap/accelerometer/parameters/accelerometerError.md",
+            "phonegap/accelerometer/parameters/accelerometerOptions.md"
+        ],
+        "camera.md": [
+            "phonegap/camera/camera.md",
+            "phonegap/camera/camera.getPicture.md",
+            "phonegap/camera/parameter/cameraSuccess.md",
+            "phonegap/camera/parameter/cameraError.md",
+            "phonegap/camera/parameter/cameraOptions.md"
+        ],
+        "capture.md": [
+            "phonegap/media/capture/capture.md",
+            "phonegap/media/capture/captureAudio.md",
+            "phonegap/media/capture/captureAudioOptions.md",
+            "phonegap/media/capture/captureImage.md",
+            "phonegap/media/capture/captureImageOptions.md",
+            "phonegap/media/capture/captureVideo.md",
+            "phonegap/media/capture/captureVideoOptions.md",
+            "phonegap/media/capture/CaptureError.md",
+            "phonegap/media/capture/CaptureCB.md",
+            "phonegap/media/capture/CaptureErrorCB.md",
+            "phonegap/media/capture/ConfigurationData.md",
+            "phonegap/media/capture/MediaFile.md",
+            "phonegap/media/capture/MediaFile.getFormatData.md",
+            "phonegap/media/capture/MediaFileData.md"
+        ],
+        "compass.md": [
+            "phonegap/compass/compass.md",
+            "phonegap/compass/compass.getCurrentHeading.md",
+            "phonegap/compass/compass.watchHeading.md",
+            "phonegap/compass/compass.clearWatch.md",
+            "phonegap/compass/compass.watchHeadingFilter.md",
+            "phonegap/compass/compass.clearWatchFilter.md",
+            "phonegap/compass/parameters/compassSuccess.md",
+            "phonegap/compass/parameters/compassError.md",
+            "phonegap/compass/parameters/compassOptions.md",
+            "phonegap/compass/parameters/compassHeading.md",
+            "phonegap/compass/compassError/compassError.md"
+        ],
+        "contacts.md": [
+            "phonegap/contacts/contacts.md",
+            "phonegap/contacts/contacts.create.md",
+            "phonegap/contacts/contacts.find.md",
+            "phonegap/contacts/Contact/contact.md",
+            "phonegap/contacts/ContactAddress/contactaddress.md",
+            "phonegap/contacts/ContactField/contactfield.md",
+            "phonegap/contacts/ContactFindOptions/contactfindoptions.md",
+            "phonegap/contacts/ContactName/contactname.md",
+            "phonegap/contacts/ContactOrganization/contactorganization.md",
+            "phonegap/contacts/ContactError/contactError.md",
+            "phonegap/contacts/parameters/contactSuccess.md",
+            "phonegap/contacts/parameters/contactError.md",
+            "phonegap/contacts/parameters/contactFields.md",
+            "phonegap/contacts/parameters/contactFindOptions.md"
+        ],
+        "device.md": [
+            "phonegap/device/device.md",
+            "phonegap/device/device.name.md",
+            "phonegap/device/device.phonegap.md",
+            "phonegap/device/device.platform.md",
+            "phonegap/device/device.uuid.md",
+            "phonegap/device/device.version.md"
+        ],
+        "events.md": [
+            "phonegap/events/events.md",
+            "phonegap/events/events.deviceready.md",
+            "phonegap/events/events.pause.md",
+            "phonegap/events/events.resume.md",
+            "phonegap/events/events.online.md",
+            "phonegap/events/events.offline.md",
+            "phonegap/events/events.backbutton.md",
+            "phonegap/events/events.menubutton.md",
+            "phonegap/events/events.searchbutton.md",
+            "phonegap/events/events.startcallbutton.md",
+            "phonegap/events/events.endcallbutton.md",
+            "phonegap/events/events.volumedownbutton.md",
+            "phonegap/events/events.volumeupbutton.md"
+        ],
+        "file.md": [
+            "phonegap/file/file.md",
+            "phonegap/file/fileobj/fileobj.md",
+            "phonegap/file/filereader/filereader.md",
+            "phonegap/file/filewriter/filewriter.md",
+            "phonegap/file/filesystem/filesystem.md",
+            "phonegap/file/fileentry/fileentry.md",
+            "phonegap/file/directoryentry/directoryentry.md",
+            "phonegap/file/directoryreader/directoryreader.md",
+            "phonegap/file/filetransfer/filetransfer.md",
+            "phonegap/file/fileuploadoptions/fileuploadoptions.md",
+            "phonegap/file/fileuploadresult/fileuploadresult.md",
+            "phonegap/file/flags/flags.md",
+            "phonegap/file/localfilesystem/localfilesystem.md",
+            "phonegap/file/metadata/metadata.md",
+            "phonegap/file/fileerror/fileerror.md",
+            "phonegap/file/filetransfererror/filetransfererror.md"
+        ],
+        "geolocation.md": [
+            "phonegap/geolocation/geolocation.md",
+            "phonegap/geolocation/geolocation.getCurrentPosition.md",
+            "phonegap/geolocation/geolocation.watchPosition.md",
+            "phonegap/geolocation/geolocation.clearWatch.md",
+            "phonegap/geolocation/Coordinates/coordinates.md",
+            "phonegap/geolocation/Position/position.md",
+            "phonegap/geolocation/PositionError/positionError.md",
+            "phonegap/geolocation/parameters/geolocationSuccess.md",
+            "phonegap/geolocation/parameters/geolocationError.md",
+            "phonegap/geolocation/parameters/geolocation.options.md"
+        ],
+        "media.md": [
+            "phonegap/media/media.md",
+            "phonegap/media/media.getCurrentPosition.md",
+            "phonegap/media/media.getDuration.md",
+            "phonegap/media/media.pause.md",
+            "phonegap/media/media.play.md",
+            "phonegap/media/media.release.md",
+            "phonegap/media/media.seekTo.md",
+            "phonegap/media/media.startRecord.md",
+            "phonegap/media/media.stop.md",
+            "phonegap/media/media.stopRecord.md",
+            "phonegap/media/MediaError/mediaError.md",
+            "phonegap/media/Parameters/mediaError.md"
+        ],
+        "network.md": [
+            "phonegap/network/network.md",
+            "phonegap/network/network.isReachable.md",
+            "phonegap/network/NetworkStatus/NetworkStatus.md",
+            "phonegap/network/parameters/reachableCallback.md",
+            "phonegap/network/parameters/reachableHostname.md",
+            "phonegap/network/parameters/reachableOptions.md"
+        ],
+        "connection.md": [
+            "phonegap/connection/connection.md",
+            "phonegap/connection/connection.type.md"
+        ],
+        "notification.md": [
+            "phonegap/notification/notification.md",
+            "phonegap/notification/notification.alert.md",
+            "phonegap/notification/notification.confirm.md",
+            "phonegap/notification/notification.beep.md",
+            "phonegap/notification/notification.vibrate.md"
+        ],
+        "storage.md": [
+            "phonegap/storage/storage.md",
+            "phonegap/storage/storage.opendatabase.md",
+            "phonegap/storage/parameters/name.md",
+            "phonegap/storage/parameters/version.md",
+            "phonegap/storage/parameters/display_name.md",
+            "phonegap/storage/parameters/size.md",
+            "phonegap/storage/database/database.md",
+            "phonegap/storage/sqltransaction/sqltransaction.md",
+            "phonegap/storage/sqlresultset/sqlresultset.md",
+            "phonegap/storage/sqlresultsetlist/sqlresultsetlist.md",
+            "phonegap/storage/sqlerror/sqlerror.md",
+            "phonegap/storage/localstorage/localstorage.md"
+        ]
+    }
+}
diff --git a/docs/en/1.2.0/index.md b/docs/en/1.2.0/index.md
new file mode 100644
index 0000000..fe9f09e
--- /dev/null
+++ b/docs/en/1.2.0/index.md
@@ -0,0 +1,64 @@
+<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><a href="_index.html">Keyword Index</a></h2>
+            <span>Full index of the PhoneGap Documentation.</span>
+        </li>
+    </ul>
+</div>
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/accelerometer/acceleration/acceleration.md b/docs/en/1.2.0/phonegap/accelerometer/acceleration/acceleration.md
new file mode 100644
index 0000000..9aea51b
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/accelerometer/acceleration/acceleration.md
@@ -0,0 +1,85 @@
+Acceleration
+============
+
+Contains `Accelerometer` data captured at a specific point in time.
+
+Properties
+----------
+
+- __x:__ Amount of motion on the x-axis. Range [0, 1] (`Number`)
+- __y:__ Amount of motion on the y-axis. Range [0, 1] (`Number`)
+- __z:__ Amount of motion on the z-axis. Range [0, 1] (`Number`)
+- __timestamp:__ Creation timestamp in milliseconds. (`DOMTimeStamp`)
+
+Description
+-----------
+
+This object is created and populated by PhoneGap, and returned by an `Accelerometer` method.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
+        }
+
+        // onSuccess: Get a snapshot of the current acceleration
+        //
+        function onSuccess() {
+            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>
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/accelerometer/accelerometer.clearWatch.md b/docs/en/1.2.0/phonegap/accelerometer/accelerometer.clearWatch.md
new file mode 100644
index 0000000..d5c5c12
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/accelerometer/accelerometer.clearWatch.md
@@ -0,0 +1,91 @@
+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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchAcceleration`
+        var watchID = null;
+        
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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/1.2.0/phonegap/accelerometer/accelerometer.getCurrentAcceleration.md b/docs/en/1.2.0/phonegap/accelerometer/accelerometer.getCurrentAcceleration.md
new file mode 100644
index 0000000..2c2e69d
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/accelerometer/accelerometer.getCurrentAcceleration.md
@@ -0,0 +1,87 @@
+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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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 phoneGap `watchAccelerometer` call.
diff --git a/docs/en/1.2.0/phonegap/accelerometer/accelerometer.md b/docs/en/1.2.0/phonegap/accelerometer/accelerometer.md
new file mode 100644
index 0000000..ccb6812
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/accelerometer/accelerometer.md
@@ -0,0 +1,23 @@
+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
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/accelerometer/accelerometer.watchAcceleration.md b/docs/en/1.2.0/phonegap/accelerometer/accelerometer.watchAcceleration.md
new file mode 100644
index 0000000..27fc13a
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/accelerometer/accelerometer.watchAcceleration.md
@@ -0,0 +1,116 @@
+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 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
+
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchAcceleration`
+        var watchID = null;
+        
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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, PhoneGap will call the success callback function and pass the accelerometer results.
+- However, in requests to the device PhoneGap 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), PhoneGap 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/1.2.0/phonegap/accelerometer/parameters/accelerometerError.md b/docs/en/1.2.0/phonegap/accelerometer/parameters/accelerometerError.md
new file mode 100644
index 0000000..0765bfb
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/accelerometer/parameters/accelerometerError.md
@@ -0,0 +1,8 @@
+accelerometerError
+==================
+
+onError callback function for acceleration functions.
+
+    function() {
+        // Handle the error
+    }
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/accelerometer/parameters/accelerometerOptions.md b/docs/en/1.2.0/phonegap/accelerometer/parameters/accelerometerOptions.md
new file mode 100644
index 0000000..82066ac
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/accelerometer/parameters/accelerometerOptions.md
@@ -0,0 +1,9 @@
+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/1.2.0/phonegap/accelerometer/parameters/accelerometerSuccess.md b/docs/en/1.2.0/phonegap/accelerometer/parameters/accelerometerSuccess.md
new file mode 100644
index 0000000..23e7a43
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/accelerometer/parameters/accelerometerSuccess.md
@@ -0,0 +1,23 @@
+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/1.2.0/phonegap/camera/camera.getPicture.md b/docs/en/1.2.0/phonegap/camera/camera.getPicture.md
new file mode 100644
index 0000000..268002b
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/camera/camera.getPicture.md
@@ -0,0 +1,171 @@
+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.  _Encoding such images using Base64 has caused memory issues on some of these devices (iPhone 4, BlackBerry Torch 9800)._  Therefore, using FILE_URI as the 'Camera.destinationType' is highly recommended.
+
+Supported Platforms
+-------------------
+
+- Android
+- Blackberry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+Take photo and retrieve Base64-encoded image:
+
+    navigator.camera.getPicture(onSuccess, onFail, { quality: 50 }); 
+
+    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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        var pictureSource;   // picture source
+        var destinationType; // sets the format of returned value 
+        
+        // Wait for PhoneGap to connect with the device
+        //
+        document.addEventListener("deviceready",onDeviceReady,false);
+    
+        // PhoneGap 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 });
+        }
+
+        // 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 }); 
+        }
+    
+        // 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/1.2.0/phonegap/camera/camera.md b/docs/en/1.2.0/phonegap/camera/camera.md
new file mode 100644
index 0000000..e8ec1d8
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/camera/camera.md
@@ -0,0 +1,9 @@
+Camera
+======
+
+> The `camera` object provides access to the device's default camera application.
+
+Methods
+-------
+
+- camera.getPicture
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/camera/parameter/cameraError.md b/docs/en/1.2.0/phonegap/camera/parameter/cameraError.md
new file mode 100644
index 0000000..cc219eb
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/camera/parameter/cameraError.md
@@ -0,0 +1,13 @@
+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/1.2.0/phonegap/camera/parameter/cameraOptions.md b/docs/en/1.2.0/phonegap/camera/parameter/cameraOptions.md
new file mode 100644
index 0000000..6c2414b
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/camera/parameter/cameraOptions.md
@@ -0,0 +1,90 @@
+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 };
+
+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
+};
+  
+Android Quirks
+--------------
+
+- Ignores the `allowEdit` parameter.
+- Camera.PictureSourceType.PHOTOLIBRARY and Camera.PictureSourceType.SAVEDPHOTOALBUM both display the same photo album.
+- Camera.EncodingType is not supported.
+
+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.
+
+Palm Quirks
+-----------
+
+- Ignores the `quality` parameter.
+- Ignores the `sourceType` parameter.
+- Ignores the `allowEdit` parameter.
+- Camera.MediaType is not supported.
+
+iPhone 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.
+- The contents of the application's temporary directory is deleted when the application ends. Developers may also 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.
+           
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/camera/parameter/cameraSuccess.md b/docs/en/1.2.0/phonegap/camera/parameter/cameraSuccess.md
new file mode 100644
index 0000000..a64a8ef
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/camera/parameter/cameraSuccess.md
@@ -0,0 +1,23 @@
+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/1.2.0/phonegap/compass/compass.clearWatch.md b/docs/en/1.2.0/phonegap/compass/compass.clearWatch.md
new file mode 100755
index 0000000..c65dc87
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/compass.clearWatch.md
@@ -0,0 +1,90 @@
+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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchHeading`
+        var watchID = null;
+        
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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/1.2.0/phonegap/compass/compass.clearWatchFilter.md b/docs/en/1.2.0/phonegap/compass/compass.clearWatchFilter.md
new file mode 100644
index 0000000..d80502c
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/compass.clearWatchFilter.md
@@ -0,0 +1,88 @@
+compass.clearWatchFilter
+========================
+
+Stop watching the compass referenced by the watch ID parameter.
+
+    navigator.compass.clearWatchFilter(watchID);
+
+- __watchID__: The ID returned by `compass.watchHeadingFilter`.
+
+Supported Platforms
+-------------------
+
+- iPhone
+
+Quick Example
+-------------
+
+    var watchID = navigator.compass.watchHeadingFilter(onSuccess, onError, options);
+    
+    // ... later on ...
+    
+    navigator.compass.clearWatchFilter(watchID);
+    
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Compass Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchHeading`
+        var watchID = null;
+        
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            startWatch();
+        }
+
+        // Start watching the compass
+        //
+        function startWatch() {
+            
+            // Get notified on compass heading changes or 10 degrees or more
+            var options = { filter: 10 };
+            
+            watchID = navigator.compass.watchHeadingFilter(onSuccess, onError, options);
+        }
+        
+        // Stop watching the compass
+        //
+        function stopWatch() {
+            if (watchID) {
+                navigator.compass.clearWatchFilter(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 via Filter</button>
+        <button onclick="stopWatch();">Stop Watching</button>
+      </body>
+    </html>
diff --git a/docs/en/1.2.0/phonegap/compass/compass.getCurrentHeading.md b/docs/en/1.2.0/phonegap/compass/compass.getCurrentHeading.md
new file mode 100755
index 0000000..7fc02e6
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/compass.getCurrentHeading.md
@@ -0,0 +1,75 @@
+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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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/1.2.0/phonegap/compass/compass.md b/docs/en/1.2.0/phonegap/compass/compass.md
new file mode 100755
index 0000000..82470c5
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/compass.md
@@ -0,0 +1,21 @@
+Compass
+=======
+
+> Obtains the direction that the device is pointing.
+
+Methods
+-------
+
+- compass.getCurrentHeading
+- compass.watchHeading
+- compass.clearWatch
+- compass.watchHeadingFilter
+- compass.clearWatchFilter
+
+Arguments
+---------
+
+- compassSuccess
+- compassError
+- compassOptions
+- compassHeading
diff --git a/docs/en/1.2.0/phonegap/compass/compass.watchHeading.md b/docs/en/1.2.0/phonegap/compass/compass.watchHeading.md
new file mode 100755
index 0000000..66d89bf
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/compass.watchHeading.md
@@ -0,0 +1,105 @@
+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
+
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchHeading`
+        var watchID = null;
+        
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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/1.2.0/phonegap/compass/compass.watchHeadingFilter.md b/docs/en/1.2.0/phonegap/compass/compass.watchHeadingFilter.md
new file mode 100644
index 0000000..28f8394
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/compass.watchHeadingFilter.md
@@ -0,0 +1,103 @@
+compass.watchHeadingFilter
+==========================
+
+Get the compass heading in degrees when it changes by at least a certain number of degrees.
+
+    var watchID = navigator.compass.watchHeadingFilter(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.watchHeadingFilter` gets 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.
+
+The returned watch ID references references the compass watch interval. The watch ID can be used with `compass.clearWatchFilter` to stop watching the compass via a degree filter.  Only one watchHeadingFilter can be in effect at one time.  If a watchHeadingFilter is in effect, calling getCurrentHeading or watchHeading will use the existing filter value for specifying heading changes. On iOS this method is more efficient than compass.watchFilter() based on the iOS mechanism for monitoring compass heading changes.
+
+Supported Platforms
+-------------------
+
+- iPhone
+
+
+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 = { filter: 10 };  // Get notified on compass heading changes or 10 degrees or more
+    
+    var watchID = navigator.compass.watchHeadingFilter(onSuccess, onError, options);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Compass Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // The watch id references the current `watchHeading`
+        var watchID = null;
+        
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            startWatch();
+        }
+
+        // Start watching the compass
+        //
+        function startWatch() {
+            
+            // Get notified on compass heading changes or 10 degrees or more
+            var options = { filter: 10 };
+            
+            watchID = navigator.compass.watchHeadingFilter(onSuccess, onError, options);
+        }
+        
+        // Stop watching the compass
+        //
+        function stopWatch() {
+            if (watchID) {
+                navigator.compass.clearWatchFilter(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 via Filter</button>
+        <button onclick="stopWatch();">Stop Watching</button>
+      </body>
+    </html>
+    
diff --git a/docs/en/1.2.0/phonegap/compass/compassError/compassError.md b/docs/en/1.2.0/phonegap/compass/compassError/compassError.md
new file mode 100644
index 0000000..2e1a24d
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/compassError/compassError.md
@@ -0,0 +1,21 @@
+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/1.2.0/phonegap/compass/parameters/compassError.md b/docs/en/1.2.0/phonegap/compass/parameters/compassError.md
new file mode 100755
index 0000000..c150f29
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/parameters/compassError.md
@@ -0,0 +1,11 @@
+compassError
+==========
+
+onError callback function for compass functions. 
+
+Example
+-------
+
+function(CompassError) {
+    // Handle the error
+}
diff --git a/docs/en/1.2.0/phonegap/compass/parameters/compassHeading.md b/docs/en/1.2.0/phonegap/compass/parameters/compassHeading.md
new file mode 100644
index 0000000..4557e57
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/parameters/compassHeading.md
@@ -0,0 +1,33 @@
+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. 
+
+Windows Phone 7 Quirks
+-------------
+
+- returns trueHeading only, note that this code is largely untested because of a lack of devices that support compass.
diff --git a/docs/en/1.2.0/phonegap/compass/parameters/compassOptions.md b/docs/en/1.2.0/phonegap/compass/parameters/compassOptions.md
new file mode 100755
index 0000000..38e8bda
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/parameters/compassOptions.md
@@ -0,0 +1,19 @@
+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 watchHeadingFilter success callback. _(Number)_
+
+Android Quirks
+______________
+- filter is not supported.
+
+Windows Phone 7 Quirks
+--------------
+
+- filter is not supported.
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/compass/parameters/compassSuccess.md b/docs/en/1.2.0/phonegap/compass/parameters/compassSuccess.md
new file mode 100644
index 0000000..9e12a64
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/compass/parameters/compassSuccess.md
@@ -0,0 +1,21 @@
+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/1.2.0/phonegap/connection/connection.md b/docs/en/1.2.0/phonegap/connection/connection.md
new file mode 100644
index 0000000..1702e96
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/connection/connection.md
@@ -0,0 +1,23 @@
+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
+
diff --git a/docs/en/1.2.0/phonegap/connection/connection.type.md b/docs/en/1.2.0/phonegap/connection/connection.type.md
new file mode 100644
index 0000000..d934050
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/connection/connection.type.md
@@ -0,0 +1,82 @@
+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 )
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+            
+        // Wait for PhoneGap to load
+        // 
+        document.addEventListener("deviceready", onDeviceReady, false);
+        
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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>
diff --git a/docs/en/1.2.0/phonegap/contacts/Contact/contact.md b/docs/en/1.2.0/phonegap/contacts/Contact/contact.md
new file mode 100644
index 0000000..52f2e93
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/Contact/contact.md
@@ -0,0 +1,202 @@
+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. _(ContactAddresses[])_
+- __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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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`.
diff --git a/docs/en/1.2.0/phonegap/contacts/ContactAddress/contactaddress.md b/docs/en/1.2.0/phonegap/contacts/ContactAddress/contactaddress.md
new file mode 100644
index 0000000..c84c15a
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/ContactAddress/contactaddress.md
@@ -0,0 +1,145 @@
+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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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.
diff --git a/docs/en/1.2.0/phonegap/contacts/ContactError/contactError.md b/docs/en/1.2.0/phonegap/contacts/ContactError/contactError.md
new file mode 100644
index 0000000..62bd9fe
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/ContactError/contactError.md
@@ -0,0 +1,26 @@
+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/1.2.0/phonegap/contacts/ContactField/contactfield.md b/docs/en/1.2.0/phonegap/contacts/ContactField/contactfield.md
new file mode 100644
index 0000000..8eb0a8b7
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/ContactField/contactfield.md
@@ -0,0 +1,122 @@
+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, PhoneGap makes use of the __type__ field to indicate the format of the returned image.  PhoneGap 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
+
+Quick Example
+-------------
+
+	// create a new contact
+	var contact = navigator.contacts.create();
+	
+	// store contact phone numbers in ContactField[]
+	var phoneNumbers = [3];
+	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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+			// create a new contact
+			var contact = navigator.contacts.create();
+
+			// store contact phone numbers in ContactField[]
+			var phoneNumbers = [3];
+			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`.
diff --git a/docs/en/1.2.0/phonegap/contacts/ContactFindOptions/contactfindoptions.md b/docs/en/1.2.0/phonegap/contacts/ContactFindOptions/contactfindoptions.md
new file mode 100644
index 0000000..586ba67
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/ContactFindOptions/contactfindoptions.md
@@ -0,0 +1,93 @@
+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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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>
+
diff --git a/docs/en/1.2.0/phonegap/contacts/ContactName/contactname.md b/docs/en/1.2.0/phonegap/contacts/ContactName/contactname.md
new file mode 100644
index 0000000..6399d3d
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/ContactName/contactname.md
@@ -0,0 +1,118 @@
+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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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.
diff --git a/docs/en/1.2.0/phonegap/contacts/ContactOrganization/contactorganization.md b/docs/en/1.2.0/phonegap/contacts/ContactOrganization/contactorganization.md
new file mode 100644
index 0000000..9f64f09
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/ContactOrganization/contactorganization.md
@@ -0,0 +1,131 @@
+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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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.
+
+
diff --git a/docs/en/1.2.0/phonegap/contacts/contacts.create.md b/docs/en/1.2.0/phonegap/contacts/contacts.create.md
new file mode 100644
index 0000000..c9634f6
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/contacts.create.md
@@ -0,0 +1,57 @@
+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
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+			var myContact = navigator.contacts.create({"displayName": "Test User"});
+			myContact.gender = "male";
+			console.log("The contact, " + myContact.displayName + ", is of the " + myContact.gender + " gender");
+        }
+    
+
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Create Contact</p>
+      </body>
+    </html>
diff --git a/docs/en/1.2.0/phonegap/contacts/contacts.find.md b/docs/en/1.2.0/phonegap/contacts/contacts.find.md
new file mode 100644
index 0000000..e50cef3
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/contacts.find.md
@@ -0,0 +1,96 @@
+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
+
+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"; 
+	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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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/1.2.0/phonegap/contacts/contacts.md b/docs/en/1.2.0/phonegap/contacts/contacts.md
new file mode 100644
index 0000000..d6078ae
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/contacts.md
@@ -0,0 +1,29 @@
+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
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/contacts/parameters/contactError.md b/docs/en/1.2.0/phonegap/contacts/parameters/contactError.md
new file mode 100644
index 0000000..5d1af51
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/parameters/contactError.md
@@ -0,0 +1,8 @@
+contactError
+============
+
+Error callback function for contact functions.
+
+    function(error) {
+        // Handle the error
+    }
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/contacts/parameters/contactFields.md b/docs/en/1.2.0/phonegap/contacts/parameters/contactFields.md
new file mode 100644
index 0000000..9d6005c
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/parameters/contactFields.md
@@ -0,0 +1,6 @@
+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/1.2.0/phonegap/contacts/parameters/contactFindOptions.md b/docs/en/1.2.0/phonegap/contacts/parameters/contactFindOptions.md
new file mode 100644
index 0000000..4a88e42
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/parameters/contactFindOptions.md
@@ -0,0 +1,16 @@
+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/1.2.0/phonegap/contacts/parameters/contactSuccess.md b/docs/en/1.2.0/phonegap/contacts/parameters/contactSuccess.md
new file mode 100644
index 0000000..3625294
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/contacts/parameters/contactSuccess.md
@@ -0,0 +1,21 @@
+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/1.2.0/phonegap/device/device.md b/docs/en/1.2.0/phonegap/device/device.md
new file mode 100644
index 0000000..925f7e7
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/device/device.md
@@ -0,0 +1,23 @@
+Device
+======
+
+> The `device` object describes the device's hardware and software.
+
+Properties
+----------
+
+- device.name
+- device.phonegap
+- 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;
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/device/device.name.md b/docs/en/1.2.0/phonegap/device/device.name.md
new file mode 100644
index 0000000..1fad923
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/device/device.name.md
@@ -0,0 +1,79 @@
+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
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+    // Android:    Nexus One       returns "Passion" (Nexus One code name)
+    //             Motorola Droid  returns "voles"
+    // BlackBerry: Bold 8900       returns "8900"
+    // 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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+    
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device PhoneGap: ' + device.phonegap + '<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"
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/device/device.phonegap.md b/docs/en/1.2.0/phonegap/device/device.phonegap.md
new file mode 100644
index 0000000..80da863
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/device/device.phonegap.md
@@ -0,0 +1,60 @@
+device.phonegap
+===============
+
+Get the version of phonegap running on the device.
+
+    var string = device.phonegap;
+    
+Description
+-----------
+
+`device.phonegap` returns the version of phonegap running on the device.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+    var name = device.phonegap;
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+    
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device PhoneGap: ' + device.phonegap + '<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>
+    
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/device/device.platform.md b/docs/en/1.2.0/phonegap/device/device.platform.md
new file mode 100644
index 0000000..ba38f86
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/device/device.platform.md
@@ -0,0 +1,70 @@
+device.platform
+===============
+
+Get the device's operating system name.
+
+    var string = device.platform;
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+    // Depending on the device, a few examples are:
+    //   - "Android"
+    //   - "BlackBerry"
+    //   - "iPhone"
+    //   - "webOS"
+    //   - "WinCE"
+    var devicePlatform = device.platform;
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+    
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device PhoneGap: ' + device.phonegap + '<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
+-------------
+
+All devices return `iPhone` as the platform. This is inaccurate 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.
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/device/device.uuid.md b/docs/en/1.2.0/phonegap/device/device.uuid.md
new file mode 100644
index 0000000..7082d93
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/device/device.uuid.md
@@ -0,0 +1,72 @@
+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
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+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
+    // 
+    var deviceID = device.uuid;
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+    
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device PhoneGap: ' + device.phonegap + '<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>
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/device/device.version.md b/docs/en/1.2.0/phonegap/device/device.version.md
new file mode 100644
index 0000000..cf41777
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/device/device.version.md
@@ -0,0 +1,63 @@
+device.version
+==============
+
+Get the operating system version.
+
+    var string = device.version;
+
+Supported Platforms
+-------------------
+
+- Android 2.1+
+- BlackBerry
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+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: Bold 9000 using OS 4.6 would return "4.6.0.282"
+    //
+    // iPhone:     iOS 3.2 returns "3.2"
+    //
+    // Windows Phone 7: returns current OS version number, ex. on Mango returns 7.10.7720
+    var deviceVersion = device.version;
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            var element = document.getElementById('deviceProperties');
+        
+            element.innerHTML = 'Device Name: '     + device.name     + '<br />' + 
+                                'Device PhoneGap: ' + device.phonegap + '<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/1.2.0/phonegap/events/events.backbutton.md b/docs/en/1.2.0/phonegap/events/events.backbutton.md
new file mode 100644
index 0000000..3949a7e
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.backbutton.md
@@ -0,0 +1,67 @@
+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 PhoneGap 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+
+Quick Example
+-------------
+
+    document.addEventListener("backbutton", onBackKeyDown, false);
+
+    function onBackKeyDown() {
+        // Handle the back button
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>PhoneGap Back Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to call PhoneGap 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/1.2.0/phonegap/events/events.deviceready.md b/docs/en/1.2.0/phonegap/events/events.deviceready.md
new file mode 100644
index 0000000..743e305
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.deviceready.md
@@ -0,0 +1,92 @@
+deviceready
+===========
+
+This is an event that fires when PhoneGap is fully loaded.
+
+    document.addEventListener("deviceready", yourCallbackFunction, false);
+
+Details
+-------
+
+This is a very important event that every PhoneGap application should use.
+
+PhoneGap 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 PhoneGap JavaScript function before it is loaded.
+
+The PhoneGap `deviceready` event fires once PhoneGap has fully loaded. After the device has fired, you can safely make calls to PhoneGap 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
+
+Quick Example
+-------------
+
+    document.addEventListener("deviceready", onDeviceReady, false);
+
+    function onDeviceReady() {
+        // Now safe to use the PhoneGap API
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>PhoneGap Device Ready Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap methods
+        //
+        function onDeviceReady() {
+            // Now safe to use the PhoneGap API
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
+    
+BlackBerry (OS 4.6) Quirks
+--------------------------
+
+Custom events are not supported in the RIM BrowserField (web browser view), so the `deviceready` event will never fire.
+
+A workaround is to manually query `PhoneGap.available` until PhoneGap has fully loaded.
+
+    function onLoad() {
+        // BlackBerry OS 4 browser does not support events.
+        // So, manually wait until PhoneGap is available.
+        //
+        var intervalID = window.setInterval(
+          function() {
+              if (PhoneGap.available) {
+                  window.clearInterval(intervalID);
+                  onDeviceReady();
+              }
+          },
+          500
+        );
+    }
+
+    function onDeviceReady() {
+        // Now safe to use the PhoneGap API
+    }
diff --git a/docs/en/1.2.0/phonegap/events/events.endcallbutton.md b/docs/en/1.2.0/phonegap/events/events.endcallbutton.md
new file mode 100644
index 0000000..48db299
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.endcallbutton.md
@@ -0,0 +1,67 @@
+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 PhoneGap '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>PhoneGap End Call Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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/1.2.0/phonegap/events/events.md b/docs/en/1.2.0/phonegap/events/events.md
new file mode 100644
index 0000000..7267883
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.md
@@ -0,0 +1,21 @@
+Events
+======
+
+> PhoneGap lifecycle events.
+
+Event Types
+-----------
+
+- deviceready
+- pause
+- resume
+- online
+- offline
+- backbutton
+- menubutton
+- searchbutton
+- startcallbutton
+- endcallbutton
+- volumedownbutton
+- volumeupbutton
+
diff --git a/docs/en/1.2.0/phonegap/events/events.menubutton.md b/docs/en/1.2.0/phonegap/events/events.menubutton.md
new file mode 100644
index 0000000..d23faae
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.menubutton.md
@@ -0,0 +1,68 @@
+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 PhoneGap '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>PhoneGap Menu Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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/1.2.0/phonegap/events/events.offline.md b/docs/en/1.2.0/phonegap/events/events.offline.md
new file mode 100644
index 0000000..6ca27d8
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.offline.md
@@ -0,0 +1,71 @@
+offline
+===========
+
+This is an event that fires when a PhoneGap 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 PhoneGap 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+
+Quick Example
+-------------
+
+    document.addEventListener("offline", onOffline, false);
+
+    function onOffline() {
+        // Handle the offline event
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>PhoneGap Offline Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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.
diff --git a/docs/en/1.2.0/phonegap/events/events.online.md b/docs/en/1.2.0/phonegap/events/events.online.md
new file mode 100644
index 0000000..549245b
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.online.md
@@ -0,0 +1,71 @@
+online
+===========
+
+This is an event that fires when a PhoneGap 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 PhoneGap 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+
+Quick Example
+-------------
+
+    document.addEventListener("online", onOnline, false);
+
+    function onOnline() {
+        // Handle the online event
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>PhoneGap Online Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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.
diff --git a/docs/en/1.2.0/phonegap/events/events.pause.md b/docs/en/1.2.0/phonegap/events/events.pause.md
new file mode 100644
index 0000000..67a0a64
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.pause.md
@@ -0,0 +1,71 @@
+pause
+===========
+
+This is an event that fires when a PhoneGap application is put into the background.
+
+    document.addEventListener("pause", yourCallbackFunction, false);
+
+Details
+-------
+
+PhoneGap 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 PhoneGap 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+
+Quick Example
+-------------
+
+    document.addEventListener("pause", onPause, false);
+
+    function onPause() {
+        // Handle the pause event
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>PhoneGap Pause Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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 PhoneGap API. These will only be processed when the app resumes (processed on the next run-loop).
diff --git a/docs/en/1.2.0/phonegap/events/events.resume.md b/docs/en/1.2.0/phonegap/events/events.resume.md
new file mode 100644
index 0000000..88ff8d6
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.resume.md
@@ -0,0 +1,67 @@
+resume
+===========
+
+This is an event that fires when a PhoneGap application is retrieved from the background.
+
+    document.addEventListener("resume", yourCallbackFunction, false);
+
+Details
+-------
+
+PhoneGap 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 PhoneGap 'deviceready' event.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+
+Quick Example
+-------------
+
+    document.addEventListener("resume", onResume, false);
+
+    function onResume() {
+        // Handle the resume event
+    }
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>PhoneGap Resume Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap methods
+        //
+        function onDeviceReady() {
+            document.addEventListener("resume", onResume, false);
+        }
+
+        // Handle the resume event
+        //
+        function onResume() {
+        }
+
+        </script>
+      </head>
+      <body onload="onLoad()">
+      </body>
+    </html>
diff --git a/docs/en/1.2.0/phonegap/events/events.searchbutton.md b/docs/en/1.2.0/phonegap/events/events.searchbutton.md
new file mode 100644
index 0000000..4533b57
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.searchbutton.md
@@ -0,0 +1,67 @@
+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 PhoneGap '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>PhoneGap Search Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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/1.2.0/phonegap/events/events.startcallbutton.md b/docs/en/1.2.0/phonegap/events/events.startcallbutton.md
new file mode 100644
index 0000000..b8ec55f
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.startcallbutton.md
@@ -0,0 +1,67 @@
+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 PhoneGap '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>PhoneGap Start Call Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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/1.2.0/phonegap/events/events.volumedownbutton.md b/docs/en/1.2.0/phonegap/events/events.volumedownbutton.md
new file mode 100644
index 0000000..ca36dc7
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.volumedownbutton.md
@@ -0,0 +1,67 @@
+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 PhoneGap '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>PhoneGap Volume Down Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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/1.2.0/phonegap/events/events.volumeupbutton.md b/docs/en/1.2.0/phonegap/events/events.volumeupbutton.md
new file mode 100644
index 0000000..92a15fb
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/events/events.volumeupbutton.md
@@ -0,0 +1,67 @@
+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 PhoneGap '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>PhoneGap Volume Up Button Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Call onDeviceReady when PhoneGap is loaded.
+        //
+        // At this point, the document has loaded but phonegap.js has not.
+        // When PhoneGap is loaded and talking with the native device,
+        // it will call the event `deviceready`.
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap is loaded and it is now safe to make calls PhoneGap 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/1.2.0/phonegap/file/directoryentry/directoryentry.md b/docs/en/1.2.0/phonegap/file/directoryentry/directoryentry.md
new file mode 100644
index 0000000..d730f88
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/directoryentry/directoryentry.md
@@ -0,0 +1,300 @@
+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 PhoneGap:
+
+- __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. 
+- __moveTo__: Move a directory to a different location on the file system.
+- __copyTo__: Copy a directory to a different location on the file system.
+- __toURI__: Return a URI 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);	
+
+
+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,
+            newName = document.getElementById('newName').value,
+            parentEntry = new DirectoryEntry({fullPath: 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,
+            newName = document.getElementById('newName').value,
+            parentEntry = new DirectoryEntry({fullPath: parent});
+
+        // copy the directory to a new directory and rename it
+        entry.copyTo(parentEntry, newName, success, fail);
+    }
+
+
+toURI
+-----
+
+Returns a URI that can be used to locate the directory. 
+
+__Quick Example__
+	
+    // Get the URI for this directory
+    var uri = entry.toURI();
+    console.log(uri);
+
+
+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/1.2.0/phonegap/file/directoryreader/directoryreader.md b/docs/en/1.2.0/phonegap/file/directoryreader/directoryreader.md
new file mode 100644
index 0000000..49f770a
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/directoryreader/directoryreader.md
@@ -0,0 +1,47 @@
+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/1.2.0/phonegap/file/file.md b/docs/en/1.2.0/phonegap/file/file.md
new file mode 100644
index 0000000..8bd3719
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/file.md
@@ -0,0 +1,23 @@
+File
+==========
+
+> 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
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/file/fileentry/fileentry.md b/docs/en/1.2.0/phonegap/file/fileentry/fileentry.md
new file mode 100644
index 0000000..62b04ff
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/fileentry/fileentry.md
@@ -0,0 +1,242 @@
+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 PhoneGap:
+
+- __filesystem:__ The file system on which the FileEntry resides. _(FileSystem)_
+
+
+Methods
+-------
+
+- __getMetadata__: Look up metadata about 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.
+- __toURI__: Return a URI 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);	
+
+
+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,
+            parentEntry = new DirectoryEntry({fullPath: 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,
+            parentEntry = new DirectoryEntry({fullPath: parent});
+
+        // copy the file to a new directory and rename it
+        entry.copyTo(parentEntry, "file.copy", success, fail);
+    }
+
+	
+toURI
+-----
+
+Returns a URI that can be used to locate the file. 
+
+__Quick Example__
+	
+    // Request the URI for this entry
+    var uri = entry.toURI();
+    console.log(uri);
+
+
+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/1.2.0/phonegap/file/fileerror/fileerror.md b/docs/en/1.2.0/phonegap/file/fileerror/fileerror.md
new file mode 100644
index 0000000..2539a43
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/fileerror/fileerror.md
@@ -0,0 +1,30 @@
+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/1.2.0/phonegap/file/fileobj/fileobj.md b/docs/en/1.2.0/phonegap/file/fileobj/fileobj.md
new file mode 100644
index 0000000..43f78f6
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/fileobj/fileobj.md
@@ -0,0 +1,26 @@
+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/1.2.0/phonegap/file/filereader/filereader.md b/docs/en/1.2.0/phonegap/file/filereader/filereader.md
new file mode 100644
index 0000000..c8bfbc8
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/filereader/filereader.md
@@ -0,0 +1,177 @@
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        function onLoad() {
+            document.addEventListener("deviceready", onDeviceReady, false);
+        }
+
+        // PhoneGap 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/1.2.0/phonegap/file/filesystem/filesystem.md b/docs/en/1.2.0/phonegap/file/filesystem/filesystem.md
new file mode 100644
index 0000000..68aad43
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/filesystem/filesystem.md
@@ -0,0 +1,72 @@
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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/1.2.0/phonegap/file/filetransfer/filetransfer.md b/docs/en/1.2.0/phonegap/file/filetransfer/filetransfer.md
new file mode 100644
index 0000000..154566a
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/filetransfer/filetransfer.md
@@ -0,0 +1,120 @@
+FileTransfer
+==========
+
+FileTransfer is an object that allows you to upload files to a server.
+
+Properties
+----------
+
+N/A
+
+Methods
+-------
+
+- __upload__: sends a file to a 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.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iOS
+- Windows Phone 7 ( Mango )
+
+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);
+    }
+	
+	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, "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="phonegap.0.9.4.min.js"></script>
+        <script type="text/javascript" charset="utf-8">
+            
+            // Wait for PhoneGap to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+            
+            // PhoneGap 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, "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);
+            }
+            
+            </script>
+    </head>
+    <body>
+        <h1>Example</h1>
+        <p>Upload File</p>
+    </body>
+    </html>
+
diff --git a/docs/en/1.2.0/phonegap/file/filetransfererror/filetransfererror.md b/docs/en/1.2.0/phonegap/file/filetransfererror/filetransfererror.md
new file mode 100644
index 0000000..6f81389
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/filetransfererror/filetransfererror.md
@@ -0,0 +1,21 @@
+FileTransferError
+========
+
+A `FileTransferError` object is returned via the error callback when an error occurs.
+
+Properties
+----------
+
+- __code:__ One of the predefined error codes listed below. (int)
+
+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 a file.
diff --git a/docs/en/1.2.0/phonegap/file/fileuploadoptions/fileuploadoptions.md b/docs/en/1.2.0/phonegap/file/fileuploadoptions/fileuploadoptions.md
new file mode 100644
index 0000000..1e07fe3
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/fileuploadoptions/fileuploadoptions.md
@@ -0,0 +1,19 @@
+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)
+
+
+Description
+-----------
+
+A `FileUploadOptions` object can be passed to the FileTransfer objects upload method in order to specify additional parameters to the upload script.
diff --git a/docs/en/1.2.0/phonegap/file/fileuploadresult/fileuploadresult.md b/docs/en/1.2.0/phonegap/file/fileuploadresult/fileuploadresult.md
new file mode 100644
index 0000000..3429ee5
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/fileuploadresult/fileuploadresult.md
@@ -0,0 +1,21 @@
+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/1.2.0/phonegap/file/filewriter/filewriter.md b/docs/en/1.2.0/phonegap/file/filewriter/filewriter.md
new file mode 100644
index 0000000..55ca32b
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/filewriter/filewriter.md
@@ -0,0 +1,173 @@
+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.
+
+Details
+-------
+
+The `FileWriter` object is a way to write files from the devices file system.  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="phonegap.0.9.4.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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.createWriter(gotFileWriter, fail);
+		}
+		
+		function gotFileWriter(writer) {
+	        writer.onwrite = function(evt) {
+                console.log("write success");
+            };
+            writer.write("some sample text");
+			// contents of file now 'some sample text'
+			writer.truncate(11);
+			// contents of file now 'some sample'
+			writer.seek(4);
+			// contents of file still 'some sample' but file pointer is after the 'e' in 'some'
+			writer.write(" different text");
+			// contents of file now 'some different 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/1.2.0/phonegap/file/flags/flags.md b/docs/en/1.2.0/phonegap/file/flags/flags.md
new file mode 100644
index 0000000..b347845
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/flags/flags.md
@@ -0,0 +1,27 @@
+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/1.2.0/phonegap/file/localfilesystem/localfilesystem.md b/docs/en/1.2.0/phonegap/file/localfilesystem/localfilesystem.md
new file mode 100644
index 0000000..ccd0b2c
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/localfilesystem/localfilesystem.md
@@ -0,0 +1,91 @@
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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/1.2.0/phonegap/file/metadata/metadata.md b/docs/en/1.2.0/phonegap/file/metadata/metadata.md
new file mode 100644
index 0000000..a492f7d
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/file/metadata/metadata.md
@@ -0,0 +1,32 @@
+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/1.2.0/phonegap/geolocation/Coordinates/coordinates.md b/docs/en/1.2.0/phonegap/geolocation/Coordinates/coordinates.md
new file mode 100644
index 0000000..c4ec1c5
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/Coordinates/coordinates.md
@@ -0,0 +1,105 @@
+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 PhoneGap, and attached to the `Position` object. The `Position` object is then returned to the user through a callback function.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry (OS 4.6)
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+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: '         + new Date(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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Set an event to wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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/1.2.0/phonegap/geolocation/Position/position.md b/docs/en/1.2.0/phonegap/geolocation/Position/position.md
new file mode 100644
index 0000000..5702764
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/Position/position.md
@@ -0,0 +1,111 @@
+Position
+========
+
+Contains `Position` coordinates that are created by the geolocation API.
+
+Properties
+----------
+
+- __coords:__ A set of geographic coordinates. _(Coordinates)_
+- __timestamp:__ Creation timestamp for `coords` in milliseconds. _(DOMTimeStamp)_
+
+Description
+-----------
+
+The `Position` object is created and populated by PhoneGap, and returned to the user through a callback function.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry (OS 4.6)
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+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: '         + new Date(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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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: '          + new Date(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>
+
+iPhone Quirks
+-------------
+
+- __timestamp:__ Uses seconds instead of milliseconds.
+
+A workaround is to manually convert the timestamp to milliseconds (x 1000):
+
+        var onSuccess = function(position) {
+            alert('Latitude: '  + position.coords.latitude             + '\n' +
+                  'Longitude: ' + position.coords.longitude            + '\n' +
+                  'Timestamp: ' + new Date(position.timestamp * 1000)  + '\n');
+        };
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/geolocation/PositionError/positionError.md b/docs/en/1.2.0/phonegap/geolocation/PositionError/positionError.md
new file mode 100755
index 0000000..21d7611
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/PositionError/positionError.md
@@ -0,0 +1,23 @@
+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.
+
diff --git a/docs/en/1.2.0/phonegap/geolocation/geolocation.clearWatch.md b/docs/en/1.2.0/phonegap/geolocation/geolocation.clearWatch.md
new file mode 100644
index 0000000..95e4ce8
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/geolocation.clearWatch.md
@@ -0,0 +1,95 @@
+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
+-----------
+
+Function `geolocation.clearWatch` stops watching changes to the device's location by clearing the `geolocation.watchPosition` referenced by `watchID`.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry (OS 4.6)
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+    // Options: retrieve the location every 3 seconds
+    //
+    var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { frequency: 3000 });
+
+    // ...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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        var watchID = null;
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            // Update every 3 seconds
+            var options = { frequency: 3000 };
+            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>
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/geolocation/geolocation.getCurrentPosition.md b/docs/en/1.2.0/phonegap/geolocation/geolocation.getCurrentPosition.md
new file mode 100644
index 0000000..d79b23c
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/geolocation.getCurrentPosition.md
@@ -0,0 +1,106 @@
+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
+-----------
+
+Function `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 (OS 4.6)
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+    
+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: '         + new Date(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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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: '          + new Date(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/1.2.0/phonegap/geolocation/geolocation.md b/docs/en/1.2.0/phonegap/geolocation/geolocation.md
new file mode 100644
index 0000000..79e0561
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/geolocation.md
@@ -0,0 +1,30 @@
+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 Geo location API Specification](http://dev.w3.org/geo/api/spec-source.html).  Some devices already provide an implementation of this spec.  For those devices, the built-in support is used instead of replacing it with PhoneGap's implementation.  For devices that don't have geolocation support, PhoneGap's implementation should be compatible with the W3C specification.
+
+Methods
+-------
+
+- geolocation.getCurrentPosition
+- geolocation.watchPosition
+- geolocation.clearWatch
+
+
+Arguments
+---------
+
+- geolocationSuccess
+- geolocationError
+- geolocationOptions
+
+Objects (Read-Only)
+-------------------
+
+- Position
+- PositionError
+- Coordinates
diff --git a/docs/en/1.2.0/phonegap/geolocation/geolocation.watchPosition.md b/docs/en/1.2.0/phonegap/geolocation/geolocation.watchPosition.md
new file mode 100644
index 0000000..d1cc895
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/geolocation.watchPosition.md
@@ -0,0 +1,108 @@
+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 can be used with `geolocation.clearWatch` to stop watching for changes in position.
+
+Description
+-----------
+
+Function `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 (OS 4.6)
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+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: retrieve the location every 3 seconds
+    //
+    var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { frequency: 3000 });
+    
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Device Properties Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        var watchID = null;
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            // Update every 3 seconds
+            var options = { frequency: 3000 };
+            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/1.2.0/phonegap/geolocation/parameters/geolocation.options.md b/docs/en/1.2.0/phonegap/geolocation/parameters/geolocation.options.md
new file mode 100644
index 0000000..ef70957
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/parameters/geolocation.options.md
@@ -0,0 +1,22 @@
+geolocationOptions
+==================
+
+Optional parameters to customize the retrieval of the geolocation.
+
+    { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true };
+
+Options
+-------
+
+- __frequency:__ How often to retrieve the position in milliseconds. This option is not part of the W3C spec and will be removed in the future. maximumAge should be used instead. _(Number)_ (Default: 10000)
+- __enableHighAccuracy:__ Provides a hint that the application would like to receive the best possible results. _(Boolean)_
+- __timeout:__ The maximum length of time (msec) that is allowed to pass from the call to `geolocation.getCurrentPosition` or `geolocation.watchPosition` until the corresponding `geolocationSuccess` callback is invoked. _(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/1.2.0/phonegap/geolocation/parameters/geolocationError.md b/docs/en/1.2.0/phonegap/geolocation/parameters/geolocationError.md
new file mode 100644
index 0000000..4243a56
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/parameters/geolocationError.md
@@ -0,0 +1,13 @@
+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/1.2.0/phonegap/geolocation/parameters/geolocationSuccess.md b/docs/en/1.2.0/phonegap/geolocation/parameters/geolocationSuccess.md
new file mode 100644
index 0000000..9bcf30a
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/geolocation/parameters/geolocationSuccess.md
@@ -0,0 +1,27 @@
+geolocationSuccess
+==================
+
+The user's callback function that is called when a geolocation position is available.
+
+    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: '         + new Date(position.timestamp)      + '\n');
+    }
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/media/MediaError/mediaError.md b/docs/en/1.2.0/phonegap/media/MediaError/mediaError.md
new file mode 100644
index 0000000..ea56200
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/MediaError/mediaError.md
@@ -0,0 +1,25 @@
+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/1.2.0/phonegap/media/Parameters/mediaError.md b/docs/en/1.2.0/phonegap/media/Parameters/mediaError.md
new file mode 100644
index 0000000..041c501
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/Parameters/mediaError.md
@@ -0,0 +1,13 @@
+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/1.2.0/phonegap/media/capture/CaptureCB.md b/docs/en/1.2.0/phonegap/media/capture/CaptureCB.md
new file mode 100644
index 0000000..583e45b
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/CaptureCB.md
@@ -0,0 +1,25 @@
+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/1.2.0/phonegap/media/capture/CaptureError.md b/docs/en/1.2.0/phonegap/media/capture/CaptureError.md
new file mode 100644
index 0000000..503fe0e
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/CaptureError.md
@@ -0,0 +1,18 @@
+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/1.2.0/phonegap/media/capture/CaptureErrorCB.md b/docs/en/1.2.0/phonegap/media/capture/CaptureErrorCB.md
new file mode 100644
index 0000000..1cea26b
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/CaptureErrorCB.md
@@ -0,0 +1,21 @@
+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/1.2.0/phonegap/media/capture/ConfigurationData.md b/docs/en/1.2.0/phonegap/media/capture/ConfigurationData.md
new file mode 100644
index 0000000..5da2365
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/ConfigurationData.md
@@ -0,0 +1,43 @@
+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/1.2.0/phonegap/media/capture/MediaFile.getFormatData.md b/docs/en/1.2.0/phonegap/media/capture/MediaFile.getFormatData.md
new file mode 100644
index 0000000..26e6c76
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/MediaFile.getFormatData.md
@@ -0,0 +1,34 @@
+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/1.2.0/phonegap/media/capture/MediaFile.md b/docs/en/1.2.0/phonegap/media/capture/MediaFile.md
new file mode 100644
index 0000000..cd58de1
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/MediaFile.md
@@ -0,0 +1,18 @@
+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/1.2.0/phonegap/media/capture/MediaFileData.md b/docs/en/1.2.0/phonegap/media/capture/MediaFileData.md
new file mode 100644
index 0000000..ec7f376
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/MediaFileData.md
@@ -0,0 +1,43 @@
+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/1.2.0/phonegap/media/capture/capture.md b/docs/en/1.2.0/phonegap/media/capture/capture.md
new file mode 100644
index 0000000..120101c
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/capture.md
@@ -0,0 +1,56 @@
+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 )
diff --git a/docs/en/1.2.0/phonegap/media/capture/captureAudio.md b/docs/en/1.2.0/phonegap/media/capture/captureAudio.md
new file mode 100644
index 0000000..76abe72
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/captureAudio.md
@@ -0,0 +1,116 @@
+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="phonegap.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
+--------------------------
+
+- PhoneGap 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.
diff --git a/docs/en/1.2.0/phonegap/media/capture/captureAudioOptions.md b/docs/en/1.2.0/phonegap/media/capture/captureAudioOptions.md
new file mode 100644
index 0000000..d6c30f2
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/captureAudioOptions.md
@@ -0,0 +1,37 @@
+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/1.2.0/phonegap/media/capture/captureImage.md b/docs/en/1.2.0/phonegap/media/capture/captureImage.md
new file mode 100644
index 0000000..9e89107
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/captureImage.md
@@ -0,0 +1,108 @@
+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 )
+
+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="phonegap.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>
+
+
diff --git a/docs/en/1.2.0/phonegap/media/capture/captureImageOptions.md b/docs/en/1.2.0/phonegap/media/capture/captureImageOptions.md
new file mode 100644
index 0000000..03b40ca
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/captureImageOptions.md
@@ -0,0 +1,34 @@
+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/1.2.0/phonegap/media/capture/captureVideo.md b/docs/en/1.2.0/phonegap/media/capture/captureVideo.md
new file mode 100644
index 0000000..17f4dfd
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/captureVideo.md
@@ -0,0 +1,111 @@
+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 )
+
+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="phonegap.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
+--------------------------
+
+- PhoneGap 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.
diff --git a/docs/en/1.2.0/phonegap/media/capture/captureVideoOptions.md b/docs/en/1.2.0/phonegap/media/capture/captureVideoOptions.md
new file mode 100644
index 0000000..b51a0c9
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/capture/captureVideoOptions.md
@@ -0,0 +1,40 @@
+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/1.2.0/phonegap/media/media.getCurrentPosition.md b/docs/en/1.2.0/phonegap/media/media.getCurrentPosition.md
new file mode 100644
index 0000000..d9ea4e2
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.getCurrentPosition.md
@@ -0,0 +1,153 @@
+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
+- iOS
+- Windows Phone 7 ( Mango )
+    
+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="phonegap.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for PhoneGap to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // PhoneGap 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>
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/media/media.getDuration.md b/docs/en/1.2.0/phonegap/media/media.getDuration.md
new file mode 100644
index 0000000..91b18fa
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.getDuration.md
@@ -0,0 +1,145 @@
+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
+- iOS
+- Windows Phone 7 ( Mango )
+    
+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="phonegap.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for PhoneGap to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // PhoneGap 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/1.2.0/phonegap/media/media.md b/docs/en/1.2.0/phonegap/media/media.md
new file mode 100644
index 0000000..31c3734
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.md
@@ -0,0 +1,44 @@
+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)_
+
+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
+- iOS
+- Windows Phone 7 ( Mango )
+
diff --git a/docs/en/1.2.0/phonegap/media/media.pause.md b/docs/en/1.2.0/phonegap/media/media.pause.md
new file mode 100644
index 0000000..2b18b8b
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.pause.md
@@ -0,0 +1,150 @@
+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
+- iOS
+- Windows Phone 7 ( Mango )
+    
+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="phonegap.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for PhoneGap to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // PhoneGap 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/1.2.0/phonegap/media/media.play.md b/docs/en/1.2.0/phonegap/media/media.play.md
new file mode 100644
index 0000000..f8df01a
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.play.md
@@ -0,0 +1,146 @@
+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
+- iOS
+- Windows Phone 7 ( Mango )
+    
+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="phonegap.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for PhoneGap to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // PhoneGap 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>
diff --git a/docs/en/1.2.0/phonegap/media/media.release.md b/docs/en/1.2.0/phonegap/media/media.release.md
new file mode 100644
index 0000000..22737e1
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.release.md
@@ -0,0 +1,134 @@
+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
+- iOS
+- Windows Phone 7 ( Mango )
+    
+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="phonegap.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for PhoneGap to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // PhoneGap 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/1.2.0/phonegap/media/media.seekTo.md b/docs/en/1.2.0/phonegap/media/media.seekTo.md
new file mode 100644
index 0000000..4921195
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.seekTo.md
@@ -0,0 +1,132 @@
+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
+- iOS
+- Windows Phone 7 ( Mango )
+    
+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="phonegap.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for PhoneGap to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // PhoneGap 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>
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/media/media.startRecord.md b/docs/en/1.2.0/phonegap/media/media.startRecord.md
new file mode 100644
index 0000000..2978800
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.startRecord.md
@@ -0,0 +1,117 @@
+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
+- 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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap 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);
+        }
+
+        // PhoneGap 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>
+
+
+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.
diff --git a/docs/en/1.2.0/phonegap/media/media.stop.md b/docs/en/1.2.0/phonegap/media/media.stop.md
new file mode 100644
index 0000000..f708bf7
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.stop.md
@@ -0,0 +1,149 @@
+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
+- iOS
+- Windows Phone 7 ( Mango )
+    
+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="phonegap.js"></script>
+            <script type="text/javascript" charset="utf-8">
+        
+            // Wait for PhoneGap to load
+            //
+            document.addEventListener("deviceready", onDeviceReady, false);
+        
+            // PhoneGap 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>
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/media/media.stopRecord.md b/docs/en/1.2.0/phonegap/media/media.stopRecord.md
new file mode 100644
index 0000000..8ccf9e0
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/media/media.stopRecord.md
@@ -0,0 +1,119 @@
+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
+- 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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap 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);
+        }
+
+        // PhoneGap 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>
+
+
+
diff --git a/docs/en/1.2.0/phonegap/notification/notification.alert.md b/docs/en/1.2.0/phonegap/notification/notification.alert.md
new file mode 100644
index 0000000..925c67a
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/notification/notification.alert.md
@@ -0,0 +1,94 @@
+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 PhoneGap 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 (OS 4.6)
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+    // Android / BlackBerry WebWorks (OS 5.0 and higher) / iPhone
+    //
+    function alertDismissed() {
+        // do something
+    }
+
+    navigator.notification.alert(
+        'You are the winner!',  // message
+        alertDismissed,         // callback
+        'Game Over',            // title
+        'Done'                  // buttonName
+    );
+
+    // BlackBerry (OS 4.6) / webOS
+    //
+    navigator.notification.alert('You are the winner!');
+        
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Notification Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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' 
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/notification/notification.beep.md b/docs/en/1.2.0/phonegap/notification/notification.beep.md
new file mode 100644
index 0000000..4f97a05
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/notification/notification.beep.md
@@ -0,0 +1,94 @@
+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 (OS 4.6)
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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.
+  - PhoneGap 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 PhoneGap lib includes a generic beep file that is used. 
diff --git a/docs/en/1.2.0/phonegap/notification/notification.confirm.md b/docs/en/1.2.0/phonegap/notification/notification.confirm.md
new file mode 100755
index 0000000..3cb8dea
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/notification/notification.confirm.md
@@ -0,0 +1,92 @@
+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). (`Number`)
+- __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.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7 ( Mango )
+
+Quick Example
+-------------
+
+	// process the confirmation dialog result
+	function onConfirm(button) {
+		alert('You selected button ' + button);
+	}
+
+    // 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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+            // Empty
+        }
+    
+		// process the confirmation dialog result
+		function onConfirm(button) {
+			alert('You selected button ' + button);
+		}
+
+        // 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'
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/notification/notification.md b/docs/en/1.2.0/phonegap/notification/notification.md
new file mode 100644
index 0000000..6e7b7b9
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/notification/notification.md
@@ -0,0 +1,12 @@
+Notification
+============
+
+> Visual, audible, and tactile device notifications.
+
+Methods
+-------
+
+- notification.alert
+- notification.confirm
+- notification.beep
+- notification.vibrate
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/notification/notification.vibrate.md b/docs/en/1.2.0/phonegap/notification/notification.vibrate.md
new file mode 100644
index 0000000..c556d3a
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/notification/notification.vibrate.md
@@ -0,0 +1,84 @@
+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 (OS 4.6)
+- BlackBerry WebWorks (OS 5.0 and higher)
+- iPhone
+- Windows Phone 7
+
+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="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/storage/database/database.md b/docs/en/1.2.0/phonegap/storage/database/database.md
new file mode 100644
index 0000000..445a43c
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/database/database.md
@@ -0,0 +1,104 @@
+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
+
+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", "PhoneGap Demo", 200000);
+	db.transaction(populateDB, errorCB, successCB);
+
+Change Version Quick Example
+-------------------
+
+	var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
+	db.changeVersion("1.0", "1.1");
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+			var db = window.openDatabase("Database", "1.0", "PhoneGap 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/1.2.0/phonegap/storage/localstorage/localstorage.md b/docs/en/1.2.0/phonegap/storage/localstorage/localstorage.md
new file mode 100644
index 0000000..ab3a183
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/localstorage/localstorage.md
@@ -0,0 +1,91 @@
+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.
+
+Supported Platforms
+-------------------
+
+- Android
+- BlackBerry WebWorks (OS 6.0 and higher)
+- iPhone
+
+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>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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>
diff --git a/docs/en/1.2.0/phonegap/storage/parameters/display_name.md b/docs/en/1.2.0/phonegap/storage/parameters/display_name.md
new file mode 100644
index 0000000..2adf459
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/parameters/display_name.md
@@ -0,0 +1,4 @@
+display_name
+==================
+
+The display name of the database.
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/storage/parameters/name.md b/docs/en/1.2.0/phonegap/storage/parameters/name.md
new file mode 100644
index 0000000..49e5afa
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/parameters/name.md
@@ -0,0 +1,4 @@
+name
+============
+
+The name of the database.
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/storage/parameters/size.md b/docs/en/1.2.0/phonegap/storage/parameters/size.md
new file mode 100644
index 0000000..78f66ab
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/parameters/size.md
@@ -0,0 +1,4 @@
+size
+==============
+
+The size of the database in bytes.
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/storage/parameters/version.md b/docs/en/1.2.0/phonegap/storage/parameters/version.md
new file mode 100644
index 0000000..fb6c5e1
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/parameters/version.md
@@ -0,0 +1,4 @@
+version
+=============
+
+The version of the database.
diff --git a/docs/en/1.2.0/phonegap/storage/sqlerror/sqlerror.md b/docs/en/1.2.0/phonegap/storage/sqlerror/sqlerror.md
new file mode 100644
index 0000000..9f12197
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/sqlerror/sqlerror.md
@@ -0,0 +1,28 @@
+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/1.2.0/phonegap/storage/sqlresultset/sqlresultset.md b/docs/en/1.2.0/phonegap/storage/sqlresultset/sqlresultset.md
new file mode 100644
index 0000000..bdc70b7
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/sqlresultset/sqlresultset.md
@@ -0,0 +1,115 @@
+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
+- __rowAffected__: 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 it's 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 `rowAffected` 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
+
+Execute SQL Quick Example
+------------------
+
+	function queryDB(tx) {
+		tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
+	}
+
+	function querySuccess(tx, results) {
+		// this will be empty since no rows were inserted.
+		console.log("Insert ID = " + results.insertId);
+		// this will be 0 since it is a select statement
+		console.log("Rows Affected = " + results.rowAffected);
+		// the number of rows returned by the select statement
+		console.log("Insert ID = " + results.rows.length);
+	}
+	
+	function errorCB(err) {
+		alert("Error processing SQL: "+err.code);
+	}
+	
+	var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
+	db.transaction(queryDB, errorCB);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap 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) {
+			// this will be empty since no rows were inserted.
+			console.log("Insert ID = " + results.insertId);
+			// this will be 0 since it is a select statement
+			console.log("Rows Affected = " + results.rowAffected);
+			// the number of rows returned by the select statement
+			console.log("Insert ID = " + results.rows.length);
+		}
+
+		// 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", "PhoneGap Demo", 200000);
+			db.transaction(queryDB, errorCB);
+		}
+
+		// PhoneGap is ready
+		//
+		function onDeviceReady() {
+			var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
+			db.transaction(populateDB, errorCB, successCB);
+		}
+	
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Database</p>
+      </body>
+    </html>
diff --git a/docs/en/1.2.0/phonegap/storage/sqlresultsetlist/sqlresultsetlist.md b/docs/en/1.2.0/phonegap/storage/sqlresultsetlist/sqlresultsetlist.md
new file mode 100644
index 0000000..cff4faa
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/sqlresultsetlist/sqlresultsetlist.md
@@ -0,0 +1,116 @@
+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
+
+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", "PhoneGap Demo", 200000);
+	db.transaction(queryDB, errorCB);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap 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", "PhoneGap Demo", 200000);
+			db.transaction(queryDB, errorCB);
+		}
+
+		// PhoneGap is ready
+		//
+		function onDeviceReady() {
+			var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
+			db.transaction(populateDB, errorCB, successCB);
+		}
+	
+        </script>
+      </head>
+      <body>
+        <h1>Example</h1>
+        <p>Database</p>
+      </body>
+    </html>
diff --git a/docs/en/1.2.0/phonegap/storage/sqltransaction/sqltransaction.md b/docs/en/1.2.0/phonegap/storage/sqltransaction/sqltransaction.md
new file mode 100644
index 0000000..07403dc
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/sqltransaction/sqltransaction.md
@@ -0,0 +1,93 @@
+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
+
+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", "PhoneGap Demo", 200000);
+	db.transaction(populateDB, errorCB, successCB);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap is ready
+        //
+        function onDeviceReady() {
+			var db = window.openDatabase("Database", "1.0", "PhoneGap 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/1.2.0/phonegap/storage/storage.md b/docs/en/1.2.0/phonegap/storage/storage.md
new file mode 100644
index 0000000..cc24a79
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/storage.md
@@ -0,0 +1,29 @@
+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 PhoneGap's implementation. For devices that don't have storage support, PhoneGap's implementation should be compatible with the W3C specification.
+
+Methods
+-------
+
+- openDatabase
+
+Arguments
+---------
+
+- name
+- version
+- display_name
+- size
+
+Objects
+-------
+
+- Database
+- SQLTransaction
+- SQLResultSet
+- SQLResultSetList
+- SQLError
+- localStorage
\ No newline at end of file
diff --git a/docs/en/1.2.0/phonegap/storage/storage.opendatabase.md b/docs/en/1.2.0/phonegap/storage/storage.opendatabase.md
new file mode 100644
index 0000000..fa63748
--- /dev/null
+++ b/docs/en/1.2.0/phonegap/storage/storage.opendatabase.md
@@ -0,0 +1,54 @@
+openDatabase
+===============
+
+Returns a new Database object.
+
+    var dbShell = window.openDatabase(name, version, display_name, 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
+
+Quick Example
+-------------
+
+    var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
+
+Full Example
+------------
+
+    <!DOCTYPE html>
+    <html>
+      <head>
+        <title>Contact Example</title>
+
+        <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
+        <script type="text/javascript" charset="utf-8">
+
+        // Wait for PhoneGap to load
+        //
+        document.addEventListener("deviceready", onDeviceReady, false);
+
+        // PhoneGap 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>