// elementy globalne
var map;
var aPlacowki;
var aAjencje;
var aBankomaty;

// załadowanie mapy Google
function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GLargeMapControl());
    var MapTypes = map.getMapTypes();
    MapTypes[0].getName= function() { return "Mapa";}
    MapTypes[1].getName = function() { return "Satelitarna";}
    MapTypes[2].getName = function() { return "Hybrydowa";}
    map.setCenter(new GLatLng(52.173931692568, 18.8525390625), 6);     
	
    var combo = document.getElementById("miastaCombo");
	combo.selectedIndex = 0;
  }
}


// obiekt placowki
function Placowka(node, rodzaj) {
		this.adres = node.getElementsByTagName("adres").item(0).firstChild.nodeValue;
		var n = node.getElementsByTagName("nazwa_www").item(0).firstChild;
		document.getElementById("map_params_right").style.display='block';
		
		
		this.rodzaj = rodzaj;
		if (n != null)
			this.nazwa = n.nodeValue;
		else
			this.nazwa = "";
		
		n = node.getElementsByTagName("telefon").item(0).firstChild;
		if (n != null)
			this.telefon = n.nodeValue;
		else
			this.telefon = "";
		
		n = node.getElementsByTagName("godziny_robocze").item(0).firstChild;
		if (n != null)
			this.godziny_robocze = n.nodeValue;
		else
			this.godziny_robocze = "";
		
		n = node.getElementsByTagName("godziny_sobota").item(0).firstChild;
		if (n != null)
			this.godziny_sobota = n.nodeValue;
		else
			this.godziny_sobota = "";
		
		n = node.getElementsByTagName("miasto").item(0).firstChild;
		if (n != null)
			this.miasto = n.nodeValue;
		else
			this.miasto = "";
		
		n = node.getElementsByTagName("kod").item(0).firstChild;
		if (n != null)
			this.kod = n.nodeValue;
		else
			this.kod = "";
		n = node.getElementsByTagName("dlugosc").item(0).firstChild;
		
		if (n != null)
			this.dlugosc = n.nodeValue;
		else
			this.dlugosc = 0;

		n = node.getElementsByTagName("szerokosc").item(0).firstChild;
		if (n != null)
			this.szerokosc = n.nodeValue;
		else
			this.szerokosc = 0;

		n = node.getElementsByTagName("id").item(0).firstChild;
		if (n != null)
			this.id = n.nodeValue;
		else
			this.id = 0;


		if ((this.szerokosc !=0) && (this.dlugosc != 0))
			this.point = new GLatLng(this.szerokosc,this.dlugosc);
		else
			this.point = null;
		if (this.point != null) {
			var tinyIcon = new GIcon();
			if (rodzaj=='Ajencja')
				tinyIcon.image = "images/2010_1/map_markers/mm_20_orange.png";
			else
				tinyIcon.image = "images/2010_1/map_markers/mm_20_blue.png";
			tinyIcon.shadow = "images/2010_1/map_markers/mm_20_shadow.png";
			tinyIcon.iconSize = new GSize(12, 20);
			tinyIcon.shadowSize = new GSize(22, 20);
			tinyIcon.iconAnchor = new GPoint(6, 20);
			tinyIcon.infoWindowAnchor = new GPoint(5, 1);
			
			markerOptions = { icon:tinyIcon };
			this.marker = new GMarker(this.point,markerOptions);

			this.marker.value = this;

		    GEvent.addListener(this.marker,"click", function() {
				var obiekt = this.value;
			    var info = '<div class="marker">'+
			    		   ' <div class="marker_title"><p>'+obiekt.rodzaj+' neoBANK</p> </div>'+
			    		   ' <p class="space"/>'+
			    		   ' <p><span class="neoBlekit"><strong>'+obiekt.adres+'</strong></span></p>'+
			    		   ' <p>'+obiekt.nazwa+'</p>'+
			    		   ' <p>'+obiekt.kod + ' ' + obiekt.miasto+'</p>'+
			    		   ' <p class="space"/>'+
			    		   ' <p class="marker_line_info">Numer telefonu:</p>'+'<p class="marker_line_value">'+obiekt.telefon+'</p><div style="clear: both"></div>'+
			    		   ' <p class="space"/>'+
			    		   ' <p> Godziny otwarcia:'+
			    		   ' <p class="marker_line_info">poniedziałek-piątek:</p>'+'<p class="marker_line_value">'+obiekt.godziny_robocze+'</p><div style="clear: both"></div>'+
			    		   ' <p class="marker_line_info">sobota:</p>'+'<p class="marker_line_value">'+obiekt.godziny_sobota+'</p><div style="clear: both"></div>'+
	    		   '</div>';
					this.openInfoWindowHtml(info);
				}
		    );
			
		}
	};

