/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

var platform_type = "";

var platform_theme = "md";

var nw_tray = null;

var openBrowser = function (url) {

}

var getLocation = function (success, error) {
    if ("geolocation" in navigator) {
        navigator.geolocation.getCurrentPosition(function (position) {
            success(position);
        }, function (err) {
            if (typeof error == "function") {
                error(err.message);
            }
        }, {
            enableHighAccuracy: true,
            timeout: 5000,
            maximumAge: 0
        });
    } else {
        if (typeof error == "function") {
            error("Location is unavailable.");
        }
    }
}

var watchLocation = function (success, error) {
    if ("geolocation" in navigator) {
        navigator.geolocation.watchPosition(function (position) {
            success(position);
        }, function (err) {
            if (typeof error == "function") {
                error(err.message);
            }
        }, {
            enableHighAccuracy: true,
            timeout: 5000,
            maximumAge: 0
        });
    } else {
        if (typeof error == "function") {
            error("Location is unavailable.");
        }
    }
}

function initCordova() {
    platform_type = "cordova";

    try {
        eval('"use strict"; class foo {}');
    } catch (e) {
        alert("Your device's webview is out of date and won't work with this app.  Please update it.");
    }

    // Handle back button to close things
    document.addEventListener("backbutton", function (event) {
        router.navigate("/home");
    }, false);

    document.addEventListener("deviceready", function () {
        app.statusbar.overlaysWebView(true);
        StatusBar.backgroundColorByHexString("#000000ff");
        if (cordova.platformId == 'android') {
            //StatusBar.backgroundColorByHexString("#324150");
            //StatusBar.styleLightContent();
        }
    }, false);

    openBrowser = function (url) {
        cordova.InAppBrowser.open(url, '_blank', 'location=yes');
    }
}

function initNW() {
    platform_type = "nw";
    platform_theme = "md";

    openBrowser = function (url) {
        nw.Window.open(url, {
            id: url
        }, function (browserwin) {
            // Add menubar so the user can navigate around if they click a link
            var browsermenu = new nw.Menu({type: 'menubar'});
            browsermenu.append(new nw.MenuItem({
                label: "Back",
                click: function () {
                    browserwin.window.history.back();
                }
            }));
            browsermenu.append(new nw.MenuItem({
                label: "Forward",
                click: function () {
                    browserwin.window.history.forward();
                }
            }));
            browsermenu.append(new nw.MenuItem({
                label: "Home",
                click: function () {
                    browserwin.window.location.href = url;
                }
            }));
            browserwin.menu = browsermenu;
        });
    }
}

function initBrowser() {
    platform_type = "browser";
    platform_theme = "md";

    openBrowser = function (url) {
        window.open(url);
    }
}

function initPlatform() {
    if (typeof cordova !== 'undefined') {
        initCordova();
    } else if (typeof nw !== 'undefined') {
        initNW();
    } else {
        initBrowser();
    }
}