var JSFields = {

 	fields : ["recherche_field"],
	values : ["Rechercher"],

	init: function() {
		for (p=0;p<JSFields.fields.length;p++){
			var element = $(JSFields.fields[p]);
			element.value = JSFields.values[p];
			element.observe('click', JSFields.empty.bindAsEventListener(JSFields));
			element.observe('blur', JSFields.fill.bindAsEventListener(JSFields));		}
	},
	
	empty: function(e) {
		var event = Event.element(e);
		var i = JSFields.fields.indexOf(event.id);
		if(event.value == JSFields.values[i])
			event.value = '';
	},
	
	fill: function(e) {
		var event = Event.element(e);
		var i = JSFields.fields.indexOf(event.id);
		if(event.value == '')
			event.value = JSFields.values[i];	
	},
	
	submit: function(e) {
		var event = Event.element(e);
		do
			event = event.parentNode
		while(event.tagName != "FORM");	
		$(event).submit();
	}
	
};


var Slideshow = {
	
	timeShown: 5,
	fadeDuration: 2,
	framePerSecond: 50,
	imageBlock : 'thumbs_liste',
	frames : null,
	currentFrame: 1,
	frameNum: 0,
	
	start: function() { 
		if($(Slideshow.imageBlock))
		{
			Slideshow.frames = $(Slideshow.imageBlock).childElements();
			Slideshow.frameNum = Slideshow.frames.length - 1;
			for(i=1;i<=Slideshow.frameNum;++i)
				Slideshow.frames[i].hide();
			new PeriodicalExecuter(Slideshow.fadeIn, Slideshow.timeShown);
		} 
  	},
  	
  	fadeIn: function() {  	
  		Slideshow.fadeOut();
  		new Effect.Appear(Slideshow.frames[Slideshow.currentFrame], {
			duration: Slideshow.fadeDuration,
			fps: Slideshow.framePerSecond,
			afterFinish: function() {
				Slideshow.increase();
			}
		});		
	},
	
	fadeOut: function() {
		var last = Slideshow.frameNum;
		if(Slideshow.currentFrame > 0)
			last = Slideshow.currentFrame - 1;
		new Effect.Fade(Slideshow.frames[last], {
			duration: Slideshow.fadeDuration,
			fps: Slideshow.framePerSecond
		});		
	},
	
	increase: function() {
		if(Slideshow.currentFrame < Slideshow.frameNum)
			Slideshow.currentFrame = Slideshow.currentFrame + 1;
		else
			Slideshow.currentFrame = 0;	
	}
};



var SubMenus = {

	init: function() {
		var menus = $('submenu');
		if(menus != null)
		{
			var menu = menus.firstDescendant();
			while(menu)
			{
				if(menu.tagName != null)
				{		
					$(menu).observe("mouseover", SubMenus.change.bindAsEventListener(SubMenus,"on"));
					$(menu).observe("mouseout", SubMenus.change.bindAsEventListener(SubMenus,"off"));	
				}
				menu = menu.nextSibling;
			}	
		}		
	},
	
	change: function(e) {
		var event = Event.element(e).parentNode;
		var part = event.firstDescendant();
		var args = $A(arguments);
		args.shift();
		for(p=0;p<event.childElements().length;++p)
		{
			if(part.className != null)
				if((index = part.className.indexOf("_off")) != -1)
				{
					if(args.join("") == "on")
						part.setStyle({
							backgroundPosition : '0px -28px;',
							color : '#FFFFFF'
						});
					else if(args.join("") == "off")
						part.setStyle({
							backgroundPosition : '0px 0px;',
							color : '#727272'
						});				
				}
			part = part.next();
		}
	}
}


