var myMap, tStamp = 0, op = 0, maxAlt = 8000, maxSpeed = 220, locs = [], sel = 0, noFade = false, maximum = [], lastId = 0, trace = true;
maximum['a'] = 0;
maximum['s'] = 0;

function initLite() {
  var b = jQuery.browser;
  if (b.msie && b.version=='6.0') noFade = true;
  myMap = new TargeoLite({e: 'locs', w: '492', h: '400', x: 19, y: 52, z: 29});
  $('#altitude').click(function(){
    $('#buttons div.selected').removeClass('selected');
    $(this).addClass('selected');
    $('#altitudes').show();
    $('#speeds').hide();
  });
  $('#speed').click(function(){
    $('#buttons div.selected').removeClass('selected');
    $(this).addClass('selected');
    $('#altitudes').hide();
    $('#speeds').show();
  });
  $('#locs').mouseup(function(){
    if ($(this).hasClass('car')==false) {
      myMap.destroyPoint('pos');
      $('#pop').remove();
      $('#trace').fadeIn();
      trace = false;
    }
  });
  var p = $('#locs').offset();
  $('#trace').css({'top':p.top+3+'px','left':p.left+392+'px'}).click(function(){
    $('#trace').fadeOut('slow');
    trace = true;
    showLoc(lastId);
  });
  $('#alert').css({'top':p.top+3+'px','left':p.left+30+'px'}).click(function(){
    showLoc(lastId);
  });
  checkLocs();
}

showPos = function() {
  showLoc($(this).attr('rel'));
}

showLoc = function(i) {
  var item = locs[i];
  if (item!=undefined) {
    myMap.moveTo({x:item.x,y:item.y},20);
    outLoc();
    sel = i;
    if ($('#l'+sel).attr('src')!=undefined) {
      $('#l'+sel).attr({'src':$('#l'+sel).attr('src').replace('c/0/','c/0s/')});
      if (!noFade) $('#l'+sel).fadeTo(0, 1);
    }
    $('.over').removeClass('over');
    $('#h'+i).addClass('over');
    $('#a'+i).addClass('over');
    $('#s'+i).addClass('over');
    myMap.destroyPoint('pos');
    if (i!=lastId) {
      $('#trace').fadeIn();
      trace = false;
      myMap.createPoint(
        'pos',
        {x:item.x,y:item.y},
        {url:'/miploloc/c/0s/'+item.c+'.png',w:20,h:20,x:10,y:10,a:true}
      );
    }
    else
      $('#alert').fadeOut('slow');
    var p = $('#locs').offset();
    $('#pop').remove();
    $(
      '<div id="pop"><center><span class="date">'+item.t+'</span></center><center id="addr"></center><center><span class="high">'+item.a+' m. n.p.m.</span>&nbsp;<span class="speed">'+item.s+' km/h</span></center></div>'
    ).insertAfter('#info')
    .show()
    .css({'top':p.top+295+'px','left':p.left+5+'px'})
    .click(function(){
      myMap.destroyPoint('pos');
      $(this).remove();
    });
    if (item.addr==undefined) {
      var addr = "Blebleble";
      $('#addr').load('/c/address.php?lon='+item.x+'&lat='+item.y,function(){
        $(this).css({'background':'none'});
      });
    }
    else {
      $('#addr').text(item.addr).css({'background':'none'});
    }
  }
}

outLoc = function() {
  if (sel>0 && $('#l'+sel).attr('src')!=undefined) {
    it = locs[sel];
    $('#l'+sel).attr({'src':$('#l'+sel).attr('src').replace('c/0s/','c/0/')});
    if (it.o<1000 && !noFade) $('#l'+sel).fadeTo(0, it.o/1000);
  }
  sel = 0;
}

addPoint = function(i, item, o) {
  var el = myMap.createPoint(
    'l'+i,
    {x:item.x,y:item.y},
    {url:'/miploloc/c/0/'+item.c+'.png',w:20,h:20,x:10,y:10,a:true}
  );
  item.o = o;
  locs[i] = item;
  var tt = item.t; if (item.p!='') tt+= ' - '+item.p;
  $(el).addClass('car').attr({'title':tt,'rel':i}).click(showPos).hover(
    function(){
      $('.over').removeClass('over');
      outLoc();
      sel = $(this).attr('rel');
      $(this).attr({'src':$(this).attr('src').replace('c/0/','c/0s/')});
      if (!noFade) $(this).fadeTo(0, 1);
      $('#h'+i).addClass('over');
      $('#a'+i).addClass('over');
      $('#s'+i).addClass('over');
    },
    function(){
      $('.over').removeClass('over');
      outLoc();
    }
  ).click(showPos);
  if (o<1000 && !noFade) $('#l'+i).fadeTo(0, o/1000);
}

