diff --git a/src/js/.jshintrc b/src/js/.jshintrc
new file mode 100644
index 0000000000000000000000000000000000000000..d5c913b41016e6f0e908057425263200e894b9e2
--- /dev/null
+++ b/src/js/.jshintrc
@@ -0,0 +1,22 @@
+{
+    "browser": true,
+
+    "indent": 4,
+    "eqeqeq": true,
+    "undef": true,
+    "curly": true,
+    "eqnull": true,
+    "noarg": true,
+    "bitwise": true,
+    "forin": true,
+    "newcap": true,
+
+    "unused": "vars",
+    "quotmark": "double",
+
+    "globals": {
+        "Pebble": false,
+        "toString": false,
+        "console": false
+    }
+}
diff --git a/src/js/pebble-js-app.js b/src/js/pebble-js-app.js
index 95048b00852297c3e6775a6d80d487a61492d04f..49fc184b34d3efb2ef5bb93d0f46d79b2f3ba03d 100644
--- a/src/js/pebble-js-app.js
+++ b/src/js/pebble-js-app.js
@@ -21,13 +21,135 @@
 // MessageQueue implementation is copyright (c) 2014 by Matthew Tole, https://github.com/smallstoneapps/js-message-queue
 // Distributed under the MIT license, see above. Many thanks Matthew!
 //