var Breves = {

	timeShown: 6,
	scrollSpeed: 10,
	framePerSecond: 50,
	textBlock : 'breves_mid',
	frames : [],
	currentFrame: 0,
	frameNum: 0,

	
	start: function() {
		var divs = $(Breves.textBlock).childElements();
		for(p=0;p<divs.length;++p)
		{
			var marginB = divs[p].getStyle('marginBottom');			
			var arr = new Array()
			arr['obj'] = divs[p];			
			arr['height'] = divs[p].offsetHeight + parseInt(marginB.substring(0, marginB.lastIndexOf("px")));
			arr['top'] = 0;
			arr['decal'] = 0;
			arr['opacity'] = 1;
			arr['strlen'] = Math.ceil(Breves.trim(divs[p].innerHTML).length / (Breves.scrollSpeed * 10));
			Breves.frames[Breves.frames.length]  = arr;		
		}
		setTimeout("Breves.scroll()",Breves.timeShown*1000);

	},
	
	scroll: function() {		
		if(Breves.frames[Breves.currentFrame]['decal'] == Breves.frames[Breves.currentFrame]['height'])	
			Breves.stop();
		else
		{
			Breves.frames[Breves.currentFrame]['decal']++;	
			Breves.frames[Breves.currentFrame]['opacity'] -= Breves.frames[Breves.currentFrame]['opacity'] / (10 * Breves.frames[Breves.currentFrame]['strlen']);
			for (p=0;p<Breves.frames.length;p++)
			{			
				Breves.frames[p]['top'] -= 1;
				Breves.frames[p]['obj'].setStyle({
										top : Breves.frames[p]['top'] + 'px'
										})
			}		
			if(Breves.frames[Breves.currentFrame]['opacity'] > 0)
			Breves.frames[Breves.currentFrame]['obj'].setOpacity(Breves.frames[Breves.currentFrame]['opacity']);
			setTimeout("Breves.scroll()", Breves.scrollSpeed);
		}	
		
	},
		
	
	stop: function() {
		Breves.frames[Breves.currentFrame]['decal'] = 0;
		Breves.frames[Breves.currentFrame]['opacity'] = 1;
		Breves.frames[Breves.currentFrame]['obj'].setOpacity(Breves.frames[Breves.currentFrame]['opacity']);
		var total = 0;	
		for (p=0;p<Breves.frames.length;p++)
			total += Breves.frames[p]['height']
		
		Breves.frames[Breves.currentFrame]['top'] += total;	
		Breves.frames[Breves.currentFrame]['obj'].setStyle({
												top : Breves.frames[Breves.currentFrame]['top'] + 'px'
											});
		
		if(Breves.currentFrame < Breves.frames.length - 1)
			Breves.currentFrame++;
		else
			Breves.currentFrame = 0;
			
		setTimeout("Breves.scroll()",Breves.timeShown*1000);
	},
	
	trim: function(str) {
		return str.replace(/(^\s*)|(\s*$)/g,''); 
	}
};

