﻿//*****************************************************************************************************
//******** poniżej funkje obsługujące geokodowanie, walidację, AJAX i inne ****************************
//*****************************************************************************************************

//obejście getElementByID w różnych przeglądarkach
function get_object(id) {
    var object = null;
    if(document.layers){object = document.layers[id];
    }else if(document.all){object = document.all[id];
    }else if(document.getElementById){object = document.getElementById(id);}
    return object;
}

function showhide(obj) {
	var el = document.getElementById(obj);
	var ico = document.getElementById(obj+'ico');
	if ( el.style.display != "block" ) {
		el.style.display = "block";
		ico.style.backgroundImage = "url(/binary/zwin.gif)";
	}else{
		el.style.display = "none";
		ico.style.backgroundImage = "url(/binary/rozwin.gif)";
	}
}

//********* funkcje obsługujące geokodowanie ******************
var wpisywanieGPS;

function ustawGPS(formularz) {
    var nazwa_ulicy = document.getElementById("nazwa_ulicy").value;
    var nr_budynku = document.getElementById("numer_domu").value;
    
    if(!sprawdzPolaUlNr(nazwa_ulicy,nr_budynku)){return;}
    
    document.getElementById("zapisz_dost").disabled = true;
    document.getElementById("nazwa_ulicy").readOnly = true;
    document.getElementById("numer_domu").readOnly = true;
    
    if(nr_budynku.indexOf('-') != -1){
        var numery = nr_budynku.split('-');
        var numer1 = parseInt(numery[0]);
        var numer2 = parseInt(numery[1]);
    
        if(numer1 > numer2){
            //zmamiana miejsc
            numer1=numer1+numer2;
            numer2=numer1-numer2;
            numer1=numer1-numer2;
        }
        
        var teraz_dodawany=numer1;
        var liczbaNumerow = numer2 - numer1+1;
        var wpisano;
        wpisywanieGPS = setInterval(function(){
                        wpisano = document.getElementById("gps").value.split("#").length;
                        document.getElementById("zapisz_dost").value = Math.round(wpisano * 100 / liczbaNumerow) + "%";
                        
                        if(teraz_dodawany<=numer2){
                            wspolrzedne("Bydgoszcz, " + nazwa_ulicy + " " + teraz_dodawany);
                            teraz_dodawany++;
                        }else{
                            if(wpisano == liczbaNumerow){
                                document.getElementById("zapisz_dost").value = "zapis...";
                            }
                        }
                        
                        if(document.getElementById("zapisz_dost").value == "zapis..."){formularz.submit();clearInterval(wpisywanieGPS);}
                    },300);
    }else{
        wpisywanieGPS = setInterval(function(){
                        document.getElementById("zapisz_dost").value = "czekaj...";
                        
                        if(document.getElementById("gps").value.length == 0){
                            wspolrzedne("Bydgoszcz, " + nazwa_ulicy + " " + nr_budynku);
                        }else{document.getElementById("zapisz_dost").value = "zapis...";}
                        
                        if(document.getElementById("zapisz_dost").value == "zapis..."){formularz.submit();clearInterval(wpisywanieGPS);}
                    },300);
    }
}

function wspolrzedne(adres){
    var geo = new GClientGeocoder();
    geo.getLocations(adres, function(wyniki) {
    
    // czy geokodowanie powiodło się
    if (wyniki.Status.code == G_GEO_SUCCESS) {
        var punkt = wyniki.Placemark[0].Point.coordinates;
        if(document.getElementById("gps").value.length > 0){
            document.getElementById("gps").value += '#'+punkt[1]+'|'+punkt[0];  
        }else{
            document.getElementById("gps").value = punkt[1]+'|'+punkt[0];     
        }
    } else {clearInterval(wpisywanieGPS); alert("Błąd mechanizmu geokodowania. Spróbuj jeszcze raz za chwilę."); window.location ="/dostawcy/lokalizacje.aspx"}
    });
}

// funkcja walidująca poprawność wpisów w polach nazwa ulicy i numer
function sprawdzPolaUlNr(ulica, numer){    
    if (ulica.length < 1){
        alert("Proszę wpisać nazwę ulicy");
        return false;
    }
    if (numer.length < 1){
        alert("Proszę wpisać numer budynku");
        return false;
    }
    
    EXPnazwa = /^[a-zA-Z0-9ęóąśłżźćńĘÓĄŚŁŻŹŃ\.\,\-\ ]*$/;
    EXPnumer = /^[0-9]+[a-zA-Z]?$/;
    EXPprzedzial = /^[0-9]+[\-][0-9]+$/;

    RegNazwa = ulica.match(EXPnazwa);
    RegNumer = numer.match(EXPnumer);
    RegPrzedzial = numer.match(EXPprzedzial);
    
    if (RegNazwa == null){alert("Wprowadzono niepoprawną nazwę ulicy");return false;}
    if (RegNumer == null && RegPrzedzial == null){alert("Błędny numer budynku.\nPrzykłady poprawnych wpisów: 9, 12a, 89B, 1-4, 12-5, 23-103");return false;}
    
    return true;
}