-var MessageQueue=function(){var RETRY_MAX=5;var queue=[];var sending=false;var timer=null;return{reset:reset,sendAppMessage:sendAppMessage,size:size};function reset(){queue=[];sending=false}function sendAppMessage(message,ack,nack){if(!isValidMessage(message)){return false}queue.push({message:message,ack:ack||null,nack:nack||null,attempts:0});setTimeout(function(){sendNextMessage()},1);return true}function size(){return queue.length}function isValidMessage(message){if(message!==Object(message)){return false}var keys=Object.keys(message);if(!keys.length){return false}for(var k=0;k<keys.length;k+=1){var validKey=/^[0-9a-zA-Z-_]*$/.test(keys[k]);if(!validKey){return false}var value=message[keys[k]];if(!validValue(value)){return false}}return true;function validValue(value){switch(typeof value){case"string":return true;case"number":return true;case"object":if(toString.call(value)=="[object Array]"){return true}}return false}}function sendNextMessage(){if(sending){return}var message=queue.shift();if(!message){return}message.attempts+=1;sending=true;Pebble.sendAppMessage(message.message,ack,nack);timer=setTimeout(function(){timeout()},1e3);function ack(){clearTimeout(timer);setTimeout(function(){sending=false;sendNextMessage()},200);if(message.ack){message.ack.apply(null,arguments)}}function nack(){clearTimeout(timer);if(message.attempts<RETRY_MAX){queue.unshift(message);setTimeout(function(){sending=false;sendNextMessage()},200*message.attempts)}else{if(message.nack){message.nack.apply(null,arguments)}}}function timeout(){setTimeout(function(){sending=false;sendNextMessage()},1e3);if(message.ack){message.ack.apply(null,arguments)}}}}();
+var MessageQueue = function () {
+    var RETRY_MAX = 5;
+    var queue = [];
+    var sending = false;
+    var timer = null;
+    return {
+        reset: reset,
+        sendAppMessage: sendAppMessage,
+        size: size
+    };
+
+    function reset() {
+        queue = [];
+        sending = false;
+    }
+
+    function sendAppMessage(message, ack, nack) {
+        if (!isValidMessage(message)) {
+            return false;
+        }
+        queue.push({
+            message: message,
+            ack: ack || null,
+            nack: nack || null,
+            attempts: 0
+        });
+        setTimeout(function () {
+            sendNextMessage();
+        }, 1);
+        return true;
+    }
+
+    function size() {
+        return queue.length;
+    }
+
+    function isValidMessage(message) {
+        if (message !== Object(message)) {
+            return false;
+        }
+        var keys = Object.keys(message);
+        if (!keys.length) {
+            return false;
+        }
+        for (var k = 0; k < keys.length; k += 1) {
+            var validKey = /^[0-9a-zA-Z-_]*$/.test(keys[k]);
+            if (!validKey) {
+                return false;
+            }
+            var value = message[keys[k]];
+            if (!validValue(value)) {
+                return false;
+            }
+        }
+        return true;
+
+        function validValue(value) {
+            switch (typeof value) {
+            case "string":
+                return true;
+            case "number":
+                return true;
+            case "object":
+                if (toString.call(value) === "[object Array]") {
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+
+    function sendNextMessage() {
+        if (sending) {
+            return;
+        }
+        var message = queue.shift();
+        if (!message) {
+            return;
+        }
+        message.attempts += 1;
+        sending = true;
+        Pebble.sendAppMessage(message.message, ack, nack);
+        timer = setTimeout(function () {
+            timeout();
+        }, 1e3);
+
+        function ack() {
+            clearTimeout(timer);
+            setTimeout(function () {
+                sending = false;
+                sendNextMessage();
+            }, 200);
+            if (message.ack) {
+                message.ack.apply(null, arguments);
+            }
+        }
+
+        function nack() {
+            clearTimeout(timer);
+            if (message.attempts < RETRY_MAX) {
+                queue.unshift(message);
+                setTimeout(function () {
+                    sending = false;
+                    sendNextMessage();
+                }, 200 * message.attempts);
+            } else {
+                if (message.nack) {
+                    message.nack.apply(null, arguments);
+                }
+            }
+        }
+
+        function timeout() {
+            setTimeout(function () {
+                sending = false;
+                sendNextMessage();
+            }, 1e3);
+            if (message.ack) {
+                message.ack.apply(null, arguments);
+            }
+        }
+    }
+}();
 // global variables
 
 var storage_keys = {
-  "IP_ADDRESS": 0,
-  "USERNAME": 1,
-  "PASSWORD": 2
+    "IP_ADDRESS": 0,
+    "USERNAME": 1,
+    "PASSWORD": 2
 };
 var ISDEBUG = false;
 var g_ip_address = "";
@@ -40,311 +162,481 @@ var g_muted;
 var g_play_state;
 
 var JsonRpcRequest = function (method, params) {
-  this.jsonrpc = "2.0";
-  this.id = 1;
-  this.method = method;
-  this.params = params;
+    this.jsonrpc = "2.0";
+    this.id = 1;
+    this.method = method;
+    this.params = params;
 };
 
 function sendJsonRequest(requests, callback) {
-  var username = null;
-  var password = null;
-  var response = null;
-  
-	var req = new XMLHttpRequest();
-	req.onreadystatechange = function(e) {
-		if (req.readyState == 4) {
-  		if (req.status == 200) {
-        if (ISDEBUG) console.log("Response text: "+req.responseText);
-	  		response = JSON.parse(req.responseText);
-        if (response.result == null) {
-          handleJsonRpcError(response);
-        } else if (callback != null) {
-          callback(response.result);
+    var username = null;
+    var password = null;
+    var response = null;
+
+    var req = new XMLHttpRequest();
+    req.onreadystatechange = function (e) {
+        if (req.readyState === 4) {
+            if (req.status === 200) {
+                if (ISDEBUG) {
+                    console.log("Response text: " + req.responseText);
+                }
+                response = JSON.parse(req.responseText);
+                if (response.result === null) {
+                    handleJsonRpcError(response);
+                } else if (callback !== null) {
+                    callback(response.result);
+                }
+            } else {
+                if (req.status !== 0) {
+                    console.log("Error connecting [" + req.status + "]: " + req.statusText);
+                    Pebble.showSimpleNotificationOnPebble("Could not connect [" + req.status + "]", "Please check your Rockodi settings in the Pebble app.");
+                }
+            }
         }
-      } else {
-        if (req.status !== 0) {
-          console.log("Error connecting ["+req.status+"]: "+req.statusText);
-          Pebble.showSimpleNotificationOnPebble("Could not connect ["+req.status+"]", "Please check your Rockodi settings in the Pebble app.");
+    };
+    if (g_username !== "") {
+        username = g_username;
+        if (g_password !== "") {
+            password = g_password;
         }
-      }
     }
-	};
-  if (g_username !== "") {
-    username = g_username;
-    if (g_password !== "") {
-      password = g_password;
+    var url_string = "http://" + g_ip_address + "/jsonrpc?request=";
+    req.open("GET", url_string + encodeURI(JSON.stringify(requests)), true, username, password);
+    req.timeout = 4000;
+    req.send(null);
+    if (ISDEBUG) {
+        console.log("Sent request: " + url_string + encodeURI(JSON.stringify(requests)));
     }
-  }
-  var url_string = "http://"+g_ip_address+"/jsonrpc?request=";
-  req.open('GET', url_string+encodeURI(JSON.stringify(requests)), true, username, password);
-	req.timeout = 4000;
-	req.send(null);
-  if (ISDEBUG) console.log("Sent request: "+url_string+encodeURI(JSON.stringify(requests)));
 }
 
 function handleJsonRpcError(response) {
-  var err_msg = "Unknown error";
-  if (response.constructor === Array) {
-    for (var i=0;i<response.length;i++) {
-      if (response[i].result == null) {
-        if (response[i].error!= null) {err_msg = response[i].error.message;}
-        console.log("Kodi responded with an error: "+err_msg);
-      }
-    }
-  } else {
-    if (response.result == null) {
-      if (response.error!= null) {err_msg = response.error.message;}
-      console.log("Kodi responded with an error: "+err_msg);
+    var err_msg = "Unknown error";
+    if (response.constructor === Array) {
+        for (var i = 0; i < response.length; i++) {
+            if (response[i].result === null) {
+                if (response[i].error !== null) {
+                    err_msg = response[i].error.message;
+                }
+                console.log("Kodi responded with an error: " + err_msg);
+            }
+        }
+    } else {
+        if (response.result === null) {
+            if (response.error !== null) {
+                err_msg = response.error.message;
+            }
+            console.log("Kodi responded with an error: " + err_msg);
+        }
     }
-  }
 }
 // player methods
 function getStatus() {
-  g_player_id = -1;
-  sendJsonRequest(new JsonRpcRequest("Application.GetProperties", {"properties":["volume", "muted"]}), getAppPropertiesCb);
-  sendJsonRequest(new JsonRpcRequest("Player.GetActivePlayers", {}), getActivePlayersCb);
+    g_player_id = -1;
+    sendJsonRequest(new JsonRpcRequest("Application.GetProperties", {
+        "properties": ["volume", "muted"]
+    }), getAppPropertiesCb);
+    sendJsonRequest(new JsonRpcRequest("Player.GetActivePlayers", {}), getActivePlayersCb);
 }
+
 function getAppPropertiesCb(result) {
-  g_volume = result.volume;
-  g_muted = (result.muted) ? 1 : 0;
-  MessageQueue.sendAppMessage({"MSG_KEY_VOLUME": g_volume, "MSG_KEY_MUTED": g_muted});
+    g_volume = result.volume;
+    g_muted = (result.muted) ? 1 : 0;
+    MessageQueue.sendAppMessage({
+        "MSG_KEY_VOLUME": g_volume,
+        "MSG_KEY_MUTED": g_muted
+    });
 }
+
 function getActivePlayersCb(result) {
-  g_player_id = -1;
-  for (var i=0; i<result.length; i++) {
-    var player = result[i];
-    g_player_type = player.type;
-    if (g_player_type == "audio" || g_player_type == "video") {
-      g_player_id = player.playerid;
-      break;
+    g_player_id = -1;
+    for (var i = 0; i < result.length; i++) {
+        var player = result[i];
+        g_player_type = player.type;
+        if (g_player_type === "audio" || g_player_type === "video") {
+            g_player_id = player.playerid;
+            break;
+        }
+    }
+    if (g_player_id >= 0) {
+        sendJsonRequest(new JsonRpcRequest("Player.GetProperties", {
+            "playerid": g_player_id,
+            "properties": ["speed"]
+        }), getPlayerPropertiesCb);
+        sendJsonRequest(new JsonRpcRequest("Player.GetItem", {
+            "playerid": g_player_id,
+            "properties": ["title", "album", "artist", "director", "duration"]
+        }), getItemCb);
+    } else {
+        MessageQueue.sendAppMessage({
+            "MSG_KEY_TITLE": "No player available",
+            "MSG_KEY_ARTIST": ""
+        });
     }
-  }
-  if (g_player_id >= 0) {
-    sendJsonRequest(new JsonRpcRequest("Player.GetProperties", {"playerid": g_player_id, "properties": ["speed"]}), getPlayerPropertiesCb);
-    sendJsonRequest(new JsonRpcRequest("Player.GetItem", {"playerid": g_player_id, "properties": ["title","album","artist","director","duration"]}), getItemCb);
-  } else {
-    MessageQueue.sendAppMessage({"MSG_KEY_TITLE": "No player available", "MSG_KEY_ARTIST": ""});
-  }
 }
+
 function getPlayerPropertiesCb(result) {
-  g_play_state = (result.speed > 0) ? 1 : 0;
-  MessageQueue.sendAppMessage({"MSG_KEY_PLAY_STATE": g_play_state});
+    g_play_state = (result.speed > 0) ? 1 : 0;
+    MessageQueue.sendAppMessage({
+        "MSG_KEY_PLAY_STATE": g_play_state
+    });
 }
+
 function getItemCb(result) {
-  var title = (result.item.title === "") ? result.item.label : result.item.title;
-  var artist = "";
-  if (result.item.type == "movie") {
-    artist = (result.item.director.length < 1) ? "" : result.item.director[0];
-  } else {
-    artist = (result.item.artist.length < 1) ? "" : result.item.artist[0];
-  }
-  MessageQueue.sendAppMessage({"MSG_KEY_TITLE":title,"MSG_KEY_ARTIST":artist});
+    var title = (result.item.title === "") ? result.item.label : result.item.title;
+    var artist = "";
+    if (result.item.type === "movie") {
+        artist = (result.item.director.length < 1) ? "" : result.item.director[0];
+    } else {
+        artist = (result.item.artist.length < 1) ? "" : result.item.artist[0];
+    }
+    MessageQueue.sendAppMessage({
+        "MSG_KEY_TITLE": title,
+        "MSG_KEY_ARTIST": artist
+    });
 }
+
 function playPause() {
-  if (g_player_id >= 0) {
-    sendJsonRequest(new JsonRpcRequest("Player.PlayPause", {"playerid": g_player_id}), playPauseCb);
-  }
+    if (g_player_id >= 0) {
+        sendJsonRequest(new JsonRpcRequest("Player.PlayPause", {
+            "playerid": g_player_id
+        }), playPauseCb);
+    }
 }
+
 function playPauseCb(result) {
     g_play_state = result.speed;
-    MessageQueue.sendAppMessage({"MSG_KEY_PLAY_STATE": g_play_state});
+    MessageQueue.sendAppMessage({
+        "MSG_KEY_PLAY_STATE": g_play_state
+    });
 }
+
 function raiseVolume() {
-  g_volume = (g_volume > 95) ? 100 : g_volume + 5;
-  sendJsonRequest(new JsonRpcRequest("Application.SetVolume", {"volume": g_volume}), setVolumeCb);
+    g_volume = (g_volume > 95) ? 100 : g_volume + 5;
+    sendJsonRequest(new JsonRpcRequest("Application.SetVolume", {
+        "volume": g_volume
+    }), setVolumeCb);
 }
+
 function lowerVolume() {
-  g_volume = (g_volume < 5) ? 0 : g_volume - 5;
-  sendJsonRequest(new JsonRpcRequest("Application.SetVolume", {"volume": g_volume}), setVolumeCb);
+    g_volume = (g_volume < 5) ? 0 : g_volume - 5;
+    sendJsonRequest(new JsonRpcRequest("Application.SetVolume", {
+        "volume": g_volume
+    }), setVolumeCb);
 }
-function setVolumeCb (result) {
-  g_volume = result;
-  MessageQueue.sendAppMessage({"MSG_KEY_VOLUME": g_volume});
+
+function setVolumeCb(result) {
+    g_volume = result;
+    MessageQueue.sendAppMessage({
+        "MSG_KEY_VOLUME": g_volume
+    });
 }
+
 function previous() {
-  if (g_player_id >= 0) {
-    sendJsonRequest(new JsonRpcRequest("Player.GoTo", {"playerid": g_player_id, "to": "previous"}), changeTransportCb);
-  }
+    if (g_player_id >= 0) {
+        sendJsonRequest(new JsonRpcRequest("Player.GoTo", {
+            "playerid": g_player_id,
+            "to": "previous"
+        }), changeTransportCb);
+    }
 }
+
 function next() {
-  if (g_player_id >= 0) {
-    sendJsonRequest(new JsonRpcRequest("Player.GoTo", {"playerid": g_player_id, "to": "next"}), changeTransportCb);
-  }
+    if (g_player_id >= 0) {
+        sendJsonRequest(new JsonRpcRequest("Player.GoTo", {
+            "playerid": g_player_id,
+            "to": "next"
+        }), changeTransportCb);
+    }
 }
+
 function stop() {
-  if (g_player_id >= 0) {
-    sendJsonRequest(new JsonRpcRequest("Player.Stop", {"playerid": g_player_id}), changeTransportCb);
-  }
+    if (g_player_id >= 0) {
+        sendJsonRequest(new JsonRpcRequest("Player.Stop", {
+            "playerid": g_player_id
+        }), changeTransportCb);
+    }
 }
+
 function changeTransportCb(result) {
-  getStatus();
+    getStatus();
 }
 // Remote methods
 function sendKey(input_key) {
-  switch(input_key) {
+    switch (input_key) {
     case "KEY_UP":
-      sendJsonRequest(new JsonRpcRequest("Input.Up"));
-      break;
+        sendJsonRequest(new JsonRpcRequest("Input.Up"));
+        break;
     case "KEY_DOWN":
-      sendJsonRequest(new JsonRpcRequest("Input.Down"));
-      break;
+        sendJsonRequest(new JsonRpcRequest("Input.Down"));
+        break;
     case "KEY_SELECT":
-      sendJsonRequest(new JsonRpcRequest("Input.Select"));
-      break;
+        sendJsonRequest(new JsonRpcRequest("Input.Select"));
+        break;
     case "KEY_BACK":
-      sendJsonRequest(new JsonRpcRequest("Input.Back"));
-      break;
+        sendJsonRequest(new JsonRpcRequest("Input.Back"));
+        break;
     case "KEY_LEFT":
-      sendJsonRequest(new JsonRpcRequest("Input.Left"));
-      break;
+        sendJsonRequest(new JsonRpcRequest("Input.Left"));
+        break;
     case "KEY_RIGHT":
-      sendJsonRequest(new JsonRpcRequest("Input.Right"));
-      break;
-  }
+        sendJsonRequest(new JsonRpcRequest("Input.Right"));
+        break;
+    }
 }
 // Goto methods
 function gotoFullscreen() {
-  sendJsonRequest(new JsonRpcRequest("GUI.setFullScreen",{"fullscreen":true}));
+    sendJsonRequest(new JsonRpcRequest("GUI.setFullScreen", {
+        "fullscreen": true
+    }));
 }
+
 function gotoInfo() {
-  sendJsonRequest(new JsonRpcRequest("Input.Info"));
+    sendJsonRequest(new JsonRpcRequest("Input.Info"));
 }
+
 function gotoHome() {
-  sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"home"}));
+    sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", {
+        "window": "home"
+    }));
 }
+
 function gotoMusic() {
-  sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"music"}));
+    sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", {
+        "window": "music"
+    }));
 }