var Programmes = {

	base:		'/',
	url: 		'visiteur/ajouter/',
	url2: 		'visiteur/supprimer/',
	url3:		'visiteur/verifier/',
	folder:		'site/views/global/images/',
	img: 		'icones/loader.gif',
	ajouter:	'programme_bouton_ajouter.gif',
	supprimer:	'programme_bouton_supprimer.gif',
	iclass: 	'prog_button',
	iclass2:	'del_button',
	iaide: 		'prog_aide',
    clicked:    false,
	
	init: function() {
	
		var divs = $$('img.' + Programmes.iclass);
		for(i=0;i<divs.length;++i)
		{
            Programmes.check(divs[i]);
		}
			
		var divs2 = $$('img.' + Programmes.iclass2);
		for(i=0;i<divs2.length;++i)
		{
			Programmes.check(divs2[i]);
		}

	},
	
	displayhelp: function(e) {
		var event = Event.element(e);
		var container = $($(event).parentNode);
		var desc = container.descendants();
		var helpdiv = desc[desc.length - 1];
        var src = event.src

        if(!Programmes.clicked)
        {
            if(!helpdiv.hasClassName('help')) {
                helpdiv = new Element('div', { 'class': 'help' } );
                helpdiv.hide();
                container.insert(helpdiv, { position: 'bottom'});
            }

            if(src.indexOf(Programmes.ajouter) != -1)
            {
                helpdiv.update("Ajouter cette séance à votre programme personnalisé");
            }
            else
            {
                helpdiv.update("Supprimer cette séance de votre programme personnalisé");
            }

            if(!helpdiv.visible())
                helpdiv.show();
        }
	},

    hidehelp: function(e) {
        var event = Event.element(e);
		var container = $($(event).parentNode);
		var desc = container.descendants();
		var helpdiv = desc[desc.length - 1];
        if(helpdiv.hasClassName('help') && helpdiv.visible())
            helpdiv.hide();
    },

	
	check: function(e) {
		var event = $(e);
		var container = $($(event).parentNode);
		var idimg = event.id;
		var classn = $w(event.className)
		var seance = parseInt(idimg.substr(7));		
		var url = Programmes.base + Programmes.url3 + encodeURIComponent(seance) + "/" + encodeURIComponent(Math.random());
	  	var img = Programmes.base + Programmes.folder + Programmes.img;
	  	var loading = new Element('img', { src: img, alt: 'Chargement' });
		new Ajax.Request(url, {
		  method: 'get',
		  onCreate: function(transport) {
		  	event.replace(loading);
		  },
		  onSuccess: function(transport) {  		 
	  		if(transport.responseText == "TRUE")
	  		{
			  	var img = Programmes.base + Programmes.folder + Programmes.supprimer;
				var del = new Element('img', { src: img, alt: 'Supprimer de mon programme', className: Programmes.iclass2, id: idimg });
				del.observe('click', Programmes.rem2prog.bindAsEventListener(Programmes));
                del.observe('mouseover', Programmes.displayhelp.bindAsEventListener(Programmes));
                del.observe('mouseout', Programmes.hidehelp.bindAsEventListener(Programmes));
				loading.replace(del);
			}
			else if(transport.responseText == "FALSE")
			{				
			  	var img = Programmes.base + Programmes.folder + Programmes.ajouter;
				var del = new Element('img', { src: img, alt: 'Ajouter Ã  mon programme', className: Programmes.iclass, id: idimg });
				del.observe('click', Programmes.add2prog.bindAsEventListener(Programmes));
                del.observe('mouseover', Programmes.displayhelp.bindAsEventListener(Programmes));
                del.observe('mouseout', Programmes.hidehelp.bindAsEventListener(Programmes));
				loading.replace(del);				
			}
			else
				loading.replace(transport.responseText);			
		  },
		  onException: function() {
		  	container.update("Erreur");
		  }
		});		
	},
	
	add2prog: function(e) {
        Programmes.hidehelp(e);
        Programmes.clicked = true;
		var event = Event.element(e);
		var container = $($(event).parentNode);
		var idimg = event.id;
		var seance = parseInt(idimg.substr(7));		
		var url = Programmes.base + Programmes.url + encodeURIComponent(seance) + "/" + encodeURIComponent(Math.random());
	  	var img = Programmes.base + Programmes.folder + Programmes.img;
	  	var loading = new Element('img', { src: img, alt: 'Chargement' });
		new Ajax.Request(url, {
		  method: 'get',
		  onCreate: function(transport) {
		  	event.replace(loading);
		  },
		  onSuccess: function(transport) {  	
		  	var img = Programmes.base + Programmes.folder + Programmes.supprimer;
			var del = new Element('img', { src: img, alt: 'Supprimer de mon programme', className: Programmes.iclass2, id: idimg });
			del.observe('click', Programmes.rem2prog.bindAsEventListener(Programmes));
			loading.replace(del);
		  },
		  onException: function() {
		  	container.update("Erreur");
		  }
		});		
	},
	
	rem2prog: function(e) {
        Programmes.hidehelp(e);
		var event = Event.element(e);
		var container = $($(event).parentNode);
		var idimg = event.id;
		var seance = parseInt(idimg.substr(7));		
		var url = Programmes.base + Programmes.url2 + encodeURIComponent(seance) + "/" + encodeURIComponent(Math.random());
	  	var img = Programmes.base + Programmes.folder + Programmes.img;
	  	var loading = new Element('img', { src: img, alt: 'Chargement' });
		new Ajax.Request(url, {
		  method: 'get',
		  onCreate: function(transport) {
		  	event.replace(loading);
		  },
		  onSuccess: function(transport) {  	
		  	var img = Programmes.base + Programmes.folder + Programmes.ajouter;
			var del = new Element('img', { src: img, alt: 'Ajouter Ã  mon programme', className: Programmes.iclass, id: idimg });
			del.observe('click', Programmes.add2prog.bindAsEventListener(Programmes));
			loading.replace(del);
		  },
		  onException: function() {
		  	container.update("Erreur");
		  }
		});			
	}
};

