<? @include_once("../includes/common.php");?>
   //document.documentElement.requestFullscreen();

   //window.screen.mozLockOrientation('portrait');
   <?
      $baseg=str_replace("/js/domotika.js","",$BASEGUIPATH);
      $baseg=str_replace("/js/combined.min.js", "", $baseg);
   ?>

   var BASEGUIPATH='<?=$baseg?>';
   var sectar=window.location.pathname.replace(BASEGUIPATH, "").split("/");
   var GUISECTION="index";
   if(sectar.length>1 && sectar[1].length>0 && sectar[1]!='actuations')
      GUISECTION=sectar[1];
   var GUISUBSECTION="";
   if(sectar.length>2)
      GUISUBSECTION=sectar[2];
   console.debug(sectar);
   console.debug(GUISECTION);

   var windowWidth = window.screen.width < window.outerWidth ?
                  window.screen.width : window.outerWidth;
   var mobile = windowWidth < 500;

   var ttsEnabled=<?=$_DOMOTIKA['tts']?>; 
   var slideEnabled=<?=$_DOMOTIKA['slide']?>;
   var speechEnabled='<?=$_DOMOTIKA["webspeech"]?>';

   var notifyColor='#fff';
   if('<?=$_DOMOTIKA["gui_theme"]?>'=='dmblack')
      notifyColor='#000';

   var stringColors = {
      'red': '#ff0000',
      'green': '#5cb85c',
      'gray': '#999999',
      'orange': '#f0ad4e',
      'blue': '#428bca',
      'azure': '#5bc0de',
      'black': '#000000',
      'white': '#ffffff'
   };

   //var scroller = new AppScroll({
   //   toolbar: $('#topbar')[0],
   //   scroller: $('#content')[0]
   //})

   if (!Date.now) {
      Date.now = function() { return new Date().getTime(); };
   }

   var audioTagSupport = !!(document.createElement('audio').canPlayType);
   /*  
   function DoFullScreen() {
      if (!document.fullscreenElement &&    // alternative standard method
            !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) {  // current working methods
         if (document.documentElement.requestFullscreen) {
            document.documentElement.requestFullscreen();
         } else if (document.documentElement.msRequestFullscreen) {
            document.documentElement.msRequestFullscreen();
         } else if (document.documentElement.mozRequestFullScreen) {
            document.documentElement.mozRequestFullScreen();
         } else if (document.documentElement.webkitRequestFullscreen) {
            document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
         }
      }
   }
   */

   function jQueryEscapesel(expression) {
      return expression.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, '\\$&');
  }

   (function () {
      var previousScroll = 0;

      $(window).scroll(function(event){
         $(this).scrollLeft()!=0;
         $(window).scrollLeft(0);
         event.preventDefault();
      });
   }()); // to disable right scroll on panels open

   $(window).scroll(function(event){
      console.debug(event);
   });

   if(window.navigator.userAgent.match(/(iPad|iPhone|iPod)/g))
   {
      $(document).ready(function(){
         if (("standalone" in window.navigator) && window.navigator.standalone) {
            // For iOS Apps
            $('a').on('click', function(e){
               e.preventDefault();
               var new_location = $(this).attr('href');
               if (new_location != undefined && new_location.substr(0, 1) != '#' && $(this).attr('data-method') == undefined){
                  window.location = new_location;
               }
            });
         }
      });


   }


   if(window.navigator.userAgent.match(/firefox/i) && window.navigator.userAgent.match(/mobile/i))
   {

      var installbutton = $("#installbutton");
      var port="";
      if(document.location.port)
         var port=":"+document.location.port;
      <?
         $manif=str_replace("/js/domotika.js","",$BASEGUIPATH);
         $manif=str_replace("/js/combined.min.js", "", $manif);
      ?>
      var manifest_url = document.location.protocol+"//"+document.location.host+port+"<?=$manif?>/manifest.webapp";
         
      function installFFApp(ev) {
         ev.preventDefault();
         var myapp = navigator.mozApps.install(manifest_url);
         myapp.onsuccess = function(data) {
            $("#install_ff").hide()
            console.log(this);
            popupFader('success', 'SUCCESS:','Web app installata correttamente');
            var a = playTTS('Web app installata correttamente');

         };
         myapp.onerror = function() {
            console.log('Install failed, error: ' + this.error.name);
            popupFader('danger', 'ERROR:', 'App not installed: '+this.error.name);
            playTTS('Errore, applicazione non installata');
         };
      };
   

      var installCheck = navigator.mozApps.checkInstalled(manifest_url);

      installCheck.onsuccess = function() {
         if(installCheck.result) {
            $("#install_ff").hide();
         } else {
            $("#install_ff").show();
            installbutton.on('click', installFFApp);
         };
      };
   }

   if(mobile)
   {
      if(jQuery.isFunction(window.screen.lockOrientation))
         window.screen.lockOrientation('portrait');
      else if(jQuery.isFunction(window.screen.mozLockOrientation))
         window.screen.mozLockOrientation('portrait');
      else if(jQuery.isFunction(window.screen.msLockOrientation))
         window.screen.msLockOrientation('portrait');
      else if(jQuery.isFunction(window.screen.webkitLockOrientation))
         window.screen.webkitLockOrientation('portrait');
   }
      
   function tmpPopover(el, cont, placement, timeout)
   {
      console.debug(cont);
      //el.popover("destroy");
      el.popover({
         placement: placement,
         content: cont,
         delay: {show: 100, hide: timeout},
         container: el,
         trigger: "manual"});
      console.debug(el.popover);
      el.addClass('text-on-white-theme-<?=$_DOMOTIKA["gui_theme"]?>');
      el.popover("show");
      el.find(".popover-content").html(cont);
      setTimeout(function(){el.popover("destroy")}, timeout);
   }

   function playTTS(text, lang, force)
   {
      if(typeof(force)==='undefined') force=false;
      if(typeof(lang)==='undefined') lang = "it";
      if (!audioTagSupport) return false;
      if (text=='') return false;
      if (ttsEnabled!=1 && force===false) return false;
      if($("playTTS_audio").length)
      {
         var audio = $("playTTS_audio");
      }
      else
      {
         var audio = document.createElement('audio');
         audio.setAttribute('id' , 'playTTS_audio');
      }
      // XXX BUG: webkit based browsers seems to not work with https:// in <audio>, so, we fix this to http
      audio.setAttribute('src', 'http://translate.google.com/translate_tts?tl='+lang+'&q=' + encodeURIComponent(text));
      audio.load();
      audio.play();
      return audio;
   }  

   function speechResult(data) {
      if(data.result=='succeed')
      {
         var resp=data.data[0];
         if(resp=='NOACT')
            resp="Nessuna corrispondenza";
         tmpPopover($("#speech"), resp, 'top', 1500);
         playTTS(resp);
      }
   }

   function sendSpeech(spobj)
   {
      console.debug(spobj.serialize());
      $.post("/rest/v1.2/actions/speech_text/json", spobj.serialize(), speechResult );
   }

   // Test SpeechAPI
   var speechStartWord='*terms';
   if((speechEnabled=='touch' && document.createElement('input').webkitSpeech==undefined) || speechEnabled=='continuous')
   {
      if(speechEnabled!='continuous')
      {
         if(window.annyang)
         {
            $("#speechbutton").show(); // it isn't chrome with webkit-speech attribute, but it support WEB Speech API
         }
         else
         {
            $("#speechbutton").hide();
            speechEnabled=='no';
         }
      } else {
         $("#speechbutton").hide();
         speechStartWord='ok domotica *terms';
      }
   } else {
      speechEnabled='touch-chrome';
   }

   function setSpeechText(terms)
   {
      // XXX Sistema sta cosa!
      $("#speech [name=text]").val(terms);
      $("#speechsm [name=text]").val(terms);
      console.debug("SpeechRecognized: "+terms)
      sendSpeech($("#speech"));
   }

   var commands = {
      speechStartWord: setSpeechText 
   };

   if(speechEnabled=='touch' || speechEnabled=='continuous') 
   {
      try {
         annyang.init(commands);
      } catch(err) {
         annyang=null;
      }
      if(annyang) {
         annyang.setLanguage('<?=$_DOMOTIKA['speechlang']?>');
         if(speechEnabled=='continuous')
            annyang.start();
         else if(speechEnabled=='touch')
            annyang.setContinuous(false);
      } else {
         $("#speechbutton").hide();
         speechEnabled='no';
      } 
   } 

   var popupFader = function(ftype, title, message, timeout){
      if(typeof(timeout)==='undefined') timeout = 1500;
      $("#alertTitle").text(title);
      $("#alertMessage").text(" "+message);
      $("#alertPopup").removeClass();
      $("#alertPopup").addClass("alert alert-"+ftype);
      $("#alertContainer").fadeIn(100);
      $("#alertContainer").fadeOut({duration:timeout, easing:'easeInQuint'});
   };

    <? if($left || $right) { ?>

   function calcSnapSize()
   {
      if($(window).width()>768)
         var mval=Math.min(Math.ceil((75/100)*$(window).width()), 800);
      else
         var mval=Math.max(Math.ceil((75/100)*$(window).width()), 266);
      return mval
   }

   $(document).ready(function() {
      mval = calcSnapSize();
      $(".left-drawer").each(function(){ $(this).css("width", mval)});
      $(".right-drawer").each(function(){ $(this).css("width", mval)});
      $(".right-drawer a").each(function(){ 
         if($(this).attr('data-guisection')==GUISECTION){
            //$(this).css('border', '2px solid azure'); 
            $(this).addClass('shadow-<?=$_DOMOTIKA["gui_theme"]?>');
         }
      });
      $(".left-drawer a").each(function(){ 
         if($(this).attr('data-guisubsection')==GUISUBSECTION){
            //$(this).css('border', '2px solid azure'); 
            $(this).addClass('shadow-<?=$_DOMOTIKA["gui_theme"]?>');
         }
      });

   });

   var snapper = new Snap({
      resistance: 0,
      easing: 'linear',
      transitionSpeed: 0.1,
      tapToClose: false,
      element: $('#content')[0],
      dragger: $('#content')[0],
      //dragger: $('[data-domotika-dragger="true"]')[0],
      minDragDistance: 20,
      slideIntent: 30,
      touchToDrag: slideEnabled,
      maxPosition: calcSnapSize(),
      minPosition: -calcSnapSize()
   });

   snapper.on('animating',
      function(e) {
         var mval = calcSnapSize();
         <? if($left) { ?>
         if(snapper.state().info.opening=='left' && snapper.state().state!='left' && $(".left-drawer").css("width")!=mval+"px")
         {
            $(".left-drawer").css("width", mval);
            snapper.settings({maxPosition: mval,easing:'ease',transitionSpeed:0.3});
            snapper.on('animated', function(e){ 
               snapper.off('animated');
               snapper.open('left');
            }); 
                   
         }
         <? } ?>
         <? if($left && $right) { ?> else <? } ?><? if($right) { ?>if(snapper.state().info.opening=='right' && snapper.state().state!='right' && $(".right-drawer").css("width")!=mval+"px")
         {
            $(".right-drawer").css("width", mval)
            snapper.settings({minPosition: -mval,easing:'ease',transitionSpeed:0.3});
            snapper.on('animated', function(e){ 
               snapper.off('animated');
               snapper.open('right');
            }); 
         }
         <? } ?>
      });
   <? } ?>
   
    <? if($left) { ?>
   //$('#open-left').on('click', 
   $('#open-left').fastClick(
      function(e) {
         if(snapper.state().state=='left')
            snapper.close('left');
         else {
            snapper.open('left');
         }
         
      });
   <? } ?>
   <? if($right) { ?>
   //$('#open-right').on('click', 
   $('#open-right').fastClick(
      function(e) {
         if(snapper.state().state=='right')
            snapper.close('right');
         else {
            snapper.open('right');
         }
      });
   <? } ?>

   function notifylistitem(text, source, nid, ndate)
   {
      var nd = new Date(parseInt(ndate*1000));
      var ndate=nd.toLocaleString();
      var nli='<?=notifyListItem("notify-item-theme-".$_DOMOTIKA["gui_theme"]);?>';
      nli=nli.replace('[TXT]', text);
      nli=nli.replace('[NDATE]', ndate);
      nli=nli.replace('[NSOURCE]', source);
      nli=nli.replace('[NID]', nid);
      return nli;
   }


   //$("#notifybutton").on('click',
   $("#notifybutton").fastClick(
      function(e) {
         if($("#notifypanel").is(":hidden")) {
            var hval=Math.ceil((75/100)*$(window).height());
            var wval=Math.min(Math.ceil((75/100)*$(window).width()), 500);
            $("#notifypanel").css("height", hval);
            $("#notifypanel").css("width", wval);
            $(".notifylist").css("height", hval-78);
            $("#notifications").empty();
            $.get("/rest/v1.2/notifications/json", function(r){
            for(i=0;i<r.data.length;i++)
            {
               console.debug(r.data[i]);
               console.debug($("#notifications"));
               $("#notifications").prepend(notifylistitem(r.data[i].message, r.data[i].source, r.data[i].id, r.data[i].added));     
            }
         });

      }
      $.get("/rest/v1.2/notifications/count/json", function(r){ $("#notifybadge").text(r.data);});
      $("#notifypanel").slideToggle(200);
   });

   $('#speech').bind('webkitspeechchange',function(event) {
      event.preventDefault();
      sendSpeech($("#speech"));
   });

   $('#speechsm').bind('webkitspeechchange',function(event) {
      event.preventDefault();
      sendSpeech($("#speechsm"));
   });

   $("#speech").keypress(function(event) {
      var keycode = (event.keyCode ? event.keyCode : event.which);
      if(keycode == 13) {
         event.preventDefault();
         sendSpeech($("#speech"));
      }
   });

   $("#speechsm").keypress(function(event) {
      var keycode = (event.keyCode ? event.keyCode : event.which);
      if(keycode == 13) {
         event.preventDefault();
         sendSpeech($("#speechsm"));
      }
   });

   function gaugeFloat(fval)
   {
      return fval;
   }

   var gaugeArray = new Array();
   $("[data-domotika-type=gauge]").each(
      function (){
         if($(this).attr('data-dmval-min')!=$(this).attr('data-dmval-low') && $(this).attr('data-dmval-min')!=$(this).attr('data-dmval-high'))
         {
            var customS=[
               {color: stringColors[$(this).attr('data-dmcolor-min')], 
                  lo: $(this).attr('data-dmval-min')/$(this).attr('data-dmval-divider'), 
                  hi: $(this).attr('data-dmval-low')/$(this).attr('data-dmval-divider')},
               {color: stringColors[$(this).attr('data-dmcolor-low')], 
                  lo: $(this).attr('data-dmval-low')/$(this).attr('data-dmval-divider'), 
                  hi: (($(this).attr('data-dmval-low')/$(this).attr('data-dmval-divider'))
                     +((($(this).attr('data-dmval-high')-$(this).attr('data-dmval-low'))/2)/$(this).attr('data-dmval-divider')))},
               {color: stringColors[$(this).attr('data-dmcolor-medium')], 
                  lo: (($(this).attr('data-dmval-low')/$(this).attr('data-dmval-divider'))
                     +((($(this).attr('data-dmval-high')-$(this).attr('data-dmval-low'))/2)/$(this).attr('data-dmval-divider'))), 
                  hi: $(this).attr('data-dmval-high')/$(this).attr('data-dmval-divider')},
               {color: stringColors[$(this).attr('data-dmcolor-high')], 
                  lo: $(this).attr('data-dmval-high')/$(this).attr('data-dmval-divider'), 
                  hi: $(this).attr('data-dmval-max')/$(this).attr('data-dmval-divider')}
            ];
         } else {
            var customS=false;
            var levelC=new Array(
                  stringColors[$(this).attr('data-dmcolor-min')], 
                  stringColors[$(this).attr('data-dmcolor-low')], 
                  stringColors[$(this).attr('data-dmcolor-medium')], 
                  stringColors[$(this).attr('data-dmcolor-high')]
               );
         }
         gaugeArray[$(this).attr('id')]=new JustGage({
                                          id:$(this).attr('id'),
                                          value: 0,
                                          textRenderer: gaugeFloat,
                                          min: $(this).attr('data-dmval-min')/$(this).attr('data-dmval-divider'),
                                          max: $(this).attr('data-dmval-max')/$(this).attr('data-dmval-divider'),
                                          valueFontColor: "#999999",
                                          title: $(this).attr('data-domotika-name'),
                                          labelFontColor: "#999999",
                                          label: $(this).attr('data-domotika-label'),
                                          customSectors: customS,
                                          shadowSize: 10,
                                          showinnerShadow: true, 
                                          shadowOpacity: 1
                                      });
         gaugeArray[$(this).attr('id')].refresh($(this).attr('data-dmval')/$(this).attr('data-dmval-divider'));
         $(this).data('gauge', gaugeArray[$(this).attr('id')]);
      }
   );

   var es = new EventSource("/sse");

   var syncReceived = function(event) {
      var res=$.parseJSON(event.data);
      $.each(res.data.statuses, function(idx, val){
         console.debug(val);
         switch(val[3])
         {
            case 'relay':
               var sel="data-domotika-relid";
               $("[data-domotika-ampid="+val[0]+"]").each(
                  function() {
                     $(this).text(val[2]/10);
                  }
               ); 
               $("[data-domotika-ampcol="+val[0]+"]").each(
                  function() {
                     var ampere=val[2]/10;
                     if(ampere>0 && ampere<8) {
                        var badgecolor="badge-success";
                     }else if(ampere>=8 && ampere<11) {
                        var badgecolor="badge-info";
                     }else if(ampere>=11 && ampere<14) {
                        var badgecolor="badge-warning";
                     }else if(ampere>=14) {
                        var badgecolor="badge-danger";
                     } else {
                        var badgecolor="";
                     }
                     $(this).alterClass("badge-*", badgecolor);
                  }
               ); 
               break;
            case 'input':
               var sel="data-domotika-inpid";
               $("[data-domotika-inpled="+val[0]+"]").each(
                  function() {
                     if(val[1]>0) {
                        $(this).alterClass($(this).attr('data-dmcolor-off'), $(this).attr('data-dmcolor-on'));   
                     } else {
                        $(this).alterClass($(this).attr('data-dmcolor-on'), $(this).attr('data-dmcolor-off'));
                     }
                  }
               );
               break;
            case 'analog':
               $("[data-domotika-analed="+val[0]+"]").each(
                  function() {
                    console.debug("analed");
                  }
               );
               $("[data-domotika-anaid="+val[0]+"]").each(
                  function() {
                     if(val[1]<=$(this).attr('data-dmval-min')) {
                        $(this).alterClass('btn-*', $(this).attr('data-dmcolor-min'));
                     } else if(val[1]<=$(this).attr('data-dmval-low')) {
                        $(this).alterClass('btn-*', $(this).attr('data-dmcolor-low'));
                     } else if(val[1]<$(this).attr('data-dmval-high')) {
                        $(this).alterClass('btn-*', $(this).attr('data-dmcolor-med'));
                     } else if(val[1]>=$(this).attr('data-dmval-high')) {
                        $(this).alterClass('btn-*', $(this).attr('data-dmcolor-high'));
                     }

                  }
               );

               $("[data-domotika-anaprog="+val[0]+"]").each(
                  function() {
                     if(val[1]<=$(this).attr('data-dmval-min')) {
                        $(this).alterClass('progress-bar-*', $(this).attr('data-dmcolor-min'));
                     } else if(val[1]<=$(this).attr('data-dmval-low')) {
                        $(this).alterClass('progress-bar-*', $(this).attr('data-dmcolor-low'));
                     } else if(val[1]<$(this).attr('data-dmval-high')) {
                        $(this).alterClass('progress-bar-*', $(this).attr('data-dmcolor-med'));
                     } else if(val[1]>=$(this).attr('data-dmval-high')) {
                        $(this).alterClass('progress-bar-*', $(this).attr('data-dmcolor-high'));
                     }
                  }
               );
               $("[data-domotika-anat="+val[0]+"]").each(
                  function() {
                     v=val[1]/$(this).attr('data-dmval-divider');
                     $(this).text(v);
                  }
               );
               $("[data-domotika-anab="+val[0]+"]").each(
                  function() {
                     v=val[1]/$(this).attr('data-dmval-divider');
                     $(this).text(v);
                  }
               );
               $("[data-domotika-gaugeid="+val[0]+"]").each(
                  function() {
                     $(this).data('gauge').refresh(val[1]/$(this).attr('data-dmval-divider'));
                  }
               );


               break;
            case 'action':
               var sel="data-domotika-actid";
               $("[data-domotika-act2textid="+val[0]+"]").each(
                  function() {
                     if(val[2]>0) {
                        $(this).text($(this).attr('data-dmtext-on'));
                     } else {
                        $(this).text($(this).attr('data-dmtext-off'));
                     }
                  }
               );
               $("[data-domotika-act2col="+val[0]+"]").each(
                  function() {
                     if(val[2]>0) {
                        console.debug($(this));
                        console.debug($(this).attr('data-dmcolor-off'));
                         console.debug($(this).attr('data-dmcolor-on'));
                        $(this).alterClass($(this).attr('data-dmcolor-off'), $(this).attr('data-dmcolor-on'));
                     } else {
                        $(this).alterClass($(this).attr('data-dmcolor-on'), $(this).attr('data-dmcolor-off'));
                     }
                  }
               );

               break;
         }
         if(val[3]!="analog") {
            $("["+sel+"="+val[0]+"]").each(
               function() {
                  if($(this).prop("nodeName")=="BUTTON") {
                     if(val[1]>0) {
                        $(this).alterClass($(this).attr('data-dmcolor-off'), $(this).attr('data-dmcolor-on'));
                        $(this).text($(this).attr('data-dmtext-on'));
                     } else {
                        $(this).alterClass($(this).attr('data-dmcolor-on'), $(this).attr('data-dmcolor-off'));
                        $(this).text($(this).attr('data-dmtext-off'));
                     }
                  } else if($(this).prop("nodeName")=="DIV" && $(this).hasClass('has-switch')) {
                     $(this).bootstrapSwitch('setState', val[1], true);
                  }
               }  
            );
         } // if !=analog
      });
   };

   var notificationReceived = function(event) {
      var data=$.parseJSON(event.data);
      var nt=data.data;
      var ts=data.ts
      $.get("/rest/v1.2/notifications/count/json", function(r){ $("#notifybadge").text(r.data);});
      tmpPopover($("#notifybutton"), "New Notify: "+nt.msg, 'left', 1000);     
      if($("#notifypanel").is(":visible"))
      {
         $("#notifications").prepend(notifylistitem(nt.msg, nt.source, nt.nid, ts));
         $("#notifyid-"+nt.nid).animate({backgroundColor: "#0080ff"},200);
         $("#notifyid-"+nt.nid).animate({backgroundColor: notifyColor},3500);
      }
      playTTS("nuova notifica,"+nt.msg);
      
   };

   var deleteNotification = function(el)
   {
      el.fadeOut(500, function(){el.remove();});
      $.ajax({url: "/rest/v1.2/notifications/"+el.attr('id').split("-")[1]+"/json", type:"DELETE", success: function(res){
         $.get("/rest/v1.2/notifications/count/json", function(r){ 
            $("#notifybadge").text(r.data);
            });
         }
      });
   }

   $("#notifications").hammer().on("swipeleft", ".notify-swipe-deletable", 
      function() {
         deleteNotification($(this));
      });
   $("#notifications").on("click", 'i.notify-deletable',
      function() {
         deleteNotification($(this).parent().parent());
      });
   $("#notify-removeall").on("click", 
      function(){
         $.ajax({url: "/rest/v1.2/notifications/", type:"DELETE", success:function(res){
            $("#notifypanel").slideToggle(200);
            $.get("/rest/v1.2/notifications/count/json",function(r){
               $("#notifybadge").text(r.data);
            });
         }});  
      });
   
   var setDaemonStatus = function(event) {
      var data=$.parseJSON(event.data);
      if(data.data=='boardsdetection')
      {
         $("#modal_fixed").load('/resources/modals/autodetection_run.html');
         $("#modal_fixed").modal('show');
      } else if(data.data=='normal') {
         $("#modal_fixed").modal('hide');
         $("#modal_fixed").empty();
         location.reload();
      }
    
   }

   es.addEventListener("daemonstatus", setDaemonStatus);
   es.addEventListener("notify", notificationReceived);
   es.addEventListener("sync", syncReceived);

   es.onerror = function(event){
     if(es.readystate=='CLOSED')
        es = new EventSource("/sse");
   }
   $(window).load(function(){

      $.get("/rest/v1.2/daemonstatus/json",
         function(r){
            if(r.data=='boardsdetection')
            {
               $("#modal_fixed").load('/resources/modals/autodetection_run.html');
               $("#modal_fixed").modal('show');
            }
         }
      );


      setInterval(function(i){
         //console.debug("setinterval");
         $.get("/rest/v1.2/keepalive/json", 
            function(r){
               //console.debug(r);
               //console.debug("getok");
               //if('vibrate' in navigator) {
               //   // ... vibrate for a second
               //   navigator.vibrate(1000);
               //}
               if(r.data=='SLOGGEDOUT')
               {
                  location.reload();
               }
               if($("#modal_offline").attr('aria-hidden')=='false')
                  $("#modal_offline").modal('hide');

            }).fail(function(r){
               console.debug("getfail");
               console.debug(r);
               $("#modal_offline").modal('show');
            }
         );
      },5000);

      $.get("/rest/v1.2/notifications/count/json", function(r){ $("#notifybadge").text(r.data);});
   });