document.documentElement.className += " bezDOMny";
var motywGraficzny = false;
function inicjujJs() {
	motywGraficzny = ($('body').css('unicode-bidi') == 'bidi-override');
	if (motywGraficzny) {
		document.documentElement.className = "DOMready";
		drobnePoprawkiWygladu();
		rotatory();
		dymki();
		marquee();
		slider();
	}
	inputyZTekstem();
	mapaPowiatow();
	bannerStatInit();
	adminModul();
}
jQuery(document).ready(inicjujJs);





function inputyZTekstem() {
	var pola = []; // tablica zawierająca id inputów mających tekst domyślny
	
	// dla innych języków tekst domyślny dać w title inputa
	pola['newsletterEmail'] = 'Twój adres e-mail';
	pola['fraza'] = 'Szukana fraza';
	
	for (var el in pola) {
		new InputyZTekstem(el,pola[el]);
	}
}


/*** Interaktywna mapa powiatów  */
	var mapaPowiatow = function() {
		var opcje = {
			'idMapy': 'mapaPowiatow',
			'requestUrl': '/mapa-projektow-rpo-wm/',
			'wyszukiwarka': {
				'id': 'mapaBoxSearchForm'
			},
			'wyniki': {
				'idListy': 'mapaPowiatowWyswietl',
				'idNaglowka': 'powiatInfo',
				'paginacja': 50,
				'brakWynikow': '<tr class="nieparz"><td colspan="4"><div class="komunikat">Brak projektów spełniających kryteria</div></td></tr>',
				'proszeCzekac': '<tr class="nieparz"><td colspan="4"><div class="proszeCzekac">Ładowanie</div></td></tr>'
			}
		};
		
		this.inicjuj = function() {
			if (document.getElementById(opcje.wyszukiwarka.id)) {
				var form = jQuery('#'+opcje.wyszukiwarka.id);
				form.bind('submit', function(e){
					e.preventDefault();
					self.szukaj();
				});
			}
			if (document.getElementById(opcje.idMapy)) {
				var mapa = jQuery('#'+opcje.idMapy);
				mapa.maphilight(); // wymaga zewnętrznego dodatku jquery.maphilight
				var mapNode = jQuery('map'+mapa.attr('usemap'));
				var powiaty = mapNode.find('area[coords]');
				jQuery(powiaty).each(function(index,powiat){
					jQuery(powiat).bind('click', function(e){
						e.preventDefault();
						jQuery('#'+opcje.wyniki.idListy).html(opcje.wyniki.proszeCzekac);
						var powiatHref = jQuery(powiat).attr('href').replace('#', '');
						jQuery.getJSON(opcje.requestUrl,{'powiat':powiatHref,'act':'dane'},function(data){
							self.wyswietl(data, powiat);
						});
					});
				});	
			}		
		};

		this.szukaj = function() {
			jQuery('#'+opcje.wyniki.idListy).html(opcje.wyniki.proszeCzekac);
			var data = jQuery('#'+opcje.wyszukiwarka.id).serialize();
			data = data+ '&act=szukaj';
			jQuery.getJSON(opcje.requestUrl,data,function(data){
				self.wyswietl(data);
			});
			return false;
		};
		
		this.wyswietl = function(data, powiat) {
			if (!data.projektyData.length) {
				jQuery('#'+opcje.wyniki.idListy).html(opcje.wyniki.brakWynikow); 
				return false;
			}
			var pomoce = new MapaPomoce();
			var listaPowiatow = pomoce.tpl(data.projektyData, opcje.wyniki.paginacja);
			jQuery('#'+opcje.wyniki.idListy).html(listaPowiatow);

			if (typeof(powiat) != 'undefined' && data.powiatInfo) {
				var powiatInfo = pomoce.tplNaglowek(data.powiatInfo, powiat);
				jQuery('#'+opcje.wyniki.idNaglowka).html(powiatInfo);
			}
			if (data.szukajInfo) {
				var szukajInfo = pomoce.tplNaglowek(data.szukajInfo);
				jQuery('#'+opcje.wyniki.idNaglowka).html(szukajInfo);
			}
			var paginacja = pomoce.paginacja(jQuery('#'+opcje.wyniki.idListy).find('.projektRozwin'), opcje.wyniki.paginacja);
		};
		
		var self = this;
		self.inicjuj();
	};
/* /Interaktywna mapa powiatów  */


