window.addEvent('domready', function(){
	
	if($('emp-scroller')) {
		
		var EmpSc = new Class({
			
			initialize: function() {
				
				this.container = $('emp-scroller');
				this.prev = $('emp-prev');
				this.next = $('emp-next');
				this.step = 250;
				this.height = this.getHeight();
				this.containerHeight = 500;
				this.top = 0;
				this.effect = new Fx.Morph(this.container);
				this.items = $$('#emp-scroller td');
				this.preview = $('sc-preview');
				this.allow_preview = true;
				
				this.setActionHandlers();
			}
		});
		
		EmpSc.implement({
			
			setActionHandlers: function() {
				
				var obj = this;
				
				this.prev.addEvent('click', function(e){
					
					new Event(e).stop();
					
					var new_top = obj.top + obj.step;
					if(new_top > 0) {
						
						new_top = 0;
					}
					
					obj.effect.start({
						top: [obj.top, new_top]
					});
					
					obj.top = new_top;
				});
				
				this.next.addEvent('click', function(e){
					
					new Event(e).stop();
					
					var new_top = obj.top - obj.step;
					var min_top = obj.containerHeight - obj.height;
					
					if(new_top < min_top) {
						
						new_top = min_top;
					}
					
					obj.effect.start({
						top: [obj.top, new_top]
					});
					
					obj.top = new_top;
				});
				
				this.items.each(function(el){
					
					el.addEvent('click', function(e) {
						
						new Event(e).stop();
						
						if(obj.allow_preview) {
							
							obj.allow_preview = false;
							
							new Fx.Morph(obj.preview, {onComplete: function(){
								
								obj.preview.getParent().addClass('loading');
								
								new Request.HTML({url: el.lang, update: obj.preview, onComplete: function(){
									
									obj.preview.getParent().removeClass('loading');
									obj.allow_preview = true;
									new Fx.Morph(obj.preview).start({
										opacity: [0, 1]
									});
								}}).get();
								
							}}).start({
								
								opacity: [1, 0]
							});
						}
					});
				});
			}, 
			
			getHeight: function() {
				
				var height = 0;
				
				$$('#emp-scroller td').each(function(el){
					
					var coord = el.getCoordinates();
					height += coord.height;
				});
				
				height += 50;
				
				return height;
			}
		});
		
		new EmpSc;
	}
});

