diff --git a/doc/index.md b/doc/index.md
index aa773f4..23739ed 100644
--- a/doc/index.md
+++ b/doc/index.md
@@ -120,6 +120,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
+- Windows Phone 8.1
StatusBar.styleLightContent
=================
@@ -135,6 +136,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
+- Windows Phone 8.1
StatusBar.styleBlackTranslucent
=================
@@ -150,6 +152,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
+- Windows Phone 8.1
StatusBar.styleBlackOpaque
=================
@@ -165,6 +168,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
+- Windows Phone 8.1
StatusBar.backgroundColorByName
@@ -185,6 +189,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
+- Windows Phone 8.1
StatusBar.backgroundColorByHexString
=================
@@ -208,6 +213,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
+- Windows Phone 8.1
StatusBar.hide
=================
@@ -224,6 +230,7 @@ Supported Platforms
- Android
- Windows Phone 7
- Windows Phone 8
+- Windows Phone 8.1
StatusBar.show
=================
@@ -240,6 +247,7 @@ Supported Platforms
- Android
- Windows Phone 7
- Windows Phone 8
+- Windows Phone 8.1
StatusBar.isVisible
@@ -259,5 +267,6 @@ Supported Platforms
- Android
- Windows Phone 7
- Windows Phone 8
+- Windows Phone 8.1
diff --git a/plugin.xml b/plugin.xml
index ce2e689..29f1e16 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -82,4 +82,10 @@
+
+
+
+
+
+
diff --git a/src/windows/StatusBar.js b/src/windows/StatusBar.js
new file mode 100644
index 0000000..1d5a60a
--- /dev/null
+++ b/src/windows/StatusBar.js
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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 statusBar = Windows.UI.ViewManagement.StatusBar.getForCurrentView();
+
+function darkForeground () {
+ // dark text ( to be used on a light background )
+ statusBar.foregroundColor = { a: 0, r: 0, g: 0, b: 0 };
+}
+
+function lightForeground() {
+ // light text ( to be used on a dark background )
+ statusBar.foregroundColor = { a: 0, r: 255, g: 255, b: 255 };
+}
+
+function hexToRgb(hex) {
+ // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
+ var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
+ hex = hex.replace(shorthandRegex, function (m, r, g, b) {
+ return r + r + g + g + b + b;
+ });
+
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+ return result ? {
+ r: parseInt(result[1], 16),
+ g: parseInt(result[2], 16),
+ b: parseInt(result[3], 16)
+ } : null;
+}
+
+var StatusBar = {
+ _ready: function(win, fail) {
+ win(statusBar.occludedRect.height !== 0);
+ },
+
+ overlaysWebView: function () {
+ // not supported
+ },
+
+ styleDefault: function () {
+ darkForeground();
+ },
+
+ styleLightContent: function () {
+ lightForeground();
+ },
+
+ styleBlackTranslucent: function () {
+ // #88000000 ? Apple says to use lightContent instead
+ lightForeground();
+ },
+
+ styleBlackOpaque: function () {
+ // #FF000000 ? Apple says to use lightContent instead
+ lightForeground();
+ },
+
+ backgroundColorByHexString: function (win, fail, args) {
+ var rgb = hexToRgb(args[0]);
+ statusBar.backgroundColor = { a: 0, r: rgb.r, g: rgb.g, b: rgb.b };
+ statusBar.backgroundOpacity = 1;
+ },
+
+ show: function (win, fail) {
+ statusBar.showAsync().done(win, fail);
+ },
+
+ hide: function (win, fail) {
+ statusBar.hideAsync().done(win, fail);
+ }
+};
+
+require("cordova/exec/proxy").add("StatusBar", StatusBar);
diff --git a/www/statusbar.js b/www/statusbar.js
index d6f68ac..5327452 100644
--- a/www/statusbar.js
+++ b/www/statusbar.js
@@ -21,6 +21,9 @@
var exec = require('cordova/exec');
+// Needed for Windows Phone 8.1 as it is initialized after this module
+var StatusBar = StatusBar || require('org.apache.cordova.statusbar.StatusBar');
+
var namedColors = {
"black": "#000000",
"darkGray": "#A9A9A9",