/*
Concession JS pour Moto85
Copyright(c) 2009, Skalpel.

Author : Thanh Tri
thanh-tri@skalpel.fr

Note : 
	-
ToDo :
	- 
*/
window.addEvent('domready', function() {
	new SKjs.Annonce();
});

SKjs.Annonce = new Class ({
	Implements: [Events, Options],
	options: {
		lbLink:				'hrefLightbox',
		loader:				'imgLoader',
		zoomImg:			'grandePhoto',
		innerWrapper:		'#photos .vignettes ul',
		scrollDown:			'#photos .vignettes .bottom a',
		scrollUp:			'#photos .vignettes .top a',
		scrollDiv:			'liste-vignettes',
        scrollPos:    		0
	},
	
	/*
	Property :
		Initialisation de la Class
	*/
	initialize: function(options) {
		this.setOptions(options);
		
		this.dom 			= {};
		this.scrollSize 	= {};
		this.fx 			= {};
		
		this.initDom();
		this.initEvents();
		this.initFx();
	},
	
	initDom: function() {
		this.dom.zoomImg 		= $(this.options.zoomImg);
		this.dom.innerWrapper 	= $$(this.options.innerWrapper)[0];
		this.dom.lbLink 		= $(this.options.lbLink);
		this.dom.loader 		= $(this.options.loader);
		this.dom.listImg 		= this.dom.innerWrapper.getElements('li a');

		this.dom.scrollDiv 		= $(this.options.scrollDiv);
		this.dom.scrollUp 		= $$(this.options.scrollUp)[0];
		this.dom.scrollDown		= $$(this.options.scrollDown)[0];
		
		this.scrollSize.div		= this.dom.scrollDiv.getScrollSize();
		this.scrollSize.max		= this.dom.scrollDiv.getSize();
	},
	
	initEvents: function() {
		this.dom.listImg.each(function (e) {
			e.addEvent('click', this.showImg.bindWithEvent(this, [e.get('href')]));
		}, this);
		
		this.dom.scrollUp.addEvent('click', function(e) {
			e.stop();
		});
		this.dom.scrollDown.addEvent('click', function(e) {
			e.stop();
		});
		
		this.dom.scrollUp.addEvent('mouseover', this.scrollUp.bind(this));
		this.dom.scrollUp.addEvent('mouseout', this.scrollStop.bind(this));
		
		this.dom.scrollDown.addEvent('mouseover', this.scrollDown.bind(this));
		this.dom.scrollDown.addEvent('mouseout', this.scrollStop.bind(this));
	},
	
	initFx: function() {
		this.fx.scroll = new Fx.Scroll(this.dom.scrollDiv, {
			wait: false,
			duration: 1000,
			transition: Fx.Transitions.Quad.easyInOut
		});
		
		this.fx.zoom = new Fx.Tween(this.dom.zoomImg, {
			duration: 300
		});
		var parent = this;
		this.dom.zoomImg.addEvent('load', function(e) {
			parent.hideLoader();
			parent.fx.zoom.start('opacity', '1');
		}, this);
	},
	
	showImg: function(e, src) {
		if(e) var e = new Event(e).stop();
		
		var parent = this;
		this.fx.zoom.start('opacity', '0').chain(function () {
			parent.showLoader();
			parent.dom.zoomImg.set('src', src);
			parent.dom.lbLink.set('href', src);
		});
	},
	
	scrollUp: function(e) {
		this.fx.scroll.toTop();
	},
	
	scrollDown: function(e) {
		this.fx.scroll.toBottom();
	},
	
	scrollStop: function(e) {
		this.fx.scroll.cancel();
	},
	
	showLoader: function() {
		this.dom.loader.setStyle('display', 'block');
	},
	
	hideLoader: function() {
		this.dom.loader.setStyle('display', 'none');
	}
});