var Palmares = {

	id1:		'palmares_link',
	id2: 		'palmares_div',
    id3:        'palmares_close',
	
	init: function() {
		var palma = $$('#' + Palmares.id1).each(
			function (palm) {
				palm.observe('click', Palmares.displayPalma.bindAsEventListener(Palmares));
			}
		);

		var palma2 = $$('#' + Palmares.id2).each(
			function (palm) {
				palm.hide();
			}
		);	

		var palma3 = $$('#' + Palmares.id3).each(
			function (palm) {
				palm.observe('click', Palmares.displayPalma.bindAsEventListener(Palmares));
			}
		);
	},
    
	displayPalma: function(e) {
		var event = Event.element(e);
		var palma2 = $$('#' + Palmares.id2).each (
			function (palm) {
				if(palm.visible())			
					Effect.BlindUp(palm, {duration: .3});	
				else
					Effect.BlindDown(palm, {duration: .4});	
			}
		);	
			
	}
};


var Categories = {

	id1:		'categories_link',
	id2: 		'categories_div',
    id3:        'categories_close',

	init: function() {
		var cate = $$('#' + Categories.id1).each(
			function (cat) {
				cat.observe('click', Categories.displayCats.bindAsEventListener(Categories));
			}
		);

		var cate2 = $$('#' + Categories.id2).each(
			function (cat) {
				cat.hide();
			}
		);

		var cate = $$('#' + Categories.id3).each(
			function (cat) {
				cat.observe('click', Categories.displayCats.bindAsEventListener(Categories));
			}
		);
	},

	displayCats: function(e) {
		var event = Event.element(e);
		var cate2 = $$('#' + Categories.id2).each (
			function (cat) {
				if(cat.visible())
					Effect.BlindUp(cat, {duration: .3});
				else
					Effect.BlindDown(cat, {duration: .4});
			}
		);

	}
};



var DivToggle = {

	class1:         'toggle_link',
	class2: 		'toggle_div',
    class3:         'toggle_close',

	init: function() {
		var cate = $$('.' + DivToggle.class1).each(
			function (cat) {
				cat.observe('click', DivToggle.displayCats.bindAsEventListener(DivToggle, cat));
			}
		);

		var cate2 = $$('.' + DivToggle.class2).each(
			function (cat) {
				cat.hide();
			}
		);

		var cate3 = $$('.' + DivToggle.class3).each(
			function (cat) {
				cat.observe('click', DivToggle.displayCats.bindAsEventListener(DivToggle, cat));
			}
		);
	},

	displayCats: function(e, cat) {
		var event = Event.element(e);
        var container = $($($(cat).parentNode).parentNode);
		var cate2 = container.select('.' + DivToggle.class2).each (
			function (cat2) {
				if(cat2.visible())
					Effect.BlindUp(cat2, {duration: .3});
				else
					Effect.BlindDown(cat2, {duration: .4});
			}
		);

	}
};


function init()
{
	SubMenus.init();
	JSFields.init();
	Breves.start();
	Slideshow.start();
	Programmes.init();
	Palmares.init();
    Categories.init();
    DivToggle.init();
	return true;
}

Event.observe(window, 'load',init);
