/**
* Dinamikus galeria megnyito JS.
*/
var CmooDynamicGallery = new Class({
	// optionok
	Implements: Options,
	options: {
 		pic_small_suffix: '.jpeg',
 		pic_big_suffix: '.jpeg',
		picture_top_distance: 0,
		repeatPager: true,
		slideShow_interval: 2000,
		slideShow_autostart: false,
		slideShow_autostart_delay: 1000,
		thumb_control: 'user',
		thumbCell_correction: 0,
 		use_cover: true,
 		cover_bgcolor: '#000000',
 		cover_opactity: 0.5,
 		xpos_ref: false,
		yshift: 0,
		photobase: null,
		photos: null
	},


	// init
	initialize: function(options)
	{
		this.setOptions(options);
		// van galeria layer?
		if (typeOf($('gv_gallery')) != 'element') return;
		// autostart delay nem lehet nulla
		if (this.options.slideShow_autostart_delay<1)
			this.options.slideShow_autostart_delay = this.options.slideShow_interval;

		// kep adatok tombje
		this.img_A = new Array();

		// aktualsi galeria (tobb galeria is lehet)
		this.act_gal_id = 0;
		// aktualis kep tomb
		this.act_img_A = new Array();
		// aktualis kep kulcsa a tombben
		this.act_img_key = 0;
		// kepek szama az aktualis galeriaban
		this.act_img_num = 0;


		// galeria elem (bent van a html-ben) es meretei
		this.galeria = $('gv_gallery');
		this.galeria_wid = this.galeria.getStyle('width').toInt();
		this.galeria_hei = this.galeria.getStyle('height').toInt();

		//
		this.preload_container = this.galeria.getElement('div.galeriaPreload');

		// kep az animaciohoz
		//this.morph_img = $('gv_gallery_morph_img');

		// galeria kep elem
		this.img_cnt = this.galeria.getElement('div[class*=galeriaImgCnt]');

		// thumb sor mozgathato (kilog-e oldalra)
		this.thumb_slide = false;

		// thumb sor mukodik-e
		this.thumbrow_opreation = true;


		// bezaras gomb event
		this.galeria.getElement('a.galeriaClose').addEvent('click', function(e){e.stop();this.closeGal()}.bind(this));

		// elzo gomb event
		this.galeria.getElements('a.galeriaPrev').addEvent('click', function(e){e.stop();this.turnPage('prev');this.slideShowControl('stop')}.bind(this));
		// kovetkezo gomb event
		this.galeria.getElements('a.galeriaNext').addEvent('click', function(e){e.stop();this.turnPage('next');this.slideShowControl('stop')}.bind(this));

		// nagykepre lapozas event
		this.img_cnt.addEvent('click', function(e){e.stop();this.turnPage('next');this.slideShowControl('stop')}.bind(this));

		// thumbnail terulet (tablazat, ez az erzekeny terulet a thumb sor megjeleneshez)
		this.thumb_area = this.galeria.getElement('table.galeriaThumbArea');

		// thumbnail tarto elem
		this.thumb_container = this.galeria.getElement('div[class=galeriaThumbContainer]');
		this.thumb_container_wid = this.thumb_container.getStyle('width').toInt();

		// a thumb sor tablazat cuccai
		this.thumb_table = this.thumb_container.getElement('table');
		this.thumb_table_wid = 0;
		this.thumb_table_pos = 0;
		this.thumb_table_margin = 0;
		this.thumb_table_row = this.thumb_table.getElement('tr');

		// thumb kapcsolo gomb
		this.thumbSwitcher_button = this.galeria.getElement('div.galeriaThumbSwitcher').getElement('a');

		// thumb terulet beallitasai, vezerles megadasa
		if (this.options.thumb_control=='off')
		{
			this.thumbSwitcher_button.setStyle('visibility', 'hidden');
			this.thumbRowControl('off');
		}
		else
		{
			// thumb sort automatikusra allitjuk (mouseoverre megjelenik)
			this.thumbRowControl('auto');
		
			// thumb lapozo gombok bind
			this.galeria.getElement('a.galeriaThumbPrev').addEvent('click', function(e){e.stop();this.thumbRowPager('prev')}.bind(this));
			this.galeria.getElement('a.galeriaThumbNext').addEvent('click', function(e){e.stop();this.thumbRowPager('next')}.bind(this));

			// vezerles, ha user (ilyenkor alapbol automatikus marad)
			if (this.options.thumb_control=='user')
			{
				this.thumbSwitcher_button.set('class','auto');
				this.thumbSwitcher_button.addEvent('click', function(e){e.stop();this.thumbRowControl('switch')}.bind(this));
			}
			// egyebkent a gomb sem kell (es auto lesz)
			else
				this.thumbSwitcher_button.setStyle('visibility', 'hidden');
		}

		// slideshow gomb es event
		this.slideShow_button = this.galeria.getElement('div.galeriaSlideShowControl').getElement('a');
		this.slideShow_button.addEvent('click', function(e){e.stop();this.slideShowControl('start')}.bind(this));
	},
	// END init

	openPhotos: function(photos, opener){
		if ((photos.length == 0) || (photos == 'null')) return;
		this.initGal(photos);
		// aktualis galeria, aktulais kep tomb, kepek szama az aktualis galeriaban
		this.act_gal_id = 1;
		this.act_img_A = this.img_A[1];
		this.act_img_num = this.act_img_A.length;
		// aktualis kep kulcs 0
		this.act_img_key = 0;
		// megkeressuk az openert a tombben
		this.act_img_A.each(function(img_){
				if (img_['id']=='p'+opener) this.act_img_key = img_['ser'];
		}.bind(this));

		//
		this.openGal();
		// END nyitas eventek	
	},
	initGal: function(photos){
			// galeria id: a div id Gal_ + az id
			var gal_id = 1;

			// galeriankent lesz egy tomb
			this.img_A[gal_id] = new Array();
			//
			this.img_A[gal_id]['thumb_table_w'] = 0;

			// kepadatok (a class=GalleryPicData divben)
			var i = 0;
			$each(JSON.decode(photos), function(photo){
				// minden kephez egy subtomb
				this.img_A[gal_id][i] = new Array();	

				// kiskep
				this.img_A[gal_id][i]['small'] = this.options.photobase+photo.split('|')[1];
				// nagykep
				this.img_A[gal_id][i]['big'] = this.options.photobase+photo.split('|')[2];
				// kep sorszam (tomb kulcs)
				this.img_A[gal_id][i]['ser'] = i;

				// nagy kepek elotoltese
				var pi_src = this.img_A[gal_id][i]['big']+this.options.pic_big_suffix;
				var pi = new Element('img', {'src':pi_src}).inject(this.preload_container);

				// tobbi adat az id propertyben
				//var spl = img.get('id').split('.');
				// 0:pic_id
				this.img_A[gal_id][i]['id'] = 'p'+photo.split('|')[0];
				// 1:thumb szelesseg
				this.img_A[gal_id][i]['s1_w'] = 70;
				// 2:thumb magassag
				this.img_A[gal_id][i]['s1_h'] = 84;
				// 3:kozepes kep szelesseg
				this.img_A[gal_id][i]['s2_w'] = 720;
				// 4:kozepes kep magassag
				this.img_A[gal_id][i]['s2_h'] = 540;
				// 5:nagy kep szelesseg
				this.img_A[gal_id][i]['s3_w'] = 250;
				// 5:nagy kep magassag
				this.img_A[gal_id][i]['s3_h'] = 350;

				// thumb sor szelessege
				this.img_A[gal_id]['thumb_table_w']+= this.img_A[gal_id][i]['s1_w'] + this.options.thumbCell_correction;
				i++;
			}.bind(this));
			// END kepadatok
	},
	// galeria kinyitas
	openGal: function()
	{
		// thumb tablazat kitolt
		this.thumb_table_row.empty();
		var i = 0;
		this.act_img_A.each
		(
		function (img_data)
		{
			var cell = new Element('td', {'class':'thumbCell'}).inject(this.thumb_table_row);
			var src = img_data['small']+this.options.pic_small_suffix;
			var img = new Element('img', {'src':src}).inject(cell);

			//
			img.addEvent('click', function(e)
			{
				e.stop()
				this.slideShowControl('stop');
				this.updateGal(img_data['ser'], 0);
			}.bind(this))

			i++;
		}.bind(this)
		)

		// thumb sor poziciot es margint nullazzuk
		this.thumb_table_pos = 0;
		this.thumb_table_margin = 0;
		this.thumb_table.setStyle('marginLeft', '0px');

		// ha a thumb sor kilog: beallitjuk, hogy mozgathato
		if (this.img_A[this.act_gal_id]['thumb_table_w']>this.thumb_container_wid)
		{
			this.thumb_slide = true;
		}
		// ha nem, akkor nem
		else
			this.thumb_slide = false;

		// tartalom beallitas
		this.updateGal(this.act_img_key, 1);

		// galeria y pozicio
		this.galeria_y = window.getScroll().y + (window.getSize().y/2-this.galeria_hei/2) + this.options.yshift;
		if (this.galeria_y < this.options.yshift) this.galeria_y = this.options.yshift;
		this.galeria.setStyle('top', this.galeria_y);

		// galeria x pozicio
		if (this.options.xpos_ref)
			this.galeria_x = ($(this.options.xpos_ref).getSize().x/2) - ((this.galeria_wid+2)/2) + $(this.options.xpos_ref).getPosition().x;
		else
			this.galeria_x = window.getScroll().x + (window.getSize().x/2-this.galeria_wid/2);
		this.galeria.setStyle('left', this.galeria_x);

		this.galeria.setStyle('display','block');
		// ha autostart van, akkor kesleltetett elinditas is kell
		if (this.options.slideShow_autostart)
		{
			(
			function()
			{
				this.slideShowControl('start');
			}.bind(this)
			).delay(this.options.slideShow_autostart_delay);
		}
		else
			this.slideShowControl('stop');

		// oldal cover
		if (this.options.use_cover)
		{
			// elem
			this.cover = new Element('div', {'id':'Galeria_cover'});
			// stilus
			this.cover.set(
				{'styles':{
					'position': 'absolute',
					'top': '0px',
					'left': '0px',
					'width': window.getScrollSize().x,
					'height': window.getScrollSize().y,
					'opacity': this.options.cover_opactity,
					'background-color':this.options.cover_bgcolor,
					'z-index': 9
				}}
			);
			// kirakjuk + kattintasra bezaras
			(
			function()
			{
				this.cover.inject($(document.body));
				$('Galeria_cover').addEvent('click', function(e){
                    
                    e.stop();
                    this.closeGal();
                
                
                }.bind(this));
                
			}.bind(this)
			).delay(350);
		}

	},
	// END galeria kinyitas



	// galeria tartalom beallitas
	updateGal: function(key, isfirst)
	{
		if (this.act_img_A[key])
		{
			// nagy kep forrasa
			var img_src = this.act_img_A[key]['big']+this.options.pic_big_suffix;

			// ez az aktualis
			this.act_img_key = key;

			// ha az elso, akkor csak siman beteszi
			if (isfirst==1)
				this.img_cnt.set('html', '<img src="'+img_src+'" alt="">');
			// egyebkent fade effekt
			else
			{
				this.img_cnt.fade('hide');//setStyle('opacity', 0);
				this.img_cnt.empty();
				(
				function()
				{
					this.img_cnt.set('html', '<img src="'+img_src+'" alt="">');
					this.img_cnt.fade('in');
				}.bind(this)
				).delay(80);
			}


			// ha nem korbejaros: elozo/kovetkezo kep nyilak: kell/nemkell
			if (this.options.repeatPager==false)
			{
				var prevDisp = (this.act_img_A[key-1]) ? 'visible' : 'hidden';
				this.galeria.getElements('a.galeriaPrev').setStyle('visibility',prevDisp);
				var nextDisp = (this.act_img_A[key+1]) ? 'visible' : 'hidden';
				this.galeria.getElements('a.galeriaNext').setStyle('visibility',nextDisp);
			}

			// kep/oldal beallitas
			this.galeria.getElements('div.galeriaPage').set('text', (key+1)+'/'+this.act_img_num);
		}
	},
	// END galeria tartalom beallitas



	// galeria nagy kep lapozas
	turnPage: function(direction)
	{
		// elozo/kovetkezo kulcs
		var nextKey = this.act_img_key+1;
		var prevKey = this.act_img_key-1;

		// ha repeat van es kilog a sorszam, akkor korbejaratjuk
		if (this.options.repeatPager)
		{
			if (nextKey>=this.act_img_num)
				nextKey = 0;
			if (prevKey<0)
				prevKey = this.act_img_num-1;
		}

		// lapoz
		if (direction=='prev')
			this.updateGal(prevKey, 0);
		else
			this.updateGal(nextKey, 0);
	},
	// END nagykep lapozas



	// slideshow vezerles
	slideShowControl: function(control)
	{
		// elinditas
		if(control=='start')
		{
			// ha van futo slideshow, azt lallijuk
			if (this.slideShowId)
				$clear(this.slideShowId);

			// eloszor gyorsan lapozunk egyet
			this.turnPage('next');

			// gomb atallitas
			this.slideShow_button.removeEvents('click');
			this.slideShow_button.addEvent('click', function(e){e.stop();this.slideShowControl('stop')}.bind(this));
			this.slideShow_button.set('class', 'play');

			//
			var slideShow = function()
			{
				this.turnPage('next');
			};
			this.slideShowId = slideShow.periodical(this.options.slideShow_interval+100, this);
		}

		// leallitas
		if (control=='stop')
		{
			if (this.slideShowId)
				$clear(this.slideShowId);

			// gomb atallitas
			this.slideShow_button.removeEvents('click');
			this.slideShow_button.addEvent('click', function(e){e.stop();this.slideShowControl('start')}.bind(this));
			this.slideShow_button.set('class', 'stop');
		}
	},
	// END slideshow vezerles



	// thumb sor mukodes allitgatas
	thumbRowControl: function(control)
	{
		if (control=='on' || control=='auto')
			var c = control;
		if (control=='switch')
			var c = (this.thumbrow_opreation=='auto') ? 'on' : 'auto';

		// autora allitas
		if (c=='auto')
		{
			// allapot: mukodik
			this.thumbrow_opreation = 'auto';
			// terulet aktiv
			this.thumb_area.addEvents({
				'mouseenter': function()
				{
					this.thumb_area.getElement('div.galeriaThumbAreaBg').setStyle('visibility', 'visible');
					this.thumb_area.getElement('div.galeriaThumbAreaContent').setStyle('visibility', 'visible');
					if (this.thumb_slide)
					{
						this.galeria.getElement('a.galeriaThumbPrev').setStyle('visibility', 'visible');
						this.galeria.getElement('a.galeriaThumbNext').setStyle('visibility', 'visible');
					}
				}.bind(this),
				'mouseleave': function()
				{
					this.thumb_area.getElement('div.galeriaThumbAreaBg').setStyle('visibility', 'hidden');
					this.thumb_area.getElement('div.galeriaThumbAreaContent').setStyle('visibility', 'hidden');
					if (this.thumb_slide)
					{
						this.galeria.getElement('a.galeriaThumbPrev').setStyle('visibility', 'hidden');
						this.galeria.getElement('a.galeriaThumbNext').setStyle('visibility', 'hidden');
					}
				}.bind(this)
			});
			// vezerlo gomb valtas (ha user)
			if (this.options.thumb_control=='user')
				this.thumbSwitcher_button.set('class','auto');
			// eltuntetjuk
			this.thumb_area.getElement('div.galeriaThumbAreaBg').setStyle('visibility', 'hidden');
			this.thumb_area.getElement('div.galeriaThumbAreaContent').setStyle('visibility', 'hidden');
			if (this.thumb_slide)
			{
				this.galeria.getElement('a.galeriaThumbPrev').setStyle('visibility', 'hidden');
				this.galeria.getElement('a.galeriaThumbNext').setStyle('visibility', 'hidden');
			}
		}

		// allando bekapcsolas
		if (c=='on')
		{
			// allapot: folyamatosan latszik
			this.thumbrow_opreation = 'on';
			// terulet nem aktiv
			this.thumb_area.removeEvents('mouseenter');
			this.thumb_area.removeEvents('mouseleave');
			// vezerlo gomb valtas (ha user)
			if (this.options.thumb_control=='user')
				this.thumbSwitcher_button.set('class', 'on');
			//
			this.thumb_area.getElement('div.galeriaThumbAreaBg').setStyle('visibility', 'visible');
			this.thumb_area.getElement('div.galeriaThumbAreaContent').setStyle('visibility', 'visible');
			if (this.thumb_slide)
			{
				this.galeria.getElement('a.galeriaThumbPrev').setStyle('visibility', 'visible');
				this.galeria.getElement('a.galeriaThumbNext').setStyle('visibility', 'visible');
			}
		}

		// kikapcsolas
		if (control=='off')
		{
			// allapot: nem mukodik
			this.thumbrow_opreation = 'off';
			// eltuntetjuk
			this.thumb_area.setStyle('display', 'none');
		}
	},



	// thumb sor lapozas
	thumbRowPager: function(direction)
	{
		if ( direction=='next')
		{
			// ez a thumb sor szelessege minusz az eltolas
			var pw = this.img_A[this.act_gal_id]['thumb_table_w'] + this.thumb_table_margin;
			if (pw>this.thumb_container_wid)
			{
				// eltolas kiszamitasa (a this.thumb_table_pos mutatja, hogy hanyadik kep van a szelen)
				var pixelz = this.act_img_A[this.thumb_table_pos]['s1_w'] + this.options.thumbCell_correction;

				// margint atallitjuk
				this.thumb_table_margin = this.thumb_table_margin - pixelz;

				// poziciot is be alltjuk
				this.thumb_table_pos++;

				// eltoljuk a thumb tarto tablazatot
				//this.thumb_table.set('styles',{'marginLeft':this.thumb_table_margin});
				// csusztatja
				var myFx = new Fx.Tween(this.thumb_table, {duration:200});
				myFx.start('marginLeft', this.thumb_table_margin);

			}
		}

		if (direction=='prev' && this.thumb_table_pos>0)
		{
			// eltolas kiszamitasa
			var pixelz = this.act_img_A[this.thumb_table_pos-1]['s1_w'] + this.options.thumbCell_correction;

			// margint atallitjuk
			this.thumb_table_margin = this.thumb_table_margin + pixelz;

			// poziciot is be alltjuk
			this.thumb_table_pos--;

			// eltoljuk a thumb tarto tablazatot
			//this.thumb_table.set('styles',{'marginLeft':this.thumb_table_margin});
			// csusztatja
			var myFx = new Fx.Tween(this.thumb_table, {duration:200});
			myFx.start('marginLeft', this.thumb_table_margin);
		}
	},
	// END thumb sor lapozas


	// galeria bezaras
	closeGal: function()
	{
		// slideshow stop
		this.slideShowControl('stop');

		// galeria eltunik
		this.galeria.setStyle('display','none');

		// oldal cover eltunik, ha van
		if (this.options.use_cover)
			this.cover.dispose();
	}
	// END galeria bezaras
});