/*** rozwijane elementy po kliknięciu w któryś z poprzedzających */
	function slider() {
		var opcje = {
			'cssRozwijajacego': '.odkryjNastepny', // w te należy kliknąć
			'cssRozwijanego': '.doOdkrycia' // te się zwiną lub rozwiną
		};
		
		$($.find(opcje.cssRozwijajacego)).each(function(index, item){
			var elTarget = $(item).parent().next(opcje.cssRozwijanego);
			
			if(window.location.hash == $(item).attr('href')) {
				$(elTarget).slideDown();
			}
			$(item).click(function(e){
				$(elTarget).slideToggle();
				e.preventDefault();
			});
			
		});
	}
/* /rozwijane elementy */


/*** obsługa rozwijanego menu pod ie (symulacja :hover dla !<a>)  */
	function ieMenuHover() {
		var opcje = {
			'selektor': '.panelKontener .menuGlowne li',
			'klasaHover': 'hover'
		};

		if ($.browser.msie) {
			$(opcje.selektor).each(function(index, zakladka){
				zakladka = $(zakladka);
				zakladka.mouseenter(function(e){zakladka.addClass(opcje.klasaHover);});
				zakladka.mouseleave(function(e){zakladka.removeClass(opcje.klasaHover);});
			});		
		}
	}
/* /obsługa rozwijanego menu pod ie  */


function drobnePoprawkiWygladu() {
	var opcje = {
		'fancybox': {
			'selektor': [ 'a[rel^=galeria]', 'a[rel^=fancybox]' ],
			'automatyczniePokaz': 'fancy-show'
		},
		'zdjeciaFade': {
			'selektor': '.galeria .zawartosc a', 'fadeIn': 800, 'fadeOut': 200
		},
		'ikonkiOdnosnikow': {
			'szukajW': '#trescKontener',
			'selektor': [
				'a[href^="mailto:"]', 'a[href$=".pdf"]', 'a[href$=".doc"]',
				'a[href$=".docx"]', 'a[href$=".xls"]', 'a[href$=".xlsx"]', 'a[href$=".jpg"]',
				'a[href$=".jpeg"]', 'a[href$=".gif"]', 'a[href$=".png"]',
				'a[href$=".zip"]', 'a[href$=".gz"]', 'a[href$=".rar"]'
			],
			'klasa': [
				'jsLinkEmail', 'jsLinkPdf', 'jsLinkDoc', 'jsLinkDoc',
				'jsLinkArkusz', 'jsLinkArkusz', 'jsLinkObraz', 'jsLinkObraz', 'jsLinkObraz',
				'jsLinkObraz', 'jsLinkArchiwum', 'jsLinkArchiwum', 'jsLinkArchiwum'
			]
		}
		
	};

	/*** fancybox  */
		if (typeof($.fancybox) == 'function') {
			$(opcje.fancybox.selektor).each(function(index, els){
				$(els).each(function(index2, el){
					$(el).fancybox({'overlayOpacity':'0.5','overlayColor':'#000'});
					// pokaż fancybox, jeśli formularz zawiera błąd
					// (wtedy link do fancybox zawiera odpowiednią klasę)
					if ($(el).hasClass(opcje.fancybox.automatyczniePokaz)) {
						$(el).fancybox().trigger('click');
					}
				});
			});
		}
	/* /fancybox  */
	
	/*** po najechaniu na zdjęcie animacja  */
		var elementyGalerii = $.find(opcje.zdjeciaFade.selektor);
		elementyGalerii = $(elementyGalerii);
		elementyGalerii.each(function(index,item){
			$(item).mouseenter(function(){ 
				$(item)
					.fadeOut(opcje.zdjeciaFade.fadeOut)
					.fadeIn(opcje.zdjeciaFade.fadeIn);
			});
		});
	/* /po najechaniu */
	
	/*** ikonki odnośników - obsługa pod ie  */
		if ($.browser.msie && $.browser.msie.version < 7) {
			for (var i = 0; i < opcje.ikonkiOdnosnikow.selektor.length; i++) {
				var odnosniki = $(opcje.ikonkiOdnosnikow.szukajW)
								.find(opcje.ikonkiOdnosnikow.selektor[i]);
				$(odnosniki).addClass(opcje.ikonkiOdnosnikow.klasa[i]);
			}
		}
	/* /ikonki odnośników */
}


/*** pływające dymki|komunikaty w rogu strony  */
	function dymki() {
		var opcje = {
			'selektor': '.dymekKontener .boks'
		};
		
		$(opcje.selektor).each(function(index, item){new Dymek(item);});
	}
/* /pływające dymki|komunikaty */



/*** rotator treści na stronie głównej, z dużą miniaturą z boku;
 *   rotator listy komunikatów, bez animacji;
 *   rotator eKonsultant */
	function rotatory() {
		$('.rotator').each(function(i, rotator){new Rotatory(rotator);});
		$('.rotator2').each(function(i, rotator){new Rotatory2(rotator);});
		$('.eKonsultant').each(function(i, rotator){new Rotatory3(rotator);});
	}
