document.documentElement.className = "bezDOMny";
var motywGraficzny = false;

function inicjujJs() {
	motywGraficzny = $(document.body).getStyle('unicode-bidi') == 'bidi-override';
	if (motywGraficzny) {
		document.documentElement.className = "DOMready";
		/*** Funkcje zmieniające DOM proszę wpisywać tutaj */
		messenger();
		animacjaFlash();
	}
	rotator();
	css2click();
	lightbox();
	adminModul();
}
window.addEvent('domready', inicjujJs);




function lightbox() {
	if (typeof(Milkbox) != 'undefined') {
		milkbox = new Milkbox({ 
			centered:true, 
			overlayOpacity:0.4, 
			imageOfText:'z'
		});
	}
}


function animacjaFlash() {
	var opcje = {
		'kontener': 'animacjaFlash', // gdzie wyladuje animacja
		'swfPath': '/g/front/nazwaSerwisu.swf', // sciezka do animacji
		'swfVersionStr': '10', // minimalna wymagarsza wymagana playera
		'flashvars': {},
		'params': {
			menu: "false",
			scale: "noScale",
			allowFullscreen: "false",
			allowScriptAccess: "sameDomain",
			bgcolor: "#FFFFFF",
			quality: 'high',
			loop: 'false',
			scale: 'showall',
			devicefont: 'false',
			salign: '',
			wmode: "transparent" // can cause issues with FP settings & webcam
		},
		'attributes': {
			id:"nazwaSerwisuSWF"
		}
	};

	if (document.getElementById(opcje.kontener)) {
		swfobject.embedSWF(
			opcje.swfPath,
			opcje.kontener, "670px", "184px", opcje.swfVersionStr,
			"/p/intro/expressInstall.swf",
			opcje.flashvars, opcje.params, opcje.attributes
		);
	}
}

/*** messenger  */
	function messenger() {
		var opcje = {
			'selektor': '.messenger .message'
		};

		$$(opcje.selektor).each(function(item,index){new Messanger(item);});
	}
/* /messenger */

/***  rotator na stronie głównej */
function rotator() {
	var opcje = {
		'selektor': '#kontenerRotatora .panele2', 'zakladki': 'h3.tytul'
	};

	$$(opcje.selektor).each(function(item){
		new Rotator(item, { selector: opcje.zakladki });
	});
	if ($$(opcje.selektor)[0]) { $$('#kontenerRotatora').addClass('UI'); }
}

