var timrerangeDates = [];
var prefix = "device-0";

$(document).ready(function(){
 $("#cvtabs").tabs();
 $("#tab_devices").tabs({
  select: function(event, ui) {
   prefix = ui.panel.id;
  }
 });
 
 $('#confirmdialog').dialog({
  autoOpen: false,
  position: 'center',
  close: function(event, ui) {
  },
  buttons: {
   "OK": function() {
    $(this).dialog('close');
   },
   "Cancel": function() {
    $(this).dialog('close');
   }
  }
 });
 
 $("#devicechart").dialog({
  autoOpen: false,
  width: 600,
  position: 'center',
  zIndex: 1010,
  close: function(event, ui) {
  },
  buttons: {
   "OK": function() {
    var start = $('#timerange').slider('values',0);
    var end = $('#timerange').slider('values',1);
    $('#' + prefix + '-start').val(timerangeDates[Math.floor(start/24)] + ' ' + (start%24) + ':00');
    $('#' + prefix + '-end').val(timerangeDates[Math.floor(end/24)] + ' ' + (end%24) + ':00');
    $('#' + prefix + '-activerange').html($("#selectedRange").val());
    $(this).dialog('close');
   },
   "Cancel": function() {
    $(this).dialog('close');
   }
  }
 });

 $('#timerange').slider({
  step: 1,
  min: 0,
  range: true,
  slide: function(event, ui) {
   var val1 = ui.values[0];
   var val2 = ui.values[1];
   $("#selectedRange").val(timerangeDates[Math.floor(val1/24)] + ', ' + (val1%24) + ':00 to ' + timerangeDates[Math.floor(val2/24)] + ', ' + (val2%24) + ':00');
  }
 });
 
 $.getScript = function(url, callback, cache){
  $.ajax({
   type: "GET",
   url: url,
   success: callback,
   dataType: "script",
   cache: cache
  });
 };
 
});

function defineTimeRange(imei) {
 //Show the loading bar and clean the previous chart if one was initialized
 $('#overlay_loading').show();
 $('#chartdiv').html("");
 //Load specific js libs only when this function is requested
 $.getScript('opt/js/jquery.jqplot.min.js',function() {
  $.getScript('opt/js/jqplot.cursor.min.js',function() {
   $.getScript('opt/js/jqplot.barRenderer.min.js',function() {
    $.getScript('opt/js/jqplot.categoryAxisRenderer.min.js',function() {
     $.getScript('opt/js/selectToUISlider.jQuery.js',function() {
      //As soon as all jqplot files are loaded, start with the custom code
      $.jqplot.postInitHooks.push(jqplotLoaded);
      $.jqplot.eventListenerHooks.push(['jqplotClick', jqplotClick]);
      $.get("opt/MapBs.php",{"imei":imei,"action":"getStatistics"}, function(data){
       jsonData = JSON.parse(data);
       var plotData = [];
       var axisData = [];
       $.each(jsonData.measurements, function(i, entry) {
        plotData.push([entry.measurement,i+1]);
        axisData.push(entry.timestamp);
       });
       $.jqplot('chartdiv', [plotData], {
        title: 'Number of measurements per day',
        series:[{
         renderer:$.jqplot.BarRenderer,
         rendererOptions:{barPadding: 5, barMargin: 20, barDirection: 'horizontal'},
         color:'#00a8ff'
        }],
        axes:{
         yaxis:{
          renderer:$.jqplot.CategoryAxisRenderer,
          ticks: axisData
         }, 
         xaxis:{min:0}
        },
        cursor:{
         show: false
        }
       });
       //Now prepare the timrerange slider

       timerangeDates = axisData;
       $('#timerange').slider('option','values',[0,timerangeDates.length*24]);
       $('#timerange').slider('option','max',timerangeDates.length*24-1);
       $("#selectedRange").val(timerangeDates[0] + ', 0:00 to ' + timerangeDates[timerangeDates.length-1] + ', 23:00');
       //finally hide the loading bar
       $('#overlay_loading').hide();
      });
      //No more custom code after this line!
     },true);
    },true);
   },true);
  },true);
 },true);
}

function jqplotClick(ev, gridpos, datapos, neighbor, plot) {
 alert(datapos + "\n" + ev + "\n" + gridpos + "\n" + neighbor + "\n" + plot);
}

function jqplotLoaded() {
 $('#devicechart').dialog('open');
}

function getLog(imei) {
 $('#overlay_loading').show();
 $.get("opt/MapBs.php",{"imei":imei,"action":"getLog"}, function(data){
  $('#' + prefix + '-log').html(data);
  $('#overlay_loading').hide();
 });
}

function sendRequest(imei,requesttype) {
 $('#overlay_loading').show();
 $.ajax({
  url: "opt/MapBs.php",
  type: "get",
  data: {
   "imei":imei,
   "action":"sendRequest",
   "requesttype":requesttype,
   "user":$('#' + prefix + '-user').val(),
   "pass":$('#' + prefix + '-pass').val()},
  success: function(data){
   $('#' + prefix + '-log').html(data);
   $('#overlay_loading').hide();
  }
 });
}

function showLastPositions(imei) {
 $('#overlay_loading').show();
 positionsLayer.removeFeatures(positionsLayer.features);
 $.get("opt/MapBs.php",{"imei":imei,"action":"getPositions","start":$('#' + prefix + '-start').val(),"end":$('#' + prefix + '-end').val(),"max":$('#' + prefix + '-max').val()}, function(data){
  positionsLayer.addFeatures(geojson_format.read(data));
  if (positionsLayer.features.length > 0) {
   dataExtent = positionsLayer.getDataExtent();
   map.zoomToExtent(dataExtent);
  } else {
   alert("No data available");
  }
  $('#overlay_loading').hide();
 });
}