+
 function gotoVideo() {
-  sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"video"}));
+    sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", {
+        "window": "video"
+    }));
 }
+
 function gotoPictures() {
-  sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"pictures"}));
+    sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", {
+        "window": "pictures"
+    }));
 }
+
 function gotoWeather() {
-  sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow",{"window":"weather"}));
+    sendJsonRequest(new JsonRpcRequest("GUI.ActivateWindow", {
+        "window": "weather"
+    }));
 }
 // Playlist methods
 function getMusicPlaylists() {
-  sendJsonRequest(new JsonRpcRequest("Files.GetDirectory", {"directory":"special://musicplaylists","media":"files","properties":["title"],"limits":{"start":0,"end":10}}), getMusicPlaylistsCb);
+    sendJsonRequest(new JsonRpcRequest("Files.GetDirectory", {
+        "directory": "special://musicplaylists",
+        "media": "files",
+        "properties": ["title"],
+        "limits": {
+            "start": 0,
+            "end": 10
+        }
+    }), getMusicPlaylistsCb);
 }
+
 function getMusicPlaylistsCb(result) {
-  var dict = {};
-  var key = 0;
-  var files = result.files;
-  for (var i=0;i<files.length;i++) {
-    var filename = files[i].file;
-    var label = files[i].label;
-    dict[key++] = filename + "|" + label;
-  }
-  MessageQueue.sendAppMessage(dict);
+    var dict = {};
+    var key = 0;
+    var files = result.files;
+    for (var i = 0; i < files.length; i++) {
+        var filename = files[i].file;
+        var label = files[i].label;
+        dict[key++] = filename + "|" + label;
+    }
+    MessageQueue.sendAppMessage(dict);
 }
