do more correct indexedDB access
[lantea.git] / js / ui.js
index 6566a86254e010bdd15ba67fab587d8c7dab346e..7ed15e286fe8cabe54dd1c92cbb46a1a1cb78e5c 100644 (file)
--- a/js/ui.js
+++ b/js/ui.js
@@ -3,10 +3,11 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // Get the best-available indexedDB object.
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // Get the best-available indexedDB object.
-var iDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
+window.indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
 var mainDB;
 
 var gUIHideCountdown = 0;
 var mainDB;
 
 var gUIHideCountdown = 0;
+var gWaitCounter = 0;
 
 window.onload = function() {
   var mSel = document.getElementById("mapSelector");
 
 window.onload = function() {
   var mSel = document.getElementById("mapSelector");
@@ -31,10 +32,32 @@ window.onload = function() {
     areas[i].addEventListener("touchleave", uiEvHandler, false);
   }
 
     areas[i].addEventListener("touchleave", uiEvHandler, false);
   }
 
+  if (navigator.platform.length == "") {
+    // For Firefox OS, don't display the "save" button.
+    // Do this by setting the debugHide class for testing in debug mode.
+    document.getElementById("saveTrackButton").classList.add("debugHide");
+  }
 
   initDB();
   initMap();
 
   initDB();
   initMap();
-  resizeAndDraw();
+
+  var loopCnt = 0;
+  var waitForInitAndDraw = function() {
+    if ((gWaitCounter <= 0) || (loopCnt > 100)) {
+      if (gWaitCounter <= 0)
+        gWaitCounter = 0;
+      else
+        document.getElementById("debug").textContent = "Loading failed (waiting for init).";
+
+      gMapPrefsLoaded = true;
+      resizeAndDraw();
+      setTracking(document.getElementById("trackCheckbox"));
+    }
+    else
+      setTimeout(waitForInitAndDraw, 100);
+    loopCnt++;
+  };
+  waitForInitAndDraw();
 }
 
 window.onresize = function() {
 }
 
 window.onresize = function() {
@@ -43,7 +66,7 @@ window.onresize = function() {
 
 function initDB() {
   // Open DB.
 
 function initDB() {
   // Open DB.
-  var request = iDB.open("MainDB", 1);
+  var request = window.indexedDB.open("MainDB", 1);
   request.onerror = function(event) {
     // Errors can be handled here. Error codes explain in:
     // https://developer.mozilla.org/en/IndexedDB/IDBDatabaseException#Constants
   request.onerror = function(event) {
     // Errors can be handled here. Error codes explain in:
     // https://developer.mozilla.org/en/IndexedDB/IDBDatabaseException#Constants