/* /rotatory  */



/*** pasek informacyjny z przewijanym komunikatem tekstowym  */
	function marquee() {
		var opcje = {
			'selektor': '.marquee'
		};
		
		$(opcje.selektor).each(function(index, item){new Marquee(item);});
	}
/* /pasek informacyjny  */



function bannerStatInit() {
	var opcje = {
		'selektor': 'a.bannerStat[rel^=banner]'
	};
	
	$(opcje.selektor).click(function(e){
		bannerStat(this.attr('rel').replace('banner', ''),this.attr('href'),false);
		e.preventDefault();
	});
}

function bannerStat(rekid, url, noweOkno) {	
	//zlicza kliknięcia bannerów i ew. przekierowuje
	$.ajax({
		type: 'GET',
		url: '/banery/statystyki/',
		data: 'id='+rekid,
		success: function(responseText){
			if(noweOkno) {
				var form = document.createElement("form");
				form.method = "GET";
				form.action = url;
				form.target = "_blank";
				document.body.appendChild(form);
				form.submit();
			} else {
				document.location.href = url;
			}
		}
	});
}



















/*** pływające dymki|komunikaty w rogu strony  */
	var Dymek = function(element) {
		this.cookieTTL = 365; // raczej nikt nie wyzeruje id'ków "nigdy"
		this.element = element; // uchwyt elementu
		this.zamknijHTML = '<a href="#" class="dymekZamknij">zamknij</a>';
		var self = this; // takie mootoolsowe .bind(this)
		
		
		this.inicjuj = function() {
			this.startujZCookie();
		};
		
		this.startujZCookie = function() {
			// id elementu będzie nazwą cookie. Bez tego ani rusz.
			if (!$(this.element).attr('id')) {return false;}
			this.elementId = $(this.element).attr('id');
			
			// nie ma cookie (lub zjedzone) = tworzymy je od nowa
			if (!$.cookie(this.elementId)) {
				$.cookie(this.elementId, '1', {path: '/', expires: this.cookieTTL});
			}
			// pokazujemy element gdy cookie == 1 lub obsługa cookie jest wyłączona
			if ($.cookie(this.elementId) == '1' || !$.cookie(this.elementId)) {
				this.pokaz().budujLinkZamknij();
			}
			return this;
		};
		
		// krzyżyk ukrywający element
		this.budujLinkZamknij = function() {
			var linkZamknij = $(this.zamknijHTML);
			$(this.element).append(linkZamknij);
			linkZamknij.click(function(e){
				e.preventDefault();
				self.ukryj(); // ukrywa element i ustawia cookie na 0
			});
			return linkZamknij;
		};
		
		// uruchamiana gdy cookie == 1 lub obsługa cookie jest wyłączona
		this.pokaz = function() {
			if (!($.browser.msie)) {
				$(this.element).fadeIn(800);
			} else {
				this.pngfix().fadeIn(800);
			}
			return this;
		};
		
		// uruchamiana po kliknięciu w linkZamknij
		this.ukryj = function() {
			if (!($.browser.msie)) {
				$(this.element).fadeOut(800, function(){$(this.element).remove();});
			} else {
				$(this.element).parent()
					.fadeOut(800, function(){$(this.element).parent().remove();});
			}
			$.cookie(this.elementId, '0');	
			return this;
		};
		
		// ie8 już nie pojawia prawidłowo elementów z przezroczystym png w tle.
		this.pngfix = function() {
			return $(this.element).wrap('<div class="dymekPngFix" />').parent();
		};
		
		this.inicjuj();
	}

/* /pływające dymki|komunikaty */



var RotatoryCommon = function() {
	// klasa nadawana aktywnej zakładce na liście paginacji
	var jsKlasaAktywnej = 'aktywna';
	this.ustawWysokoscRodzica = function (tablicaDzieci) {
		var y = 0;
		$(tablicaDzieci).each(function(index, item) {
			y = ($(item).outerHeight(true) > y) ? $(item).outerHeight(true) : y;
		});
		$(tablicaDzieci[0]).parent().css('height', y+'px');
	};
	this.pokazZakladke = function (index, rotator) {
		$(rotator.paginacja).removeClass(jsKlasaAktywnej);
		$(rotator.zakladki).fadeOut('slow');
		
		$(rotator.paginacja[index]).addClass(jsKlasaAktywnej);
		$(rotator.zakladki[index]).fadeIn('slow');
	};
}

