﻿function getPoleceniaOverColor() {
    return "Red";
}

function getPoleceniaOutColor() {
    return "Maroon";
}

function OnSoapTimeOut(arg) {
    alert("Nieprawidłowe dane.");
}

function OnSoapError(arg) {
    alert("Soap Error");
}

function PoprawnoscTekstu(arg) {
    var i = 0;
    while (i < arg.length) {
        if (arg[i] == "'") {
            return false
        }
        i++;
    }
    return true
}

function convertBoolToInt(_arg) {
    if (_arg == true) {
      result = 1;
    }
    else {
      result = 0;
    }
    return result ;
}

function formatNumberLength(num, length) {
    var r = "" + num;
    while (r.length < length) {
        r = "0" + r;
    }
    return r;
}

function getTimeFromDateTime(_arg) {
  result = formatNumberLength(_arg.getHours(),2) + ":" +
           formatNumberLength(_arg.getMinutes(),2);
  return result ;
}

function dateTimeToStr(_arg) {
  result = formatNumberLength(_arg.getFullYear(),4)  + "-" +
           formatNumberLength(_arg.getMonth() + 1,2) + "-" +
           formatNumberLength(_arg.getDate(),2)      + " " +
           formatNumberLength(_arg.getHours(),2)     + ":" +
           formatNumberLength(_arg.getMinutes(),2)   + ":" +
           formatNumberLength(_arg.getSeconds(),2);
  return result ;
}


function PlToAsci(arg) {
    var val = arg;
    if (arg == "ę") { val = "e"; }
    if (arg == "Ę") { val = "E"; }
    if (arg == "ó") { val = "o"; }
    if (arg == "Ó") { val = "O"; }
    if (arg == "ą") { val = "a"; }
    if (arg == "Ą") { val = "A"; }
    if (arg == "ś") { val = "s"; }
    if (arg == "Ś") { val = "S"; }
    if (arg == "ł") { val = "l"; }
    if (arg == "Ł") { val = "L"; }
    if (arg == "ć") { val = "c"; }
    if (arg == "Ć") { val = "C"; }
    if (arg == "ż") { val = "z"; }
    if (arg == "Ż") { val = "Z"; }
    if (arg == "ź") { val = "z"; }
    if (arg == "Ź") { val = "Z"; }
    if (arg == "ń") { val = "n"; }
    if (arg == "Ń") { val = "N"; }

    return val;
}

function PoprawnoscLoginu(arg) {
    var i = 0;
    while (i < arg.length) {
        litera = arg.substr(i,1);
        if ((litera == "'") || (litera == " ")) {
            return false
        }
        i++;
    }
    return true
}

function GetPoprawnyLogin(arg) {
    var i = 0 ;
    var nowyLogin = "" ;
    while (i < arg.length) {
        litera = PlToAsci(arg.substr(i,1));
        nowyLogin = nowyLogin + litera;
        i++;
        }
        
    return nowyLogin
}

function LokalizacjaToLatLonTimeId(arg) {
    
    var arg_ = arg.substring(1, arg.toString().length - 1);
    var tablica = arg_.split(";");   
             
    var obj = new Object();
    obj.Lat = tablica[0];
    obj.Lon = tablica[1];
    obj.Kmh = tablica[2];
    obj.JestPostoj = tablica[3];    
    obj.Time = tablica[4];
    obj.Id = tablica[5];
    obj.UidTankowania = tablica[6];
    obj.angle = tablica[7];
    obj.czyFull = tablica[8];
    return obj;
}

function LokalizacjaToLatLonTime(arg) {
    
    var arg_ = arg.substring(1, arg.toString().length - 1);
    var tablica = arg_.split(";");   
             
    var obj = new Object();
    obj.Lat = tablica[0];
    obj.Lon = tablica[1];
    obj.Kmh = tablica[2];
    obj.JestPostoj = tablica[3];    
    obj.Time = tablica[4];
    obj.Id = tablica[5];
    obj.UidTankowania = tablica[6];
    obj.angle = tablica[7];
    obj.czyFull = tablica[8];
    return obj;
}