lastLoc = function(item) {
  myMap.destroyPoint('last');
  var el = myMap.createPoint(
    'last',
    {x:item.x,y:item.y},
    {url:'/miploloc/c/'+$('#c').val()+'/'+item.c+'.png',w:item.w*2,h:item.h*2,x:item.w,y:item.h,a:true}
  );
  lastId = item.i;
  if (tStamp==0) myMap.moveTo({x:item.x,y:item.y},3);
  var tt = item.t; if (item.p!='') tt+= ' - '+item.p;
  $(el).addClass('car').attr({'title':tt,'rel':item.i}).click(showPos);
  $('#alert').fadeOut('slow');
  if (tStamp>0) $('#alert').fadeIn('slow');
  if (trace) showLoc(item.i);
}

addHistory = function(i, item) {
  $(
    '<div id="h'+i+'" rel="'+i+'" title="'+item.p+'" class="history"><span class="date">'+item.t+'</span><br /><span class="high">'+item.a+' m. n.p.m.</span><br /><span class="speed">'+item.s+' km/h</span></div>'
  ).prependTo("#history").hover(
    function(){
      $('.over').removeClass('over');
      outLoc();
      sel = $(this).attr('rel');
      if ($('#l'+sel).attr('src')!=undefined) {
        $('#l'+sel).attr({'src':$('#l'+sel).attr('src').replace('c/0/','c/0s/')});
        if (!noFade) $('#l'+sel).fadeTo(0, 1);
      }
      $(this).addClass('over');
      $('#a'+i).addClass('over');
      $('#s'+i).addClass('over');
    },
    function(){
      $('.over').removeClass('over');
      outLoc();
    }
  ).click(showPos);
}

addStat = function(i, item, tp) {
  if (tp=='a') {
    var el = '#altitudes';
    var mx = maxAlt;
    var vl = Math.round(item.a);
    var jm = 'm. n.p.m.';
  }
  else {
    var el = '#speeds';
    var mx = maxSpeed;
    var vl = Math.round(item.s);
    var jm = 'km/h';
  }
  var hg = $(el).innerHeight();
  var one = mx * 1.2 / hg;
  var h = vl/one + 1;
  var t = hg-h;
  var tt = vl+' '+jm+'; '+item.t; if (item.p!='') tt+= ' - '+item.p;
  $('<td><div id="'+tp+i+'" rel="'+i+'" class="stat" title="'+tt+'">&nbsp;</div></td>').appendTo(el+' tr');
  $('#'+tp+i).hover(
    function(){
      $('.over').removeClass('over');
      outLoc();
      sel = $(this).attr('rel');
      if ($('#l'+sel).attr('src')!=undefined) {
        $('#l'+sel).attr({'src':$('#l'+sel).attr('src').replace('c/0/','c/0s/')});
        if (!noFade) $('#l'+sel).fadeTo(0, 1);
      }
      $(this).addClass('over');
      $('#h'+i).addClass('over');
    },
    function(){
      $('.over').removeClass('over');
      outLoc();
    }
  ).css({'height':h+'px'}).click(showPos);
  if (vl>maximum[tp] && vl>0) {
    $(el+' div.max').removeClass('max');
    $('#'+tp+i).addClass('max');
    maximum[tp] = vl;
  }
}

loadLocs = function(json) {
  if (json.status==1) {
    maxAlt = json.maxAlt;
    maxSpeed = json.maxSpeed;
    $.each(json.items, function(i,item){
      op = Math.round(op) + Math.round(json.step);
      item.x = parseFloat(item.x);
      item.y = parseFloat(item.y);
      addPoint(i, item, op);
      addHistory(i, item);
      addStat(i, item, 'a');
      addStat(i, item, 's');
    });
    if (json.last!=undefined) lastLoc(json.last);
    tStamp = json.t;
  }
  else if (json.status==2) 
    alert(json.statusInfo);
  setTimeout(checkLocs, 20000);
}

checkLocs = function() {
  $.getJSON("/c/miplolocs.php", {
    't':tStamp,
    'c':$('#c').val(),
    'u':$('#u').val(),
    'k':$('#k').val()
  }, loadLocs);
}

$(document).ready(function(){
  jQuery.getScript("http://maps.targeo.pl/Targeo.html?vn=1_9_1&v=lite&k=NzhkMzZlNWIwNGM5OGJhNzRhMDExNGFlYzBhNGRlMTdkZGE0NmExOA==&f=initLite");
})