/*** rotator treści  */
	var Rotatory = function(rotator) {
		var zakladki = '.boks'; // selektor zakładek do znalezienia
		
		var opoznienie = 4500;
		var self = this, interval;
		
		
		this.inicjuj = function(rotator){
			self.rotatoryCommon = new RotatoryCommon();
			
			// odnośnik do rotatora
			self.rotator = rotator; 
			
			// startowa zakładka
			self.rotator.widoczna = self.rotator.startowa = 0;
			
			// lista zakładek
			self.rotator.zakladki = $(self.rotator).find(zakladki);
			
			// ustawia wysokość rotatora na równą wysokości najwyższej zakładki
			self.rotatoryCommon.ustawWysokoscRodzica($(self.rotator.zakladki));
			
			
			// dodaje zdarzenia myszy do zakładek w paginacji i
			//  zatrzymuje animację po kliknięciu
			stworzPaginacje().each(function(index,zakladka){
				$(zakladka).click(function(e){
					self.rotatoryCommon.pokazZakladke(index, self.rotator);
					self.rotacjaStop();
					self.rotator.widoczna = index;
					e.preventDefault();
				});
			});
			
			// odsłania startową zakładkę
			self.rotatoryCommon.pokazZakladke(self.rotator.startowa, self.rotator);
			
			// uruchamia rotowanie zakładek
			if (self.rotator.zakladki.length > 1) {
				$(window).blur(self.rotacjaStop);
				$(window).focus(function(){
					self.rotacjaStop().addClass('jsHover');
					self.rotacjaStart().removeClass('jsHover');
				});
				$(self.rotator).mouseenter(function(){
					self.rotacjaStop().addClass('jsHover');
				});
				$(self.rotator).mouseleave(function(){
					self.rotacjaStart().removeClass('jsHover');
				});
			}

		};
		
		// przełączanie zakładek
		var stworzPaginacje = function() {
			$($(self.rotator).find('.zawartosc')[0])
				.append($('<ul class="paginacja"></ul>'));
			$(self.rotator.zakladki).each(function(index, zakladka){
				var i = index+1;
				$($(self.rotator)
					.find('.zawartosc .paginacja')[0])
					.append($('<li><a href="#">'+ i +'</a></li>'));
			});
			self.rotator.paginacja = $($(self.rotator).find('.paginacja li a'));
			return self.rotator.paginacja;
		};
		
		// animacja
		this.rotacjaStart = function(){
			self.rotacjaStop();
			this.interval = setInterval(function(){
				if (self.rotator.widoczna+1 < self.rotator.zakladki.length) {
					self.rotator.widoczna++;
				} else {
					self.rotator.widoczna = self.rotator.startowa;
				}
				self.rotatoryCommon.pokazZakladke(self.rotator.widoczna, self.rotator);
			}, opoznienie);	
			return $(self.rotator);
		};
		
		// zatrzymanie animacji
		this.rotacjaStop = function(){
			clearInterval(self.interval);
			self.interval = null;
			return $(self.rotator);
		};

		// uruchomienie rotatora
		this.inicjuj(rotator);

	}
/* /rotator treści  */


/*** rotator komunikatów  */
	var Rotatory2 = function(rotator) {
		var zakladki = '.boks';
		var self = this;
		
		this.inicjuj = function() {
			self.rotatoryCommon = new RotatoryCommon();
			
			// odnośnik do rotatora
			self.rotator = rotator; 
			
			// startowa zakładka
			self.rotator.widoczna = self.rotator.startowa = 0;
			
			// lista zakładek
			self.rotator.zakladki = $(self.rotator).find(zakladki);
			
			// dodaje zdarzenia myszy do zakładek w paginacji i
			//  zatrzymuje animację po kliknięciu
			stworzPaginacje().each(function(index,zakladka){
				$(zakladka).click(function(e){
					self.rotatoryCommon.pokazZakladke(index, self.rotator);
					// na życzenie Klienta wysokość rotatora ustawiamy na równą wysokości aktywnej zakładki
					var foo = [$(self.rotator.zakladki)[index]];
					self.rotatoryCommon.ustawWysokoscRodzica($(foo));
					e.preventDefault();
				});
			});
			
			// odsłania startową zakładkę
			self.rotatoryCommon.pokazZakladke(self.rotator.startowa, self.rotator);
			
			// ustawia wysokość rotatora na równą wysokości najwyższej zakładki
			//self.rotatoryCommon.ustawWysokoscRodzica($(self.rotator.zakladki));
			// na życzenie Klienta wysokość rotatora ustawiamy na równą wysokości aktywnej zakładki
			var foo = [$(self.rotator.zakladki)[0]];
			self.rotatoryCommon.ustawWysokoscRodzica($(foo));
			
		};
		
		// przełączanie zakładek
		var stworzPaginacje = function() {
			var fooHtml = '';
			$(self.rotator).find('.tytul').each(function(index,item){
				fooHtml += $(item).html();
				$(item).remove();
			});
			$('<h2 class="tytul">'+ fooHtml +'</h2>')
				.insertBefore( $(self.rotator).find('.zawartosc')[0] );
		
			self.rotator.paginacja = $($(self.rotator).find('.tytul a'));
			return self.rotator.paginacja;
		};
		
		this.inicjuj(rotator);
	}