+
 function playMusicPlaylist(payload) {
-  var filename = payload.MSG_KEY_CMD_DATA;
-  var requests = [];
-  requests.push(new JsonRpcRequest("PlayList.Clear", {"playlistid": 0}));
-  requests.push(new JsonRpcRequest("PlayList.Add", {"playlistid":0, "item":{"directory":filename,"recursive":true}}));
-  requests.push(new JsonRpcRequest("Player.Open", {"item":{"playlistid":0,"position":0}}));
-  sendJsonRequest(requests);
+    var filename = payload.MSG_KEY_CMD_DATA;
+    var requests = [];
+    requests.push(new JsonRpcRequest("PlayList.Clear", {
+        "playlistid": 0
+    }));
+    requests.push(new JsonRpcRequest("PlayList.Add", {
+        "playlistid": 0,
+        "item": {
+            "directory": filename,
+            "recursive": true
+        }
+    }));
+    requests.push(new JsonRpcRequest("Player.Open", {
+        "item": {
+            "playlistid": 0,
+            "position": 0
+        }
+    }));
+    sendJsonRequest(requests);
 }
 // Addon methods
 function getAddons() {
-  sendJsonRequest(new JsonRpcRequest("Addons.GetAddons", {"type": "xbmc.python.script", "properties": ["name"],"limits":{"start":0,"end":10}}), getAddonsCb);
+    sendJsonRequest(new JsonRpcRequest("Addons.GetAddons", {
+        "type": "xbmc.python.script",
+        "properties": ["name"],
+        "limits": {
+            "start": 0,
+            "end": 10
+        }
+    }), getAddonsCb);
 }
