var counter = 0;
const BANGLEJS2 = process.env.HWVERSION == 2;

if (BANGLEJS2) {  
 var drag;
 var y = 45;
 var x = 5;
} else {
 var y = 100;
 var x = 25;
}

function updateScreen() {
  if (BANGLEJS2) { 	
    g.clearRect(0, 50, 250, 130);
  } else {
    g.clearRect(0, 50, 250, 150);
  }  
  g.setBgColor(g.theme.bg).setColor(g.theme.fg);
  g.setFont("Vector",40).setFontAlign(0,0);
  g.drawString(Math.floor(counter), g.getWidth()/2, 100);
  if (!BANGLEJS2) { 
   g.drawString('-', 45, 100);
   g.drawString('+', 185, 100);
  }
}


if (BANGLEJS2) {  
 setWatch(() => {
   counter = 0;
   updateScreen();
 }, BTN1, {repeat:true});
 Bangle.on("drag", e => {
  if (!drag) { // start dragging
   drag = {x: e.x, y: e.y};
  } else if (!e.b) { // released
   const dx = e.x-drag.x, dy = e.y-drag.y;
   drag = null;
   if (Math.abs(dx)>Math.abs(dy)+10) {
    // horizontal
    if (dx < dy) {
     //console.log("left " + dx + " " + dy);
    } else {
     //console.log("right " + dx + " " + dy);
    }
   } else if (Math.abs(dy)>Math.abs(dx)+10) {
    // vertical
    if (dx < dy) {
     //console.log("down " + dx + " " + dy);
     if (counter > 0) counter -= 1;
     updateScreen();
    } else {
     //console.log("up " + dx + " " + dy);
     counter += 1;
     updateScreen();
    }
   } else {
    //console.log("tap " + e.x + " " + e.y);
   }
  }
 });
 } else {

 // add a count by using BTN1 or BTN5
 setWatch(() => {
   counter += 1;
   updateScreen();
 }, BTN1, {repeat:true});
 
 setWatch(() => {
   counter += 1;
   updateScreen();
 }, BTN5, {repeat:true});
 
 // subtract a count by using BTN3 or BTN4
 setWatch(() => {
   if (counter > 0) counter -= 1;
   updateScreen();
 }, BTN4, {repeat:true});
 
 setWatch(() => {
   if (counter > 0) counter -= 1;
   updateScreen();
 }, BTN3, {repeat:true});
 
 // reset by using BTN2
 setWatch(() => {
   counter = 0;
   updateScreen();
 }, BTN2, {repeat:true});
}


g.clear(1).setFont("6x8");
g.setBgColor(g.theme.bg).setColor(g.theme.fg);
if (BANGLEJS2) { 
 g.drawString('Swipe up to increase\nSwipe down to decrease\nPress button to reset.', x, 100 + y);
} else {
 g.drawString('Tap right or BTN1 to increase\nTap left or BTN3 to decrease\nPress BTN2 to reset.', x, 100 + y);
}

Bangle.loadWidgets();
Bangle.drawWidgets();
updateScreen();

// TODO: Enable saving counts to file
// Add small watch