/* /rotator komunikatów  */


/*** rotator eKonsultant  */
	var Rotatory3 = function(rotator) {
		var zakladki = '.tytul'; // selektor zakładek do znalezienia
		
		var opoznienie = 2500;
		var self = this, interval;
		
		
		this.inicjuj = function(rotator){
			self.rotatoryCommon = new RotatoryCommon();
			
			// odnośnik do rotatora
			self.rotator = rotator; 
			
			// startowa zakładka
			self.rotator.widoczna = self.rotator.startowa = 0;
			
			// lista zakładek
			self.rotator.zakladki = $(self.rotator).find(zakladki);
			
			// dodaje zdarzenia myszy do zakładek w paginacji i
			//  zatrzymuje animację po kliknięciu
			stworzPaginacje().each(function(index,zakladka){
				$(zakladka).click(function(e){
					self.rotatoryCommon.pokazZakladke(index, self.rotator);
					self.rotacjaStop();
					self.rotator.widoczna = index;
					e.preventDefault();
				});
			});
			
			// odsłania startową zakładkę
			self.rotatoryCommon.pokazZakladke(self.rotator.startowa, self.rotator);
			
			// uruchamia rotowanie zakładek
			if (self.rotator.zakladki.length > 1) {
				self.rotacjaStart();
				$(self.rotator).mouseenter(function(){
					self.rotacjaStop().addClass('jsHover');
				});
				$(self.rotator).mouseleave(function(){
					self.rotacjaStart().removeClass('jsHover');
				});
			}

		};
		
		// animacja
		this.rotacjaStart = function(){
			this.interval = setInterval(function(){
			if (self.rotator.widoczna+1 < self.rotator.zakladki.length) {
				self.rotator.widoczna++;
			} else {
				self.rotator.widoczna = self.rotator.startowa;
			}
			self.rotatoryCommon.pokazZakladke(self.rotator.widoczna, self.rotator);
			}, opoznienie);	
			return $(self.rotator);
		};
		
		// zatrzymanie animacji
		this.rotacjaStop = function(){
			clearInterval(this.interval);
			return $(self.rotator);
		};
		
		// przełączanie zakładek
		var stworzPaginacje = function() {
			$($(self.rotator))
				.append($('<ul class="paginacja"></ul>'));
			$(self.rotator.zakladki).each(function(index, zakladka){
				var i = index+1;
				$($(self.rotator)
					.find('.paginacja')[0])
					.append($('<li><a href="#">'+ i +'</a></li>'));
			});
			self.rotator.paginacja = $($(self.rotator).find('.paginacja li a'));
			return self.rotator.paginacja;
		};
		
		// uruchomienie rotatora
		this.inicjuj(rotator);

	}
/* /rotator eKonsultant  */



var InputyZTekstem = function(elementId,jsValue) {
	// klasa inputa o pustym value (z value ustawionym przez skrypt)
	var klasaNieaktywnego = 'inputNieaktywny';
	
	if (document.getElementById(elementId)) {
		var element = document.getElementById(elementId);
		// dla innych języków tekst domyślny dać w title inputa
		jsValue = ($(id).attr('title')) ? $(id).attr('title') : jsValue;
		
		if (element.value == '' || element.value == jsValue) {
			element.value = jsValue;
			$(element).addClass(klasaNieaktywnego);
		}
		element = $(element);
		element.focus(function(){
			if (element.attr('value') == jsValue) { 
				element.removeClass(klasaNieaktywnego); 
				element.attr('value', '');
			}
		});
		element.blur(function(){
			if (element.attr('value') == '') {
				element.addClass(klasaNieaktywnego);
				element.attr('value', jsValue);
			}
		});
		if (element.parents('form')) {
			element.parents('form').submit(function(){
				element.trigger('focus');
			});
		}
	}
}



