var Clay = require('pebble-clay');
var clayConfig = require('./config');
var clay = new Clay(clayConfig, null, { autoHandleEvents: false });
var messageKeys = require('message_keys');

var message;
var locate_me

var firstlocationInterval = false;
var locationInterval = false;
var instantLocationInterval = false;


Pebble.addEventListener('showConfiguration', function(e) {
    clay.config = clayConfig;
    console.log("Clay config is showing...")
    Pebble.openURL(clay.generateUrl());
});

Pebble.addEventListener('webviewclosed', function(t) {
    console.log("Clayview closed")
    if (!t || t.response) {
        console.log("Clay config is submitted : " + t.response)
        try {
            if (data = JSON.parse(t.response), data.code && data.scope == "read,activity:write") {
                if (data.state == "agenda_sommeil" && data.scope == "read,activity:write") {
                    getTokens(data.code);
                } else {
                    console.log("Error on response returned : scope is " + grantcode.scope + " and state is " + grantcode.state);
                }
            } else {
                clay.getSettings(t.response);
                console.log("Clay settings in Localstorage looks like " + localStorage.getItem("clay-settings"));
            }
        } catch (t) {
            console.log("Oauth parsing error, continue on saving clay settings");
            clay.getSettings(t.response);
            var claysettings = JSON.parse(localStorage.getItem('clay-settings'))
            claysettings.strava_enabled = false;
            localStorage.setItem("clay-settings", JSON.stringify("claysettings"));
            console.log("Clay settings in Localstorage looks like " + localStorage.getItem("clay-settings"));
        }

    }
});

function PostToWeb(event) {
    console.log(localStorage.getItem('clay-settings'))
    var url = JSON.parse(localStorage.getItem('clay-settings')).web_url + "?event="+event+"&user="+JSON.parse(localStorage.getItem('clay-settings')).username;
    var xhr = new XMLHttpRequest();
    xhr.timeout = 10000; // time in milliseconds
    xhr.open("GET", url, false);
    //console.log('------ CSV / xhr opened')
    xhr.onload = function() {
        //console.log('------xhr onloaded')
        if (xhr.readyState === 4) {
            //console.log('------xhr request returned with ' + xhr.status);
            //console.log(this.responseText);
            //localStorage.setItem("custom_uploaded", true);
            if (xhr.status == 200) {
                //console.log('--> HTTP 200');
                return true;
            } else {
                //console.log('--> HTTP ' + xhr.status);
                return false;
            }
        }
    };

  //send xhr without body (GET)
  xhr.send();
}

function init() {
    //init vars
    // get vars from clay: 
    //var su = localStorage.getItem("strava_uploaded")
    
    //debug : 
    //console.log("Locate_me = " + locate_me);

    //actions:
    //PostToWeb()


    //set var in clay :
    //localStorage.setItem("strava_uploaded", 0);

}

// Get JS readiness events
Pebble.addEventListener('ready', function(e) {
    console.log('PebbleKit JS is ready');
    // Update Watch on this
    Pebble.sendAppMessage({ 'JSReady': 1 });

    //init();
});

// Get AppMessage events
Pebble.addEventListener('appmessage', function (e) {
    // Get the dictionary from the message
    var dict = e.payload;
    //console.log(dict[0].toString());
    switch (dict[0]) {
        case 'gotosleep':
            PostToWeb("gotosleep")
            break;
        case 'awake':   
            PostToWeb("awake")
            break;
        case 'wakeup':   
            PostToWeb("wakeup")  
            break;
      default:
        console.log('Sorry. I don\'t understand your request :' + dict[0]);
    }
  
  });