// ©2009 Max Barel a_x@ac-mb.info

var t_aff_p=3000,v_def_auto=0.05,rapide=4;function Semaphore(options){this.tempo=options.tempo||30;this.action=options.action||function(){};var self=this,t_transi,queue=0;this.verrou=false;this.val=0,this.op=function(val){queue+=val;if(!self.verrou){t_transi&&clearTimeout(t_transi);self.val+=queue;queue=0;t_transi=setTimeout(self.action,self.tempo);}};this.inc=function(){self.op(1);};this.dec=function(){self.op(-1);};this.rouge=function(){self.verrou=true};this.vert=function(){self.verrou=false;self.op(0);};}
var automate_def=new function(){var etat_cour=0,rap_on=false,d_rap,self=this;this.semaf=new Semaphore({action:commut_def,tempo:90});this.marche=function(ev){var trig=$(ev.target.firstChild?ev.target.firstChild:ev.target).parents().filter(function(){return this.valdef!==undefined})[0];self.semaf.op(trig.valdef);};this.arret=function(ev){var trig=$(ev.target.firstChild?ev.target.firstChild:ev.target).parents().filter(function(){return this.valdef!==undefined})[0];self.semaf.dec();trig.valdef=1;};this.def_rapide=function(){d_rap=this.id=='def_d';rap_on=true;self.semaf.dec();};this.stop_rapide=function(){rap_on=false;self.semaf.inc();};function commut_def(){switch(etat_cour){case 0:if(self.semaf.val>0)defile();else if(rap_on)def_rapide_1();break;case 1:if(self.semaf.val<=0)stop_def();break;case 2:if(!rap_on)stop_rapide_1();}}
function def_rapide_1(){self.semaf.rouge();sens_courant=d_rap;var t=Math.max((d_rap?max_frise+_frise[0].offsetLeft:-_frise[0].offsetLeft)/v_def_auto/rapide,0);if(t){_frise.animate({'left':d_rap?-max_frise:0},t);_curseur.show().animate({'left':d_rap?l_frise-3:0},t);}else _curseur.show();etat_cour=2;self.semaf.vert();}
function stop_rapide_1(){self.semaf.rouge();_frise.stop();_curseur.stop();var c_x=Math.min(Math.round(-_frise[0].offsetLeft*l_frise/max_frise),l_frise-3);_curseur.animate({'left':c_x},5,'linear',self.semaf.vert).hide();etat_cour=0;}
function defile(){self.semaf.rouge();var vitesse=v_def_auto;var sens=sens_courant;if(_curseur.css('left')==undefined)_curseur.css('left',0);_curseur.show();var x=(_curseur[0].offsetLeft||parseInt(_curseur.css('left')));_curseur.hide();for(p_zoom=0;p_zoom<tops_curseur.length;p_zoom++)if(x<tops_curseur[p_zoom].left+tops_curseur[p_zoom].larg)break;_curseur.fadeIn(function(){var t=(sens?l_frise-x:x)/vitesse;_frise.animate({'left':sens?-max_frise:0},t,'linear');_curseur.animate({'left':sens?l_frise-3:0},t,'linear',function(){setTimeout(function(){etat_cour=0;sens_courant=!sens;self.semaf.op(0);},600);});var delt=sens?tops_curseur[p_zoom].left+tops_curseur[p_zoom].larg-x:x-tops_curseur[p_zoom].left;zoom_focus.zoom_suiv(delt);etat_cour=1;self.semaf.vert();});};function stop_def(){self.semaf.rouge();t_zoom&&clearTimeout(t_zoom);_frise.stop();_curseur.stop().fadeOut(function(){etat_cour=0;self.semaf.vert();});};}
var tops_curseur,p_zoom=0,t_zoom,sens_courant=true,_frise,_curseur,_zoom,max_frise=l_frise=0,t_focus;$(function(){_frise=$('#frise');_curseur=$('#curseur');_zoom=$('#zoom');_entete=$('#entete');_menu_gene=$('#menu_gene');$('#menu_gene li:first a').click(function(){$('#menu_projets li.actif').removeClass('actif');init_film();return false;});$('#menu_projets li a').click(function(){$('#menu_projets li.actif').removeClass('actif');$(this).parent('li').addClass('actif');filtre_projets(this.href.replace(/^.*#/,''));return false;});$('form#rechercher').submit(ajax_recherche).keypress(function(ev){ev.stopPropagation()});$('img',_frise).hover(function(){var self=this;t_focus&&clearTimeout(t_focus);t_focus=setTimeout(function(){zoom_focus.focus_z(self.id.replace(/frise_/,''))},410);},function(){clearTimeout(t_focus)});$(window).resize(function(){$(window).delay(redim,90)});if($.browser.msie&&$.browser.version<7){$('#def_g, #def_d').hover(function(){$(this).addClass('hover')},function(){$(this).removeClass('hover')});}});$(window).load(function(){redim();setTimeout(function(){_zoom.fadeIn(600);zoom_focus.focus_z(tops_curseur[0].num_proj);automate_def.semaf.inc();},1000);_frise.hover(automate_def.arret,automate_def.marche)[0].valdef=0;_entete.hover(automate_def.arret,automate_def.marche)[0].valdef=0;$('.topo').click(function(ev){automate_def.semaf.op(automate_def.semaf.val>0?-1:1);});$(document).keypress(function(ev){if(ev.which==32)automate_def.semaf.op(automate_def.semaf.val>0?-1:1);});$('#def_g, #def_d').hover(automate_def.def_rapide,automate_def.stop_rapide);if(document.body.clientWidth>700)$('img',_zoom).each(function(){this.src=this.src.replace(/images_v/,'images_m')});});function selection_projets_en_cookie(){var sel=$.map(tops_curseur,function(e,i){return e.num_proj;});document.cookie='selection_projets='+sel.join(',');}
function init_film(){var l_prec=l_frise;l_frise=0;tops_curseur=[];$('img',_frise).fadeIn().removeClass('basse').each(function(){if($.browser.safari&&parseInt($.browser.version)<522)bug_largeur(this);var w=this.offsetWidth;tops_curseur.push({num_proj:this.id.replace(/frise_/,''),larg:w,left:l_frise});$(this).animate({'left':l_frise});l_frise+=w;}).filter(':odd').addClass('basse');_frise.css({'width':l_frise,'left':0});v_def_auto=l_frise/tops_curseur.length/t_aff_p;max_frise=Math.max(l_frise-$('#decoupe').width(),0);_curseur.css('left',0);$('#def_g, #def_d')[l_frise<$('#decoupe').width()?'hide':'show']();selection_projets_en_cookie();};function redim(){init_film();_zoom.css({left:$('#menu_projets')[0].offsetWidth});var zh=$('.zoom:hidden, #zoom:hidden');zh.show();var z_h=_zoom.height();$('img',_zoom).removeAttr('style').each(function(){if($(this).height()>z_h)$(this).css({'height':'100%','width':'auto'});else $(this).css({'height':'auto','width':'100%'});});zh.hide();};var zoom_focus={z_cour:undefined,focus_z:function(num_proj){var z_c=$('#zoom_'+num_proj);if(!z_c.is(':visible')){zoom_focus.z_cour&&zoom_focus.z_cour.fadeOut();z_c.fadeIn();}
$('img',_frise).css('opacity',.6);$('#frise_'+num_proj).css('opacity',1);zoom_focus.z_cour=z_c;},zoom_suiv:function(delta_t){delta_t=(delta_t||tops_curseur[p_zoom].larg)/v_def_auto;zoom_focus.focus_z(tops_curseur[p_zoom].num_proj);p_zoom+=sens_courant?1:-1;if(p_zoom>-1&&p_zoom<tops_curseur.length)t_zoom=setTimeout(function(){zoom_focus.zoom_suiv(0)},delta_t);}};function filtre_projets(filtre){var f_out,f_in;if(typeof filtre=='string'){filtre=decodeURIComponent(filtre);f_out=function(){return this.alt.indexOf(filtre)==-1;};f_in=function(){return this.alt.indexOf(filtre)>=0;};}
else{f_out=function(){return!filtre[this.id];};f_in=function(){return filtre[this.id];};}
automate_def.semaf.rouge();l_frise=0;tops_curseur=[];$('img',_frise).filter(f_out).hide().end().queue(function(){$(this).removeClass('basse');$(this).dequeue();}).filter(f_in).fadeIn(600).filter(':odd').queue(function(){$(this).addClass('basse');$(this).dequeue();}).end().each(function(i){var self=$(this),w=this.offsetWidth;tops_curseur.push({num_proj:this.id.replace(/frise_/,''),larg:w,left:l_frise});self.animate({'left':l_frise});l_frise+=w;self.dequeue();});v_def_auto=l_frise/tops_curseur.length/t_aff_p;max_frise=Math.max(l_frise-$('#decoupe').width(),0);_frise.css({width:'100%'});_frise.animate({'width':l_frise},900,function(){_curseur.css('left',0);zoom_focus.focus_z(tops_curseur[0].num_proj);automate_def.semaf.vert();});$('#def_g, #def_d')[l_frise<$('#decoupe').width()?'hide':'show']();selection_projets_en_cookie();};function ajax_recherche(){var inp=$('input',this)[0];$.getJSON('ajax/rech_projets.php',{'cible':inp.value},function(data){if(data.length){var filtre={};for(var i in data){filtre['frise_'+data[i].num_proj]=true;}
filtre_projets(filtre);}else{init_film();inp.value='';}
inp.select();});return false;};function bug_largeur(img){var lgi=new Image();lgi.src=img.src;$(img).width(lgi.width*img.height/lgi.height);}