var adminModul = function() {
	$($.find('img.adminModulNowy')).each(function(index, item){
		var el = $($(item).parents('span.adminModul').parent());
		item.jsBgColor
			= (el.css('background') == 'undefined')
			? 'transparent none' 
			: el.css('background');
		$(item).mouseenter(function(){el.css('background', '#ffffdb');});
		$(item).mouseleave(function(){el.css('background', item.jsBgColor);});
	});
}



/*** pasek informacyjny z przewijanym komunikatem tekstowym  */
	var Marquee = function(element) {
		var krok = -1; // krok scrollowania
		var marqueeSelektor = '.zawartosc'; // selektor elementu scrollowanego
		var opoznienie = 20; // szybkość animacji (1 - maks)
		
		var pozycja = marqueeSzerokosc = 0;
		var self = this;
		
		
		this.inicjuj = function() {
			self.element = $(element);
			// szuka elementu scrollowanego wewnątrz $(element)
			self.marquee = $(self.element.find(marqueeSelektor));
			// szerokość rodzica elementu scrollowanego (położenie marquee się
			// resetuje, gdy osiągnie -szerokość rodzica (wartość ujemną);
			self.szerokosc = this.ustawSzerokosc();
			// uruchomienie animacji i dodanie zdarzeń myszy (stop dla mouseenter)
			this.scrolluj().dodajZdarzenia();
		};
		
		this.ustawSzerokosc = function() {
			//startowa pozycja elementu scorllowanego
			self.pozycja = parseInt(self.element.css('width').replace('px', ''));
			//  szerokość elementu scrollowanego
			self.marqueeSzerokosc = parseInt(self.marquee.css('width').replace('px', ''));
			// ustawia marquee tuż za krawędzią rodzica
			self.marquee.css('left', self.pozycja);
			return self.pozycja;
		};
		
		this.scrolluj = function() {
			self.interval = setInterval(function(){
				if ( self.pozycja >= -self.marqueeSzerokosc ) {
					self.pozycja = self.pozycja + krok;
				} else {
					self.pozycja = self.szerokosc;
				}
				self.marquee.css('left', self.pozycja);
			}, opoznienie);	
			return self;
		};
		
		this.dodajZdarzenia = function() {
			self.marquee.mouseenter(function(e){clearInterval(self.interval);});
			self.marquee.mouseleave(function(e){self.scrolluj();});
			return self;
		};
		
		this.inicjuj();
	}
/* /pasek informacyjny  */