// obiekt Bankomat
	function Bankomat(node) {
		this.adres = node.getElementsByTagName("adres").item(0).firstChild.nodeValue;
		
		n = node.getElementsByTagName("godziny").item(0).firstChild;
		if (n != null)
			this.godziny = n.nodeValue;
		else
			this.godziny = "";
		
		n = node.getElementsByTagName("miasto").item(0).firstChild;
		if (n != null)
			this.miasto = n.nodeValue;
		else
			this.miasto = "";
		
		n = node.getElementsByTagName("miejsce").item(0).firstChild;
		if (n != null)
			this.miejsce = n.nodeValue;
		else
			this.miejsce = "";
		
		n = node.getElementsByTagName("dlugosc").item(0).firstChild;
		if (n != null)
			this.dlugosc = n.nodeValue;
		else
			this.dlugosc = 0;

		n = node.getElementsByTagName("szerokosc").item(0).firstChild;
		if (n != null)
			this.szerokosc = n.nodeValue;
		else
			this.szerokosc = 0;

		n = node.getElementsByTagName("id").item(0).firstChild;
		if (n != null)
			this.id = n.nodeValue;
		else
			this.id = 0;


		if ((this.szerokosc !=0) && (this.dlugosc != 0))
			this.point = new GLatLng(this.szerokosc,this.dlugosc);
		else
			this.point = null;
		if (this.point != null) {
			var tinyIcon = new GIcon();
			tinyIcon.image = "images/2010_1/map_markers/mm_20_green.png";
			tinyIcon.shadow = "images/2010_1/map_markers/mm_20_shadow.png";
			tinyIcon.iconSize = new GSize(12, 20);
			tinyIcon.shadowSize = new GSize(22, 20);
			tinyIcon.iconAnchor = new GPoint(6, 20);
			tinyIcon.infoWindowAnchor = new GPoint(5, 1);
			
			markerOptions = { icon:tinyIcon };
			this.marker = new GMarker(this.point,markerOptions);
			this.marker.value = this;
		    GEvent.addListener(this.marker,"click", function() {
				var obiekt = this.value;
			    var info = '<div class="marker">'+
			    		   ' <div class="marker_title"><p>Bankomat</p> </div>'+
			    		   ' <p class="space"/>'+
			    		   ' <p><span class="neoBlekit"><strong>'+obiekt.adres+'</strong></span></p>'+
			    		   ' <p>'+obiekt.miejsce + ' ' + obiekt.miasto+'</p>'+
			    		   ' <p class="space"/>'+
			    		   ' <p class="marker_line_info">Czynny:</p>'+'<p class="marker_line_value">'+obiekt.godziny+'</p><div style="clear: both"></div>'+
	    		   '</div>';
					this.openInfoWindowHtml(info);
				}
		    );
			
		}
	};
	
		

function removePlacowki(oBegin) {
	while (oBegin.hasChildNodes()) {
		oBegin.removeChild(oBegin.childNodes[0]);
	}
	// usuniecie z mapy
	map.clearOverlays();
};

function showInfo(placowka) {
	GEvent.trigger(placowka.marker,"click");
	window.scroll(0,0);
}

function addPlacowka(oBegin, placowka) {
	var oUl = document.createElement("ul");
	oUl.className = "info_item";
	var oLi = document.createElement("li");
	var oB = document.createElement("b");

	var oAnchor = document.createElement("a");
	oAnchor.onclick = function() { showInfo(placowka);};
	oAnchor.href="javascript:void(0)";
	var oSpan = document.createElement("span");
	oSpan.className = "neoBlekit";
	var tekst = placowka.adres;
	oSpan.appendChild(document.createTextNode(tekst));
	oAnchor.appendChild(oSpan);
	oB.appendChild(oAnchor);
	tekst = ", "+placowka.nazwa + ", tel.  "+placowka.telefon;
	oB.appendChild(document.createTextNode(tekst));
	oB.appendChild(document.createElement("br"));
	oLi.appendChild(oB);
	tekst = "godziny otwarcia: pn-pt "+placowka.godziny_robocze+", sob. "+placowka.godziny_sobota;
	oLi.appendChild(document.createTextNode(tekst));
	oUl.appendChild(oLi);
	oBegin.appendChild(oUl);

};
function addBankomat(oBegin, placowka) {
	var oUl = document.createElement("ul");
	oUl.className = "info_item";
	var oLi = document.createElement("li");
	var oB = document.createElement("b");

	var oAnchor = document.createElement("a");
	oAnchor.onclick = function() { showInfo(placowka);};
	oAnchor.href="javascript:void(0)";
	var oSpan = document.createElement("span");
	oSpan.className = "neoBlekit";
	var tekst = placowka.adres;
	oSpan.appendChild(document.createTextNode(tekst));
	oAnchor.appendChild(oSpan);
	oB.appendChild(oAnchor);
	tekst = ", "+placowka.miejsce ;
	oB.appendChild(document.createTextNode(tekst));
	oB.appendChild(document.createElement("br"));
	oLi.appendChild(oB);
	tekst = "czynny:  "+placowka.godziny;
	oLi.appendChild(document.createTextNode(tekst));
	oUl.appendChild(oLi);
	oBegin.appendChild(oUl);
	
};

