window.addEvent('domready', function(){
	$('doc').removeClass('no-js').addClass('has-js');

	if($('banner')) swfobject.embedSWF('/swf/banner.swf?v=1', 'banner', '900', '285', '9.0.0', '/swf/expressInstall.swf');
	if($('animation-trains')) swfobject.embedSWF('/swf/trains.swf?v=1', 'animation-trains', '580', '150', '9.0.0', '/swf/expressInstall.swf', {clickTag: 'http://www.ter-sncf.com/bretagne'});
	if($('animation-armorlux')) swfobject.embedSWF('/swf/armorlux.swf?v=1.1', 'animation-armorlux', '580', '150', '9.0.0', '/swf/expressInstall.swf', {clickTag: 'http://www.brest2008.fanavenue.com'});

	var params = '';
	$$('h2').each(function(item, i){
		if(!item.hasClass('no-gd')){
			var tag = item.getTag();
			var design = item.getParent().getProperty('class').substr(item.getParent().getProperty('class').indexOf('design-'), 8);
			var menu = item.getProperty('class').substr(item.getProperty('class').indexOf('menu-')+5, 2).toInt();
			item.removeClass('to-gd').addClass('is-gd');
			if(a = $E('a', item)) item = a;
			var strong = $E('strong', item).getText();
			if(em = $E('em', item)) var em = em.getText();
			item.empty();
			if(!isNaN(menu)) new Element('img', {src: 'http://brest2008.fr/img/flags/'+menu+'.png'+params, width: 10, alt: '', 'class': 'flag'}).injectInside(item);
			new Element('img', {src: 'http://brest2008.fr/img/'+tag+'/'+encodeURIComponent(strong)+'.png'+params, height:25, alt:strong}).injectInside(item);
			if(em) new Element('img', {src: 'http://brest2008.fr/img/'+tag+'/'+design+'/'+encodeURIComponent(em)+'.png'+params, height:25, alt:em}).injectInside(item);
			new Element('span').setText(strong+((em) ? ' '+em : '')).injectInside(item);
		}
	});
	$$('#menu li a').each(function(item, i){
		var text = item.getText();
		new Element('img', {src: '/img/menu/'+encodeURIComponent(text)+'.png'+params, alt:text}).injectInside(item.empty());
	});
	/*$$('h3').each(function(item, i){
		if(!item.hasClass('no-gd')){
			if(a = $E('a', item)) item = a;
			var text = item.getText();
			new Element('img', {src: '/img/h3/'+encodeURIComponent(text)+'.png'+params, alt:text}).injectInside(item.empty());
			new Element('span').setText(text).injectInside(item);
		}
	});*/
	
	$$('img[border=0]').addClass('no-border');
	$$('img[align=left]').addClass('float-left');
	$$('img[align=right]').addClass('float-right');
	$$('p[align=center]').addClass('align-center');
	
	var foldables = new Hash.Cookie('foldables');
	$$('.foldable').each(function(item, i){
		var header = $E('h2', item);
		var folder = new Element('div', {'class': 'folder'}).injectInside(item);
		new Element('p').setText('Cliquez ici pour afficher ce module.').injectInside(folder);
		if(foldables.get(item.getProperty('id')+'-state')){
			if(foldables.get(item.getProperty('id')+'-state') == 'folded') item.addClass('folded');
			else item.removeClass('folded');
		}
		var fold = function(event){
			if(item.hasClass('folded')) item.removeClass('folded');
			else item.addClass('folded');
			var settings = new Object();
			settings[item.getProperty('id')+'-state'] = ((item.hasClass('folded')) ? 'folded' : 'unfolded');
			foldables.extend(settings);
		}
		header.addEvent('click', fold);
		folder.addEvent('click', fold);
	});
	$$('.scroll').each(function(item, i){
		if(!(window.ie6 && item.getElement('ul').hasClass('mosaic'))) new Scroller(item, {nbItemsPage: 5});
	});
	$$('a.target-blank', 'a[target=_blank]').addEvent('click', function(event){
		event = new Event(event).stop();
		window.open(this.href);
		return false;
	});
	$$('a.popup-diateam').addEvent('click', function(event){
		event = new Event(event).stop();
		var width = 700;
		var height = 550;
		var left = (window.screen.width - width) / 2;
    	var top = (window.screen.height - height) / 2;
		window.open(this.href, 'diateam', 'resizable=yes, scrollbars=yes, width='+width+', height='+height+', left='+left+', top='+top);
		return false;
	});
	
	if($('form-contact')){
		var options1 = {validMessage: 'Merci !', onlyOnSubmit: false}
		var options2 = {failureMessage: 'Erreur !'}
		new LiveValidation('contact-nom', options1).add(Validate.Presence, options2);
		new LiveValidation('contact-prenom', options1).add(Validate.Presence, options2);
		new LiveValidation('contact-adresse', options1).add(Validate.Presence, options2);
		new LiveValidation('contact-ville', options1).add(Validate.Presence, options2);
		new LiveValidation('contact-cp', options1).add(Validate.Presence, options2).add(Validate.Format, $extend(options2, {pattern: /[0-9a-z]{5}/}));
		new LiveValidation('contact-pays', options1).add(Validate.Presence, options2);
		new LiveValidation('contact-email', options1).add(Validate.Email, options2).add(Validate.Presence, options2);
		new LiveValidation('contact-service', options1).add(Validate.Presence, options2);
		new LiveValidation('contact-message', options1).add(Validate.Presence, options2);
	}
	if(form = $('form-filtres')){
		var filtres = new Hash.Cookie('filtres');
		var settings = new Object();
		form.getElements('input[name^=types]').each(function(item, i){
			var medias = $$('ul.'+item.value, 'h3.'+item.value);
			if(filtres.get(item.value) == false){
				item.checked = false;
				medias.setStyle('display', 'none');
			}
			item.addEvent('click', function(event){
				if(this.checked){
					medias.setStyle('display', 'block');
					settings[this.value] = true;
				}else{
					medias.setStyle('display', 'none');
					settings[this.value] = false;
				}
				filtres.extend(settings);
			});
		});
		form.getElement('select[name=categorie]').addEvent('change', function(){
			window.location = '?categorie='+this.options[this.selectedIndex].value;
		});
	}
});