/*** Interaktywna mapa powiatów  */
	var MapaPomoce = function() {
		var self = this;
		var opcje = {
			'klasaRozwinietego': 'rozwiniety'
		};
		
		/** Templatka pozycji na liście wyników wyszukiwania */
		var _tpl = new String('<tr class="projektRozwin #projektyData_trClass#">');
				_tpl += '<td class="projektLp">#projektyData_lp#</td>';
				_tpl += '<td class="projektTytul">#projektyData_tytul#</td>';
				_tpl += '<td class="projektPowiat">#projektyData_powiat#</td>';
				_tpl += '<td class="projektGmina">#projektyData_gmina#</td>';
			_tpl += '</tr>';
			
			_tpl += '<tr class="#projektyData_trClass#">';
			_tpl += '<td class="projektSzczegoly" colspan="4">';
			
				// Opis projektu
				_tpl += '<div class="wiersz">';
					_tpl += '<div class="opis">Opis:</div>';
					_tpl += '<div class="wartosc">#projektyData_opis#</div>';
				_tpl += '</div>';
				
				// Priorytet projektu
				_tpl += '<div class="wiersz">';
					_tpl += '<div class="opis">Priorytet:</div>';
					_tpl += '<div class="wartosc">#projektyData_priorytet#</div>';
				_tpl += '</div>';
				
				// Działanie
				_tpl += '<div class="wiersz">';
					_tpl += '<div class="opis">Działanie:</div>';
					_tpl += '<div class="wartosc">#projektyData_dzialanie#</div>';
				_tpl += '</div>';
				
				// Umowa
				_tpl += '<div class="wiersz">';
					_tpl += '<div class="opis">Umowa:</div>';
					_tpl += '<div class="wartosc">#projektyData_umowa#</div>';
				_tpl += '</div>';
				
				// Beneficjent
				_tpl += '<div class="wiersz">';
					_tpl += '<div class="opis">Beneficjent:</div>';
					_tpl += '<div class="wartosc">#projektyData_beneficjent#</div>';
				_tpl += '</div>';
				
				// Okres realizacji projektu
				_tpl += '<div class="wiersz">';
					_tpl += '<div class="opis">Okres realizacji projektu:</div>';
					_tpl += '<div class="wartosc">#projektyData_start# - #projektyData_koniec#</div>';
				_tpl += '</div>';
				
				// Wartość całkowita projektu
				_tpl += '<div class="wiersz">';
					_tpl += '<div class="opis">Wartość całkowita projektu:</div>';
					_tpl += '<div class="wartosc">#projektyData_wartosc#</div>';
				_tpl += '</div>';
				
				// Wartość dofinansowania
				_tpl += '<div class="wiersz">';
					_tpl += '<div class="opis">Wartość dofinansowania:</div>';
					_tpl += '<div class="wartosc">#projektyData_dofinansowanie#</div>';
				_tpl += '</div>';
				
			_tpl += '</td>';
		_tpl += '</tr>';
		
		/** Templatka nagłówka mapy */
		var _tplNaglowek = new String('<div class="herb"><img src="/g/herby/powiat_#powiatInfo_img#.jpg" /></div>');
		
			// Nazwa powiatu
			_tplNaglowek += '<div class="wiersz nazwaPowiatu">#powiatInfo_tytul#</div>';
			
			// Ilość projektów
			_tplNaglowek += '<div class="wiersz">';
				_tplNaglowek += '<div class="opis">Ilość projektów:</div>';
				_tplNaglowek += '<div class="wartosc">#powiatInfo_ilosc#</div>';
			_tplNaglowek += '</div>';
			
			// Wartość projektów
			_tplNaglowek += '<div class="wiersz">';
				_tplNaglowek += '<div class="opis">Wartość projektów:</div>';
				_tplNaglowek += '<div class="wartosc">#powiatInfo_wartosc#</div>';
			_tplNaglowek += '</div>';
			
			// Wartość dofinansowania
			_tplNaglowek += '<div class="wiersz">';
				_tplNaglowek += '<div class="opis">Wartość dofinansowania:</div>';
				_tplNaglowek += '<div class="wartosc">#powiatInfo_dofinansowanie#</div>';
			_tplNaglowek += '</div>';
			
		/** Templatka nagłówka mapy bez powiatu */
		var _tplNaglowek2 = new String('');
			
			// Ilość projektów
			_tplNaglowek2 += '<div class="wiersz">';
				_tplNaglowek2 += '<div class="opis">Ilość projektów:</div>';
				_tplNaglowek2 += '<div class="wartosc">#powiatInfo_ilosc#</div>';
			_tplNaglowek2 += '</div>';
			
			// Wartość projektów
			_tplNaglowek2 += '<div class="wiersz">';
				_tplNaglowek2 += '<div class="opis">Wartość projektów:</div>';
				_tplNaglowek2 += '<div class="wartosc">#powiatInfo_wartosc#</div>';
			_tplNaglowek2 += '</div>';
			
			// Wartość dofinansowania
			_tplNaglowek2 += '<div class="wiersz">';
				_tplNaglowek2 += '<div class="opis">Wartość dofinansowania:</div>';
				_tplNaglowek2 += '<div class="wartosc">#powiatInfo_dofinansowanie#</div>';
			_tplNaglowek2 += '</div>';

		// Zamienia stringi na zmienne i zwraca gotowy html
		// To jest funkcja do obsługi rozwijanej listy wyników wyszukiwania
		self.tpl = function(data) {
			var tplCalosc = new String();
			for(var i = 0; i < data.length; i++) {
				var tpl = _tpl;
				var klasaCss = (typeof(klasaCss) == 'undefined') ? 'nieparz' : klasaCss;
				var y = i+1;
				
				tpl = tpl.replace(/#projektyData_trClass#/gi, klasaCss);
				tpl = tpl.replace(/#projektyData_lp#/gi, y);
				tpl = tpl.replace(/#projektyData_tytul#/gi, data[i].tytul);
				tpl = tpl.replace(/#projektyData_powiat#/gi, data[i].powiat);
				tpl = tpl.replace(/#projektyData_gmina#/gi, data[i].gmina);
				tpl = tpl.replace(/#projektyData_opis#/gi, data[i].opis);
				tpl = tpl.replace(/#projektyData_priorytet#/gi, data[i].piorytet);
				tpl = tpl.replace(/#projektyData_dzialanie#/gi, data[i].dzialanie);
				tpl = tpl.replace(/#projektyData_umowa#/gi, data[i].umowa);
				tpl = tpl.replace(/#projektyData_beneficjent#/gi, data[i].benificjent);
				tpl = tpl.replace(/#projektyData_wartosc#/gi, data[i].wartosc);
				tpl = tpl.replace(/#projektyData_start#/gi, data[i].start);
				tpl = tpl.replace(/#projektyData_koniec#/gi, data[i].koniec);
				tpl = tpl.replace(/#projektyData_dofinansowanie#/gi, data[i].dofinansowanie);
				
				tplCalosc += tpl;
				delete tpl;
				klasaCss = (klasaCss == 'nieparz') ? 'parz' : 'nieparz';
			}
			return tplCalosc;
		};
		
		// Zamienia stringi na zmienne i zwraca gotowy html
		self.tplNaglowek = function(data, powiat) {
			if (typeof(powiat) != 'undefined') {
				var tpl = _tplNaglowek;
				tpl = tpl.replace(/#powiatInfo_img#/gi, jQuery(powiat).attr('href').replace('#', ''));
				tpl = tpl.replace(/#powiatInfo_tytul#/gi, jQuery(powiat).attr('alt'));
				tpl = tpl.replace(/#powiatInfo_ilosc#/gi, data.proj_liczba);
				tpl = tpl.replace(/#powiatInfo_wartosc#/gi, data.proj_wartosc);
				tpl = tpl.replace(/#powiatInfo_dofinansowanie#/gi, data.proj_dofinansowanie);
			} else if (typeof(data.projekty) != 'undefined') {
				var tpl = _tplNaglowek2;
				tpl = tpl.replace(/#powiatInfo_ilosc#/gi, data.projekty);
				tpl = tpl.replace(/#powiatInfo_wartosc#/gi, data.wartosc);
				tpl = tpl.replace(/#powiatInfo_dofinansowanie#/gi, data.dofinansowanie);
			}
			return tpl;
		};
		
		// Dodaje zdarzenie 'click', by wyświetlić szczegóły projektu
		self.dodajZdarzenia = function(widoczneArr) {
			jQuery(widoczneArr).each(function(index,item){
				item = jQuery(item);
				item.unbind('click');
				item.bind('click', function(){
					item.next('tr').css('display', (item.next('tr').css('display') == 'none') ? '' : 'none');
					item.toggleClass(opcje.klasaRozwinietego);
					jQuery(item.next('tr')).toggleClass('paginacjaUkryty');	
				});
			});
			widoczneArr.length = 0;
		};
		
		// Tworzy paginację dla długich list.
		// Dodaje zdarzenie 'click' elementom paginacji
		self.paginacja = function(elementy, liczbaNaStronie) {
			jQuery('#paginacja').html('');
			var _tpl = '<li><a href="#">#y#</a></li>';
			
			// Zwraca liczbę potrzebnych stron paginacji
			// i informację, czy są jakieś 'nieparzyste'
			function podziel ( liczba, podzial ) {
				var reszta = liczba % podzial;
				var wynik = ( liczba - reszta ) / podzial;
				return {'ilosc':wynik, 'reszta':reszta};
			}
			
			function pokazStrone(j) {
				var foo = liczbaNaStronie * j;
				jQuery(elementy).addClass('paginacjaUkryty');
				jQuery(jQuery(elementy).next('tr')).addClass('paginacjaUkryty');
				var widoczneArr = widoczneArr || [];
				widoczneArr.length = 0;
				for (var i = foo; i < foo + liczbaNaStronie; i++)  {
					if(elementy[i]) {
						jQuery(elementy[i]).removeClass('paginacjaUkryty');
						widoczneArr.push(jQuery(elementy[i]));
					}
				}
				self.dodajZdarzenia(widoczneArr);
			}
			// Oblicza ilość wymaganych przełączników w paginacji
			var liczbaStron = podziel(elementy.length, liczbaNaStronie);
			var tpl = new String('');
			var y = 0;
			// tworzy przełączniki w paginacji
			for (var i = 0; i < liczbaStron.ilosc; i++) {
				y++;
				tpl += _tpl.replace('#y#', y);
			}
			// Ostatni przełącznik paginacji, dla 'nieparzystych'.
			if (liczbaStron.reszta != 0) {
				y++;
				tpl += _tpl.replace('#y#', y);
			}
			// Pokaże paginację tylko jeśli pozycji jest więcej niż limit
			if (elementy.length > liczbaNaStronie) {
				tpl = '<ul class="paginacja">'+tpl+'</ul>';
				if (document.getElementById('paginacja')) {
					jQuery('#paginacja').html(tpl);
				}
				// Dodajemy onclick stworzonym powyżej elementom
				var elementyPaginacji = jQuery.find('#paginacja a');
				jQuery(elementyPaginacji).each(function(index,item){
					jQuery(item).click(function(e){
						e.preventDefault();
						pokazStrone(index);
					});
				});
				elementyPaginacji.length = 0;
			}
			// pokaże 1szy zestaw pozycji
			pokazStrone(0);
		};
		
	};
/* /Interaktywna mapa powiatów  */
