window.addEvent('domready',function(){ new dwGallery(); });

var dw_gallery, dwGallery = new Class({
									  
	initialize	:	function(){
		
		dw_gallery = this;
		dw_gallery.set_css_styles();
		
		if($chk($$('.dw_gallery'))){
			$each($$('.dw_gallery'),function(item){
											 
				var galleryUid = item.getAttribute('id').replace(/dw_gallery_/g,'');
				dw_gallery.uid = galleryUid;
				if(item.hasClass('random') == true)
					dw_gallery.random_view = 1;
				
				new Request.JSON({url: window.location.href, onSuccess: function(response){

					dw_gallery.pictures = response;
					dw_gallery.position = 0;
										
					dw_gallery.add_control_menu();
					if(dw_gallery.random_view == 1)
						dw_gallery.init_gallery.delay(6000);
					else
						$$('.dw_gallery img').addEvent('click',function(item){
							this.getParent('dt').getParent('dl').getPrevious('div').getChildren('.next')[0].fireEvent('click');			  
						});
						$$('.dw_gallery img').setStyle('cursor','pointer');
					
				}}).post({'eID' : 'dw_gallery', 'galleryUid' : galleryUid, 'random' : dw_gallery.random_view});
				
			});
		}
		
	},
	
	init_gallery :	function(direction){
		
		if(direction == '' && dw_gallery.stopped == true){
			
		}
		else{
		if(direction == 'back'){
			dw_gallery.position--;			
		}
		else{
			dw_gallery.position++;
		}
		if( ! $chk(dw_gallery.pictures[dw_gallery.position])) dw_gallery.position = 0;
		
		var dl = new Element('dl',{
			'html'	:	'<dt></dt><dd></dd>'
		}).inject($('dw_gallery_'+dw_gallery.uid),'bottom');
		dw_gallery.dl = dl;
		
		if(dw_gallery.random_view == 1)
			dl.getChildren('dd')[0].dispose();
		
		$$('#dw_gallery_'+dw_gallery.uid+' .pos')[0].set({'html' : (dw_gallery.position+1)+'/'+dw_gallery.pictures.length});

		var act_img = new Asset.image(dw_gallery.pictures[dw_gallery.position].image, {title: dw_gallery.pictures[dw_gallery.position].title, onload: function(){
			this.inject(dw_gallery.dl.getChildren('dt')[0]);
			
			if(dw_gallery.random_view != 1)
				dw_gallery.dl.getChildren('dd')[0].set({'html':dw_gallery.pictures[dw_gallery.position].title});
				
			dw_gallery.dl.getChildren('dt')[0].setStyle('margin-bottom',0);
			if(dw_gallery.random_view == 1){
				dw_gallery.current_link = dw_gallery.pictures[dw_gallery.position].link;
				//alert(dw_gallery.current_link);
				this.addEvent('click',function(){
				 	document.location.href=dw_gallery.current_link;
				});
			}
			else{
				this.addEvent('click',function(item){
					this.getParent('dt').getParent('dl').getPrevious('div').getChildren('.next')[0].fireEvent('click');			  
				});
			}
		  	this.setStyle('cursor','pointer');

			
			var dl_height = dl.getChildren('dt')[0].getSize().y + 50;
			dw_gallery.dl.setStyles({
				'opacity'	:	0,
				'position'	:	'absolute',
				'top'		:	20,
				'left'		:	0,
				'height'	:	dl_height
			});
			
			
			// fade in & remove the previous image
			dw_gallery.dl.set('morph',{
				'duration'	:	500,
				onComplete	:	function(){
					$$('#dw_gallery_'+dw_gallery.uid+' dl')[0].dispose();
					if( ! dw_gallery.stopped) 
						dw_gallery.init_gallery.delay(4000);
				}
			}).morph({'opacity':1});
		}});
		}
	},
	
	set_css_styles : function(){
		
		$each($$('.dw_gallery'),function(item){
			item.setStyles({'position':'relative','height': item.getChildren('dl')[0].getSize().y});
		});
		$$('.dw_gallery dl').setStyles({'position':'absolute','top':20,'left':0});
		
	},
	
	add_control_menu : function(){
		
		var control_div = new Element('div',{
			'class'	:	'controls'
		}).inject($('dw_gallery_'+dw_gallery.uid),'top');
		var prev_link = new Element('a',{
			'class' :	'previous',
			'html'	:	dw_gallery.pictures[0].label_previous
		}).inject(control_div);
		var next_link = new Element('a',{
			'class' :	'next',
			'html'	:	dw_gallery.pictures[0].label_next
		}).inject(control_div);
		dw_gallery.length = dw_gallery.pictures.length;
		new Element('span',{
			'class'	:	'pos',
			'html'	:	'1/'+dw_gallery.length
		}).inject(control_div);
		
		next_link.addEvent('click',function(){
			dw_gallery.stopped = true;
			dw_gallery.init_gallery('for');
		});
		prev_link.addEvent('click',function(){
			dw_gallery.stopped = true;
			dw_gallery.init_gallery('back');
		});
	}
	
});
