diff --git a/docs/inappbrowser.md b/docs/inappbrowser.md
new file mode 100644
index 0000000..abe3b4d
--- /dev/null
+++ b/docs/inappbrowser.md
@@ -0,0 +1,434 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+---
+
+InAppBrowser
+============
+
+> The InAppBrowser is a web-browser that is shown in your app when you use the `window.open` call.
+
+ var ref = window.open('http://apache.org', '_blank', 'location=yes');
+
+Description
+-----------
+
+The object returned from a call to `window.open`.
+
+Methods
+----------
+
+- addEventListener
+- removeEventListener
+- close
+
+Permissions
+-----------
+
+### Android
+
+#### app/res/xml/config.xml
+
+
+
+### iOS
+
+#### config.xml
+
+
+
+
+### Windows Phone 7 + 8
+
+#### config.xml
+
+
+
+
+
+addEventListener
+================
+
+> Adds a listener for an event from the InAppBrowser.
+
+ ref.addEventListener(eventname, callback);
+
+- __ref:__ reference to the InAppBrowser window (`InAppBrowser`)
+- __eventname:__ the event to listen for (`String`)
+
+ loadstart - event fired when the InAppBrowser starts to load a URL
+ loadstop - event fired when the InAppBrowser finished loading a URL
+ loaderror - event fired when the InAppBrowser encounters an error loading a URL
+ exit - event fired when the InAppBrowser window is closed
+
+- __callback:__ the function that is called when the event is fired.
+The function is passed an `InAppBrowserEvent` object.
+
+Supported Platforms
+-------------------
+
+- Android
+- iOS
+- Windows Phone 7 + 8
+
+Quick Example
+-------------
+
+ var ref = window.open('http://apache.org', '_blank', 'location=yes');
+ ref.addEventListener('loadstart', function() { alert(event.url); });
+
+Full Example
+------------
+
+
+
+
+ InAppBrowser.addEventListener Example
+
+
+
+
+
+
+
+
+removeEventListener
+===================
+
+> Removes a listener for an event from the InAppBrowser.
+
+ ref.removeEventListener(eventname, callback);
+
+- __ref:__ reference to the InAppBrowser window (`InAppBrowser`)
+- __eventname:__ the event to stop listening for (`String`)
+
+ loadstart - event fired when the InAppBrowser starts to load a URL
+ loadstop - event fired when the InAppBrowser finished loading a URL
+ loaderror - event fired when the InAppBrowser encounters an error loading a URL
+ exit - event fired when the InAppBrowser window is closed
+
+- __callback:__ the function that was to be called when the event is fired.
+The function is passed an `InAppBrowserEvent` object.
+
+Supported Platforms
+-------------------
+
+- Android
+- iOS
+- Windows Phone 7 + 8
+
+Quick Example
+-------------
+
+ var ref = window.open('http://apache.org', '_blank', 'location=yes');
+ var myCallback = function() { alert(event.url); }
+ ref.addEventListener('loadstart', myCallback);
+ ref.removeEventListener('loadstart', myCallback);
+
+Full Example
+------------
+
+
+
+
+ InAppBrowser.removeEventListener Example
+
+
+
+
+
+
+
+
+close
+=====
+
+> Closes the InAppBrowser window.
+
+ ref.close();
+
+- __ref:__ reference to the InAppBrowser window (`InAppBrowser`)
+
+Supported Platforms
+-------------------
+
+- Android
+- iOS
+- Windows Phone 7 + 8
+- BlackBerry 10
+
+Quick Example
+-------------
+
+ var ref = window.open('http://apache.org', '_blank', 'location=yes');
+ ref.close();
+
+Full Example
+------------
+
+
+
+
+ InAppBrowser.close Example
+
+
+
+
+
+
+
+
+executeScript
+=============
+
+> Injects JavaScript code into the InAppBrowser window
+
+ ref.executeScript(details, callback);
+
+- __ref:__ reference to the InAppBrowser window (`InAppBrowser`)
+- __injectDetails:__ details of the script ot run (`Object`)
+ - Supported keys: (exactly one of "file" or "code" should be present)
+
+ "file" - URL of the script to inject
+ "code" - Text of the script to inject
+
+- __callback:__ the function that is to be called in the Cordova application after the JavaScript code is injected.
+ - If the injected script is of type "code", then the callback will be called with a single argument, which is
+ the return value of the script, wrapped in an Array. (For multi-line scripts, this is the return value of the
+ last statement, or the last expression evaluated.)
+
+Supported Platforms
+-------------------
+
+- Android
+- iOS
+
+Quick Example
+-------------
+
+ var ref = window.open('http://apache.org', '_blank', 'location=yes');
+ ref.addEventListener('loadstop', function() {
+ ref.executeSript({file: "myscript.js"});
+ });
+
+Full Example
+------------
+
+
+
+
+ InAppBrowser.executeScript Example
+
+
+
+
+
+
+
+
+insertCSS
+=========
+
+> Injects CSS into the InAppBrowser window
+
+ ref.insertCSS(details, callback);
+
+- __ref:__ reference to the InAppBrowser window (`InAppBrowser`)
+- __injectDetails:__ details of the script ot run (`Object`)
+ - Supported keys: (exactly one of "file" or "code" should be present)
+
+ "file" - URL of the stylesheet to inject
+ "code" - Text of the stylesheet to inject
+
+- __callback:__ the function that is to be called in the Cordova application after the CSS is injected.
+
+Supported Platforms
+-------------------
+
+- Android
+- iOS
+
+Quick Example
+-------------
+
+ var ref = window.open('http://apache.org', '_blank', 'location=yes');
+ ref.addEventListener('loadstop', function() {
+ ref.insertCSS({file: "mystyles.css"});
+ });
+
+Full Example
+------------
+
+
+
+
+ InAppBrowser.executeScript Example
+
+
+
+
+
+
+
+
+InAppBrowserEvent
+=================
+
+The object that is passed to the callback function from an addEventListener call on an InAppBrowser object.
+
+Properties
+----------
+
+- __type:__ the eventname (`String`) - one of loadstart, loadstop, loaderror or exit
+- __url:__ the URL that was loaded (`String`)
+- __code:__ the error code (`Number`) - only in the case of loaderror
+- __message:__ the error message (`String`) - only in the case of loaderror
diff --git a/docs/window.open.md b/docs/window.open.md
new file mode 100644
index 0000000..60fb50e
--- /dev/null
+++ b/docs/window.open.md
@@ -0,0 +1,95 @@
+---
+license: Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+---
+
+window.open
+===========
+
+Opens a URL in a new InAppBrowser instance, the current browser instance, or the system browser.
+
+ var ref = window.open(url, target, options);
+
+- __ref:__ reference to the InAppBrowser window (`InAppBrowser`)
+- __url:__ the URL to load (`String`). Call encodeURI() on this if you have Unicode characters in your URL.
+- __target:__ the target to load the URL in (`String`) (Optional, Default: "_self")
+
+ _self - opens in the Cordova WebView if url is in the white-list, else it opens in the InAppBrowser
+ _blank - always open in the InAppBrowser
+ _system - always open in the system web browser
+
+
+- __options:__ options for the InAppBrowser (`String`) (Optional, Default: "location=yes")
+
+ The options string must not contain any blank space, each feature name and value must be separated by a comma. Feature names are case insensitive. Only the value below is supported on all platforms:
+
+ - __location__ - set to 'yes' or 'no' to turn the location bar on or off for the InAppBrowser
+
+ iOS only
+ --------
+ - __enableViewportScale__ - set to 'yes' or 'no' to prevent viewport scaling through a meta tag (defaults to 'no')
+ - __mediaPlaybackRequiresUserAction__ - set to 'yes' or 'no' to not allow autoplayed HTML5 video (defaults to 'no')
+ - __allowInlineMediaPlayback__ - set to 'yes' or 'no' to allow inline HTML5 media playback, also, the video element in the HTML document must also include the webkit-playsinline attribute (defaults to 'no')
+ - __keyboardDisplayRequiresUserAction__ - set to 'yes' or 'no' to open the keyboard when form elements get focus via the JavaScript focus() call (defaults to 'yes')
+ - __suppressesIncrementalRendering__ - set to 'yes' or 'no' to wait until all new view content has been received before it is rendered (defaults to 'no')
+ - __presentationstyle__ - set to 'pagesheet', 'formsheet' or 'fullscreen' to set the [presentation style](http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instp/UIViewController/modalPresentationStyle) (defaults to 'fullscreen')
+ - __transitionstyle__ - set to 'fliphorizontal', 'crossdissolve' or 'coververtical' to set the [transition style](http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instp/UIViewController/modalTransitionStyle) (defaults to 'coververtical')
+
+Supported Platforms
+-------------------
+
+- Android
+- iOS
+- BlackBerry 10
+- Windows Phone 7 + 8
+
+Quick Example
+-------------
+
+ var ref = window.open('http://apache.org', '_blank', 'location=yes');
+ var ref2 = window.open(encodeURI('http://ja.m.wikipedia.org/wiki/ハングル'), '_blank', 'location=yes');
+
+Full Example
+------------
+
+
+
+
+ window.open Example
+
+
+
+
+
+
+
+
diff --git a/test/.DS_Store b/test/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/test/.DS_Store differ
diff --git a/test/cordova-incl.js b/test/cordova-incl.js
new file mode 100644
index 0000000..dbcd1a6
--- /dev/null
+++ b/test/cordova-incl.js
@@ -0,0 +1,70 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+var PLAT;
+if (/Android/.exec(navigator.userAgent)) {
+ PLAT = 'android';
+} else if (/(iPad)|(iPhone)|(iPod)/.exec(navigator.userAgent)) {
+ PLAT = 'ios';
+} else if (/(BB10)|(PlayBook)|(BlackBerry)/.exec(navigator.userAgent)) {
+ PLAT = 'blackberry';
+}
+
+var scripts = document.getElementsByTagName('script');
+var currentPath = scripts[scripts.length - 1].src;
+var platformCordovaPath = currentPath.replace("cordova-incl.js", "cordova." + PLAT + ".js");
+var normalCordovaPath = currentPath.replace("cordova-incl.js", "cordova.js");
+var cordovaPath = normalCordovaPath;
+
+if (PLAT) {
+ // XHR to local file is an error on some platforms, windowsphone for one
+ try {
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", platformCordovaPath, false);
+ xhr.onreadystatechange = function() {
+
+ if (this.readyState == this.DONE && this.responseText.length > 0) {
+ if(parseInt(this.status) >= 400){
+ cordovaPath = normalCordovaPath;
+ }else{
+ cordovaPath = platformCordovaPath;
+ }
+ }
+ };
+ xhr.send(null);
+ }
+ catch(e){
+ cordovaPath = normalCordovaPath;
+ } // access denied!
+}
+
+if (!window._doNotWriteCordovaScript) {
+ document.write('');
+}
+
+function backHome() {
+ if (window.device && device.platform && device.platform.toLowerCase() == 'android') {
+ navigator.app.backHistory();
+ }
+ else {
+ window.history.go(-1);
+ }
+}
diff --git a/test/inappbrowser/index.html b/test/inappbrowser/index.html
new file mode 100644
index 0000000..1840c17
--- /dev/null
+++ b/test/inappbrowser/index.html
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+ Cordova Mobile Spec
+
+
+
+
+
+
+
+
+
InAppBrowser
+
+ Make sure http://www.google.com is white listed.
+ Make sure http://www.apple.com is not in the white list. In iOS, starred * tests will leave the app with no way to return.
+