var actual_g = 1;
var ok_g = true;
var idtimeractu = null;
var idtimerg = null;
var idtimerpartenaire = null;
var idtimervisit = null;

function TimerBloc(typeE) {
	var tabI = getBloc(typeE);
	var curr = 0;
	var next = 0;
	
	for(var i = 0; i < tabI.length; i++)
	{
		if(tabI[i].style.display != "none")
		{
			curr = parseInt(i) + 1;
		}
	}

	next = parseInt(curr) + 1;

	if(next > (tabI.length))
	{
		next = 1;
	}
	
	if($(typeE+'_'+curr))
	{
		new Effect.Parallel([
 					new Effect.Fade($(typeE+'_'+curr), { sync: true}), 
				    new Effect.Appear($(typeE+'_'+next), { sync: true})
		]);
		switch(typeE)
		{
			case 'unpartenaire' : idtimerpartenaire = setTimeout("TimerBloc('"+typeE+"')", 4000); break;
			case 'unvisit' : idtimervisit = setTimeout("TimerBloc('"+typeE+"')", 5000); break;
			case 'uneactu' : idtimeractu = setTimeout("TimerBloc('"+typeE+"')", 6000); break;
			case 'unegalerie' : idtimerg = setTimeout("TimerBloc('"+typeE+"')", 3000); break;
		}
	}
}

function getBloc(typeE)
{
	var tabI = $$('.'+typeE);
	return tabI;
}

var myrules = {
	'.c_partenaire' : function(banniere)
	{
	  	var blocs = getBloc('unpartenaire');
		if(parseInt(blocs.length) > 1)
		{
			if(idtimerpartenaire != null)
				clearTimeout(idtimerpartenaire);
			idtimerpartenaire = setTimeout("TimerBloc('unpartenaire')",4000);
		}
	},
	
	'.c_visit' : function(visit)
	{
	  	var blocs = getBloc('unvisit');
		if(parseInt(blocs.length) > 1)
		{
			if(idtimervisit != null)
				clearTimeout(idtimervisit);
			idtimervisit = setTimeout("TimerBloc('unvisit')",5000);
		}
	},
	
	'.c_actu' : function(actu)
	{
	  	var blocs = getBloc('uneactu');
		if(parseInt(blocs.length) > 1)
		{
			if(idtimeractu != null)
				clearTimeout(idtimeractu);
			idtimeractu = setTimeout("TimerBloc('uneactu')",6000);
		}
	},
	
	'.c_galerie' : function(actu)
	{
	  	var blocs = getBloc('unegalerie');
		if(parseInt(blocs.length) > 1)
		{
			if(idtimerg!= null)
				clearTimeout(idtimerg);
			idtimerg = setTimeout("TimerBloc('unegalerie')",3000);
		}
	},
	
	'.defile_btn' : function(def) {
		def.onclick = function(){
			var nb_val = $('nb_g').value % 3 + 1;
			if(!ok_g)
				return;
			ok_g = false;
			var element = $('defile_all');
			var val = 1;
			if(def.id == 'defile_d')
			{
				val = -1;
				actual_g ++;
			}
			else
			{
				actual_g --;
			}
			if(actual_g > nb_val)
			{
				val = nb_val - 1;
				actual_g = 1;
			}
			else
			{
				if(actual_g == 0)
				{
					val = (nb_val -1) * -1;
					actual_g = nb_val;
				}
			}
			scrollHorizontal(val * 80, element);
		}
 	},
 	
 	'.mini_image' : function(mini) {
 		mini.onclick = function(){
 			var tohide = "";
 			var toshow = mini.id.replace('mini_', '');
 			var lst = $$('.image_g');
	 		for(var i = 0; i < lst.length; i++)
	 		{
	 			if(lst[i].style.display != "none")
	 			{
	 				tohide = lst[i].id;
	 				break;
	 			}
	 		}
	 		if($(tohide) && $(toshow) && toshow != tohide)
 			{
 				if(!ok_g)
					return;
				ok_g = false;
 				new Effect.Parallel([
 					new Effect.Fade($(tohide), { sync: true}), 
				    new Effect.Appear($(toshow), { sync: true})
				], {afterFinish : function() {ok_g = true;}});
 			}
 		}
 	},
 	
 	'.btn_record' : function(br)
	{
		br.onclick=function()
		{
			var elemtype = "";
			var elemid = "";
			var conteneur = "";
			var elem_sup = "";
			var callBack = "";
			var attente = "";
			var blocmsg = "";
			var tabID = br.id.split("_");
			if($('typeelement_'+tabID[1]))
				elemtype = $('typeelement_'+tabID[1]).value;
			if($('idelement_'+tabID[1]))
				elemid = $('idelement_'+tabID[1]).value;
			if($('conteneur_'+tabID[1]))
				conteneur = 'conteneur_'+tabID[1];
			if($('elemsup_'+elemtype))
				elem_sup = $('elemsup_'+elemtype).value;
			if($("callback_"+elemtype+"_record"))
				callBack = $("callback_"+elemtype+"_record").value;
			if($('attenterecord_'+tabID[1]))
				attente = 'attenterecord_'+tabID[1];
			if($('msgform_'+tabID[1]))
				blocmsg = 'msgform_'+tabID[1];
			FORM_record(elemtype,elemid,conteneur,elem_sup,callBack, attente, blocmsg);
		}
	},
		
	'.share-button' : function(bshare)
	{
		if($('a2apage_dropdown'))
		{
			$('a2apage_dropdown').style.left = "50%";
			$('a2apage_dropdown').style.top = "50%";
		}
	},
	
	'.c_defile' : function(scroller){
 		var typeelement = scroller.id.replace('c_defile_', '');
 		if($('c_'+typeelement))
		{
	 		// mozilla
			Event.observe('c_'+typeelement, 'DOMMouseScroll', wheel);
			// IE/Opera
			Event.observe('c_'+typeelement, 'mousewheel', wheel);
			
			var max_range = 10;
			if($('c_'+typeelement).offsetHeight > 0)
			{
				max_range = Math.round($('c_'+typeelement).scrollHeight / $('c_'+typeelement).offsetHeight) * 3;
			}
	 		slider = new Control.Slider('scroller_handler_'+typeelement, 'track_'+typeelement, {
				axis: 'vertical',
				range: $R(0,max_range),
				onSlide: function(v) { scrollVertical(v, $('c_'+typeelement), slider);  },
				onChange: function(v) { scrollVertical(v, $('c_'+typeelement), slider);}
			});
			
			// disable vertical scrolling if text doesn't overflow the div
			if ($('c_'+typeelement).scrollHeight <= $('c_'+typeelement).offsetHeight) {
				slider.setDisabled();
				scroller.hide();
			}
		}
 	},
 	
 	'.scroller_btn_top' : function(s_top) {
 		s_top.onclick = function() {
 			slider.setValueBy(-1);
 		}
 	},
 	
 	'.scroller_btn_bottom' : function(s_bottom) {
 		s_bottom.onclick = function() {
 			slider.setValueBy(1);
 		}
 	}
};