// Wybrano miasto z listy
function miastoSelected() {
	var combo = document.getElementById("miastaCombo");
	if (combo.selectedIndex == 0) { 
		mapaFull();
		return;
	}	
	
	var checkPlacowki = document.getElementById("check_placowki");
	checkPlacowki.checked = true;
	var checkAjencje = document.getElementById("check_ajencje");
	checkAjencje.checked = false;
	var checkBankomaty = document.getElementById("check_bankomaty");
	checkBankomaty.checked = false;
	
	acquireMapPoints();
}

// Pobierz punkty dla danego miasta lub wszystkich miast.
function acquireMapPoints(){

	var combo = document.getElementById("miastaCombo");
	var idx = combo.selectedIndex;
	
	var request = createRequest();
	var encoded = encodeURIComponent("miasto="+combo.options[idx].value);
	var params = encodeURIComponent("miasto")+"="+encodeURIComponent(combo.options[idx].value);
	request.open("post",docBase+"placowki_lista.wbd",true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.setRequestHeader('Content-Length',params.length);
	request.setRequestHeader('Connection','close');
	request.onreadystatechange = function () {
		if (request.readyState == 4) {
			if (request.status == 200) {
				var resp = request.responseXML;
				var root = resp.documentElement;
				aPlacowki = null;
				aPlacowki = new Array();
				aAjencje = null;
				aAjencje = new Array();
				aBankomaty = null;
				aBankomaty = new Array();
				var gdzie = document.getElementById("placowki");
				removePlacowki(document.getElementById("placowki"));
				removePlacowki(document.getElementById('ajencje'));
				removePlacowki(document.getElementById('bankomaty'));
				
				if (root == null) { mapaFull(); return; }
				
				var placowki = root.getElementsByTagName('placowka');
				if (placowki.length == 0) { mapaFull(); return; }
				
				var dlugosc = 0;
				var szerokosc = 0;
				var liczba = 0;
				for (var i=0; i<placowki.length; i++) {
					var placowka = placowki.item(i);
					var oPl = new Placowka(placowka,'Placówka');
					aPlacowki[i] = oPl;
					dlugosc += Number(oPl.dlugosc);
					szerokosc += Number(oPl.szerokosc);
					if ( (Number(oPl.dlugosc) >0) && (Number(oPl.szerokosc) > 0)) {
						liczba++;
					}
				}
				// dodanie do strony
				var wynikSpan = document.createElement('span');
				wynikSpan.appendChild(document.createTextNode(combo.options[idx].value));
				wynikSpan.className = 'neoGranat';
				gdzie.appendChild(document.createTextNode('Placówki: '));
				gdzie.appendChild(wynikSpan);
				gdzie.style.display='';
				for (i=0; i<aPlacowki.length; i++) {
					addPlacowka(gdzie,aPlacowki[i]);
				}
				
				// dodanie ajencji
				placowki = root.getElementsByTagName('ajencja');
				if (placowki.length > 0) {
					for (var i=0; i<placowki.length; i++) {
						var placowka = placowki.item(i);
						var oPl = new Placowka(placowka,'Ajencja');
						aAjencje[i] = oPl;
					}
					// dodanie do strony
					var wynikSpan = document.createElement('span');
					wynikSpan.appendChild(document.createTextNode(combo.options[idx].value));
					wynikSpan.className = 'neoGranat';
					gdzie =document.getElementById('ajencje'); 
					gdzie.appendChild(document.createTextNode('Ajencje: '));
					gdzie.appendChild(wynikSpan);
					for (i=0; i<aAjencje.length; i++) {
						addPlacowka(gdzie,aAjencje[i]);
					}
				}				

				// dodanie bankomatów
				placowki = root.getElementsByTagName('bankomat');
				if (placowki.length > 0) {
					for (var i=0; i<placowki.length; i++) {
						var placowka = placowki.item(i);
						var oPl = new Bankomat(placowka);
						aBankomaty[i] = oPl;
					}
					// dodanie do strony
					var wynikSpan = document.createElement('span');
					wynikSpan.appendChild(document.createTextNode(combo.options[idx].value));
					wynikSpan.className = 'neoGranat';
					gdzie =document.getElementById('bankomaty'); 
					gdzie.appendChild(document.createTextNode('Bankomaty: '));
					gdzie.appendChild(wynikSpan);
					for (i=0; i<aBankomaty.length; i++) {
						addBankomat(gdzie,aBankomaty[i]);
					}
				}	
				
				
				if( disp_global < 1 ){
					// i wycentrowanie mapy
					var pow = 15;
					if (aPlacowki.length > 1)
						pow = 12;
					map.setCenter(new GLatLng(szerokosc/liczba, dlugosc/liczba), pow);
				}else{
					disp_global--;
				}
				displaySelectedLayers();
				
				// sprawdzenie liczby danych
//				checkPlacowki.style.display = (aPlacowki.lenght > 0) ? '':'none';
//				checkAjencje.style.display = (aAjencje.lenght > 0) ? '':'none';
				//checkBankomaty.style.display = (aBankomaty.lenght > 0) ? '':'none';
				
				/*
				var placowki_liczba = document.getElementById("liczba_placowki");
				placowki_liczba.innerHTML = aPlacowki.length;
				var ajencje_liczba = document.getElementById("liczba_ajencje");
				ajencje_liczba.innerHTML = aAjencje.length;
				var bankomaty_liczba = document.getElementById("liczba_bankomaty");
				bankomaty_liczba.innerHTML = aBankomaty.length;
				*/
				
				// jQuery function for update tab height
				updateListTabHeight();
			}
			else {
				//alert("Błąd" + request.status);
			}
			
		};
	};
	request.send(params);
};
// powrót do widoku całej Polski
function mapaFull() {
	var gdzie = document.getElementById("placowki");
	removePlacowki(gdzie);
	gdzie = document.getElementById("ajencje");
	aPlacowki = null;
	aAjencje = null;
	map.setCenter(new GLatLng(52.173931692568, 18.8525390625), 6);
};

// zmiana w checboxach wyświetlanych warstw
function obiekty_change(rodzaj) {
	var checked = document.getElementById(rodzaj).checked;
	
	var uL=null;
	var tabela=null;
	if (rodzaj == 'check_placowki') {
		uL = document.getElementById("placowki");
		tabela = aPlacowki;
	}
	if (rodzaj == 'check_ajencje') {
		uL = document.getElementById('ajencje');
		tabela = aAjencje;
	}
	if (rodzaj == 'check_bankomaty') {
		uL = document.getElementById('bankomaty');
		tabela = aBankomaty;
	}
	showLayer(uL,tabela,checked);
	
	// jQuery function for update tab height
	updateListTabHeight();
};

function displaySelectedLayers()
{
	if (document.getElementById("check_placowki").checked) {
		showLayer(document.getElementById("placowki"),aPlacowki,true);
	}
	if (document.getElementById("check_ajencje").checked) {
		showLayer(document.getElementById("ajencje"),aAjencje,true);
	}
	if (document.getElementById("check_bankomaty").checked) {
		showLayer(document.getElementById("bankomaty"),aBankomaty,true);
	}
	
	// jQuery function for update tab height
	updateListTabHeight();	
}

// pokaż wybraną warstwę
function showLayer(uL, tabela, checked) {
	for(var i=0; i<tabela.length; i++) {
		if (checked == true) {
			if (tabela[i].point != null) {
				map.addOverlay(tabela[i].marker);
			}
		}
		else {
			if (tabela[i].point != null) {
				map.removeOverlay(tabela[i].marker);
			}
		}
	}
	if (tabela.length > 0){
		uL.style.display = checked?'':'none';
	}else{
		uL.style.display = 'none';
	}
};

var disp_global = 0;
function show(rodzaj){
	disp_global = 1;
	document.getElementById("map_params_right").style.display='block';
	document.getElementById("check_placowki").checked = false;
	document.getElementById("check_ajencje").checked = false;
	document.getElementById("check_bankomaty").checked = false;
	
	document.getElementById("check_"+rodzaj).checked = true;

	acquireMapPoints();
	mapaFull();
}