var Scroller = new Class({
	options: {
		nbItemsPage: 5,
		currentPage: 0,
		transition: Fx.Transitions.Quad.easeInOut
	},

	initialize: function(element, options){
		this.setOptions(options);
		this.scroller = $(element);
		this.list = this.scroller.getFirst();
		this.resize = new Fx.Style(this.scroller, 'height');
		this.scroll = new Fx.Style(this.list, 'margin-top');
		this.items = this.list.getChildren();
		this.nbItems = this.items.length;
		this.currentPage = this.options.currentPage;
		if(this.nbItems > this.options.nbItemsPage){
			this.calculateHeights();
			this.scroller.setStyles({overflow: 'hidden', height: this.pages[0]});
			this.createFooter();
			this.checkLinks();
			if(this.currentPage != 0) this.gotoPage(this.currentPage, false);
		}
	},
	
	calculateHeights: function(){
		this.nbPages = Math.ceil(this.nbItems/this.options.nbItemsPage);
		this.pages = new Array();
		for(var i = 0; i < this.nbItems; i++){
			var page = Math.floor(i/this.options.nbItemsPage);
			if(this.items[i].hasClass('current')) this.currentPage = page;
			if(!this.pages[page]) this.pages[page] = 0;
			this.pages[page] += this.items[i].getStyle('height').toInt()+this.items[i].getStyle('padding-top').toInt()+this.items[i].getStyle('padding-bottom').toInt();
		}
	},
	
	createFooter: function(){
		var that = this;
		this.footer = new Element('div', {'class': 'footer'}).injectAfter(this.scroller.getParent());
		this.navigation = new Element('ul', {'class': 'navigation'}).injectInside(this.footer);
		this.prev = new Element('a', {href: '#', events: {click: function(event){event = new Event(event).stop(); that.gotoPage(--that.currentPage, true);}}}).setText('« Précédent').injectInside(new Element('li', {'class': 'prev'}).injectInside(this.navigation));
		this.current = new Element('li', {'class': 'current'}).setText((this.currentPage+1)+'/'+this.nbPages).injectInside(this.navigation);
		this.next = new Element('a', {href: '#', events: {click: function(event){event = new Event(event).stop(); that.gotoPage(++that.currentPage, true);}}}).setText('Suivant »').injectInside(new Element('li', {'class': 'next'}).injectInside(this.navigation));
	},
	
	checkLinks: function(){
		if(this.currentPage == this.nbPages-1) this.next.setStyle('visibility', 'hidden');
		else this.next.setStyle('visibility', 'visible');
		if(this.currentPage == 0) this.prev.setStyle('visibility', 'hidden');
		else this.prev.setStyle('visibility', 'visible');
	},
	
	gotoPage: function(page, anim){
		this.currentPage = page;
		this.current.setText((this.currentPage+1)+'/'+this.nbPages);
		var top = 0;
		for(var page = 0; page < this.currentPage; page++) top += this.pages[page]
		if(anim){
			this.resize.start(this.pages[this.currentPage]);
			this.scroll.start(-top);
		}else{
			this.resize.set(this.pages[this.currentPage]);
			this.scroll.set(-top);
		}
		this.checkLinks();
	}
});
Scroller.implement(new Events, new Options);