function scrollHorizontal(value, element) {
	new Effect.Move(element, {x: value, transition: Effect.Transitions.spring, duration:0.5, afterFinish:function(){ok_g = true;}});
}

// scroll the element vertically based on its width and the slider maximum value
function scrollVertical(value, element, slider) {
	element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
}

// mouse wheel code from http://adomas.org/javascript-mouse-wheel/
function handle(delta) {
	slider.setValueBy(-delta);
}

/** Event handler for mouse wheel event. */
function wheel(event){
	var delta = 0;
	if (!event) /* For IE. */
		event = window.event;
	if (event.wheelDelta) { /* IE/Opera. */
		delta = event.wheelDelta/120;
		/** In Opera 9, delta differs in sign as compared to IE. */
		if (window.opera)
			delta = -delta;
	} else if (event.detail) { /** Mozilla case. */
		/** In Mozilla, sign of delta is different than in IE.
		* Also, delta is multiple of 3.
		*/
		delta = -event.detail/3;
	}

	/** If delta is nonzero, handle it.
	* Basically, delta is now positive if wheel was scrolled up,
	* and negative, if wheel was scrolled down.
	*/
	if (delta)
		handle(delta);

	/** Prevent default actions caused by mouse wheel.
	* That might be ugly, but we handle scrolls somehow
	* anyway, so don't bother here..
	*/
	if (event.preventDefault)
		event.preventDefault();
	
	event.returnValue = false;
}
// Enregistrement des regles definies ci dessus dans Behaviour
Behaviour.register(myrules);
