var ws_geofence_URL = "wss://nr.zotto.cz/ws/geofence";

function esocket(number,switchORsocket,buttonEnabled) {
   this.Number=number;
   this.switchORsocket=switchORsocket;
   this.buttonEnabled=buttonEnabled;
   //this.URL = "wss://nr.zotto.cz/ws/esocket_"+number;
   this.URL = "wss://nr.zotto.cz/ws/esocket";
   this.Name = "websocket"+number;
   this.ws = new WebSocket(this.URL);
   this.ws.onopen = function() {onopen_esocket(number)};
   this.ws.onmessage = function(evt) { onMessage_esocket(evt,number)};
 }
 var myObj = new Object;
   myObj[1] = new esocket(1,"socket","Yes"); //socket_1
   myObj[2] = new esocket(2,"switch","Yes"); //living_switch_light_1
   myObj[3] = new esocket(3,"switch","Yes"); //living_switch_light_2
   myObj[4] = new esocket(4,"socket","Yes");  //socket_2
   myObj[5] = new esocket(5,"switch","Yes"); //kitchen_switch_light
   myObj[6] = new esocket(6,"switch","Yes"); //TV
   myObj[7] = new esocket(7,"switch","Yes"); //NUC
   myObj[8] = new esocket(8,"aircon","Yes"); //AC
   myObj[9] = new esocket(9,"switch","Yes"); //hall_switch_light
   myObj[10] = new esocket(10,"switch","Yes"); //bath_switch_light_1
   myObj[11] = new esocket(11,"switch","Yes"); //bath_switch_light_2
   myObj[12] = new esocket(12,"switch","Yes"); //bath_switch_fan
   myObj[13] = new esocket(13,"switch","Yes"); //bedroom_switch_light
   myObj[14] = new esocket(14,"switch","Yes"); //pantry_switch_light


 function onopen_esocket(number)
    {
  //var toSend = "STATUS";
  let toSendJson = {
   evt: "STATUS",
   esocket: ""+number+"",
   }
  let toSend = JSON.stringify(toSendJson);
  //window.alert(myObj[number].Number);
  myObj[number].ws.send(toSend);
 }

 function onMessage_esocket(evt,number) {
   var data = evt.data;
   var msgRecv=JSON.parse(data);

   if (msgRecv.esocket==number) {

     //alert(msgRecv.esocket);


   var disabled = "";
   var onclickON = "switch_esocket(&quot;ON&quot;,"+number+")";
   var onclickOFF = "switch_esocket(&quot;OFF&quot;,"+number+")";

   if (myObj[number].buttonEnabled=="No") {var disabled = "disabled"; onclickON ="#";onclickOFF ="#";}
   //var obj = JSON.parse(data.ENERGY);
   //var energy = JSON.parse(obj.firstName);
   //window.alert(disabled);
   if (msgRecv.evt == "OFF_STATUS"){
   //  window.alert("OFF_STATUS");
     line1 = '<div class="toggleI"><input id="'+number+'switch" type="checkbox" name="'+number+'switch" class="switch is-success is-medium" onclick="'+onclickON+'" '+disabled+'><label for="'+number+'switch"></label></div>';
     line = '<div class="buttons has-addons"><a class="button" id="myLink1" href="#" onclick="'+onclickON+'" '+disabled+'>ON</a><a class="button is-danger is-selected" '+disabled+'>OFF</a></div>';
     document.getElementById(+number+"_buttonONOFF").innerHTML = line1;
     document.getElementById(+number+"_messageColor").classList.remove('is-success');
     document.getElementById(+number+"_messageColor").classList.add('is-dark');
     }
   if (msgRecv.evt == "ON_STATUS") {
     //window.alert("ON_STATUS");
     line1 = '<div class="toggleI"><input id="'+number+'switch" type="checkbox" name="'+number+'switch" class="switch is-success is-medium" checked="checked" onclick="'+onclickOFF+'" '+disabled+'><label for="'+number+'switch"></label></div>';
     line = '<div class="buttons has-addons"><a class="button is-success is-selected" '+disabled+'>ON</a><a class="button" id="myLink2" href="#" onclick="'+onclickOFF+'" '+disabled+'>OFF</a></div>';
     document.getElementById(+number+"_buttonONOFF").innerHTML = line1;
     document.getElementById(+number+"_messageColor").classList.remove('is-dark');
     document.getElementById(+number+"_messageColor").classList.add('is-success');


     }



   if ((msgRecv.evt == "ENERGY_STATUS") && (myObj[number].switchORsocket == "socket")) {
       //var obj=JSON.parse(data);
       //line = '<div class="field is-grouped is-grouped-multiline"><div class="control"><div class="tags has-addons"><span class="tag is-Light">Power</span><span class="tag has-background-grey has-text-white">'+obj.ENERGY.Power+'W</span></div></div> <div class="control"><div class="tags has-addons"><span class="tag is-Light">Today</span><span class="tag has-background-grey has-text-white">'+obj.ENERGY.Today+'kWh</span></div></div> <div class="control"><div class="tags has-addons"><span class="tag is-Light">Total</span><span class="tag has-background-grey has-text-white">'+obj.ENERGY.Total+'kWh</span></div></div>';
       //document.getElementById("powerID").innerHTML = line;
       document.getElementById(+number+"_power_value").innerHTML = msgRecv.data.ENERGY.Power;
       document.getElementById(+number+"_today_value").innerHTML = msgRecv.data.ENERGY.Today;
       document.getElementById(+number+"_total_value").innerHTML = msgRecv.data.ENERGY.Total;
       document.getElementById(+number+"_current_value").innerHTML = msgRecv.data.ENERGY.Current;
       document.getElementById(+number+"_voltage_value").innerHTML = msgRecv.data.ENERGY.Voltage;
       //document.getElementById("socket_"+number+"_time").innerHTML = obj.Time;
       }

 }

 }


 function init()
   {

     websocket_geofence = new WebSocket(ws_geofence_URL);
     websocket_geofence.onmessage 	= function(evt) { onMessage_geofence(evt) };
     websocket_geofence.onopen 		= function() {onOpen_geofence()};


      function onOpen_geofence()
  	      {
  			var toSends = "STATUSS";
  			websocket_geofence.send(toSends);
  		  }



           function onMessage_geofence(evt) {
             var data = evt.data;
             //var obj = JSON.parse(data.ENERGY);
             //var energy = JSON.parse(obj.firstName);
             //window.alert(data);

             function IsJsonString(str) {
                   try {
                       JSON.parse(str);
                   } catch (e) {
                       return false;
                   }
                   return true;
               }

             if ( IsJsonString(data) == true) {
                 var objg=JSON.parse(data);
                 //line = '<div class="field is-grouped is-grouped-multiline"><div class="control"><div class="tags has-addons"><span class="tag is-Light">Power</span><span class="tag has-background-grey has-text-white">'+obj.ENERGY.Power+'W</span></div></div> <div class="control"><div class="tags has-addons"><span class="tag is-Light">Today</span><span class="tag has-background-grey has-text-white">'+obj.ENERGY.Today+'kWh</span></div></div> <div class="control"><div class="tags has-addons"><span class="tag is-Light">Total</span><span class="tag has-background-grey has-text-white">'+obj.ENERGY.Total+'kWh</span></div></div>';
                 //document.getElementById("powerID").innerHTML = line;

                 if (objg.inregions=="Home") {
                   document.getElementById("geofence_status_otto").innerHTML = '<i class="fas fa-home"></i>';
                    }
                 else if (objg.inregions=="Work") {
                   document.getElementById("geofence_status_otto").innerHTML = '<i class="fas fa-building"></i>';
                     }
                 else{
                   document.getElementById("geofence_status_otto").innerHTML = '<i class="fas fa-shoe-prints"></i>';
                     }
                 }


              }


}






    function IsJsonString(str) {
      try {
          JSON.parse(str);
      } catch (e) {
          return false;
      }
      return true;
    }



    function switch_esocket(evt,number)
       {

         let toSendJson = {
          evt: ""+evt+"",
          esocket: ""+number+"",
          }
         let toSend = JSON.stringify(toSendJson);

         //var temp =  document.getElementById("temp").value;

     //var toSend = evt;
     myObj[number].ws.send(toSend);
     }

     function aircon_setup(number)
        {

          var temp =  document.getElementById("temp").value;
          var coolmode =  document.getElementById("coolmode").checked;
          var heatmode =  document.getElementById("heatmode").checked;
          var fanspeed =  document.getElementById("fanspeed").value;
          var quietmode =  document.getElementById("quietmode").checked;
          var turbomode =  document.getElementById("turbomode").checked;


          let toSendJson = {
           evt: "AIRCON_SETUP",
           esocket: "8",
           temp: temp,
           coolmode: coolmode,
           heatmode: heatmode,
           fanspeed: fanspeed,
           quietmode: quietmode,
           turbomode: turbomode,
           }

          let toSend = JSON.stringify(toSendJson);
      //var toSend = evt;
     myObj[number].ws.send(toSend);
      }

function clock()
    {	// We create a new Date object and assign it to a variable called "time".
  var time = new Date(),

    // Access the "getHours" method on the Date object with the dot accessor.
    hours = time.getHours(),

    // Access the "getMinutes" method with the dot accessor.
    minutes = time.getMinutes(),
      seconds = time.getSeconds();

    //document.querySelectorAll('.clock')[0].innerHTML = harold(hours) + ":" + harold(minutes) + ":" + harold(seconds);

  function harold(standIn)
      {
      if (standIn < 10)
        {
          standIn = '0' + standIn
        }
      return standIn;
      }
  }

setInterval(clock, 1000);
window.addEventListener("load", init, false);