function LokalizacjaToNazwaLatLonTime(arg) {
    
    var arg_ = arg.substring(1, arg.toString().length - 1);
    var tablica = arg_.split(";");
    
    var obj = new Object();
    obj.Nazwa = tablica[0];
    obj.Lat = tablica[1];
    obj.Lon = tablica[2];
    obj.Kmh = tablica[3];
    obj.JestPostoj = tablica[4];    
    obj.Time = tablica[5];
    obj.IkonaObiektu = tablica[6];    
    return obj;
}

function PoiToVars(arg) {
    
    var arg_ = arg.substring(1, arg.toString().length - 1);
    var tablica = arg_.split(";");   
             
    var obj = new Object();
    obj.Id = tablica[0];
    obj.Lat = tablica[1];
    obj.Lon = tablica[2];
    obj.Image = tablica[3];    
    obj.Nazwa = tablica[4];
    obj.Kategoria = tablica[5];
    obj.Opis = tablica[6];
    obj.Adres = tablica[7];
    return obj;
}

function GetLokalizacjaZListy(arg) {
    var i = 0;
    var lok = "";
    var back = "";
    
    while (i < arg.length) {
        znak = arg.substr(i,1);        
        lok = lok + znak;
        if (znak == ")") {
            break;
        }
        i++;
    }
    i++;
    while (i < arg.length) {
        znak = arg.substr(i,1);
        back = back + znak;
        i++;
    }

    var obj = new Object();
    obj.First = lok;
    obj.Rest = back;    
    return obj;
}

function GetGodzinaFromDate(arg) {
    var i = 11;
    var godzina = "";
    while (i < arg.length) {
        litera = arg.substr(i,1);
        godzina = godzina + litera;
        i++;
    }

    return godzina
}

function ParseDateTimeFromString(memTime) {

  yyyy = memTime.substr(0,1) + memTime.substr(1,1) + memTime.substr(2,1) + memTime.substr(3,1)  ;
  mm = memTime.substr(5,1) + memTime.substr(6,1) ;
  dd = memTime.substr(8,1) + memTime.substr(9,1) ;
  hh = memTime.substr(11,1) + memTime.substr(12,1) ;
  nn = memTime.substr(14,1) + memTime.substr(15,1) ;
  ss = memTime.substr(17,1) + memTime.substr(18,1) ;
  backTime = new Date(yyyy,mm,dd,hh,nn,ss);
  
  return backTime
}

// Funkcje OpenStreetMaps o OpenLayers

function CzyFirefox() {
  agent = navigator.userAgent;
  nav = agent.indexOf("Firefox");
  if (nav > -1)
  { wynik = true ;}
  else
  {wynik = false ;}
  
  return wynik ;
}

function GetWarstwaGrotow() {
  var warstwaGrotow = new OpenLayers.Layer.Vector(
                "Groty kierunkow",
                {
                    styleMap: new OpenLayers.StyleMap({
                        "default": {
                            externalGraphic: "img/Grot.gif",
                            graphicWidth: 5,
                            graphicHeight: 11,
                            graphicYOffset: -8,
                            graphicXOffset: -10,
                            rotation: "${angle}"
                        }
                    })
                }
            );
  return warstwaGrotow;
}

function ClearWarstwaGroty() {
  if (map.getLayersByName("Groty kierunkow")[0]) {  
      map.removeLayer(map.getLayersByName("Groty kierunkow")[0]); 
      grotyKierunkow = GetWarstwaGrotow();
	  map.addLayer(grotyKierunkow);
     }
}





function ClearAllPopups() {
  try 
  {
    ile = map.popups.length;
    for (var i = 0; i <= ile; i++) {
        map.removePopup(map.popups[0]);
    }
  }
  catch(err)
  {
  }
}

function NarysujGpx(_nazwaPliku) {
    var nazwaWarstwy = "Trasy GPS";	
    var lgpx = new OpenLayers.Layer.GML(nazwaWarstwy, _nazwaPliku, {
				format: OpenLayers.Format.GPX,
				style: {strokeColor: "black", strokeWidth: 2, strokeOpacity: 1},
				projection: new OpenLayers.Projection("EPSG:4326")
			});
    if (map.getLayersByName(nazwaWarstwy)[0]) {  
      map.removeLayer(map.getLayersByName(nazwaWarstwy)[0]);  
    }             
	map.addLayer(lgpx);
}