+
 function getAddonsCb(result) {
-  var dict = {};
-  var key = 0;
-  var addons = result.addons;
-  for (var i=0;i<addons.length;i++) {
-    var id = addons[i].addonid;
-    var name = addons[i].name;
-    dict[key++] = id + "|" + name;
-  }
-  MessageQueue.sendAppMessage(dict);
+    var dict = {};
+    var key = 0;
+    var addons = result.addons;
+    for (var i = 0; i < addons.length; i++) {
+        var id = addons[i].addonid;
+        var name = addons[i].name;
+        dict[key++] = id + "|" + name;
+    }
+    MessageQueue.sendAppMessage(dict);
 }
+
 function executeAddon(payload) {
-  var addonid = payload.MSG_KEY_CMD_DATA;
-  sendJsonRequest(new JsonRpcRequest("Addons.ExecuteAddon", {"addonid": addonid}));
+    var addonid = payload.MSG_KEY_CMD_DATA;
+    sendJsonRequest(new JsonRpcRequest("Addons.ExecuteAddon", {
+        "addonid": addonid
+    }));
 }
 // Power methods
 function systemShutdown() {
-  sendJsonRequest(new JsonRpcRequest("System.Shutdown"));
+    sendJsonRequest(new JsonRpcRequest("System.Shutdown"));
 }