var Rotator = new Class({

	Implements: [Events, Options],

	/**
	 * Options
	 */
	options: {
		show: 0,
		selector: '.tab-tab',
		classWrapper: 'tab-wrapper',
		classMenu: 'tab-menu',
		classContainer: 'tab-container',
		onSelect: function(toggle, container, index) {
			toggle.addClass('tab-selected');
			container.setStyle('display', '');
		},
		onDeselect: function(toggle, container, index) {
			toggle.removeClass('tab-selected');
			container.setStyle('display', 'none');
		},
		onRequest: function(toggle, container, index) {
			container.addClass('tab-ajax-loading');
		},
		onComplete: function(toggle, container, index) {
			container.removeClass('tab-ajax-loading');
		},
		onFailure: function(toggle, container, index) {
			container.removeClass('tab-ajax-loading');
		},
		onAdded: Class.empty,
		getContent: null,
		ajaxOptions: {},
		cache: true
	},

	/**
	 * Constructor
	 *
	 * @param {Element} The parent Element that holds the tab elements
	 * @param {Object} Options
	 */
	initialize: function(element, options) {
		this.element = $(element);
		this.setOptions(options);
		this.selected = null;
		this.build();
		this.buildNumerowane();
		//this.przywrocTytuly();
	},

	build: function() {
		this.tabs = [];
		this.menu = new Element('ul', {'class': this.options.classMenu});
		this.wrapper = new Element('div', {'class': this.options.classWrapper});

		this.element.getElements(this.options.selector).each(function(el) {
			var content = el.get('href') || (this.options.getContent ? this.options.getContent.call(this, el) : el.getNext());
			// jesli selektor ma w sobie odnosnik, to zachowujemy href na pozniej
			// zeby go wykorzystac w funkcji przywrocTytuly
			if (el.getElement('a')) {
				this.addTab(el.get('text'), el.title || el.get('text'), content, el.getElement('a').get('href'));
			} else {
				this.addTab(el.get('text'), el.title || el.get('text'), content);
			}
		}, this);
		this.element.empty().adopt(this.menu, this.wrapper);

		if (this.tabs.length) this.select(this.options.show);
	},

	buildNumerowane: function() {
		//
		var paginacje = this.element.getElements('.tab-menu');
		var i = -1;
		paginacje.each(function(paginacja){
			if (paginacja.getParent('.panele2')) {
				var linki = paginacja.getElements('li a span');
				linki.each(function(link, index){
					i++;
					var tekst = link.get('html');
					var href
						= (typeof(this.tabs[i].tabHref) != 'undefined')
						? this.tabs[i].tabHref
						: link.getParent('a').get('href');
					var tytul = new Element('h3', {'class': 'tytul'});
					var a = new Element('a', {
						'href': href,
						'html': tekst
					});
					a.inject(tytul);
					var injectTo =
						link.getParent('.panele2')
						.getElements('.tab-container')[i]
						.getElement('.zawartosc');
					tytul.inject(injectTo, 'top');
					link.set('html', index+1);
				}.bind(this));
			} else {
				var linki = paginacja.getElements('li');
				linki.each(function(link, index){
					// z zakladkami glownymi nie robie nic oprocz nadania im
					// klasy css, zeby je osobno ostyloawc.
					var i = index+1;
					link.addClass('pozycja-'+i);
				});
			}
		}.bind(this));
	},

	/**
	 * Add a new tab at the end of the tab menu
	 *
	 * @param {String} inner Text
	 * @param {String} Title
	 * @param {Element|String} Content Element or URL for Ajax
	 */
	addTab: function(text, title, content, tabHref) {
		var grab = $(content);
		var container = (grab || new Element('div'))
			.setStyle('display', 'none')
			.addClass(this.options.classContainer)
			.inject(this.wrapper);
		var pos = this.tabs.length;
		var evt = (this.options.hover) ? 'mouseenter' : 'click';
		var tab = {
			container: container,
			toggle: new Element('li').grab(new Element('a', {
				href: '#',
				title: title
			}).grab(
				new Element('span', {html: text})
			)).addEvent(evt, this.onClick.bindWithEvent(this, [pos])).inject(this.menu)
		};
		if (typeof(tabHref) != 'ubdefined') {
			tab.tabHref = tabHref;
		}
		if (!grab && $type(content) == 'string') tab.url = content;
		this.tabs.push(tab);
		return this.fireEvent('onAdded', [tab.toggle, tab.container, pos]);
	},

	onClick: function(evt, index) {
		this.select(index);
		return false;
	},

	/**
	 * Select the tab via tab-index
	 *
	 * @param {Number} Tab-index
	 */
	select: function(index) {
		if (this.selected === index || !this.tabs[index]) return this;
		if (this.ajax) this.ajax.cancel().removeEvents();
		var tab = this.tabs[index];
		var params = [tab.toggle, tab.container, index];
		if (this.selected !== null) {
			var current = this.tabs[this.selected];
			if (this.ajax && this.ajax.running) this.ajax.cancel();
			params.extend([current.toggle, current.container, this.selected]);
			this.fireEvent('onDeselect', [current.toggle, current.container, this.selected]);
		}
		this.fireEvent('onSelect', params);
		if (tab.url && (!tab.loaded || !this.options.cache)) {
			this.ajax = this.ajax || new Request.HTML();
			this.ajax.setOptions({
				url: tab.url,
				method: 'get',
				update: tab.container,
				onFailure: this.fireEvent.pass(['onFailure', params], this),
				onComplete: function(resp) {
					tab.loaded = true;
					this.fireEvent('onComplete', params);
				}.bind(this)
			}).setOptions(this.options.ajaxOptions);
			this.ajax.send();
			this.fireEvent('onRequest', params);
		}
		this.selected = index;
		return this;
	}

});



