YAHOO.namespace('Cazaux.Actualites');
YAHOO.namespace('Cazaux.Actualites.helpers');
YAHOO.Cazaux.Actualites.helpers.setControlsInfo = function(o, current) {
	var _l = Dom.getChildren(o.rootNode).length
	Dom.get('index').innerHTML = (parseInt(o.getIndex(current))%_l+1)+' / '+_l;
}

YAHOO.Cazaux.Actualites.init = function(data) {
	Event.on(['backward', 'forward'], 'mouseover', function(){
		this.src = this.src.replace('_b', '_g');
	});
	Event.on(['backward', 'forward'], 'mouseout', function(){
		this.src = this.src.replace('_g', '_b');
	});
	var config = {
		rootNode: 'list_c',
		render: YAHOO.Cazaux.Actualites.render,
		appear: YAHOO.Cazaux.Actualites.appearForward,
		fade: YAHOO.Cazaux.Actualites.FadeForward,
		appearBack: YAHOO.Cazaux.Actualites.appearBackward,
		fadeBack: YAHOO.Cazaux.Actualites.FadeBackward
	};
	var sShow = new SlideShow(data, {}, config);
	sShow.setControls();
	sShow.activateControls();
	sShow.render();
}

//Rendering Function
YAHOO.Cazaux.Actualites.render = function() {
	for (var i in this._data) {
		if(this._data.length==1)
			Dom.setStyle('controls', 'visibility', 'hidden')
		var eltData = this._data[i]
		var r = document.createElement('div');	// Root Node
		Dom.addClass(r, 'single_news');
		r.id = 'news_'+i;
		var title = document.createElement('h1');
		title.appendChild(document.createTextNode(eltData.title))
		r.appendChild(title);
		delete title;
		var n = document.createElement('div');	// left/right container
		Dom.addClass(n, 'yui-g');
		Dom.setStyle(n, 'width', '840px');
		Dom.setStyle(n, 'position', 'relative');
		var left = document.createElement('div')//left
		Dom.addClass(left, 'yui-u');
		Dom.addClass(left, 'first');
		Dom.addClass(left, 'left_c');
		var _t = document.createElement('div')
		Dom.addClass(_t, 'text');
		_t.innerHTML = eltData.text;
		left.appendChild(_t)
		var bottom = document.createElement('div');
		Dom.addClass(bottom, 'bottom');
		var pics = document.createElement('div')
		pics.id = 'pics_'+i
		Dom.addClass(pics, 'yui-g');
		for (var j in eltData.pics) {
			var _pic = document.createElement('div');
			Dom.addClass(_pic, 'pic');
			Dom.addClass(_pic, 'yui-u');
			var _img = new Image();
			_img.src = eltData.pics[j];
			_pic.appendChild(_img)
			pics.appendChild(_pic)
		};
		bottom.appendChild(pics);
		left.appendChild(bottom);
		n.appendChild(left)
		
		var right = document.createElement('div')//right
		Dom.addClass(right, 'yui-u');
		Dom.addClass(right, 'right_c');
		right.id = 'right_'+i
		var img = new Image();
		img.src = eltData.pics[0];
		right.appendChild(img);
		n.appendChild(right);
		r.appendChild(n);
		
		
		//Append node to DOM
		Dom.setStyle(r, 'display', 'none');
		Dom.get(this.rootNode).appendChild(r);
		Event.on(Dom.getElementsBy(function(){ return true; }, 'img', pics), 'click', YAHOO.Cazaux.Actualites.ShowPic, [i, pics]);

	};	
	this._forward(true);
};

YAHOO.Cazaux.Actualites.ShowPic = function(evt, opts){
	var i = opts[0];
	var pics = opts[1];
	var children = Dom.getChildren('right_'+i);
	if(children.length)
		var old = children[0];
		var img = new Image();
		if(Dom.hasClass(this, 'selected_pic'))
			return;
		var selected_pic = Dom.getElementsBy(function(_n){ return Dom.hasClass(_n, 'selected_pic'); }, 'img', pics);
		Dom.removeClass(selected_pic, 'selected_pic');
		Dom.addClass(this, 'selected_pic');
		Dom.setStyle(old, 'position', 'absolute');
		img.src = this.src;
		Dom.get('right_'+i).appendChild(img);
		var a = new Anim(old, {opacity: {to: 0}}, 0.4, YAHOO.util.Easing.easeOut)
		a.onComplete.subscribe(function(state, evt, _old){ _old.parentNode.removeChild(_old);}, old, this)
		a.onComplete.subscribe(function(){ Event.on(this, 'click', YAHOO.Cazaux.Actualites.ShowPic, [i, pics])}, [], this);
		Event.removeListener(this, 'click', YAHOO.Cazaux.Actualites.ShowPic);
		a.animate();
}

