var Gallery = {
	slike: null,
	tekst: null,
	previousImage: null,
	loading: null,
    loadImage: function (img) {
        var newImage = new Element('img');
        if (img) {
            newImage.setAttribute('src', slike[img]);
			if (this.previousImage) {
				this.pimg = Number(this.previousImage + 1);
			} else {
				this.pimg = 1;
			}
			
			$$('div#numbers a').each(function(a) { a.removeClassName('selected'); });
			$(Number(img + 1) + 'a').addClassName('selected');
        } else {
            newImage.setAttribute('src', slike[0]);
			
			if (this.pimg) {
				$$('div#numbers a').each(function(a) { a.removeClassName('selected'); });
				$('1a').addClassName('selected');
			}
        }
        
        this.previousImage = img;
        $(newImage).setStyle({position: 'absolute', left: '0', top: '0', opacity: '0'});
        $('image').setStyle({position: 'relative', overflow: 'hidden'});
        $('image').insert(newImage);
        
        if (!newImage.complete) {
			this.loading = new Element('div').setStyle({position: 'absolute', left: '5px', bottom: '5px', color: '#FFF'}).update('Nalagam...');
			this.loading.addClassName('loading');
			$('image').insert(this.loading);
            this.bfx = this._onLoad.bindAsEventListener(null, this, newImage);
            Event.observe(newImage, 'load', this.bfx);
        } else {
            this._transitionImage(newImage);
        }
    },
    
    _onLoad: function (event, reference, newImage) {
        reference._transitionImage(newImage);
        Event.stopObserving(newImage, 'load', this.bfx);
    },
    
    _transitionImage: function (image) {
        $$('div.loading').each( function (el) { el.remove(); } );
        
        new Effect.Appear(image, {duration: 1.5, from: 0.0, to: 1.0});
        
        if (this.oldimage) {
            new Effect.Appear(this.oldimage, {duration: 1.5, from: 1.0, to: 0.0, afterFinish: this._removeImage});
        }
        
        this.oldimage = image;
    },
    
	_removeImage: function(object) {
		object.element.remove();
	},
	
    loadNumbers: function (num) {
		var numbers = $('numbers').select('span');
		numbers.each(function(e) {
			e.remove();
		})
		
		$('numbers').setStyle({display: 'none'});
		
		for (var i = num; i > 0; i--) {
			var span = document.createElement('span');
			span.setAttribute('id', i);
            var a = document.createElement('a');
            a.setAttribute('href', '#');
			a.setAttribute('id', i + 'a');
            a.onclick = function () { Gallery.loadImage(parseInt(Element.identify(this)) - 1); return false; }
            a.appendChild(document.createTextNode(i));
			span.appendChild(a);
            $('numbers').appendChild(span);
        }
        
        $('1a').addClassName('selected');
		new Effect.Appear($('numbers'), {duration: 1.5, from: 0.0, to: 1.0});
    },
	
	checkScroller: function () {
		if ($('scroller').style.display == 'none') {
			$('scroller').style.display == 'inline';
		}
		
		$('text').setOpacity(0);
		$('text').update(tekst[0]);
		Scroller.updateAll();
		new Effect.Appear($('text'), {duration: 1.5, from: 0.0, to: 1.0});
	},
	
	loadText: function () {
		if ($('scroller').style.display == 'none') {
			new Effect.Appear($('scroller'), {duration: 1.5, from: 0.0, to: 1.0, afterFinish: Gallery.checkScroller});
		} else {
			$('text').setOpacity(0);
			$('text').update(tekst[0]);
			Scroller.updateAll();
			new Effect.Appear($('text'), {duration: 1.5, from: 0.0, to: 1.0});
		}
	},
	
	getNewData: function (lang, tip, id) {
		slike = null;
		img = null;
		previousImage = null;
		pimg = null;
		$$('li.subLevel a.selected').each( function (el) {el.removeClassName('selected');});
		$(id + 'subLevelA').addClassName('selected');
		
		var url = 'lib/jsonslike.php';
		var rand = Math.random(9999);
		var pars = 'tip=' + tip + '&id=' + id + '&rand=' + rand;
		new Ajax.Request(url, {
				method: 'get',
				parameters: pars,
				onSuccess: function(transport, json) {
					this.slike = json;
					Gallery.loadImage();
					Gallery.loadNumbers(slike.size());
				}
			}
		);
		
		var url2 = 'lib/jsonteksti.php';
		var rand2 = Math.random(9999);
		var pars2 = 'lang=' + lang + '&tip=' + tip + '&id=' + id + '&rand=' + rand2;
		new Ajax.Request(url2, {
				method: 'get',
				parameters: pars2,
				onSuccess: function(transport, json) {
					this.tekst = json;
					Gallery.loadText();
				}
			}
		);
	}
}