//********* funkcje obsługujące szczegółowe informacje o usługach ******************
var oRequest = getXmlHttpRequestObject();		

//poniżej detekcja przeglądarki pod katem obsługi XmlHttpRequest
function getXmlHttpRequestObject() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest(); //nie IE
	} else if(window.ActiveXObject) {
            return new ActiveXObject("Microsoft.XMLHTTP"); //IE
          }else{alert("Twoja przeglądarka nie obsługuje obiektów XmlHttpRequest.");}
}

function dodaj_usun_punkt(objDiv){
    if (objDiv.attributes['title'].value != "0"){
        usunPunkt(objDiv.attributes['title'].value);
    }else{
        zapiszPunkt(objDiv.id);
    }
}

function zapiszPunkt(danePunktu) {
  var tabDanePunktu;
  tabDanePunktu = danePunktu.split("-");

  for (var i in tabDanePunktu){
    if(parseInt(tabDanePunktu[i])%1 != 0){
      alert("Błąd danych zapytania ajax: "+tabDanePunktu[i]);
      return;
    }
  }
  
  if(tabDanePunktu.length == 3){
    //Jeśli obiekt nie jest w trakcie obsługi zapytania, rozpoczynamy nowe zapytanie.
    if (oRequest.readyState == 4 || oRequest.readyState == 0) {
      oRequest.open("GET", "/dostawcy/dodaj_punkt.aspx?dostawca="+tabDanePunktu[0]+"&lokalizacja="+tabDanePunktu[1]+"&usluga="+tabDanePunktu[2], true);
      //Set the function that will be called when the XmlHttpRequest objects state changes.
      oRequest.onreadystatechange = obslugaZapiszPunkt; 
      //Make the actual request.
      oRequest.send(null);
    }	  
  }else{alert("Błąd danych zapytania ajax.");}
}

function obslugaZapiszPunkt() {
  //Check to see if the XmlHttpRequests state is finished.
  if (oRequest.readyState == 4) {
    if(oRequest.responseText.split("|").length == 2){
        var tabDane = oRequest.responseText.split("|");
        var strDivId = tabDane[0];
        var strDivTitle = tabDane[1];
        
        document.getElementById(strDivId).className = "usluga"+strDivId.split("-")[2]+"tak";
        document.getElementById(strDivId).attributes["title"].value = strDivTitle; 
    }else{alert("Błąd obsługi zapytania ajax: "+oRequest.responseText);}
  }
}

function usunPunkt(idPunktu){
  if(parseInt(idPunktu)%1 != 0){alert("Niepoprawny format parametru: "+idPunktu); return;}
  
  //Jeśli obiekt nie jest w trakcie obsługi zapytania, rozpoczynamy nowe zapytanie.
	if (oRequest.readyState == 4 || oRequest.readyState == 0) {
    oRequest.open("GET", "/dostawcy/usun_punkt.aspx?idpunktu="+idPunktu, true);
		//Set the function that will be called when the XmlHttpRequest objects state changes.
		oRequest.onreadystatechange = obslugaUsunPunkt; 
		//Make the actual request.
		oRequest.send(null);
	}			
}

function obslugaUsunPunkt() {
  //Check to see if the XmlHttpRequests state is finished.
  if (oRequest.readyState == 4) {
    if(oRequest.responseText.split("|").length == 2){
       var tabDane = oRequest.responseText.split("|");
       var strDivId = tabDane[0];
       var strDivTitle = tabDane[1];
       
       document.getElementById(strDivId).className = "usluga"+strDivId.split("-")[2]+"nie";
       document.getElementById(strDivId).attributes["title"].value = strDivTitle; 
    }else{alert("Błąd obsługi zapytania ajax: "+oRequest.responseText);}
  }
}

function usunUliceDostawcy(id_ulicy){
    if(confirm('Czy na pewno chcesz usunąć wszystkie punkty na tej ulicy?')){
        window.location = "lokalizacje.aspx?usunwszystkie="+id_ulicy;
    }
}