function WyczyscGpx() {
  var nazwaWarstwy = "Trasy GPS";
  if (map.getLayersByName(nazwaWarstwy)[0]) {  
      map.removeLayer(map.getLayersByName(nazwaWarstwy)[0]);  
    }
}

function NarysujGpxSM(_nazwaPliku) {
    var nazwaWarstwy = "Trasy GPS SM";	
    var lgpx = new OpenLayers.Layer.GML(nazwaWarstwy, _nazwaPliku, {
				format: OpenLayers.Format.GPX,
				style: {strokeColor: "gray", strokeWidth: 1, strokeOpacity: 1},
				projection: new OpenLayers.Projection("EPSG:4326")
			});
    if (map.getLayersByName(nazwaWarstwy)[0]) {  
      map.removeLayer(map.getLayersByName(nazwaWarstwy)[0]);  
    }             
	map.addLayer(lgpx);
}

function WyczyscGpxSM() {
  var nazwaWarstwy = "Trasy GPS SM";
  if (map.getLayersByName(nazwaWarstwy)[0]) {  
      map.removeLayer(map.getLayersByName(nazwaWarstwy)[0]);  
    }
}

function CentrujMape(_lat,_lon,_scale) {
  var lonLat = new OpenLayers.LonLat(_lon, _lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
  map.setCenter(lonLat, _scale);
}

function UstawBazowyExtent() {
  var lat = 52.0400 ;
  var lon = 19.5000 ;
  var zoom = 6 ;
  CentrujMape(lat,lon,zoom);
}

function GetLayerOpisy() {
  var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
            renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
            
        var layerOpisy_ = new OpenLayers.Layer.Vector("Opisy", {
                styleMap: new OpenLayers.StyleMap({'default':{
                    strokeColor: "#00FF00",
                    strokeOpacity: 1,
                    strokeWidth: 3,
                    fillColor: "#FF5500",
                    fillOpacity: 0.5,
                    pointRadius: 0,
                    pointerEvents: "visiblePainted",
                    label : "${opis}",                    
                    fontColor: "${favColor}",
                    fontSize: "12px",
                    fontFamily: "Tahoma",
                    fontWeight: "bold",
                    labelAlign: "${align}",
                    labelXOffset: "${xOffset}",
                    labelYOffset: "${yOffset}"
                }}),
                renderers: renderer
            });
            return layerOpisy_ ;

}

function ZaladujMape() {
  try
  {
    var lat=52.0400
    var lon=19.5000
    var zoom=6
    map = new OpenLayers.Map ("map_canvas", {
				controls:[
					new OpenLayers.Control.Navigation(),
					new OpenLayers.Control.PanZoomBar(),
					//new OpenLayers.Control.LayerSwitcher(),
					new OpenLayers.Control.MousePosition()
					//new OpenLayers.Control.Scale(),
                    //new OpenLayers.Control.ScaleLine()
                    ],
				maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
				maxResolution: 156543.0399,
				numZoomLevels: 19,
				units: 'm',
				projection: new OpenLayers.Projection("EPSG:900913"),
				displayProjection: new OpenLayers.Projection("EPSG:4326")
			} );
 
			layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapa Mapnik");
			map.addLayer(layerMapnik);
			layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Mapa Osmarender");
			map.addLayer(layerTilesAtHome);
			layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("Mapa Rowerowa");
			map.addLayer(layerCycleMap);
			layerMarkers = new OpenLayers.Layer.Markers("Markery");
			map.addLayer(layerMarkers);
			layerMarkersClick = new OpenLayers.Layer.Markers("Markery click");
			map.addLayer(layerMarkersClick);							
            layerOpisy = GetLayerOpisy();
            map.addLayer(layerOpisy);
            layerPoi = new OpenLayers.Layer.Markers("Poi");
			map.addLayer(layerPoi);
			
			try
			{
			 user = document.getElementById("User").value;
			 addSpecialLayers = document.getElementById("AddSpecialLayers").value;
			 if ((user != 'demo') && (addSpecialLayers == 'true'))
			 {
			 layerGoogleStreets = new OpenLayers.Layer.Google(
                  "Google ulice",
                   {numZoomLevels: 20}
                  );		
             map.addLayer(layerGoogleStreets);
             
		  	 layerGoogleSat = new OpenLayers.Layer.Google(
                  "Google Satelita",
                   {type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22}
                  );		
             map.addLayer(layerGoogleSat);	
             }
            }    
            catch(err) { }        
 
			var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
			map.setCenter(lonLat, zoom);
 
			var size = new OpenLayers.Size(21, 25);
			var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
     
  }
  catch(err)
  {
    alert("Chwilowy brak dostępu do mapy - przepraszamy.");
  } 
}

var szerTablicInfo = "300px";

function formatujInfoPoiNew() {
  trescOkienka = 
        "<table width='" + szerTablicInfo + "' >" + 
        "<tr><td style='width:100%;font-weight:bold;font-size:15px;color:Maroon;' colspan='2' align='center'>POI - Punkt użytkownika</td></tr>" + 
        "<tr style='font-size:12px;'>" + 
         "<td style='width:100px;font-weight:bold;' align='right'>Nazwa: </td>" + 
         "<td style='width:200px;' align='left'>Nowy punkt</td>" + 
        "</tr>" +
        "</table>";
  return trescOkienka ;
}

function formatujInfoPoiTylkoAdres(_arg) {
  trescOkienka = 
        "<table width='" + szerTablicInfo + "'><tr>" +
        "<td style='width:100px;font-weight:bold;font-size:12px;' align='right'>Adres: </td>" +
        "<td style='width:200px;font-size:12px;' align='left'>" + _arg + "</td></tr></table>";
  return trescOkienka ;
}

function formatujInfoPoi(_nazwa, _kategoria, _opis, _adres) {
  trescOkienka = 
        "<table width='" + szerTablicInfo + "' >" + 
        "<tr><td style='width:100%;font-weight:bold;font-size:15px;color:Maroon;' colspan='2' align='center'>POI - Punkt użytkownika</td></tr>" + 
        "<tr style='font-size:12px;'>" + 
         "<td style='width:100px;font-weight:bold;' align='right'>Nazwa: </td>" + 
         "<td style='width:200px;' align='left'>" + _nazwa + "</td>" + 
        "</tr>" ;
  if ((_kategoria != "") && (_kategoria != "&nbsp;")) {
  trescOkienka +=      
        "<tr style='font-size:12px;'>" + 
         "<td style='font-weight:bold;' align='right'>Kategoria: </td>" + 
         "<td align='left'>" + _kategoria + "</td>" + 
        "</tr>" ;
        }
  if ((_opis != "") && (_opis != "&nbsp;")) {
  trescOkienka +=
        "<tr style='font-size:12px;'>" + 
         "<td style='font-weight:bold;' align='right'>Opis: </td>" + 
         "<td align='left'>" + _opis + "</td>" + 
        "</tr>" ;
        }
  trescOkienka +=
        "<tr style='font-size:12px;'>" + 
         "<td style='font-weight:bold;' align='right'>Adres: </td>" + 
         "<td align='left'>" + _adres + "</td>" + 
        "</tr>" +
        "</table>";
  return trescOkienka ;
}

function formatujInfoPostoj(_czas, _numer, _godzinPostoju, _minutPostoju) {
  trescOkienka = 
        "<table width='" + szerTablicInfo + "' >" + 
        "<tr><td style='width:100%;font-weight:bold;font-size:15px;color:Maroon;' colspan='2' align='center'>Informacja o postoju obiektu</td></tr>" + 
        "<tr style='font-size:12px;'>" + 
         "<td style='width:150px;font-weight:bold;' align='right'>Początek postoju: </td>" + 
         "<td style='width:150px;' align='left'>" + _czas + "</td>" + 
        "</tr>" +
        "<tr style='font-size:12px;'>" + 
         "<td  align='right' style='font-weight:bold;'>Czas trwania postoju: </td>" + 
         "<td  align='left'>" + _godzinPostoju + "h " + _minutPostoju + "m</td>" + 
        "</tr>" +
        "<tr style='font-size:12px;'>" + 
         "<td  align='right' style='font-weight:bold;'>Numer w tabeli: </td>" + 
         "<td  align='left'>" + _numer + "</td>" + 
        "</tr>" +
        "</table>";
  return trescOkienka ;
}

function formatujInfoAdres(_adres) {
  trescOkienka = 
        "<table width='" + szerTablicInfo + "' >" + 
        "<tr><td style='width:100%;font-weight:bold;font-size:15px;color:Maroon;' colspan='2' align='center'>Informacja adresowa</td></tr>" +         
        "<tr style='font-size:12px;'>" + 
         "<td style='width:100%;' align='center' colspan='2'>" + _adres + "</td>" +
        "</tr>" +        
        "</table>";
  return trescOkienka ;
}

function getTimeDifference(earlierDate,laterDate)
{
       var nTotalDiff = laterDate.getTime() - earlierDate.getTime();
       var oDiff = new Object();
 
       oDiff.days = Math.floor(nTotalDiff/1000/60/60/24);
       nTotalDiff -= oDiff.days*1000*60*60*24;
 
       oDiff.hours = Math.floor(nTotalDiff/1000/60/60);
       nTotalDiff -= oDiff.hours*1000*60*60;
 
       oDiff.minutes = Math.floor(nTotalDiff/1000/60);
       nTotalDiff -= oDiff.minutes*1000*60;
 
       oDiff.seconds = Math.floor(nTotalDiff/1000);
 
       return oDiff;
 
}

function UpdateInfoObjekt(_lista) {  
  lista2 = _lista.split(";");
  var i = 0 ;
  while (lista2[i] != "") {
   myInfo = lista2[i].split(",");
   myId = myInfo[0];
   myLast = myInfo[1];
   myTyp = myInfo[2];
   icon = document.getElementById("ikona" + myId);
   if (myLast == "") {   
    icon.src = "icons/Get-Info-icon.png" ;
    icon.title = "Informacje o obiekcie (off-line)";
   }
   else {
    dateCurrent = new Date();
    rok = myLast.substring(0, 4);
    mies = myLast.substring(5, 7);
    dzien = myLast.substring(8, 10);
    godz = myLast.substring(11, 13);
    min = myLast.substring(14, 16);
    sek = myLast.substring(17, 19);
    myLastDate = new Date(rok,mies,dzien,godz,min,sek);
    myDiff = getTimeDifference(myLastDate,dateCurrent);
    if (myTyp == "") {myTyp = "mL300-1p" ;}
    if (myTyp == "mL300-1p") {
      maxCzas = 30;
    }
    else {
      maxCzas = 3;
    }
    if ((myDiff.hours > 0) || (myDiff.minutes > maxCzas)) {
      icon.src = "icons/Get-Info-icon.png" ;
      icon.title = "Informacje o obiekcie (off-line)";
    }
    else {
      icon.src = "icons/Get-Info-icon-on-line.png" ;
      icon.title = "Informacje o obiekcie (on-line)";
    }
   }
   
   i = i + 1;
  }
}

function OnSoapCompleteResetLok(arg) {
  if (!arg) {
   alert("Brak uprawnień do wykonania tej operacji.");
  }
  else {
   if (arg == "OK") {
     alert("Do lokalizatora została wysłana komenda RESTART. Prosze poczekać chwilę aż zostanie wykonana.");
   }
   if (arg == "WrongType") {
     alert("Wskazany lokalizator nie obsługuje tego polecenia.");
   }
   if (arg == "BrakNumeru") {
     alert("Brak w bazie danych numeru telefonu tego lokalizatora. Proszę uzupełnić dane.");
   }
  }
  window.close();
}

function resetujObiekt() {
  nazwaBazy = document.getElementById("NazwaBazy").value;
  user = document.getElementById("User").value;
  pass = document.getElementById("Pass").value;
  id = document.getElementById("IdObiektu").value;
  var myInfo = "Czy potwierdzasz reset lokalizatora? Urządzenie zostanie wyłączone i ponownie włączone.\n" ;
  myInfo += "UWAGA: Tę operację należy wykonać tylko w sytuacji, gdy lokalizator nie łączy się z serwerem przez kilka godzin.";
  myInfo += " Nie wolno wykonywać tej opreacji wielokrotnie gdyż może to doprowadzić lokalizator w stan cyklicznych restartów";
  myInfo += " co może go ostatecznie unieruchomić.";
  var answer = confirm(myInfo)
  if (answer) {
    ServiceData.ResetLokalizator(
             id,
             user, pass, nazwaBazy, 
             OnSoapCompleteResetLok, OnSoapTimeOut, OnSoapError);
  }
}

function UstawCoIleListaR(_coIleSekDane) {
    var combo = $find('CoIleListaR');
    var items = combo.get_items();
    combo.trackChanges();
    
    if (_coIleSekDane == 40) {        
        items._array[0]._properties._owner._element.innerHTML = "Pokaż dane co 40 sekund";
        items._array[1]._properties._owner._element.innerHTML = "Pokaż dane co 80 sekund";
        items._array[2]._properties._owner._element.innerHTML = "Pokaż dane co 2 minuty";
        items._array[3]._properties._owner._element.innerHTML = "Pokaż dane co 4 minuty"; 
        items._array[3].select();
        combo.set_text(items._array[3]._properties._owner._element.innerHTML);
        items._array[4]._properties._owner._element.innerHTML = "Pokaż dane co 8 minut";
        items._array[5]._properties._owner._element.innerHTML = "Pokaż dane co 10 minut";
        items._array[6]._properties._owner._element.innerHTML = "Pokaż dane co 24 minuty";
    }
    else if (_coIleSekDane == 30) {
        items._array[0]._properties._owner._element.innerHTML = "Pokaż dane co 30 sekund"; 
        items._array[1]._properties._owner._element.innerHTML = "Pokaż dane co 1 minutę";
        items._array[2]._properties._owner._element.innerHTML = "Pokaż dane co 1.5 minuty";
        items._array[3]._properties._owner._element.innerHTML = "Pokaż dane co 3 minuty"; 
        items._array[3].select();
        combo.set_text(items._array[3]._properties._owner._element.innerHTML);
        items._array[4]._properties._owner._element.innerHTML = "Pokaż dane co 6 minut";
        items._array[5]._properties._owner._element.innerHTML = "Pokaż dane co 9 minut";
        items._array[6]._properties._owner._element.innerHTML = "Pokaż dane co 18 minut";
    }
    else {        
        items._array[0]._properties._owner._element.innerHTML = "Pokaż dane co " + _coIleSekDane + " sekund"; 
        ileMinut = parseInt(parseInt(_coIleSekDane * 2) / 6) / 10;
        items._array[1]._properties._owner._element.innerHTML = "Pokaż dane co " + ileMinut + " minut";
        ileMinut = parseInt(parseInt(_coIleSekDane * 3) / 6) / 10;
        items._array[2]._properties._owner._element.innerHTML = "Pokaż dane co " + ileMinut + " minut";
        ileMinut = parseInt(parseInt(_coIleSekDane * 6) / 6) / 10;
        items._array[3]._properties._owner._element.innerHTML = "Pokaż dane co " + ileMinut + " minut";
        items._array[3].select();
        combo.set_text(items._array[3]._properties._owner._element.innerHTML);
        ileMinut = parseInt(parseInt(_coIleSekDane * 12) / 6) / 10;
        items._array[4]._properties._owner._element.innerHTML = "Pokaż dane co " + ileMinut + " minut";
        ileMinut = parseInt(parseInt(_coIleSekDane * 18) / 6) / 10;
        items._array[5]._properties._owner._element.innerHTML = "Pokaż dane co " + ileMinut + " minut";
        ileMinut = parseInt(parseInt(_coIleSekDane * 36) / 6) / 10;
        items._array[6]._properties._owner._element.innerHTML = "Pokaż dane co " + ileMinut + " minut";
    }
        
    combo.commitChanges();
}

