
Zakladki = function() {
	this.tytul_tag = 'h5'; 															// potrzebny przy usuwaniu tytulu glownego bloczka zakladek
	this.menu_kontener = '<table class="taby-glowne" border="0" cellspacing="0" cellpadding="0"><tr></tr></table>';			// to beda przyciski zakladek
	this.menu_kontener_element = '<td><div class="tytul-blok-bgl"><div class="tytul-blok-bgr">{TUTAJ_TYTUL}</div></div></td>';				// elementy konkretnych przyciskow
	this.bloczki_kontener = '<div></div>';											// bloczki agregowane zostana tu przeniesione
	this.bloczek_tabbable_class = 'jq-tab'; 										// tylko bloczki o takiej klasie CSS beda agregowane
	this.bloczek_tytul_tag = 'h2';													// ten tyluł bedzie nazwą przycisku przełączająca zakładki 
	this.pierwszy_przycisk_ma_class = true;											// okresla czy pierwszemu przyciskowi nadajemy klase 'isFirst' dla IE dodatkowo sa klasy: isActiveAndFirst
	this.ostani_przycisk_ma_class = true;											// okresla czy ostatniemu przyciskowi nadajemy klase 'isLast' dla IE dodatkowo sa klasy: isActiveAndLast
	this.przyciski_maja_class_hover = true;											// okresla czy przyciski maja onmouse over klase 'hover'

	this.agreguj = function(blokID, iloscBloczkow, pokaz_tytul, zaznacz_losowy) {

		var BloczekTabow = $('#'+blokID);
		
		// jezeli nie ma takiego bloczka (raczej niemozliwe)
		if (BloczekTabow.size() == 0 ) return;  
		
		// czy pokazujeny tytul (tytul to zazwyczaj h2, h3 itd.)
		if (pokaz_tytul != 1) $( this.tytul_tag, BloczekTabow).remove();
	
		if (iloscBloczkow > 0) {
			// wyszukujemy wszystkie elementy ponizej bloczka agregujacego, (w wymaganej ilosci tylko)
			var bloczkiDoAgregacji = BloczekTabow.nextAll( ':lt('+iloscBloczkow+')' ); 
	
			// utworz menu dla przyciskow przelaczania tabow
			var TabyMenuKontener = $(this.menu_kontener).appendTo( BloczekTabow );
			
			// znajdywanie najglebszego elementu
			// to jest do poprawienia, ale 
			while ( TabyMenuKontener.get(0).firstChild )
				TabyMenuKontener = $(TabyMenuKontener.get(0).firstChild);
			
			// utworz kontener dla agregowanych bloczkow -> ich tresc bedzie tu przenoszona
			var TabyKontener = $(this.bloczki_kontener).appendTo( BloczekTabow );
			
			// iteracja po bloczkach do agregowania
			i = 0;
			bloczkiDoAgregacji.each((function(zakladki) { return function() {
				// zatrzymaj sie jezeli osiagnieto limit
				if (i >= iloscBloczkow) return false; // return false = break;
				
				// zatrzymaj sie jezeli napotkasz bloczek ktory NIE JEST tabbable !
				if (  $(this).hasClass(zakladki.bloczek_tabbable_class) == false || $(this).hasClass('jq-zakladki-bloczek') )
				{
					return false; // return false = break;
				}
				
				var id_bloczka =  $(this).attr('id');
				var tytulBloczka = $(this).find( zakladki.bloczek_tytul_tag+':first' ); // :first dla pewnosci
				
				//dodaje przycisk na belce tabów
				var przycisk = $( zakladki.menu_kontener_element.replace('{TUTAJ_TYTUL}',tytulBloczka.text()) );
				
				// dodaj przycisk do menu
				TabyMenuKontener.append(przycisk);
				
				// podepnij akcje pod przyciski			
				przycisk.attr('rel', id_bloczka );
				przycisk.bind('click', {bloczek_id: id_bloczka, rodzic_id: blokID}, zakladki.pokazZakladke);
				
				if (zakladki.przyciski_maja_class_hover)
				{	// niesety .hover nie dziala za dobrze....
					przycisk.mouseover(function(){$(this).addClass('hover')}).mouseout(function(){$(this).removeClass('hover')});
				}
				
				// usun tytul zagregowanego bloczka 
				tytulBloczka.remove();			
				
				// przeniesienie bloczka do specjalnego kontenera
				TabyKontener.append( $(this) );
				$(this).hide();
				
				i++;
			}})(this));
			
			// oprogramowanie class css dla przyciskow
			var wszystkiePrzyciski = $('[rel^=blok_]', TabyMenuKontener);
	
			// klasa dla ostaniego przycisku (potrzeban czasem przy stylowaniu)
			if (this.ostani_przycisk_ma_class)	wszystkiePrzyciski.eq( wszystkiePrzyciski.length-1 ).addClass('isLast');
			
			// klasa dla pierwszego przycisku (potrzeba czasem przy stylowaniu)
			if (this.pierwszy_przycisk_ma_class) wszystkiePrzyciski.eq(0).addClass('isFirst');		
			
			// pokaz tab -> jak nie losowo to pierwszy
			if (zaznacz_losowy == 1){
				var randomnumber = Math.floor(Math.random()* wszystkiePrzyciski.length )
				wszystkiePrzyciski.eq(randomnumber).click();	    	
			}
			else 
			{	// odpal pierwszy tab 
				wszystkiePrzyciski.eq(0).click();
			}		
	
		}
	}
	
	this.pokazZakladke = function(eventObj) {
		var bloczekTabow = $(eventObj.target).parents('#' + eventObj.data.rodzic_id);
		var nacisnietyPrzycisk = $('[rel='+eventObj.data.bloczek_id+']', bloczekTabow);
		
		//jezeli jest aktywne to nic rob nic - znaczy ze bloczek ejst aktualnie wyswietlany
		if (nacisnietyPrzycisk.hasClass('isActive')) return false;

		//usun klasy pozostalym przyciskom
		nacisnietyPrzycisk.siblings().removeClass('isActive isActiveAndFirst isActiveAndLast');
		
		// ustaw isActive na aktualnemu przyciskowi
		nacisnietyPrzycisk.addClass('isActive');
		nacisnietyPrzycisk.filter('.isFirst').addClass('isActiveAndFirst');
		nacisnietyPrzycisk.filter('.isLast').addClass('isActiveAndLast');
		
		var bloczekDoPokazania = $('#'+eventObj.data.bloczek_id, bloczekTabow);
		// ukryj wszystkie widoczne bloczki
		bloczekDoPokazania.siblings('[id^=blok_]').hide();
		// pokaz klikniety
		bloczekDoPokazania.show();
	}
}