+
 function systemReboot() {
-  sendJsonRequest(new JsonRpcRequest("System.Reboot"));
+    sendJsonRequest(new JsonRpcRequest("System.Reboot"));
 }
+
 function systemHibernate() {
-  sendJsonRequest(new JsonRpcRequest("System.Hibernate"));
+    sendJsonRequest(new JsonRpcRequest("System.Hibernate"));
 }
+
 function systemSuspend() {
-  sendJsonRequest(new JsonRpcRequest("System.Suspend"));
+    sendJsonRequest(new JsonRpcRequest("System.Suspend"));
 }
 // Event listeners
-Pebble.addEventListener('ready',
-  function(e) {
-    console.log('Rockodi copyright (c) 2015, Douglas Otwell');
-    g_ip_address = localStorage.getItem(storage_keys.IP_ADDRESS);
-    g_username = localStorage.getItem(storage_keys.USERNAME);
-    g_password = localStorage.getItem(storage_keys.PASSWORD);
-  }
+Pebble.addEventListener("ready",
+    function (e) {
+        console.log("Rockodi copyright (c) 2015, Douglas Otwell");
+        g_ip_address = localStorage.getItem(storage_keys.IP_ADDRESS);
+        g_username = localStorage.getItem(storage_keys.USERNAME);
+        g_password = localStorage.getItem(storage_keys.PASSWORD);
+    }
 );
-Pebble.addEventListener('showConfiguration', function(e) {
-  var query_string = encodeURI("?ip_address="+g_ip_address+"&username="+g_username+"&password="+g_password);
-  Pebble.openURL('http://www.dkographicdetails.com/rockodi/config/config-page.html'+query_string);
+Pebble.addEventListener("showConfiguration", function (e) {
+    var query_string = encodeURI("?ip_address=" + g_ip_address + "&username=" + g_username + "&password=" + g_password);
+    Pebble.openURL("http://www.dkographicdetails.com/rockodi/config/config-page.html" + query_string);
 });
-Pebble.addEventListener('webviewclosed',
-  function(e) {
-    var configuration = JSON.parse(decodeURIComponent(e.response));
-    if (typeof configuration.ip_address !== "undefined") {
-      localStorage.setItem(storage_keys.IP_ADDRESS, configuration.ip_address);
-      localStorage.setItem(storage_keys.USERNAME, configuration.username);
-      localStorage.setItem(storage_keys.PASSWORD, configuration.password);
-      g_ip_address = localStorage.getItem(storage_keys.IP_ADDRESS);
-      g_username = localStorage.getItem(storage_keys.USERNAME);
-      g_password = localStorage.getItem(storage_keys.PASSWORD);
+Pebble.addEventListener("webviewclosed",
+    function (e) {
+        var configuration = JSON.parse(decodeURIComponent(e.response));
+        if (typeof configuration.ip_address !== "undefined") {
+            localStorage.setItem(storage_keys.IP_ADDRESS, configuration.ip_address);
+            localStorage.setItem(storage_keys.USERNAME, configuration.username);
+            localStorage.setItem(storage_keys.PASSWORD, configuration.password);
+            g_ip_address = localStorage.getItem(storage_keys.IP_ADDRESS);
+            g_username = localStorage.getItem(storage_keys.USERNAME);
+            g_password = localStorage.getItem(storage_keys.PASSWORD);
+        }
     }
-  }
 );
 Pebble.addEventListener("appmessage",
-  function(e) {
-    var cmd = e.payload.MSG_KEY_CMD;
-    switch(cmd) {
-      // Player messages
-      case "GET_STATUS": getStatus(); break;
-      case "PLAY_PAUSE": playPause(); break;
-      case "VOLUME_UP": raiseVolume(); break;
-      case "VOLUME_DOWN": lowerVolume(); break;
-      case "NEXT": next(); break;
-      case "STOP": stop(); break;
-      case "PREVIOUS": previous(); break;
-      // Remote messages
-      case "KEY_SELECT": sendKey(cmd); break;
-      case "KEY_UP": sendKey(cmd); break;
-      case "KEY_DOWN": sendKey(cmd); break;
-      case "KEY_BACK": sendKey(cmd); break;
-      case "KEY_LEFT": sendKey(cmd); break;
-      case "KEY_RIGHT": sendKey(cmd); break;
-      // Goto messages
-      case "GO_FULL": gotoFullscreen(); break;
-      case "GO_INFO": gotoInfo(); break;
-      case "GO_HOME": gotoHome(); break;
-      case "GO_MUSIC": gotoMusic(); break;
-      case "GO_VIDEO": gotoVideo(); break;
-      case "GO_PICS": gotoPictures(); break;
-      case "GO_WEATHER": gotoWeather(); break;
-      // Playlist messages
-      case "GET_MUSIC_PLAYLISTS": getMusicPlaylists(); break;
-      case "PLAY_MUSIC_PLAYLIST": playMusicPlaylist(e.payload); break;
-      // Addons messages
-      case "GET_ADDONS": getAddons(); break;
-      case "EXE_ADDON": executeAddon(e.payload); break;
-      // Power messages
-      case "PWR_SHUTDOWN": systemShutdown(); break;
-      case "PWR_REBOOT": systemReboot(); break;
-      case "PWR_SUSPEND": systemSuspend(); break;
-      case "PWR_HIBERNATE": systemHibernate(); break;
-      default: console.log("Command is not defined: "+cmd+"; payload: "+e.payload);
+    function (e) {
+        var cmd = e.payload.MSG_KEY_CMD;
+        switch (cmd) {
+            // Player messages
+        case "GET_STATUS":
+            getStatus();
+            break;
+        case "PLAY_PAUSE":
+            playPause();
+            break;
+        case "VOLUME_UP":
+            raiseVolume();
+            break;
+        case "VOLUME_DOWN":
+            lowerVolume();
+            break;
+        case "NEXT":
+            next();
+            break;
+        case "STOP":
+            stop();
+            break;
+        case "PREVIOUS":
+            previous();
+            break;
+            // Remote messages
+        case "KEY_SELECT":
+            sendKey(cmd);
+            break;
+        case "KEY_UP":
+            sendKey(cmd);
+            break;
+        case "KEY_DOWN":
+            sendKey(cmd);
+            break;
+        case "KEY_BACK":
+            sendKey(cmd);
+            break;
+        case "KEY_LEFT":
+            sendKey(cmd);
+            break;
+        case "KEY_RIGHT":
+            sendKey(cmd);
+            break;
+            // Goto messages
+        case "GO_FULL":
+            gotoFullscreen();
+            break;
+        case "GO_INFO":
+            gotoInfo();
+            break;
+        case "GO_HOME":
+            gotoHome();
+            break;
+        case "GO_MUSIC":
+            gotoMusic();
+            break;
+        case "GO_VIDEO":
+            gotoVideo();
+            break;
+        case "GO_PICS":
+            gotoPictures();
+            break;
+        case "GO_WEATHER":
+            gotoWeather();
+            break;
+            // Playlist messages
+        case "GET_MUSIC_PLAYLISTS":
+            getMusicPlaylists();
+            break;
+        case "PLAY_MUSIC_PLAYLIST":
+            playMusicPlaylist(e.payload);
+            break;
+            // Addons messages
+        case "GET_ADDONS":
+            getAddons();
+            break;
+        case "EXE_ADDON":
+            executeAddon(e.payload);
+            break;
+            // Power messages
+        case "PWR_SHUTDOWN":
+            systemShutdown();
+            break;
+        case "PWR_REBOOT":
+            systemReboot();
+            break;
+        case "PWR_SUSPEND":
+            systemSuspend();
+            break;
+        case "PWR_HIBERNATE":
+            systemHibernate();
+            break;
+        default:
+            console.log("Command is not defined: " + cmd + "; payload: " + e.payload);
+        }
     }
-  }
-);
\ No newline at end of file
+);