

//Autor: Adam Popławski
//Klasa do tworzenia zwijalnych list

//Testowane na mootools wer. 1.11

// konfiguracja
//lokalizacja obrazka przycisku "+" wzgledem katalogu glownego serwisu
var ZwijListPrzycPlusObr = '/assets/grafika/plus.png';
//lokalizacja obrazka przycisku "-" wzgledem katalogu glownego serwisu
var ZwijListPrzycMinusObr = '/assets/grafika/minus.png';		
//lokalizacja obrazka przycisku " " wzgledem katalogu glownego serwisu
var ZwijListPrzycNullObr = '/assets/grafika/null.png';		

//koniec konfiguracji

var ZwijList = new Class({
	initialize: function (listId){
		
		
		
		this.lista = $(listId);
		var children = this.lista.getChildren();
		var effects = {};
		
		this.lista.setStyles('list-style: none;');
		
		//Ustaw linki na tekstach w pierwszym poziomie
		children.each(function(el, idx) {
			
			var el = $(el);
			//alert(el);
			var els = el.childNodes;
			
			
			//zapamietaj naglowki w pierwszym poziomie
			var elsTitle = els[0].nodeValue;
			//els[0].nodeValue = ' ';
			
			var submenu = el.getChildren().filterByTag('ul')[0]
			
			//Jeżeli aktualny element nie ma podlist to dodaj tylko "pusta" ikone
			if (submenu == null) {
				var ico = new Element('img', {'src' : ZwijListPrzycNullObr, 'border' : '0', 'class': 'list-rozwij-iko'});
				ico.setStyles('margin: 0 5px;');
				ico.injectTop(el);
				return true;
			}
			
			//utworz link do otoczenia ikony +/-
			var firstEl = new Element('a', {'href' : '#'});
			
			//dodaj ikonke zwijania/rozwijania
			var ico = new Element('img', {'src' : ZwijListPrzycPlusObr, 'border' : '0', 'class': 'list-rozwij-iko'});
			ico.setStyles('margin: 0 5px;');
			
			effects[idx] = new Fx.Slide(submenu, {duration: 500, 
												  transition: Fx.Transitions.Sine.easeOut,
													onComplete: function() {
														//wez wysokosc opakujacego diva dodanego z mootols w celu ustalenia czy
														//dany element jest schowany czy nie 
														submMarginTop = submenu.getParent().getStyle('height').toInt();
														//alert(submenu.getParent().getStyle('height'));
														if (submMarginTop != 0) {
															ico.setProperty('src', ZwijListPrzycMinusObr);

														} else {
															ico.setProperty('src', ZwijListPrzycPlusObr);
														}
													}
													});
			effects[idx].slideOut();
			
			ico.injectTop(firstEl);
			firstEl.injectTop(el);
			
			//dodaj zwijanie i rozwijanie po nacisnieciu na naglowek
			firstEl.addEvent('click', function(event) {
				var event = new Event(event);
				var el = $(event.target);
				
				
				effects[idx].toggle();
				el.getParent().blur();
				event.stop();
			});
			
		});
		
		this.effects = effects;
	
	},
	zwinWszystkie: function (event) {
		$each(this.effects, function(el, idx) {
			el.slideOut();
		});
		//event.stop();
	}, 
	rozwinWszystkie: function(event) {
		
		$each(this.effects, function(el, idx) {
			el.slideIn();
		});
		//event.stop();
	
	},
	dodajPrzyciski: function(gdzie) {
		
		var przyc = new Element('div', {'class': 'list-rozwij-narz'});
		var przycRozwin = new Element('a', {'href': 'javascript: void(0)'});
		var przycZwin = new Element('a', {'href': 'javascript: void(0)'});
		
		
		przycRozwin.setText('Rozwiń wszystkie');
		przycRozwin.addEvent('click', this.rozwinWszystkie.bind(this));
		
		przycRozwin.injectTop(przyc);
		
		przyc.appendText(' | ');
		
		przycZwin.setText('Zwiń wszystkie');
		przycZwin.addEvent('click', this.zwinWszystkie.bind(this));
		
		przycZwin.injectInside(przyc);
		
		if (gdzie == 'gora') {
			przyc.injectBefore(this.lista);
		} else {
			przyc.injectAfter(this.lista);
		}
	
	}
});