// Forward Effects 
YAHOO.Cazaux.Actualites.appearForward = function(elt) {
	var _current_wrapper = elt;
	var current = _current_wrapper;
	if(!Dom.getPreviousSibling(current) || UA.ie)
		Dom.setStyle(current, 'position', 'absolute');
	Dom.setStyle(current, 'overflow', 'hidden');
	Dom.setStyle(_current_wrapper, 'display', '');
	var _r = Dom.getRegion(current);
	var width = _r.right - _r.left;
	Dom.setStyle(current, 'margin-left', width+'px');
	Dom.setStyle(current, 'width', '0px');
	var anim = new Anim(current, {marginLeft: {to: 0}, width: {from: 0, to: 840}}, 1, YAHOO.util.Easing.easeOut);
	anim.onStart.subscribe(function(){
		YAHOO.Cazaux.Actualites.helpers.setControlsInfo(this, current);
		this.deactivateControls();
		var _selected = Dom.getElementsByClassName('selected', null, this.rootNode)[0];
		if(_selected)
			Dom.removeClass(_selected, 'selected');
		Dom.addClass(_current_wrapper, 'selected');
		Dom.setStyle(current, 'visibility', '');
	}, {}, this);
	anim.onComplete.subscribe(function(){
		this.activateControls();
	}, null, this);
	anim.animate();
};

YAHOO.Cazaux.Actualites.FadeForward = function(elt) {
	var _current_wrapper = elt;
	var current = _current_wrapper;
	Dom.setStyle(current, 'overflow', 'hidden');
	if(UA.ie)
		Dom.setStyle(current, 'position', 'absolute');
	
	var anim = new Anim(current, {marginLeft: {from:0, to: -840}}, 1, YAHOO.util.Easing.easeOut);
	anim.onComplete.subscribe(function(){
		Dom.setStyle(current, 'display', 'none');		
		Dom.setStyle(current, 'position', '');		
	}, {}, this);
	anim.animate();
};

// Backward Effects
YAHOO.Cazaux.Actualites.FadeBackward = function(elt) {
	var _current_wrapper = elt;
	var current = _current_wrapper;
	
	if(!Dom.getPreviousSibling(current) || UA.ie)
		Dom.setStyle(current, 'position', 'absolute');
	Dom.setStyle(current, 'overflow', 'hidden');
	Dom.setStyle(_current_wrapper, 'display', '');
	
	var _r = Dom.getRegion(current);
	var width = _r.right - _r.left;
	
	Dom.setStyle(current, 'margin-left', '-840px');
	var anim = new Anim(current, {marginLeft: {to: 0}}, 1, YAHOO.util.Easing.easeOut);
	anim.onStart.subscribe(function(){
		YAHOO.Cazaux.Actualites.helpers.setControlsInfo(this, current);
		var _selected = Dom.getElementsByClassName('selected', null, this.rootNode)[0];
		if(_selected)
			Dom.removeClass(_selected, 'selected');
		Dom.addClass(_current_wrapper, 'selected');
		Dom.setStyle(current, 'visibility', '');
	}, {}, this);
	anim.animate();
};

YAHOO.Cazaux.Actualites.appearBackward = function(elt) {
	var _current_wrapper = elt;
	var current = _current_wrapper;
	Dom.setStyle(current, 'overflow', 'hidden');

	var anim = new Anim(current, {marginLeft: {to: 840}}, 1, YAHOO.util.Easing.easeOut);
	anim.onComplete.subscribe(function(){
		this.activateControls();
		Dom.setStyle(current, 'display', 'none');		
		Dom.setStyle(current, 'position', '');	
		Dom.setStyle(current, 'margin-left', '0');		
	}, {}, this);
	anim.onStart.subscribe(function(){
		this.deactivateControls();
	}, null, this);
	anim.animate();
};
