	/**
	 * dodanie obslugi mapki
	 */
	$(document).ready(function() {
		var tmpRegion;
			for(i=1;i<=16;i++)
					$('body').append('<div class="cache Province'+i+'"></div>');
	
			
			$('#f-region').change( function(){
				
				tmpRegion=$(this).val();
				getCities(tmpRegion);
			})

			$('#f-miasto').change( function(){
					if ($(this).val())
						//$("#list option[value=2]").text();
						mapaStart( $("#f-miasto option[value="+$(this).val()+"]").text(), tmpRegion );
			})
			
	});
			
	/**
	 * Pobranie miast i zaznaczenie wojewodztwa
	 * @param {int} iProvince
	 */
	function getCities( iProvince ){
			if (iProvince){
					$("#f-miasto").removeOption(/^(\d)+$/);
					$("#f-miasto").addOption(aProvicesHasCities[iProvince]);	
					//$("#f-miasto").sortOptions(); 
					$("#f-miasto").selectOptions('');
			}
	
	}
	
	var mgr;
	var img_src="images/";
	var miasto='';
	var markery=[];
	var markery_info=[];
	
	function urlencode( str ) {
	    // http://kevin.vanzonneveld.net
	    // +   original by: Philip Peterson
	    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // +      input by: AJ
	    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // +   improved by: Brett Zamir
	    // %          note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
	    // *     example 1: urlencode('Kevin van Zonneveld!');
	    // *     returns 1: 'Kevin+van+Zonneveld%21'
	    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
	    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
	    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
	    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
	                             
	    var histogram = {}, tmp_arr = [];
	    var ret = str.toString();
	    
	    var replacer = function(search, replace, str) {
	        var tmp_arr = [];
	        tmp_arr = str.split(search);
	        return tmp_arr.join(replace);
	    };
	    
	    // The histogram is identical to the one in urldecode.
	    histogram["'"]   = '%27';
	    histogram['(']   = '%28';
	    histogram[')']   = '%29';
	    histogram['*']   = '%2A';
	    histogram['~']   = '%7E';
	    histogram['!']   = '%21';
	    histogram['%20'] = '+';
	    
	    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
	    ret = encodeURIComponent(ret);
	    
	    for (search in histogram) {
	        replace = histogram[search];
	        ret = replacer(search, replace, ret) // Custom replace. No regexing
	    }
	    
	    // Uppercase for full PHP compatibility
	    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
	        return "%"+m2.toUpperCase();
	    });
	    
	    return ret;
	}	
function dodajMarker(coord, icon, info,miasto,time,i)
{
	//wspolrzedne punktu
	//var lokalizacja=coord.search(",");
	var lokalizacja=coord.split(",")
	
    var point = new GLatLng(lokalizacja[0],lokalizacja[1]);
	

	//kontrolki ikonki	
		var ikona = new GIcon();

	ikona.iconAnchor = new GPoint(15, 15);
		ikona.infoWindowAnchor = new GPoint(15,12);
		ikona.infoWindowSize = new GPoint(200,100);
		ikona.iconSize = new GSize(30, 30); 
	ikona.image = icon; 
	

	var marker=new GMarker(point,ikona);
	//wstaw marker na warstwe mapy
	try
		{
		mapa.addOverlay(marker);   
		}
	catch(err){}
		
	
	//dodanie listenera oczekujacego na klikniecie na marker

			try
			{
	    		GEvent.addListener(marker,"click",function()
	    	    		{
	    	        		//jezeli marker zostanie klikniety 
	    					//- pokaz okno z danymi @var info
	    	    			marker.openInfoWindowHtml(info);
	    	    		});	
	    		
			}
			catch(err){}
			
			markery.push(marker);
			markery_info.push(info);

}

