var scrollGallery = new Class({
	
	Implements: [Events, Options],
  
	options: {
		start: 0,
		area: 250,
		speed: 0.1,
		position: null,
		n_photos : 0,
		width_photo: 640,
		margin_photo: 15,
		width_photo_thumb: 79,
		margin_photo_thumb: 5,
		thumbarea: 'flicker_gallery_photos_scroll_thumb_area',
		imagearea: 'flicker_gallery_photos_scroll_area',
		imageareaContent: 'flicker_gallery_photos_scroll_area_content',
		thumbareaContent: 'flicker_gallery_photos_scroll_thumb_area_content',
		scrollimageareaFxObj: null,
		imageObj:  new Array(),
		scrollthumbareaFx: null
	},
  
	initialize: function(element,options){
		this.setOptions(options);		
		Scroller.implement(new Events, new Options);
		this.tumbObjs=null;
		this.imgObjs=null;
		// FX
		this.options.scrollimageareaFxObj = new Fx.Scroll(this.options.imagearea, {
			offset: {
				x: 0,
				y: 0
			} 
		});
		// Init Thumb-Images
		if($(this.options.thumbarea)){
			this.options.scrollthumbareaFx = new Scroller($(this.options.thumbarea), {area: this.options.area, velocity: this.options.speed, direction: "x"});
			$(this.options.thumbarea).setStyle('overflow-x', 'hidden')
			// Thumb Events
			$(this.options.thumbarea).addEvent('mouseenter', this.options.scrollthumbareaFx.start.bind(this.options.scrollthumbareaFx));
			$(this.options.thumbarea).addEvent('mouseleave', this.options.scrollthumbareaFx.stop.bind(this.options.scrollthumbareaFx));
			// Init tumbObjs
			this.tumbObjs = $(this.options.thumbarea).getElements('img');
			this.options.n_photos=this.tumbObjs.length;
			$(this.options.imageareaContent).setStyle('width',this.options.n_photos*(this.options.width_photo + this.options.margin_photo));
			$(this.options.thumbareaContent).setStyle('width',this.options.n_photos*(this.options.width_photo_thumb + this.options.margin_photo_thumb));
			Array.each(this.tumbObjs, function(imgObjekt, index){
				this.options.imageObj[index]=imgObjekt;
				imgObjekt.addEvent('click', function(index){
					this.options.position=index;
					$('flicker_gallery_photos_counter').set('html',(index+1)+'/'+this.options.n_photos);
					this.options.scrollimageareaFxObj.toElement(this.imgObjs[index]);
				}.bind(this).pass(index));
				if(index==this.options.start){
					// Delay for safari
					imgObjekt.fireEvent('click',this,10);
				}
			}.bind(this));
		}else{
			alert('Missing thumbarea');
		}
		// Init Images
		if($(this.options.imagearea)){
			$(this.options.imagearea).setStyle('overflow', 'hidden');
			$(this.options.imagearea).setStyle('overflow-x', 'hidden');
			// Init imgObjs
			this.imgObjs=$(this.options.imagearea).getElements('img');
		}else{
			alert('Missing imagearea');
		}
		// Check
		if(this.imgObjs.length!=this.tumbObjs.length){
			alert("Error: The number of images do not match!");
		}
		$('flicker_gallery_photos_button_left').addEvent('click', function(event){ 
			if (this.options.position>=1) {
				this.options.imageObj[this.options.position-1].fireEvent('click');
			} else {
				this.options.imageObj[this.options.n_photos-1].fireEvent('click');
			}
		 }.bind(this));
		 $('flicker_gallery_photos_button_right').addEvent('click', function(event){ 
			 if (this.options.position<(this.options.n_photos-1)) {
				this.options.imageObj[this.options.position+1].fireEvent('click');
			 } else {
				this.options.imageObj[0].fireEvent('click');
			 }
		 }.bind(this));
	}
	
});
		

// Manager
var FlickrManager = {
	
	api_key: "44df4b12a47ed13c312510fe2d1effe1",
	box_photo_number: 9,
	box_photo_per_line: 3,
	box_photoset_id: '72157627639739377',
	host: window.location.host,
	rand: Math.floor(10000 * Math.random()),
	
	init: function(){
		
		// Box
		if($$('.pictures_gallery_box_content') && $$('.pictures_gallery_box_content').length > 0){
			var link_php_flickr_box ='http://'+FlickrManager.host+'/fileadmin/php_contents/flickr/flickr_cntr.php?type=flickr_box&photoset_id='+FlickrManager.box_photoset_id+'&photo_number='+FlickrManager.box_photo_number+'&photo_per_line='+FlickrManager.box_photo_per_line+'&rand='+FlickrManager.rand;
			var req_flickr = new Request({   
				url: link_php_flickr_box,     
				method: 'get',    
				onComplete: function(response) { 
					$$('.pictures_gallery_box_content').each(function(box){
						$(box).set('html',response);	
						Mediabox.scanPage();	
					});
				}
			}).send();
		}
		// Scroll Gallery
		if($('flicker_gallery_album_set')){
			$$('#flicker_gallery_album_set .flicker_gallery_album_set_item').each(function(item,index){
				$(item).addEvent('click',FlickrManager.loadPhotosetListener);
			});
			var flicker_gallery_album_set_items = $$('#flicker_gallery_album_set .flicker_gallery_album_set_item');
			if(flicker_gallery_album_set_items != null && flicker_gallery_album_set_items.length > 0){
				var flicker_gallery_album_set_item = flicker_gallery_album_set_items[0];
				FlickrManager.loadPhotoset(flicker_gallery_album_set_item);
			}
		}
	},
	
	loadPhotosetListener: function(event){
		FlickrManager.loadPhotoset(this);
		event.preventDefault();
	},
	
	loadPhotoset: function(element){
		if(!element){
			return;
		}
		var photoset_item_ids = $(element).getChildren('.flicker_gallery_album_set_item_id');
		if(photoset_item_ids.length > 0){
			var photoset_item_id = photoset_item_ids[0];
			var photoset_id = $(photoset_item_id).get('value');
			if(photoset_id != null && photoset_id != ''){
				if ($('flicker_gallery_photos_scroll')) {
					$('flicker_gallery_photos_scroll').empty();
					var link_php_flickr_gallery = 'http://'+FlickrManager.host+'/fileadmin/php_contents/flickr/flickr_cntr.php?type=flickr_gallery&photoset_id='+photoset_id+'&rand='+FlickrManager.rand;
					var req_flickr = new Request({   
						url: link_php_flickr_gallery,     
						method: 'get',    
						onComplete: function(response){  		
							$('flicker_gallery_photos_scroll').set('html',response);
							$('flicker_gallery_photos_button_left').removeEvents('click');
							$$('#flicker_gallery_album_set .flicker_gallery_album_set_item').each(function(item,index){
								$(item).removeClass("selected");
							});
							$(element).addClass("selected");
							var scrollGalleryObj = new scrollGallery();
							Mediabox.scanPage();
						}
					}).send();	
				}
			}
		}
	}
	
};


// Mootools DOM ready
window.addEvent('domready', function(){
		FlickrManager.init();
	}
);