/***  Wyróżnienie obszaru w którym doda się moduł. */
var adminModul = function() {
	var opcje = {
		'selektor': 'img.adminModulNowy',
		'bg': '#ffffdb url(/g/root/adminModul.gif)'
	};

	$$(opcje.selektor).each(function(item){
		// temu rodzicowi podmienia się tło
		var el = item.getParent('span.adminModul').getParent();
		// zapisanie domyślnego tła css rodzica
		el.bg
			= (el.getStyle('background') == 'undefined')
			? ''
			: el.getStyle('background');
		// po najechaniu myszką na "+" podmienia się tło rodzica
		// po zjechaniu myszką z elementu, tło rodzica wraca do domyślnego
		item.addEvents({
			'mouseenter': function(me){el.setStyle('background', opcje.bg);},
			'mouseleave': function(ml){el.setStyle('background', el.bg);}
		});
	});
};

function podgladObiektuIframe(metaId, obiektId){
	var podgladObiektuIframe = new LightFace.IFrame({
		width: 800,
		height: 500,
		draggable: true,
		title: 'Podgląd obiektu',
		resetOnScroll: true,
		url: '/obiekt/podglad/meta,'+metaId+',id,'+obiektId+'.html'
	}).open();
}

function podgladAnkietyIframe(obiektId){
	var podgladAnkietyIframe = new LightFace.IFrame({
		width: 800,
		height: 500,
		draggable: true,
		title: 'Podgląd ankiety',
		resetOnScroll: true,
		url: '/ankieta/podglad/id,'+obiektId+'.html'
	}).open();
}

/*** pływające dymki|komunikaty w rogu strony  */
var Messanger = function(element) {
	this.element = element; // uchwyt elementu

	// operacje na starcie
	this.inicjuj = function() {
		this.pokaz().budujLinkZamknij();
		return this;
	};

	// odkrywanie elementu
	this.pokaz = function() {
		if(!this.element.getParent('.messenger')) {
			if(!$$('.messenger')[0]) {
				var wrap = new Element('div', {'class': 'messenger'});
				wrap.inject($$('body')[0], 'top');
			}
			var cel = $$('.messenger')[0];
			this.element.inject(cel);
			this.element.addClass('message');
		}
		this.element.fade('in');
		return this;
	};

	// ukrywanie elementu
	this.ukryj = function() {
		this.element.destroy();
		return this;
	};

	// krzyżyk ukrywający element
	this.budujLinkZamknij = function() {
		var linkZamknij = new Element('a', {
			'href': '#',
			'class': 'dymekZamknij',
			'html': 'zamknij'
		});
		linkZamknij.inject(this.element);
		linkZamknij.addEvent('click', function(e){
			e.preventDefault();
			this.ukryj();
		}.bind(this));
		return linkZamknij;
	};

	this.inicjuj();
}
/* /pływające dymki|komunikaty */

var css2click = function() {
	/*
	* Przykład użycia: <input type="button" class="onclick[dodajKlase|klikniety]" />
	* Kliknięcie w input zadziała jak: onclick="dodajKlase('klikniety', this);"
	* Do funkcji w tym przypadku są przekazywane kolejno:
	* String('klikniety'), Object(input), Event('click').
	* Przykładowo może ona więc wyglądać tak:
	* function dodajKlase(klasaCss, input, event) {
	* 	input.addClass(klasaCss); event.stop();
	* }
	*/

	var opcje = {
		'selektor': '[class*="onclick"]',
		'regExp': new RegExp(/^onclick(\[.+\])$/)
	};

	// Przeszukuje DOM i z pasujących elementów zczytuje pasującą klasę css.
	// Na podstawie tej klasy css próbuje wywołać funkcję.
	$$(opcje.selektor).each(function(item){
		item.get('class').split(' ').each(function(klasaCss){
			if (klasaCss.match(opcje.regExp)) {
				var tablicaRegul = klasaCss.match(opcje.regExp);
				regula = tablicaRegul[1].replace('[','').replace(']','').split('|');
				var funkcja = regula[0];
				var parametry = regula[1];
				item.addEvent('click', function(e){
					if (typeof(window[funkcja]) != 'undefined') {
						window[funkcja](parametry, item, e);
					} else if (typeof('console') != 'undefined') {
						console.log('window['+funkcja+'] nie jest zdefiniowana');
						return false;
					}
				});
			}
		});
	});
};
