// JavaScript Document
// Observer for initialising galleries
document.observe("dom:loaded",function() {
	
	try {
    	if(galleryArray0) {
			var imageGallery = new Gallery(0,'0',galleryArray0);
		}
	} catch(e) {
      variablename=[];
	}
});

var Gallery = Class.create({
	initialize: function(id, defaultImage,json) {
		this.currentImage;
		this.currentImage = 0;
		this.currentGallery = json.galleryImages[json.galleryDefaults.usedGalleryName];
		this.changeInterval = json.galleryDefaults.changeInterval;
		
		$$('.gallery-navigation').each(this.setNavigation.bind(this));

		this.previousButton = this.previousImage.bindAsEventListener(this);
		this.nextButton = this.nextImage.bindAsEventListener(this);	
		this.animating = false;
		
		this.restartObservers();
		
		setTimeout(this.slideShow(this.changeInterval),this.changeInterval);
		
	},
	
	changeGalleryType: function(event,element) {
		this.currentGallery = galleryName;
		this.changeImage();
	},
	
	changeImage: function(imgNum) {
		if(typeof imgNum != "object") {
			this.currentImage = imgNum;
		} else {
			this.currentImage += 1;
		}
		
		if(this.currentImage != this.currentGallery.length) {
			this.animating = true;
			$('gallery-next-button').addClassName('disabled');
			$('gallery-previous-button').addClassName('disabled');
			
			if(this.currentImage == (this.currentGallery.length+1)) { this.currentImage = 0; }
			$$('.gallery-navigation').each(this.setNavigation.bind(this));
			imageObject = new Image();
			imageObject.src = this.currentGallery[this.currentImage].src;
			imageObject.name = this.currentGallery[this.currentImage].url;
			//imageObject.onload = function(e) {
				$('imageOuterContainer2').setStyle({backgroundImage:"url("+imageObject.src+")"});
				$('imageOuterContainer2').children[0].children[0].href = imageObject.name;
				$('imageOuterContainer2').appear({duration:1.5});
				setTimeout("$('imageOuterContainer').setStyle({backgroundImage:\"url("+imageObject.src+")\"})",2000);
				setTimeout("$('imageOuterContainer').children[0].children[0].href = '"+imageObject.name+"';",2000);
				setTimeout("$('imageOuterContainer2').hide();",2100);		
				
				setTimeout("$('gallery-next-button').removeClassName('disabled');",2100);	
				setTimeout("$('gallery-previous-button').removeClassName('disabled');",2100);	
			//}
			
		}
	},
	
	test: function() {
		console.log("asds");
	},
	
	setNavigation: function(el) {
		if(el.id.replace("gallery-navigation-","") == (this.currentImage+1)) {			
			el.addClassName('selected');
		} else {
			el.removeClassName('selected');
		}
	},
	
	nextImage: function() {
		if(!$('gallery-next-button').hasClassName('disabled')) {
			var nextImage = (this.currentImage+1);
			if(nextImage > (this.currentGallery.length-1)) {
				//Show first image
				nextImage = 0;
			} 
			
			if (pe) { 
				pe.stop();
			}
			this.changeImage(nextImage);
			pe = new PeriodicalExecuter(this.changeImage.bind(this),this.changeInterval);
		} 
	},
		
	previousImage: function() {
		if(!$('gallery-previous-button').hasClassName('disabled')) {
			var previousImage = (this.currentImage-1);
			if(previousImage < 0) {
				//Show first image
				previousImage = (this.currentGallery.length-1);
			} 
			
			if (pe) { 
				pe.stop();
			}
			this.changeImage(previousImage);
			pe = new PeriodicalExecuter(this.changeImage.bind(this),this.changeInterval);
		}
	},
	
	
	slideShow: function(changeInterval) {		
		pe = new PeriodicalExecuter(this.changeImage.bind(this),changeInterval);
	},
	
	restartObservers: function() {
		Event.observe($('gallery-previous-button'),'mousedown', this.previousButton);
		Event.observe($('gallery-next-button'),'mousedown', this.nextButton);	
	}
});