function openAndZoom(coord, i){
	markery[i].openInfoWindowHtml(markery_info[i]);
}

	function mapaStart(sCity, sRegion)
	{
		//obiekt geolokalizatora
		var geo = new GClientGeocoder();  
		//pojemnik na dane wszystkich placówek w miescie 
		if (sLang == 'pl'){
		//	var pojPlacesLeft="<h5 class='header-5'><span class='cufonReplace'>Sprzęt wolnostojący i do zabudowy</span></h5><ul>"; //kolumna 1
		//	var pojPlacesRight="<h5 class='header-5'><span class='cufonReplace'>Studia mebli kuchennych, sprzęt do zabudowy</span></h5><ul>"; //kolumna 2
			var pojPlacesLeft='';
			var pojPlacesRight='';
		}else if (sLang == 'cz'){
			var pojPlacesLeft="</h5><ul>"; //kolumna 1
		}else{
			//var pojPlacesLeft="<h5 class='header-5'><span class='cufonReplace'>Free-standing and build-in appliances</span></h5><ul>"; //kolumna 1
			var pojPlacesLeft='';
			var pojPlacesRight='';
		}

		//zerowanie danych o markerach
		markery=[];
		markery_info=[];

		if (GBrowserIsCompatible()) {

			//nowy konstrultor mapy	
			mapa = new GMap2(document.getElementById("pojMap"));
		
			//sprawdzenie czy zostala pisana ulica 
			//jezeli tak - informacja o nazwie ulicy jest dopisywana do adresu
							switch(sLang){
								case 'ie':
								case 'uk':
									var focus_on = sCity +", "+ sRegion + ", Great Britain";
									break;
								case 'cz':
									var focus_on = sCity +", "+ sRegion + ", Česká republika";
									break;
								default:
									var focus_on = sCity + ", Poland";
									break;
							} 
					
						
							
            	 geo.getLatLng(focus_on,function(punkt)  
            	 {  
            		 
            	     if (punkt)  
            	     {  
            	    	 mapa.setCenter(punkt, 12);		
			
						// kontrolki mapy
						try
						{
						mapa.addControl(new GSmallMapControl());
						}
						catch(err){}
			
					
						try
						{
							mapa.enableScrollWheelZoom();  
						}
						catch(err){}

						var sCity_decode=urlencode(sCity);
						var sRegion_decode=urlencode(sRegion);
						
			//pobieranie danych o markerach z xmla
			GDownloadUrl('index.php?sModul=mProducts&sAction=showPlacesXML&sMiasto='+sCity_decode+'&sWojewodztwo='+sRegion_decode, function(dane,kodOdpowiedzi)
			{
				
			

//				mgr = new GMarkerManager(mapa);
				//jezeli dane zostalu prawidlowo pobrane (200 - OK, 304 - zasob nie zostal zmodyfikowany)
				if(kodOdpowiedzi==200 || kodOdpowiedzi==304)
				{
					//pasowanie xmla
					var xml = GXml.parse(dane);
					
					//tablica markerow
					var ids = xml.documentElement.getElementsByTagName("id");	
					var markers = xml.documentElement.getElementsByTagName("markery");
					
					// kierownicy sprzedazy i przedstawiciele handlowi
					var aDirectorsPlaceType0 = new Array();
					var aDirectorsPlaceType1 = new Array();
					var aRepresentativesPlaceType0 = new Array();
					var aRepresentativesPlaceType1 = new Array();		
					//rozdział pomiedzy prawa i lewa kolumnę
					var loopPlace=0;
					
					for(var i=0; i<ids.length; i++)
					{
						
						var province	=	GXml.value(markers[0].getElementsByTagName("province")[i]);
						var place_type	=	GXml.value(markers[0].getElementsByTagName("place_type")[i]);
						var zip_code	=	GXml.value(markers[0].getElementsByTagName("zip_code")[i]);
						var region		=	GXml.value(markers[0].getElementsByTagName("region")[i]);
						var city		=	GXml.value(markers[0].getElementsByTagName("city")[i]);
						var place_name		=	GXml.value(markers[0].getElementsByTagName("place_name")[i]);
						var adres		=	GXml.value(markers[0].getElementsByTagName("adress")[i]);
						var tel		=	GXml.value(markers[0].getElementsByTagName("tel")[i]);
						var fax		=	GXml.value(markers[0].getElementsByTagName("fax")[i]);
						var www		=	GXml.value(markers[0].getElementsByTagName("www")[i]);
						var email		=	GXml.value(markers[0].getElementsByTagName("email")[i]);
						var open_hours		=	GXml.value(markers[0].getElementsByTagName("open_hours")[i]);
						var coord		=	GXml.value(markers[0].getElementsByTagName("latlng")[i]);
						
						var sDirectorName = GXml.value(markers[0].getElementsByTagName("director_name")[i]);
						var sRepresentativeName = GXml.value(markers[0].getElementsByTagName("representative_name")[i]);
						
						/*if (place_type == 0) {
							
							if($.inArray(sDirectorName,aDirectorsPlaceType0)<0)
									aDirectorsPlaceType0.push(sDirectorName);
									
							if($.inArray(sRepresentativeName,aRepresentativesPlaceType0)<0)
									aRepresentativesPlaceType0.push(sRepresentativeName);
									
						}
						else if (place_type == 1) {
							
							if($.inArray(sDirectorName,aDirectorsPlaceType1)<0)
									aDirectorsPlaceType1.push(sDirectorName);
									
							if($.inArray(sRepresentativeName,aRepresentativesPlaceType1)<0)
									aRepresentativesPlaceType1.push(sRepresentativeName);
									
						}*/
						
							//adres markera
							var adress = city + ", " + adres;
							//info w wyskakujacym oknie markera
							var info =  "<div style='height: 160px; width: 250px;'>" +
			 				  		"<img src='images/logo-thumb.png' /><br /><br />" +
			 				  		"<b>" + place_name + "</b><br />" + adress+ "<br />";
			 				  		
			 				  		
			 				if(tel){					 		
			 					 info +="<br /><span class='data-phone'>tel: " + tel+"</span>";
			 					 	}
			 				if(fax){					 		
			 					 info +="<br />fax: " + fax;
			 					 	}
			 				if(www){					 		
			 					if(www.indexOf("http")==-1){
			 						info +="<br />www: <a href='http://"+ www +"' target='_blank'>" + www+"</a>";
			 					}else{
			 						info +="<br />www: <a href='"+ www +"' target='_blank'>" + www+"</a>";
			 					}
			 					 	}
			 				if(email){					 		
			 					 info +="<br /><span class='data-mail'>email: " + email+"</span>";
			 					 	}
			 				if(open_hours){					 		
			 					 info +="<br />godziny otwarcia: " + open_hours+"</span>";
			 					 	}				 				
			 					info +=	"</div>";   
			 					
				 			//info dynamicznie wyswietlane pod mapa
								var info_bottom =  "<div style='margin-top:15px;'><a href='#' onclick='openAndZoom(\""+coord+"\",\""+i+"\"); return false;'><b>" + place_name +"</b></a>";
		 				  				switch (sLang){
												case 'uk':
													info_bottom+= "<br /> " + adres;
													break;
												default: 
													info_bottom+= "<br /> " + adres;
													break;
											}
		 				  				info_bottom+= "<br/>"+zip_code+" "+city;
			 				  		
				 				if(tel){					 		
				 					info_bottom +="<br /><span class='data-phone'>tel: " + tel+"</span>";
				 					 	}
				 				if(fax){					 		
				 					info_bottom +="<br />fax: " + fax;
				 					 	}
				 				if(www){		
						 					if(www.indexOf("http")==-1){
						 						info_bottom +="<br />www: <a href='http://"+ www +"' target='_blank'>" + www+"</a>";
						 					}else{
						 						info_bottom +="<br />www: <a href='"+ www +"' target='_blank'>" + www+"</a>";
						 					}
				 					 	}
				 				if(email){					 		
				 					info_bottom +="<br /><span class='data-mail'>email: " + email+"</span>";
				 					 	}
				 				if(open_hours){					 		
				 					info_bottom +="<br />godziny otwarcia: " + open_hours+"</span>";
				 					 	}
				 				info_bottom +=	"</div>";  
				 				
				 			
				 				//if(place_type==0){
				 				if(loopPlace==0){
				 					//jeżeli placówka jest sklepem zmieniamy marker
				 					icon_name = img_src+"marker-sklep.png"; 
									dodajMarker(coord,icon_name,info,city,open_hours,i);
									pojPlacesLeft+="<li>"+info_bottom+"</li>";
									loopPlace=1;
									var is_left=1;
								
				 				}
				 				//else if(place_type==1){
				 				else if(loopPlace==1){
				 					//jeżeli placówka jest studiem mebli również zmieniamy marker
									icon_name = img_src+"marker-sklep.png"; 
									dodajMarker(coord,icon_name,info,city,open_hours,i);
									pojPlacesRight+="<li>"+info_bottom+"</li>";
									loopPlace=0;
									var is_right=1;
				 				}	
				 				

				
					}	
					if (sLang == 'uk' || sLang == 'cz') {
						var lokalizacja=coord.split(",")
						mapa.panTo(new GLatLng(lokalizacja[0],lokalizacja[1]));
					}
					
					pojPlacesLeft+="</ul>";
					pojPlacesRight+="</ul>";
					//dodanie do widoku strony
					$('.pojPlacesTop').html("<h5 class='header-5'><span class='cufonReplace'>"+province+" > "+ city+"</span></h5><hr />");
					
					// dodanie ewentualnych przedstawicieli handlowych i kierownikow sprzedazy
					if (sLang == 'pl') {
						
							if(aRepresentativesPlaceType0.length>0){
								
								/*	pojPlacesLeft += "<div class='pojPlacesPeople'><h5 class='header-5'><span class='cufonReplace'>Przedstawiciele handlowi</span></h5><ul>";
									
									for(j=0;j<aRepresentativesPlaceType0.length;j++){
											pojPlacesLeft += '<li>'+aRepresentativesPlaceType0[j]+'</li>'
									}
									
									pojPlacesLeft += '</ul></div>';*/
								
							}
							
							if(aDirectorsPlaceType0.length>0){
								
							/*		pojPlacesLeft += "<div class='pojPlacesPeople'><h5 class='header-5'><span class='cufonReplace'>Kierownicy sprzedaży</span></h5><ul>";
								
									for(j=0;j<aDirectorsPlaceType0.length;j++){
											pojPlacesLeft += '<li>'+aDirectorsPlaceType0[j]+'</li>'
									}
									
									pojPlacesLeft += '</ul></div>';*/
								
							}
							
							if(aRepresentativesPlaceType1.length>0){
								
								/*	pojPlacesRight += "<div class='pojPlacesPeople'><h5 class='header-5'><span class='cufonReplace'>Przedstawiciele handlowi</span></h5><ul>";
									
									for(j=0;j<aRepresentativesPlaceType1.length;j++){
											pojPlacesRight += '<li>'+aRepresentativesPlaceType1[j]+'</li>'
									}
									
									pojPlacesRight += '</ul></div>';*/
								
							}
							
							if(aDirectorsPlaceType1.length>0){
								
								/*	pojPlacesRight += "<div class='pojPlacesPeople'><h5 class='header-5'><span class='cufonReplace'>Kierownicy sprzedaży</span></h5><ul>";
								
									for(j=0;j<aDirectorsPlaceType1.length;j++){
											pojPlacesRight += '<li>'+aDirectorsPlaceType1[j]+'</li>'
									}
									
									pojPlacesRight += '</ul></div>';*/
								
							}							
							
					}
					
					
					$('.pojPlacesRight').html(pojPlacesRight);
					$('.pojPlacesLeft').html(pojPlacesLeft);
					if(!is_left){
					$('.pojPlacesLeft').html("");
					}
					if(!is_right){
					$('.pojPlacesRight').html("");
					}
				}
				else{
					if (sLang == 'pl'){
						alert('Dane o placówkach nie zostały wczytane! - spróbuj ponownie');
					}else{
						alert('Data could not be retrieved from the database. try again later');}
					}
		
					
			});
            	     }  
            	     else  
            	     {  
            	         // nie udało sie zgeodekodowac adresu
            	     }  
            	     
            	     
            	 }); 
		}
}	
