* 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 gWaitCounter = 0;
+var gAction, gActionLabel;
window.onload = function() {
+ gAction = document.getElementById("action");
+ gActionLabel = document.getElementById("actionlabel");
+
var mSel = document.getElementById("mapSelector");
for (var mapStyle in gMapStyles) {
var opt = document.createElement("option");
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();
- resizeAndDraw();
+
+ var loopCnt = 0;
+ var waitForInitAndDraw = function() {
+ if ((gWaitCounter <= 0) || (loopCnt > 100)) {
+ if (gWaitCounter <= 0)
+ gWaitCounter = 0;
+ else
+ console.log("Loading failed (waiting for init).");
+
+ gMapPrefsLoaded = true;
+ resizeAndDraw();
+ gActionLabel.textContent = "";
+ gAction.style.display = "none";
+ setTracking(document.getElementById("trackCheckbox"));
+ }
+ else
+ setTimeout(waitForInitAndDraw, 100);
+ loopCnt++;
+ };
+ waitForInitAndDraw();
}
window.onresize = function() {
function initDB() {
// Open DB.
- var request = iDB.open("MainDB", 1);
+ var request = window.indexedDB.open("MainDB", 2);
request.onerror = function(event) {
// Errors can be handled here. Error codes explain in:
// https://developer.mozilla.org/en/IndexedDB/IDBDatabaseException#Constants
- //document.getElementById("debug").textContent =
- // "error opening mainDB: " + event.target.errorCode;
+ if (gDebug)
+ console.log("error opening mainDB: " + event.target.errorCode);
};
request.onsuccess = function(event) {
- //document.getElementById("debug").textContent = "mainDB opened.";
mainDB = request.result;
};
request.onupgradeneeded = function(event) {
mainDB = request.result;
- //document.getElementById("debug").textContent = "mainDB upgraded.";
- // Create a "prefs" objectStore.
- var prefsStore = mainDB.createObjectStore("prefs");
- // Create a "track" objectStore.
- var trackStore = mainDB.createObjectStore("track", {autoIncrement: true});
+ var ver = mainDB.version || 0; // version is empty string for a new DB
+ if (gDebug)
+ console.log("mainDB has version " + ver + ", upgrade needed.");
+ if (!mainDB.objectStoreNames.contains("prefs")) {
+ // Create a "prefs" objectStore.
+ var prefsStore = mainDB.createObjectStore("prefs");
+ }
+ if (!mainDB.objectStoreNames.contains("track")) {
+ // Create a "track" objectStore.
+ var trackStore = mainDB.createObjectStore("track", {autoIncrement: true});
+ }
+ if (!mainDB.objectStoreNames.contains("tilecache")) {
+ // Create a "tilecache" objectStore.
+ var tilecacheStore = mainDB.createObjectStore("tilecache");
+ }
mainDB.onversionchange = function(event) {
mainDB.close();
mainDB = undefined;