

/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

/*
 * jQuery.SerialScroll - Animated scrolling of series
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 06/14/2009
 * @author Ariel Flesler
 * @version 1.2.2
 * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html
 */
;(function(a){var b=a.serialScroll=function(c){return a(window).serialScroll(c)};b.defaults={duration:1e3,axis:"x",event:"click",start:0,step:1,lock:!0,cycle:!0,constant:!0};a.fn.serialScroll=function(c){return this.each(function(){var t=a.extend({},b.defaults,c),s=t.event,i=t.step,r=t.lazy,e=t.target?this:document,u=a(t.target||this,e),p=u[0],m=t.items,h=t.start,g=t.interval,k=t.navigation,l;if(!r){m=d()}if(t.force){f({},h)}a(t.prev||[],e).bind(s,-i,q);a(t.next||[],e).bind(s,i,q);if(!p.ssbound){u.bind("prev.serialScroll",-i,q).bind("next.serialScroll",i,q).bind("goto.serialScroll",f)}if(g){u.bind("start.serialScroll",function(v){if(!g){o();g=!0;n()}}).bind("stop.serialScroll",function(){o();g=!1})}u.bind("notify.serialScroll",function(x,w){var v=j(w);if(v>-1){h=v}});p.ssbound=!0;if(t.jump){(r?u:d()).bind(s,function(v){f(v,j(v.target))})}if(k){k=a(k,e).bind(s,function(v){v.data=Math.round(d().length/k.length)*k.index(this);f(v,this)})}function q(v){v.data+=h;f(v,this)}function f(B,z){if(!isNaN(z)){B.data=z;z=p}var C=B.data,v,D=B.type,A=t.exclude?d().slice(0,-t.exclude):d(),y=A.length,w=A[C],x=t.duration;if(D){B.preventDefault()}if(g){o();l=setTimeout(n,t.interval)}if(!w){v=C<0?0:y-1;if(h!=v){C=v}else{if(!t.cycle){return}else{C=y-v-1}}w=A[C]}if(!w||t.lock&&u.is(":animated")||D&&t.onBefore&&t.onBefore(B,w,u,d(),C)===!1){return}if(t.stop){u.queue("fx",[]).stop()}if(t.constant){x=Math.abs(x/i*(h-C))}u.scrollTo(w,x,t).trigger("notify.serialScroll",[C])}function n(){u.trigger("next.serialScroll")}function o(){clearTimeout(l)}function d(){return a(m,p)}function j(w){if(!isNaN(w)){return w}var x=d(),v;while((v=x.index(w))==-1&&w!=p){w=w.parentNode}return v}})}})(jQuery);

/*
 * 
 * jQuery PassRoids - Password strength meter and match verifier
 * http://www.thecreativeoutfit.com
 * 
 */

jQuery.fn.passroids = function(o) { 
  
  // Defaults ######################################################################
  var o = jQuery.extend( {
	  main: '#password',
	  verify: null,
	  button: null,
	  minimum: 0
  },o);
  
  // Create containers #############################################################
  jQuery(o.main).after('<div id="psr_score"></div>');
  
  if (o.verify!=null){ jQuery(o.verify).after('<div id="psr_verify"></div>'); }
  if (o.button!=null){ jQuery(o.button).after('<div id="psr_strength_notice"></div>'); }
  
  // Check to disable button initially #############################################
  if(o.button!=null){
	  jQuery(o.button).attr('disabled','true');
  }
  
  // Check Function ################################################################
  function testPass(v){
	  	var s = 0
		// PASSWORD LENGTH ~~~~~~~~~~~~~~~~~~~~~~~~~~~
	    // Length of 4 or less
		if (v.length<5){ s = (s+3);	}
	    // Length between 5 and 7
		else if (v.length>4 && v.length<8){ s = (s+6); }
	    // Length between 8 and 15
		else if (v.length>7 && v.length<16){ s = (s+12); }
	    // Length of 16 or more
		else if (v.length>15){ s = (s+18); }	
		// LETTERS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	    // At least one lower case letter
		if (v.match(/[a-z]/)){ s = (s+1); }
		// At least one upper case letter
		if (v.match(/[A-Z]/)){ s = (s+5); }
		// NUMBERS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		// At least one number
		if (v.match(/\d+/)){ s = (s+5); }
		// At least three numbers
		if (v.match(/(.*[0-9].*[0-9].*[0-9])/)){ s = (s+5);	}
		// SPECIAL CHARACTERS ~~~~~~~~~~~~~~~~~~~~~~~~
		// At least one special character
		if (v.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)){ s = (s+5); }
		// At least two special characters
		if (v.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){ s = (s+5); }
		// COMBOS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		// Both upper and lower case
		if (v.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){ s = (s+4); }
		// Both letters and numbers
		if (v.match(/([a-zA-Z])/) && v.match(/([0-9])/)){ s = (s+4); }
		// Letters, numbers, and special characters
		if (v.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)){ s = (s+7); }
		// Return the score ~~~~~~~~~~~~~~~~~~~~~~~~~~
		return s;
  }
  
  // Evaluate score ################################################################
  function evalScore(s){	  
	var strength = 0;
	switch(true){
	case s<=13:
		strength = 0;
		break;
	case s>=14 && s<=27:
		strength = 1;
		break;
	case s>=28 && s<=40:
		strength = 2;
		break;
	case s>=41:
		strength = 3;
		break;
	}
	return strength;
  }
  
  // Change button state ###########################################################
  function changeButtonState(v){
	  var val = jQuery(o.main).val();
	  var s = testPass(val);
	  var strength = evalScore(s);
	  if (o.button!=null){
		  	if(v==1 && strength>=o.minimum){
		  		jQuery(o.button).attr('disabled','');
		  		jQuery('#psr_strength_notice').html('');
		  	}
		  	else{
		  		jQuery(o.button).attr('disabled','true');
		  		if (strength<o.minimum){
		  			jQuery('#psr_strength_notice').html('Veuillez choisir un mot de passe plus complexe.')
		  		}
		  	}
	  }
  }
  
  
  // Main functionality ############################################################ 
  return this.each(function() {
  	    // Check password strength ~~~~~~~~~~~~~~~~~~~~~
		    jQuery(o.main).keyup(function(){
	  		// Get field value
	  		var val = jQuery(o.main).val();
	  		// Get score
	  		var s = 0;
	  		if (val!=''){ var s = testPass(val); }
	  		// Evaluate
	  		var levels=new Array();
	  		levels[0]="Faible";
	  		levels[1]="Moyenne";
	  		levels[2]="Forte";
	  		levels[3]="Excellente";
	  		var strength = evalScore(s);	
	  		// Display Score
	  		jQuery('#psr_score').html('Sécurité: <span class=psr_'+levels[strength]+'>'+levels[strength]+'</span>');	
	    });
	  
  	// Check for verification ~~~~~~~~~~~~~~~~~~~~~~~~
	if(o.verify!=null){
		// Clear message (on keyup)
		jQuery(o.verify).keyup(function(){
			var main = jQuery(o.main).val();
			var verify = jQuery(o.verify).val();
			if(main==verify){
				jQuery('#psr_verify').html('');
				changeButtonState(1);
			}
		});
		
		// Check verify
		jQuery(o.verify).blur(function(){
		   var main = jQuery(o.main).val();
		   var verify = jQuery(o.verify).val();
		   if(main!=verify){
			   jQuery('#psr_verify').html('Les mots de passe ne sont pas identiques.');
			   changeButtonState(0);
		   }
		});
	}
  }); 
};

/**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
* 
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);


/*
 * @name BeautyTips
 * @desc a tooltips/baloon-help plugin for jQuery
 *
 * @author Jeff Robbins - Lullabot - http://www.lullabot.com
 * @version 0.9.5-rc1  (5/20/2009)
 */
jQuery.bt={version:"0.9.5-rc1"};(function(jQuery){jQuery.fn.bt=function(content,options){if(typeof content!="string"){var contentSelect=true;options=content;content=false;}else{var contentSelect=false;}if(jQuery.fn.hoverIntent&&jQuery.bt.defaults.trigger=="hover"){jQuery.bt.defaults.trigger="hoverIntent";}return this.each(function(index){var opts=jQuery.extend(false,jQuery.bt.defaults,jQuery.bt.options,options);opts.spikeLength=numb(opts.spikeLength);opts.spikeGirth=numb(opts.spikeGirth);opts.overlap=numb(opts.overlap);var ajaxTimeout=false;if(opts.killTitle){jQuery(this).find("[title]").andSelf().each(function(){if(!jQuery(this).attr("bt-xTitle")){jQuery(this).attr("bt-xTitle",jQuery(this).attr("title")).attr("title","");}});}if(typeof opts.trigger=="string"){opts.trigger=[opts.trigger];}if(opts.trigger[0]=="hoverIntent"){var hoverOpts=jQuery.extend(opts.hoverIntentOpts,{over:function(){this.btOn();},out:function(){this.btOff();}});jQuery(this).hoverIntent(hoverOpts);}else{if(opts.trigger[0]=="hover"){jQuery(this).hover(function(){this.btOn();},function(){this.btOff();});}else{if(opts.trigger[0]=="now"){if(jQuery(this).hasClass("bt-active")){this.btOff();}else{this.btOn();}}else{if(opts.trigger[0]=="none"){}else{if(opts.trigger.length>1&&opts.trigger[0]!=opts.trigger[1]){jQuery(this).bind(opts.trigger[0],function(){this.btOn();}).bind(opts.trigger[1],function(){this.btOff();});}else{jQuery(this).bind(opts.trigger[0],function(){if(jQuery(this).hasClass("bt-active")){this.btOff();}else{this.btOn();}});}}}}}this.btOn=function(){if(typeof jQuery(this).data("bt-box")=="object"){this.btOff();}opts.preBuild.apply(this);jQuery(jQuery.bt.vars.closeWhenOpenStack).btOff();jQuery(this).addClass("bt-active "+opts.activeClass);if(contentSelect&&opts.ajaxPath==null){if(opts.killTitle){jQuery(this).attr("title",jQuery(this).attr("bt-xTitle"));}content=jQuery.isFunction(opts.contentSelector)?opts.contentSelector.apply(this):eval(opts.contentSelector);if(opts.killTitle){jQuery(this).attr("title","");}}if(opts.ajaxPath!=null&&content==false){if(typeof opts.ajaxPath=="object"){var url=eval(opts.ajaxPath[0]);url+=opts.ajaxPath[1]?" "+opts.ajaxPath[1]:"";}else{var url=opts.ajaxPath;}var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}var cacheData=opts.ajaxCache?jQuery(document.body).data("btCache-"+url.replace(/\./g,"")):null;if(typeof cacheData=="string"){content=selector?jQuery("<div/>").append(cacheData.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):cacheData;}else{var target=this;var ajaxOpts=jQuery.extend(false,{type:opts.ajaxType,data:opts.ajaxData,cache:opts.ajaxCache,url:url,complete:function(XMLHttpRequest,textStatus){if(textStatus=="success"||textStatus=="notmodified"){if(opts.ajaxCache){jQuery(document.body).data("btCache-"+url.replace(/\./g,""),XMLHttpRequest.responseText);}ajaxTimeout=false;content=selector?jQuery("<div/>").append(XMLHttpRequest.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):XMLHttpRequest.responseText;}else{if(textStatus=="timeout"){ajaxTimeout=true;}content=opts.ajaxError.replace(/%error/g,XMLHttpRequest.statusText);}if(jQuery(target).hasClass("bt-active")){target.btOn();}}},opts.ajaxOpts);jQuery.ajax(ajaxOpts);content=opts.ajaxLoading;}}var shadowMarginX=0;var shadowMarginY=0;var shadowShiftX=0;var shadowShiftY=0;if(opts.shadow&&!shadowSupport()){opts.shadow=false;jQuery.extend(opts,opts.noShadowOpts);}if(opts.shadow){if(opts.shadowBlur>Math.abs(opts.shadowOffsetX)){shadowMarginX=opts.shadowBlur*2;}else{shadowMarginX=opts.shadowBlur+Math.abs(opts.shadowOffsetX);}shadowShiftX=(opts.shadowBlur-opts.shadowOffsetX)>0?opts.shadowBlur-opts.shadowOffsetX:0;if(opts.shadowBlur>Math.abs(opts.shadowOffsetY)){shadowMarginY=opts.shadowBlur*2;}else{shadowMarginY=opts.shadowBlur+Math.abs(opts.shadowOffsetY);}shadowShiftY=(opts.shadowBlur-opts.shadowOffsetY)>0?opts.shadowBlur-opts.shadowOffsetY:0;}if(opts.offsetParent){var offsetParent=jQuery(opts.offsetParent);var offsetParentPos=offsetParent.offset();var pos=jQuery(this).offset();var top=numb(pos.top)-numb(offsetParentPos.top)+numb(jQuery(this).css("margin-top"))-shadowShiftY;var left=numb(pos.left)-numb(offsetParentPos.left)+numb(jQuery(this).css("margin-left"))-shadowShiftX;}else{var offsetParent=(jQuery(this).css("position")=="absolute")?jQuery(this).parents().eq(0).offsetParent():jQuery(this).offsetParent();var pos=jQuery(this).btPosition();var top=numb(pos.top)+numb(jQuery(this).css("margin-top"))-shadowShiftY;var left=numb(pos.left)+numb(jQuery(this).css("margin-left"))-shadowShiftX;}var width=jQuery(this).btOuterWidth();var height=jQuery(this).outerHeight();if(typeof content=="object"){var original=content;var clone=jQuery(original).clone(true).show();var origClones=jQuery(original).data("bt-clones")||[];origClones.push(clone);jQuery(original).data("bt-clones",origClones);jQuery(clone).data("bt-orig",original);jQuery(this).data("bt-content-orig",{original:original,clone:clone});content=clone;}if(typeof content=="null"||content==""){return;}var jQuerytext=jQuery('<div class="bt-content"></div>').append(content).css({padding:opts.padding,position:"absolute",width:(opts.shrinkToFit?"auto":opts.width),zIndex:opts.textzIndex,left:shadowShiftX,top:shadowShiftY}).css(opts.cssStyles);var jQuerybox=jQuery('<div class="bt-wrapper"></div>').append(jQuerytext).addClass(opts.cssClass).css({position:"absolute",width:opts.width,zIndex:opts.wrapperzIndex,visibility:"hidden"}).appendTo(offsetParent);if(jQuery.fn.bgiframe){jQuerytext.bgiframe();jQuerybox.bgiframe();}jQuery(this).data("bt-box",jQuerybox);var scrollTop=numb(jQuery(document).scrollTop());var scrollLeft=numb(jQuery(document).scrollLeft());var docWidth=numb(jQuery(window).width());var docHeight=numb(jQuery(window).height());var winRight=scrollLeft+docWidth;var winBottom=scrollTop+docHeight;var space=new Object();var thisOffset=jQuery(this).offset();space.top=thisOffset.top-scrollTop;space.bottom=docHeight-((thisOffset+height)-scrollTop);space.left=thisOffset.left-scrollLeft;space.right=docWidth-((thisOffset.left+width)-scrollLeft);var textOutHeight=numb(jQuerytext.outerHeight());var textOutWidth=numb(jQuerytext.btOuterWidth());if(opts.positions.constructor==String){opts.positions=opts.positions.replace(/ /,"").split(",");}if(opts.positions[0]=="most"){var position="top";for(var pig in space){position=space[pig]>space[position]?pig:position;}}else{for(var x in opts.positions){var position=opts.positions[x];if((position=="left"||position=="right")&&space[position]>textOutWidth+opts.spikeLength){break;}else{if((position=="top"||position=="bottom")&&space[position]>textOutHeight+opts.spikeLength){break;}}}}var horiz=left+((width-textOutWidth)*0.5);var vert=top+((height-textOutHeight)*0.5);var points=new Array();var textTop,textLeft,textRight,textBottom,textTopSpace,textBottomSpace,textLeftSpace,textRightSpace,crossPoint,textCenter,spikePoint;switch(position){case"top":jQuerytext.css("margin-bottom",opts.spikeLength+"px");jQuerybox.css({top:(top-jQuerytext.outerHeight(true))+opts.overlap,left:horiz});textRightSpace=(winRight-opts.windowMargin)-(jQuerytext.offset().left+jQuerytext.btOuterWidth(true));var xShift=shadowShiftX;if(textRightSpace<0){jQuerybox.css("left",(numb(jQuerybox.css("left"))+textRightSpace)+"px");xShift-=textRightSpace;}textLeftSpace=(jQuerytext.offset().left+numb(jQuerytext.css("margin-left")))-(scrollLeft+opts.windowMargin);if(textLeftSpace<0){jQuerybox.css("left",(numb(jQuerybox.css("left"))-textLeftSpace)+"px");xShift+=textLeftSpace;}textTop=jQuerytext.btPosition().top+numb(jQuerytext.css("margin-top"));textLeft=jQuerytext.btPosition().left+numb(jQuerytext.css("margin-left"));textRight=textLeft+jQuerytext.btOuterWidth();textBottom=textTop+jQuerytext.outerHeight();textCenter={x:textLeft+(jQuerytext.btOuterWidth()*opts.centerPointX),y:textTop+(jQuerytext.outerHeight()*opts.centerPointY)};points[points.length]=spikePoint={y:textBottom+opts.spikeLength,x:((textRight-textLeft)*0.5)+xShift,type:"spike"};crossPoint=findIntersectX(spikePoint.x,spikePoint.y,textCenter.x,textCenter.y,textBottom);crossPoint.x=crossPoint.x<textLeft+opts.spikeGirth/2+opts.cornerRadius?textLeft+opts.spikeGirth/2+opts.cornerRadius:crossPoint.x;crossPoint.x=crossPoint.x>(textRight-opts.spikeGirth/2)-opts.cornerRadius?(textRight-opts.spikeGirth/2)-opts.CornerRadius:crossPoint.x;points[points.length]={x:crossPoint.x-(opts.spikeGirth/2),y:textBottom,type:"join"};points[points.length]={x:textLeft,y:textBottom,type:"corner"};points[points.length]={x:textLeft,y:textTop,type:"corner"};points[points.length]={x:textRight,y:textTop,type:"corner"};points[points.length]={x:textRight,y:textBottom,type:"corner"};points[points.length]={x:crossPoint.x+(opts.spikeGirth/2),y:textBottom,type:"join"};points[points.length]=spikePoint;break;case"left":jQuerytext.css("margin-right",opts.spikeLength+"px");jQuerybox.css({top:vert+"px",left:((left-jQuerytext.btOuterWidth(true))+opts.overlap)+"px"});textBottomSpace=(winBottom-opts.windowMargin)-(jQuerytext.offset().top+jQuerytext.outerHeight(true));var yShift=shadowShiftY;if(textBottomSpace<0){jQuerybox.css("top",(numb(jQuerybox.css("top"))+textBottomSpace)+"px");yShift-=textBottomSpace;}textTopSpace=(jQuerytext.offset().top+numb(jQuerytext.css("margin-top")))-(scrollTop+opts.windowMargin);if(textTopSpace<0){jQuerybox.css("top",(numb(jQuerybox.css("top"))-textTopSpace)+"px");yShift+=textTopSpace;}textTop=jQuerytext.btPosition().top+numb(jQuerytext.css("margin-top"));textLeft=jQuerytext.btPosition().left+numb(jQuerytext.css("margin-left"));textRight=textLeft+jQuerytext.btOuterWidth();textBottom=textTop+jQuerytext.outerHeight();textCenter={x:textLeft+(jQuerytext.btOuterWidth()*opts.centerPointX),y:textTop+(jQuerytext.outerHeight()*opts.centerPointY)};points[points.length]=spikePoint={x:textRight+opts.spikeLength,y:((textBottom-textTop)*0.5)+yShift,type:"spike"};crossPoint=findIntersectY(spikePoint.x,spikePoint.y,textCenter.x,textCenter.y,textRight);crossPoint.y=crossPoint.y<textTop+opts.spikeGirth/2+opts.cornerRadius?textTop+opts.spikeGirth/2+opts.cornerRadius:crossPoint.y;crossPoint.y=crossPoint.y>(textBottom-opts.spikeGirth/2)-opts.cornerRadius?(textBottom-opts.spikeGirth/2)-opts.cornerRadius:crossPoint.y;points[points.length]={x:textRight,y:crossPoint.y+opts.spikeGirth/2,type:"join"};points[points.length]={x:textRight,y:textBottom,type:"corner"};points[points.length]={x:textLeft,y:textBottom,type:"corner"};points[points.length]={x:textLeft,y:textTop,type:"corner"};points[points.length]={x:textRight,y:textTop,type:"corner"};points[points.length]={x:textRight,y:crossPoint.y-opts.spikeGirth/2,type:"join"};points[points.length]=spikePoint;break;case"bottom":jQuerytext.css("margin-top",opts.spikeLength+"px");jQuerybox.css({top:(top+height)-opts.overlap,left:horiz});textRightSpace=(winRight-opts.windowMargin)-(jQuerytext.offset().left+jQuerytext.btOuterWidth(true));var xShift=shadowShiftX;if(textRightSpace<0){jQuerybox.css("left",(numb(jQuerybox.css("left"))+textRightSpace)+"px");xShift-=textRightSpace;}textLeftSpace=(jQuerytext.offset().left+numb(jQuerytext.css("margin-left")))-(scrollLeft+opts.windowMargin);if(textLeftSpace<0){jQuerybox.css("left",(numb(jQuerybox.css("left"))-textLeftSpace)+"px");xShift+=textLeftSpace;}textTop=jQuerytext.btPosition().top+numb(jQuerytext.css("margin-top"));textLeft=jQuerytext.btPosition().left+numb(jQuerytext.css("margin-left"));textRight=textLeft+jQuerytext.btOuterWidth();textBottom=textTop+jQuerytext.outerHeight();textCenter={x:textLeft+(jQuerytext.btOuterWidth()*opts.centerPointX),y:textTop+(jQuerytext.outerHeight()*opts.centerPointY)};points[points.length]=spikePoint={x:((textRight-textLeft)*0.5)+xShift,y:shadowShiftY,type:"spike"};crossPoint=findIntersectX(spikePoint.x,spikePoint.y,textCenter.x,textCenter.y,textTop);crossPoint.x=crossPoint.x<textLeft+opts.spikeGirth/2+opts.cornerRadius?textLeft+opts.spikeGirth/2+opts.cornerRadius:crossPoint.x;crossPoint.x=crossPoint.x>(textRight-opts.spikeGirth/2)-opts.cornerRadius?(textRight-opts.spikeGirth/2)-opts.cornerRadius:crossPoint.x;points[points.length]={x:crossPoint.x+opts.spikeGirth/2,y:textTop,type:"join"};points[points.length]={x:textRight,y:textTop,type:"corner"};points[points.length]={x:textRight,y:textBottom,type:"corner"};points[points.length]={x:textLeft,y:textBottom,type:"corner"};points[points.length]={x:textLeft,y:textTop,type:"corner"};points[points.length]={x:crossPoint.x-(opts.spikeGirth/2),y:textTop,type:"join"};points[points.length]=spikePoint;break;case"right":jQuerytext.css("margin-left",(opts.spikeLength+"px"));jQuerybox.css({top:vert+"px",left:((left+width)-opts.overlap)+"px"});textBottomSpace=(winBottom-opts.windowMargin)-(jQuerytext.offset().top+jQuerytext.outerHeight(true));var yShift=shadowShiftY;if(textBottomSpace<0){jQuerybox.css("top",(numb(jQuerybox.css("top"))+textBottomSpace)+"px");yShift-=textBottomSpace;}textTopSpace=(jQuerytext.offset().top+numb(jQuerytext.css("margin-top")))-(scrollTop+opts.windowMargin);if(textTopSpace<0){jQuerybox.css("top",(numb(jQuerybox.css("top"))-textTopSpace)+"px");yShift+=textTopSpace;}textTop=jQuerytext.btPosition().top+numb(jQuerytext.css("margin-top"));textLeft=jQuerytext.btPosition().left+numb(jQuerytext.css("margin-left"));textRight=textLeft+jQuerytext.btOuterWidth();textBottom=textTop+jQuerytext.outerHeight();textCenter={x:textLeft+(jQuerytext.btOuterWidth()*opts.centerPointX),y:textTop+(jQuerytext.outerHeight()*opts.centerPointY)};points[points.length]=spikePoint={x:shadowShiftX,y:((textBottom-textTop)*0.5)+yShift,type:"spike"};crossPoint=findIntersectY(spikePoint.x,spikePoint.y,textCenter.x,textCenter.y,textLeft);crossPoint.y=crossPoint.y<textTop+opts.spikeGirth/2+opts.cornerRadius?textTop+opts.spikeGirth/2+opts.cornerRadius:crossPoint.y;crossPoint.y=crossPoint.y>(textBottom-opts.spikeGirth/2)-opts.cornerRadius?(textBottom-opts.spikeGirth/2)-opts.cornerRadius:crossPoint.y;points[points.length]={x:textLeft,y:crossPoint.y-opts.spikeGirth/2,type:"join"};points[points.length]={x:textLeft,y:textTop,type:"corner"};points[points.length]={x:textRight,y:textTop,type:"corner"};points[points.length]={x:textRight,y:textBottom,type:"corner"};points[points.length]={x:textLeft,y:textBottom,type:"corner"};points[points.length]={x:textLeft,y:crossPoint.y+opts.spikeGirth/2,type:"join"};points[points.length]=spikePoint;break;}var canvas=document.createElement("canvas");jQuery(canvas).attr("width",(numb(jQuerytext.btOuterWidth(true))+opts.strokeWidth*2+shadowMarginX)).attr("height",(numb(jQuerytext.outerHeight(true))+opts.strokeWidth*2+shadowMarginY)).appendTo(jQuerybox).css({position:"absolute",zIndex:opts.boxzIndex});if(typeof G_vmlCanvasManager!="undefined"){canvas=G_vmlCanvasManager.initElement(canvas);}if(opts.cornerRadius>0){var newPoints=new Array();var newPoint;for(var i=0;i<points.length;i++){if(points[i].type=="corner"){newPoint=betweenPoint(points[i],points[(i-1)%points.length],opts.cornerRadius);newPoint.type="arcStart";newPoints[newPoints.length]=newPoint;newPoints[newPoints.length]=points[i];newPoint=betweenPoint(points[i],points[(i+1)%points.length],opts.cornerRadius);newPoint.type="arcEnd";newPoints[newPoints.length]=newPoint;}else{newPoints[newPoints.length]=points[i];}}points=newPoints;}var ctx=canvas.getContext("2d");if(opts.shadow&&opts.shadowOverlap!==true){var shadowOverlap=numb(opts.shadowOverlap);switch(position){case"top":if(opts.shadowOffsetX+opts.shadowBlur-shadowOverlap>0){jQuerybox.css("top",(numb(jQuerybox.css("top"))-(opts.shadowOffsetX+opts.shadowBlur-shadowOverlap)));}break;case"right":if(shadowShiftX-shadowOverlap>0){jQuerybox.css("left",(numb(jQuerybox.css("left"))+shadowShiftX-shadowOverlap));}break;case"bottom":if(shadowShiftY-shadowOverlap>0){jQuerybox.css("top",(numb(jQuerybox.css("top"))+shadowShiftY-shadowOverlap));}break;case"left":if(opts.shadowOffsetY+opts.shadowBlur-shadowOverlap>0){jQuerybox.css("left",(numb(jQuerybox.css("left"))-(opts.shadowOffsetY+opts.shadowBlur-shadowOverlap)));}break;}}drawIt.apply(ctx,[points],opts.strokeWidth);ctx.fillStyle=opts.fill;if(opts.shadow){ctx.shadowOffsetX=opts.shadowOffsetX;ctx.shadowOffsetY=opts.shadowOffsetY;ctx.shadowBlur=opts.shadowBlur;ctx.shadowColor=opts.shadowColor;}ctx.closePath();ctx.fill();if(opts.strokeWidth>0){ctx.shadowColor="rgba(0, 0, 0, 0)";ctx.lineWidth=opts.strokeWidth;ctx.strokeStyle=opts.strokeStyle;ctx.beginPath();drawIt.apply(ctx,[points],opts.strokeWidth);ctx.closePath();ctx.stroke();}opts.preShow.apply(this,[jQuerybox[0]]);jQuerybox.css({display:"none",visibility:"visible"});opts.showTip.apply(this,[jQuerybox[0]]);if(opts.overlay){var overlay=jQuery('<div class="bt-overlay"></div>').css({position:"absolute",backgroundColor:"blue",top:top,left:left,width:width,height:height,opacity:".2"}).appendTo(offsetParent);jQuery(this).data("overlay",overlay);}if((opts.ajaxPath!=null&&opts.ajaxCache==false)||ajaxTimeout){content=false;}if(opts.clickAnywhereToClose){jQuery.bt.vars.clickAnywhereStack.push(this);jQuery(document).click(jQuery.bt.docClick);}if(opts.closeWhenOthersOpen){jQuery.bt.vars.closeWhenOpenStack.push(this);}opts.postShow.apply(this,[jQuerybox[0]]);};this.btOff=function(){var box=jQuery(this).data("bt-box");opts.preHide.apply(this,[box]);var i=this;i.btCleanup=function(){var box=jQuery(i).data("bt-box");var contentOrig=jQuery(i).data("bt-content-orig");var overlay=jQuery(i).data("bt-overlay");if(typeof box=="object"){jQuery(box).remove();jQuery(i).removeData("bt-box");}if(typeof contentOrig=="object"){var clones=jQuery(contentOrig.original).data("bt-clones");jQuery(contentOrig).data("bt-clones",arrayRemove(clones,contentOrig.clone));}if(typeof overlay=="object"){jQuery(overlay).remove();jQuery(i).removeData("bt-overlay");}jQuery.bt.vars.clickAnywhereStack=arrayRemove(jQuery.bt.vars.clickAnywhereStack,i);jQuery.bt.vars.closeWhenOpenStack=arrayRemove(jQuery.bt.vars.closeWhenOpenStack,i);jQuery(i).removeClass("bt-active "+opts.activeClass);opts.postHide.apply(i);};opts.hideTip.apply(this,[box,i.btCleanup]);};var refresh=this.btRefresh=function(){this.btOff();this.btOn();};});function drawIt(points,strokeWidth){this.moveTo(points[0].x,points[0].y);for(i=1;i<points.length;i++){if(points[i-1].type=="arcStart"){this.quadraticCurveTo(round5(points[i].x,strokeWidth),round5(points[i].y,strokeWidth),round5(points[(i+1)%points.length].x,strokeWidth),round5(points[(i+1)%points.length].y,strokeWidth));i++;}else{this.lineTo(round5(points[i].x,strokeWidth),round5(points[i].y,strokeWidth));}}}function round5(num,strokeWidth){var ret;strokeWidth=numb(strokeWidth);if(strokeWidth%2){ret=num;}else{ret=Math.round(num-0.5)+0.5;}return ret;}function numb(num){return parseInt(num)||0;}function arrayRemove(arr,elem){var x,newArr=new Array();for(x in arr){if(arr[x]!=elem){newArr.push(arr[x]);}}return newArr;}function canvasSupport(){var canvas_compatible=false;try{canvas_compatible=!!(document.createElement("canvas").getContext("2d"));}catch(e){canvas_compatible=!!(document.createElement("canvas").getContext);}return canvas_compatible;}function shadowSupport(){try{var userAgent=navigator.userAgent.toLowerCase();if(/webkit/.test(userAgent)){return true;}else{if(/gecko|mozilla/.test(userAgent)&&parseFloat(userAgent.match(/firefox\/(\d+(?:\.\d+)+)/)[1])>=3.1){return true;}}}catch(err){}return false;}function betweenPoint(point1,point2,dist){var y,x;if(point1.x==point2.x){y=point1.y<point2.y?point1.y+dist:point1.y-dist;return{x:point1.x,y:y};}else{if(point1.y==point2.y){x=point1.x<point2.x?point1.x+dist:point1.x-dist;return{x:x,y:point1.y};}}}function centerPoint(arcStart,corner,arcEnd){var x=corner.x==arcStart.x?arcEnd.x:arcStart.x;var y=corner.y==arcStart.y?arcEnd.y:arcStart.y;var startAngle,endAngle;if(arcStart.x<arcEnd.x){if(arcStart.y>arcEnd.y){startAngle=(Math.PI/180)*180;endAngle=(Math.PI/180)*90;}else{startAngle=(Math.PI/180)*90;endAngle=0;}}else{if(arcStart.y>arcEnd.y){startAngle=(Math.PI/180)*270;endAngle=(Math.PI/180)*180;}else{startAngle=0;endAngle=(Math.PI/180)*270;}}return{x:x,y:y,type:"center",startAngle:startAngle,endAngle:endAngle};}function findIntersect(r1x1,r1y1,r1x2,r1y2,r2x1,r2y1,r2x2,r2y2){if(r2x1==r2x2){return findIntersectY(r1x1,r1y1,r1x2,r1y2,r2x1);}if(r2y1==r2y2){return findIntersectX(r1x1,r1y1,r1x2,r1y2,r2y1);}var r1m=(r1y1-r1y2)/(r1x1-r1x2);var r1b=r1y1-(r1m*r1x1);var r2m=(r2y1-r2y2)/(r2x1-r2x2);var r2b=r2y1-(r2m*r2x1);var x=(r2b-r1b)/(r1m-r2m);var y=r1m*x+r1b;return{x:x,y:y};}function findIntersectY(r1x1,r1y1,r1x2,r1y2,x){if(r1y1==r1y2){return{x:x,y:r1y1};}var r1m=(r1y1-r1y2)/(r1x1-r1x2);var r1b=r1y1-(r1m*r1x1);var y=r1m*x+r1b;return{x:x,y:y};}function findIntersectX(r1x1,r1y1,r1x2,r1y2,y){if(r1x1==r1x2){return{x:r1x1,y:y};}var r1m=(r1y1-r1y2)/(r1x1-r1x2);var r1b=r1y1-(r1m*r1x1);var x=(y-r1b)/r1m;return{x:x,y:y};}};jQuery.fn.btPosition=function(){function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|htmljQuery/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,"marginTop");offset.left-=num(this,"marginLeft");parentOffset.top+=num(offsetParent,"borderTopWidth");parentOffset.left+=num(offsetParent,"borderLeftWidth");results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;};jQuery.fn.btOuterWidth=function(margin){function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}return this["innerWidth"]()+num(this,"borderLeftWidth")+num(this,"borderRightWidth")+(margin?num(this,"marginLeft")+num(this,"marginRight"):0);};jQuery.fn.btOn=function(){return this.each(function(index){if(jQuery.isFunction(this.btOn)){this.btOn();}});};jQuery.fn.btOff=function(){return this.each(function(index){if(jQuery.isFunction(this.btOff)){this.btOff();}});};jQuery.bt.vars={clickAnywhereStack:[],closeWhenOpenStack:[]};jQuery.bt.docClick=function(e){if(!e){var e=window.event;}if(!jQuery(e.target).parents().andSelf().filter(".bt-wrapper, .bt-active").length&&jQuery.bt.vars.clickAnywhereStack.length){jQuery(jQuery.bt.vars.clickAnywhereStack).btOff();jQuery(document).unbind("click",jQuery.bt.docClick);}};jQuery.bt.defaults={trigger:"hover",clickAnywhereToClose:true,closeWhenOthersOpen:false,shrinkToFit:false,width:"200px",padding:"10px",spikeGirth:10,spikeLength:15,overlap:0,overlay:false,killTitle:true,textzIndex:9999,boxzIndex:9998,wrapperzIndex:9997,offsetParent:null,positions:["most"],fill:"rgb(255, 255, 102)",windowMargin:10,strokeWidth:1,strokeStyle:"#000",cornerRadius:5,centerPointX:0.5,centerPointY:0.5,shadow:false,shadowOffsetX:2,shadowOffsetY:2,shadowBlur:3,shadowColor:"#000",shadowOverlap:false,noShadowOpts:{strokeStyle:"#999"},cssClass:"",cssStyles:{},activeClass:"bt-active",contentSelector:"jQuery(this).attr('title')",ajaxPath:null,ajaxError:"<strong>ERROR:</strong> <em>%error</em>",ajaxLoading:"<blink>Loading...</blink>",ajaxData:{},ajaxType:"GET",ajaxCache:true,ajaxOpts:{},preBuild:function(){},preShow:function(box){},showTip:function(box){jQuery(box).show();},postShow:function(box){},preHide:function(box){},hideTip:function(box,callback){jQuery(box).hide();callback();},postHide:function(){},hoverIntentOpts:{interval:300,timeout:500}};jQuery.bt.options={};})(jQuery);

/*
 * tools.tabs 1.0.3 - Tabs done right.
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/tabs.html
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 *
 * Launch  : November 2008
 * Date: ${date}
 * Revision: ${revision} 
 */
(function(d){d.tools=d.tools||{};d.tools.tabs={version:"1.0.3",conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",api:false,rotate:false},addEffect:function(e,f){c[e]=f}};var c={"default":function(f,e){this.getPanes().hide().eq(f).show();e.call()},fade:function(g,e){var f=this.getConf(),h=f.fadeOutSpeed,j=this.getCurrentPane();if(h){j.fadeOut(h)}else{j.hide()}this.getPanes().eq(g).fadeIn(f.fadeInSpeed,e)},slide:function(f,e){this.getCurrentPane().slideUp(200);this.getPanes().eq(f).slideDown(400,e)},ajax:function(f,e){this.getPanes().eq(0).load(this.getTabs().eq(f).attr("href"),e)}};var b;d.tools.tabs.addEffect("horizontal",function(f,e){if(!b){b=this.getPanes().eq(0).width()}this.getCurrentPane().animate({width:0},function(){d(this).hide()});this.getPanes().eq(f).animate({width:b},function(){d(this).show();e.call()})});function a(g,h,f){var e=this,j=d(this),i;d.each(f,function(k,l){if(d.isFunction(l)){j.bind(k,l)}});d.extend(this,{click:function(k){var o=e.getCurrentPane();var l=g.eq(k);if(typeof k=="string"&&k.replace("#","")){l=g.filter("[href*="+k.replace("#","")+"]");k=Math.max(g.index(l),0)}if(f.rotate){var m=g.length-1;if(k<0){return e.click(m)}if(k>m){return e.click(0)}}if(!l.length){if(i>=0){return e}k=f.initialIndex;l=g.eq(k)}var n=d.Event("onBeforeClick");j.trigger(n,[k]);if(n.isDefaultPrevented()){return}if(k===i){return e}l.addClass(f.current);c[f.effect].call(e,k,function(){j.trigger("onClick",[k])});g.removeClass(f.current);l.addClass(f.current);i=k;return e},getConf:function(){return f},getTabs:function(){return g},getPanes:function(){return h},getCurrentPane:function(){return h.eq(i)},getCurrentTab:function(){return g.eq(i)},getIndex:function(){return i},next:function(){return e.click(i+1)},prev:function(){return e.click(i-1)},bind:function(k,l){j.bind(k,l);return e},onBeforeClick:function(k){return this.bind("onBeforeClick",k)},onClick:function(k){return this.bind("onClick",k)},unbind:function(k){j.unbind(k);return e}});g.each(function(k){d(this).bind(f.event,function(l){e.click(k);return l.preventDefault()})});if(location.hash){e.click(location.hash)}else{e.click(f.initialIndex)}h.find("a[href^=#]").click(function(){e.click(d(this).attr("href"))})}d.fn.tabs=function(i,f){var g=this.eq(typeof f=="number"?f:0).data("tabs");if(g){return g}if(d.isFunction(f)){f={onBeforeClick:f}}var h=d.extend({},d.tools.tabs.conf),e=this.length;f=d.extend(h,f);this.each(function(l){var j=d(this);var k=j.find(f.tabs);if(!k.length){k=j.children()}var m=i.jquery?i:j.children(i);if(!m.length){m=e==1?d(i):j.parent().find(i)}g=new a(k,m,f);j.data("tabs",g)});return f.api?g:this}})(jQuery);

/**
 * Boxy 0.1.4 - Facebook-style dialog, with frills
 *
 * (c) 2008 Jason Frame
 * Licensed under the MIT License (LICENSE)
 */
 
/*
 * jQuery plugin
 *
 * Options:
 *   message: confirmation message for form submit hook (default: "Please confirm:")
 * 
 * Any other options - e.g. 'clone' - will be passed onto the boxy constructor (or
 * Boxy.load for AJAX operations)
 */
jQuery.fn.boxy = function(options) {
    options = options || {};
    return this.each(function() {      
        var node = this.nodeName.toLowerCase(), self = this;
        if (node == 'a') {
            jQuery(this).click(function() {
                var active = Boxy.linkedTo(this),
                    href = this.getAttribute('href'),
                    localOptions = jQuery.extend({actuator: this, title: this.title}, options);
                    
                if (active) {
                    active.show();
                } else if (href.indexOf('#') >= 0) {
                    var content = jQuery(href.substr(href.indexOf('#'))),
                        newContent = content.clone(true);
                    content.remove();
                    localOptions.unloadOnHide = false;
                    new Boxy(newContent, localOptions);
                } else { // fall back to AJAX; could do with a same-origin check
                    if (!localOptions.cache) localOptions.unloadOnHide = true;
                    Boxy.load(this.href, localOptions);
                }
                
                return false;
            });
        } else if (node == 'form') {
            jQuery(this).bind('submit.boxy', function() {
                Boxy.confirm(options.message || 'Please confirm:', function() {
                    jQuery(self).unbind('submit.boxy').submit();
                });
                return false;
            });
        }
    });
};

//
// Boxy Class

function Boxy(element, options) {
    
    this.boxy = jQuery(Boxy.WRAPPER);
    jQuery.data(this.boxy[0], 'boxy', this);
    
    this.visible = false;
    this.options = jQuery.extend({}, Boxy.DEFAULTS, options || {});
    
    if (this.options.modal) {
        this.options = jQuery.extend(this.options, {center: true, draggable: false});
    }
    
    // options.actuator == DOM element that opened this boxy
    // association will be automatically deleted when this boxy is remove()d
    if (this.options.actuator) {
        jQuery.data(this.options.actuator, 'active.boxy', this);
    }
    
    this.setContent(element || "<div></div>");
    this._setupTitleBar();
    
    this.boxy.css('display', 'none').appendTo(document.body);
    this.toTop();

    if (this.options.fixed) {
        if (jQuery.browser.msie && jQuery.browser.version < 7) {
            this.options.fixed = false; // IE6 doesn't support fixed positioning
        } else {
            this.boxy.addClass('fixed');
        }
    }
    
    if (this.options.center && Boxy._u(this.options.x, this.options.y)) {
        this.center();
    } else {
        this.moveTo(
            Boxy._u(this.options.x) ? this.options.x : Boxy.DEFAULT_X,
            Boxy._u(this.options.y) ? this.options.y : Boxy.DEFAULT_Y
        );
    }
    
    if (this.options.show) this.show();

};

Boxy.EF = function() {};

jQuery.extend(Boxy, {
    
    WRAPPER:    "<table cellspacing='0' cellpadding='0' border='0' class='boxy-wrapper'>" +
                "<tr><td class='top-left'></td><td class='top'></td><td class='top-right'></td></tr>" +
                "<tr><td class='left'></td><td class='boxy-inner'></td><td class='right'></td></tr>" +
                "<tr><td class='bottom-left'></td><td class='bottom'></td><td class='bottom-right'></td></tr>" +
                "</table>",
    
    DEFAULTS: {
        title:                  null,           // titlebar text. titlebar will not be visible if not set.
        closeable:              true,           // display close link in titlebar?
        draggable:              true,           // can this dialog be dragged?
        clone:                  false,          // clone content prior to insertion into dialog?
        actuator:               null,           // element which opened this dialog
        center:                 true,           // center dialog in viewport?
        show:                   true,           // show dialog immediately?
        modal:                  false,          // make dialog modal?
        fixed:                  true,           // use fixed positioning, if supported? absolute positioning used otherwise
        closeText:              '[Fermer]',      // text to use for default close link
        unloadOnHide:           false,          // should this dialog be removed from the DOM after being hidden?
        clickToFront:           false,          // bring dialog to foreground on any click (not just titlebar)?
        behaviours:             Boxy.EF,        // function used to apply behaviours to all content embedded in dialog.
        afterDrop:              Boxy.EF,        // callback fired after dialog is dropped. executes in context of Boxy instance.
        afterShow:              Boxy.EF,        // callback fired after dialog becomes visible. executes in context of Boxy instance.
        afterHide:              Boxy.EF,        // callback fired after dialog is hidden. executed in context of Boxy instance.
        beforeUnload:           Boxy.EF         // callback fired after dialog is unloaded. executed in context of Boxy instance.
    },
    
    DEFAULT_X:          50,
    DEFAULT_Y:          50,
    zIndex:             1337,
    dragConfigured:     false, // only set up one drag handler for all boxys
    resizeConfigured:   false,
    dragging:           null,
    
    // load a URL and display in boxy
    // url - url to load
    // options keys (any not listed below are passed to boxy constructor)
    //   type: HTTP method, default: GET
    //   cache: cache retrieved content? default: false
    //   filter: jQuery selector used to filter remote content
    load: function(url, options) {
        
        options = options || {};
        
        var ajax = {
            url: url, type: 'GET', dataType: 'html', cache: false, success: function(html) {
                html = jQuery(html);
                if (options.filter) html = jQuery(options.filter, html);
                new Boxy(html, options);
            }
        };
        
        jQuery.each(['type', 'cache'], function() {
            if (this in options) {
                ajax[this] = options[this];
                delete options[this];
            }
        });
        
        jQuery.ajax(ajax);
        
    },
    
    // allows you to get a handle to the containing boxy instance of any element
    // e.g. <a href='#' onclick='alert(Boxy.get(this));'>inspect!</a>.
    // this returns the actual instance of the boxy 'class', not just a DOM element.
    // Boxy.get(this).hide() would be valid, for instance.
    get: function(ele) {
        var p = jQuery(ele).parents('.boxy-wrapper');
        return p.length ? jQuery.data(p[0], 'boxy') : null;
    },
    
    // returns the boxy instance which has been linked to a given element via the
    // 'actuator' constructor option.
    linkedTo: function(ele) {
        return jQuery.data(ele, 'active.boxy');
    },
    
    // displays an alert box with a given message, calling optional callback
    // after dismissal.
    alert: function(message, callback, options) {
        return Boxy.ask(message, ['OK'], callback, options);
    },
    
    // displays an alert box with a given message, calling after callback iff
    // user selects OK.
    confirm: function(message, after, options) {
        return Boxy.ask(message, ['OK', 'Cancel'], function(response) {
            if (response == 'OK') after();
        }, options);
    },
    
    // asks a question with multiple responses presented as buttons
    // selected item is returned to a callback method.
    // answers may be either an array or a hash. if it's an array, the
    // the callback will received the selected value. if it's a hash,
    // you'll get the corresponding key.
    ask: function(question, answers, callback, options) {
        
        options = jQuery.extend({modal: true, closeable: false},
                                options || {},
                                {show: true, unloadOnHide: true});
        
        var body = jQuery('<div></div>').append(jQuery('<div class="question"></div>').html(question));
        
        // ick
        var map = {}, answerStrings = [];
        if (answers instanceof Array) {
            for (var i = 0; i < answers.length; i++) {
                map[answers[i]] = answers[i];
                answerStrings.push(answers[i]);
            }
        } else {
            for (var k in answers) {
                map[answers[k]] = k;
                answerStrings.push(answers[k]);
            }
        }
        
        var buttons = jQuery('<form class="answers"></form>');
        buttons.html(jQuery.map(answerStrings, function(v) {
            return "<input type='button' value='" + v + "' />";
        }).join(' '));
        
        jQuery('input[type=button]', buttons).click(function() {
            var clicked = this;
            Boxy.get(this).hide(function() {
                if (callback) callback(map[clicked.value]);
            });
        });
        
        body.append(buttons);
        
        new Boxy(body, options);
        
    },
    
    // returns true if a modal boxy is visible, false otherwise
    isModalVisible: function() {
        return jQuery('.boxy-modal-blackout').length > 0;
    },
    
    _u: function() {
        for (var i = 0; i < arguments.length; i++)
            if (typeof arguments[i] != 'undefined') return false;
        return true;
    },
    
    _handleResize: function(evt) {
        var d = jQuery(document);
        jQuery('.boxy-modal-blackout').css('display', 'none').css({
            width: d.width(), height: d.height()
        }).css('display', 'block');
    },
    
    _handleDrag: function(evt) {
        var d;
        if (d = Boxy.dragging) {
            d[0].boxy.css({left: evt.pageX - d[1], top: evt.pageY - d[2]});
        }
    },
    
    _nextZ: function() {
        return Boxy.zIndex++;
    },
    
    _viewport: function() {
        var d = document.documentElement, b = document.body, w = window;
        return jQuery.extend(
            jQuery.browser.msie ?
                { left: b.scrollLeft || d.scrollLeft, top: b.scrollTop || d.scrollTop } :
                { left: w.pageXOffset, top: w.pageYOffset },
            !Boxy._u(w.innerWidth) ?
                { width: w.innerWidth, height: w.innerHeight } :
                (!Boxy._u(d) && !Boxy._u(d.clientWidth) && d.clientWidth != 0 ?
                    { width: d.clientWidth, height: d.clientHeight } :
                    { width: b.clientWidth, height: b.clientHeight }) );
    }

});

Boxy.prototype = {
    
    // Returns the size of this boxy instance without displaying it.
    // Do not use this method if boxy is already visible, use getSize() instead.
    estimateSize: function() {
        this.boxy.css({visibility: 'hidden', display: 'block'});
        var dims = this.getSize();
        this.boxy.css('display', 'none').css('visibility', 'visible');
        return dims;
    },
                
    // Returns the dimensions of the entire boxy dialog as [width,height]
    getSize: function() {
        return [this.boxy.width(), this.boxy.height()];
    },
    
    // Returns the dimensions of the content region as [width,height]
    getContentSize: function() {
        var c = this.getContent();
        return [c.width(), c.height()];
    },
    
    // Returns the position of this dialog as [x,y]
    getPosition: function() {
        var b = this.boxy[0];
        return [b.offsetLeft, b.offsetTop];
    },
    
    // Returns the center point of this dialog as [x,y]
    getCenter: function() {
        var p = this.getPosition();
        var s = this.getSize();
        return [Math.floor(p[0] + s[0] / 2), Math.floor(p[1] + s[1] / 2)];
    },
                
    // Returns a jQuery object wrapping the inner boxy region.
    // Not much reason to use this, you're probably more interested in getContent()
    getInner: function() {
        return jQuery('.boxy-inner', this.boxy);
    },
    
    // Returns a jQuery object wrapping the boxy content region.
    // This is the user-editable content area (i.e. excludes titlebar)
    getContent: function() {
        return jQuery('.boxy-content', this.boxy);
    },
    
    // Replace dialog content
    setContent: function(newContent) {
        newContent = jQuery(newContent).css({display: 'block'}).addClass('boxy-content');
        if (this.options.clone) newContent = newContent.clone(true);
        this.getContent().remove();
        this.getInner().append(newContent);
        this._setupDefaultBehaviours(newContent);
        this.options.behaviours.call(this, newContent);
        return this;
    },
    
    // Move this dialog to some position, funnily enough
    moveTo: function(x, y) {
        this.moveToX(x).moveToY(y);
        return this;
    },
    
    // Move this dialog (x-coord only)
    moveToX: function(x) {
        if (typeof x == 'number') this.boxy.css({left: x});
        else this.centerX();
        return this;
    },
    
    // Move this dialog (y-coord only)
    moveToY: function(y) {
        if (typeof y == 'number') this.boxy.css({top: y});
        else this.centerY();
        return this;
    },
    
    // Move this dialog so that it is centered at (x,y)
    centerAt: function(x, y) {
        var s = this[this.visible ? 'getSize' : 'estimateSize']();
        if (typeof x == 'number') this.moveToX(x - s[0] / 2);
        if (typeof y == 'number') this.moveToY(y - s[1] / 2);
        return this;
    },
    
    centerAtX: function(x) {
        return this.centerAt(x, null);
    },
    
    centerAtY: function(y) {
        return this.centerAt(null, y);
    },
    
    // Center this dialog in the viewport
    // axis is optional, can be 'x', 'y'.
    center: function(axis) {
        var v = Boxy._viewport();
        var o = this.options.fixed ? [0, 0] : [v.left, v.top];
        if (!axis || axis == 'x') this.centerAt(o[0] + v.width / 2, null);
        if (!axis || axis == 'y') this.centerAt(null, o[1] + v.height / 2);
        return this;
    },
    
    // Center this dialog in the viewport (x-coord only)
    centerX: function() {
        return this.center('x');
    },
    
    // Center this dialog in the viewport (y-coord only)
    centerY: function() {
        return this.center('y');
    },
    
    // Resize the content region to a specific size
    resize: function(width, height, after) {
        if (!this.visible) return;
        var bounds = this._getBoundsForResize(width, height);
        this.boxy.css({left: bounds[0], top: bounds[1]});
        this.getContent().css({width: bounds[2], height: bounds[3]});
        if (after) after(this);
        return this;
    },
    
    // Tween the content region to a specific size
    tween: function(width, height, after) {
        if (!this.visible) return;
        var bounds = this._getBoundsForResize(width, height);
        var self = this;
        this.boxy.stop().animate({left: bounds[0], top: bounds[1]});
        this.getContent().stop().animate({width: bounds[2], height: bounds[3]}, function() {
            if (after) after(self);
        });
        return this;
    },
    
    // Returns true if this dialog is visible, false otherwise
    isVisible: function() {
        return this.visible;    
    },
    
    // Make this boxy instance visible
    show: function() {
        if (this.visible) return;
        if (this.options.modal) {
            var self = this;
            if (!Boxy.resizeConfigured) {
                Boxy.resizeConfigured = true;
                jQuery(window).resize(function() { Boxy._handleResize(); });
            }
            this.modalBlackout = jQuery('<div class="boxy-modal-blackout"></div>')
                .css({zIndex: Boxy._nextZ(),
                      opacity: 0.7,
                      width: jQuery(document).width(),
                      height: jQuery(document).height()})
                .appendTo(document.body);
            this.toTop();
            if (this.options.closeable) {
                jQuery(document.body).bind('keypress.boxy', function(evt) {
                    var key = evt.which || evt.keyCode;
                    if (key == 27) {
                        self.hide();
                        jQuery(document.body).unbind('keypress.boxy');
                    }
                });
            }
        }
        this.boxy.stop().css({opacity: 1}).show();
        this.visible = true;
        this._fire('afterShow');
        return this;
    },
    
    // Hide this boxy instance
    hide: function(after) {
        if (!this.visible) return;
        var self = this;
        if (this.options.modal) {
            jQuery(document.body).unbind('keypress.boxy');
            this.modalBlackout.animate({opacity: 0}, function() {
                jQuery(this).remove();
            });
        }
        this.boxy.stop().animate({opacity: 0}, 300, function() {
            self.boxy.css({display: 'none'});
            self.visible = false;
            self._fire('afterHide');
            if (after) after(self);
            if (self.options.unloadOnHide) self.unload();
        });
        return this;
    },
    
    toggle: function() {
        this[this.visible ? 'hide' : 'show']();
        return this;
    },
    
    hideAndUnload: function(after) {
        this.options.unloadOnHide = true;
        this.hide(after);
        return this;
    },
    
    unload: function() {
        this._fire('beforeUnload');
        this.boxy.remove();
        if (this.options.actuator) {
            jQuery.data(this.options.actuator, 'active.boxy', false);
        }
    },
    
    // Move this dialog box above all other boxy instances
    toTop: function() {
        this.boxy.css({zIndex: Boxy._nextZ()});
        return this;
    },
    
    // Returns the title of this dialog
    getTitle: function() {
        return jQuery('> .title-bar h2', this.getInner()).html();
    },
    
    // Sets the title of this dialog
    setTitle: function(t) {
        jQuery('> .title-bar h2', this.getInner()).html(t);
        return this;
    },
    
    //
    // Don't touch these privates
    
    _getBoundsForResize: function(width, height) {
        var csize = this.getContentSize();
        var delta = [width - csize[0], height - csize[1]];
        var p = this.getPosition();
        return [Math.max(p[0] - delta[0] / 2, 0),
                Math.max(p[1] - delta[1] / 2, 0), width, height];
    },
    
    _setupTitleBar: function() {
        if (this.options.title) {
            var self = this;
            var tb = jQuery("<div class='title-bar'></div>").html("<h2>" + this.options.title + "</h2>");
            if (this.options.closeable) {
                tb.append(jQuery("<a href='#' class='close'></a>").html(this.options.closeText));
            }
            if (this.options.draggable) {
                tb[0].onselectstart = function() { return false; }
                tb[0].unselectable = 'on';
                tb[0].style.MozUserSelect = 'none';
                if (!Boxy.dragConfigured) {
                    jQuery(document).mousemove(Boxy._handleDrag);
                    Boxy.dragConfigured = true;
                }
                tb.mousedown(function(evt) {
                    self.toTop();
                    Boxy.dragging = [self, evt.pageX - self.boxy[0].offsetLeft, evt.pageY - self.boxy[0].offsetTop];
                    jQuery(this).addClass('dragging');
                }).mouseup(function() {
                    jQuery(this).removeClass('dragging');
                    Boxy.dragging = null;
                    self._fire('afterDrop');
                });
            }
            this.getInner().prepend(tb);
            this._setupDefaultBehaviours(tb);
        }
    },
    
    _setupDefaultBehaviours: function(root) {
        var self = this;
        if (this.options.clickToFront) {
            root.click(function() { self.toTop(); });
        }
        jQuery('.close', root).click(function() {
            self.hide();
            return false;
        }).mousedown(function(evt) { evt.stopPropagation(); });
    },
    
    _fire: function(event) {
        this.options[event].call(this);
    }
    
};


/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();

/*
Uploadify v2.0.3
Release Date: August 3, 2009

Copyright (c) 2009 Ronnie Garcia, Travis Nickels

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

if(jQuery){(function(a){a.extend(a.fn,{uploadify:function(b){a(this).each(function(){settings=a.extend({id:a(this).attr("id"),uploader:"uploadify.swf",script:"uploadify.php",expressInstall:null,folder:"",height:30,width:110,cancelImg:"cancel.png",wmode:"opaque",scriptAccess:"sameDomain",fileDataName:"Filedata",method:"POST",queueSizeLimit:999,simUploadLimit:1,queueID:false,displayData:"percentage",onInit:function(){},onSelect:function(){},onQueueFull:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){},onAllComplete:function(){}},b);var e=location.pathname;e=e.split("/");e.pop();e=e.join("/")+"/";var f={};f.uploadifyID=settings.id;f.pagepath=e;if(settings.buttonImg){f.buttonImg=escape(settings.buttonImg)}if(settings.buttonText){f.buttonText=escape(settings.buttonText)}if(settings.rollover){f.rollover=true}f.script=settings.script;f.folder=escape(settings.folder);if(settings.scriptData){var g="";for(var d in settings.scriptData){g+="&"+d+"="+settings.scriptData[d]}f.scriptData=escape(g.substr(1))}f.width=settings.width;f.height=settings.height;f.wmode=settings.wmode;f.method=settings.method;f.queueSizeLimit=settings.queueSizeLimit;f.simUploadLimit=settings.simUploadLimit;if(settings.hideButton){f.hideButton=true}if(settings.fileDesc){f.fileDesc=settings.fileDesc}if(settings.fileExt){f.fileExt=settings.fileExt}if(settings.multi){f.multi=true}if(settings.auto){f.auto=true}if(settings.sizeLimit){f.sizeLimit=settings.sizeLimit}if(settings.checkScript){f.checkScript=settings.checkScript}if(settings.fileDataName){f.fileDataName=settings.fileDataName}if(settings.queueID){f.queueID=settings.queueID}if(settings.onInit()!==false){a(this).css("display","none");a(this).after('<div id="'+a(this).attr("id")+'Uploader"></div>');swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{quality:"high",wmode:settings.wmode,allowScriptAccess:settings.scriptAccess});if(settings.queueID==false){a("#"+a(this).attr("id")+"Uploader").after('<div id="'+a(this).attr("id")+'Queue" class="uploadifyQueue"></div>')}}a(this).bind("uploadifySelect",{action:settings.onSelect,queueID:settings.queueID},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l="KB";if(k>1000){k=Math.round(k*0.001*100)*0.01;l="MB"}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"..."}else{fileName=i.name}queue="#"+a(this).attr("id")+"Queue";if(j.data.queueID){queue="#"+j.data.queueID}a(queue).append('<div id="'+a(this).attr("id")+h+'" class="uploadifyQueueItem"><div class="cancel"><a href="javascript:jQuery(\'#'+a(this).attr("id")+"').uploadifyCancel('"+h+'\')"><img src="'+settings.cancelImg+'" border="0" /></a></div><span class="fileName">'+fileName+" ("+k+l+')</span><span class="percentage"></span><div class="uploadifyProgress"><div id="'+a(this).attr("id")+h+'ProgressBar" class="uploadifyProgressBar"><!--Progress Bar--></div></div></div>')}});if(typeof(settings.onSelectOnce)=="function"){a(this).bind("uploadifySelectOnce",settings.onSelectOnce)}a(this).bind("uploadifyQueueFull",{action:settings.onQueueFull},function(h,i){if(h.data.action(h,i)!==false){alert("The queue is full.  The max size is "+i+".")}});a(this).bind("uploadifyCheckExist",{action:settings.onCheck},function(m,l,k,j,o){var i=new Object();i=k;i.folder=e+j;if(o){for(var h in k){var n=h}}a.post(l,i,function(r){for(var p in r){if(m.data.action(m,l,k,j,o)!==false){var q=confirm("Do you want to replace the file "+r[p]+"?");if(!q){document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)}}}if(o){document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)}else{document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)}},"json")});a(this).bind("uploadifyCancel",{action:settings.onCancel},function(l,h,k,m,j){if(l.data.action(l,h,k,m,j)!==false){var i=(j==true)?0:250;a("#"+a(this).attr("id")+h).fadeOut(i,function(){a(this).remove()})}});if(typeof(settings.onClearQueue)=="function"){a(this).bind("uploadifyClearQueue",settings.onClearQueue)}var c=[];a(this).bind("uploadifyError",{action:settings.onError},function(l,h,k,j){if(l.data.action(l,h,k,j)!==false){var i=new Array(h,k,j);c.push(i);a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");a("#"+a(this).attr("id")+h).addClass("uploadifyError")}});a(this).bind("uploadifyProgress",{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");if(j.data.toDisplay=="percentage"){displayData=" - "+k.percentage+"%"}if(j.data.toDisplay=="speed"){displayData=" - "+k.speed+"KB/s"}if(j.data.toDisplay==null){displayData=" "}a("#"+a(this).attr("id")+h+" .percentage").text(displayData)}});a(this).bind("uploadifyComplete",{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");a("#"+a(this).attr("id")+h).fadeOut(250,function(){a(this).remove()})}});if(typeof(settings.onAllComplete)=="function"){a(this).bind("uploadifyAllComplete",{action:settings.onAllComplete},function(h,i){if(h.data.action(h,i)!==false){c=[]}})}})},uploadifySettings:function(f,j,c){var g=false;a(this).each(function(){if(f=="scriptData"&&j!=null){if(c){var i=j}else{var i=a.extend(settings.scriptData,j)}var l="";for(var k in i){l+="&"+k+"="+escape(i[k])}j=l.substr(1)}g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)});if(j==null){if(f=="scriptData"){var b=unescape(g).split("&");var e=new Object();for(var d=0;d<b.length;d++){var h=b[d].split("=");e[h[0]]=h[1]}g=e}return g}},uploadifyUpload:function(b){a(this).each(function(){document.getElementById(a(this).attr("id")+"Uploader").startFileUpload(b,false)})},uploadifyCancel:function(b){a(this).each(function(){document.getElementById(a(this).attr("id")+"Uploader").cancelFileUpload(b,true,false)})},uploadifyClearQueue:function(){a(this).each(function(){document.getElementById(a(this).attr("id")+"Uploader").clearFileUploadQueue(false)})}})})(jQuery)};

/**
 * Coteo Drop-Down Menu - jQuery plugin to make drop-down menu !
 *
 * Copyright (c) 2009 Coteo (http://www.coteo.net)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Version: 0.1
 */
(function($) {
	$.fn.coteodropdownmenu = function() {
		var thismenu = this;
		var nav_state = 0;
		var nav_higher_state = 0;
		var can_hide_menu = 0;
		this.timeout = null;
		// Permet de cacher le menu en cliquant dans le site
		$('body').click(function() {
			thismenu.children('li').removeClass('hover').children('ul').hide() ;
		}) ;
		return this.find('li').hover(function() { // Fonction des évènements hover/out
			var li = $(this);
			var isOneAndZero = null;
			can_hide_menu = 0;
			clearTimeout(thismenu.timeout); // Annuler le masquage du menu
			nav_state++;
			if (nav_state == 1 && nav_state < nav_higher_state) {
				nav_higher_state = 0;
			}
			if (nav_state < nav_higher_state || (nav_state == 1 && nav_higher_state == 0)) {
				li.parent().find('li').removeClass('hover').find('ul').hide();
				if (nav_state == 1 && nav_higher_state == 0) {
					thismenu.children('li').removeClass('hover').children('ul').hide();
				}
			}
			li.addClass('hover'); // Ajouter la classe CSS hover pour garder l'effet survolé si on sort du menu
			li.children('ul').show(); // Afficher le sous-menu si il y en a un
		}, function() {
			var li = $(this);
			if (nav_state > nav_higher_state) { // On garde le statut précédent seulement si on descend d'un niveau dans le menu
				nav_higher_state = nav_state;
			}
			nav_state--; // On enlève le curseur d'un item du menu (pour changer d'item ou pour sortir du menu)
			if (nav_state + 1 < nav_higher_state) { // Condition pour modifier le comportement du masquage du menu
				can_hide_menu = 1;
				if (nav_state == 0) {
					thismenu.timeout = setTimeout(hide_menu, 1000);
				}
			} else {
				$(this).removeClass('hover').children('ul').hide();
			}
		});
		
		// Fonction pour masquer le menu au bout d'une seconde
		function hide_menu() {
			if (can_hide_menu) {
				nav_higher_state = 0;
				thismenu.find('li').removeClass('hover').children('ul').fadeOut();
			}
		}
	};
})(jQuery);



/**
 * Coteo Accordion Menu - jQuery plugin to make accordion menu !
 *
 * Copyright (c) 2009 Coteo (http://www.coteo.net)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Version: 0.1
 *
 */
(function($) {
	$.fn.coteoaccordionmenu = function() {
		var thismenu = this;
		var can_hide_menu = 0;
		this.timeout = null;
		// Permet de cacher le menu en cliquant dans le site
		$('body').click(function() {
			thismenu.removeClass('hover').children('ul').hide();
		});
		// Astuce de prÃ©chargement de la flÃ¨che vers le haut
		var preloading_img = thismenu.children(':last').find('a.fleche:last');
		preloading_img.addClass('active');
		preloading_img.removeClass('active');
		// Fonction d'affichage du menu au survol
		return this.hover(function() {
			var div = $(this);
			var divs = div.parent().children('div.boutonArrondissement').not(div);
			var ul = div.children('ul');
			can_hide_accordion = 0;
			clearTimeout(thismenu.timeout);
			setTimeout(function() {divs.removeClass('hover');}, 0);
			divs.children('ul').not(ul).hide();
			div.addClass('hover');
			ul.show();
			// enregistrement clicktale
			//if(typeof ClickTaleExec=='function') ClickTaleExec('$("#' + $(this).attr('id') + '").mouseenter()');
		}, function() {
			var div = $(this);
			can_hide_menu = 1;
			thismenu.timeout = setTimeout(hide_menu, 1000);
			//if(typeof ClickTaleExec=='function') ClickTaleExec('$("#arrond' + $(this).attr('id') + '").mouseleave()');
		})/*.children('ul').accordion({autoHeight: false, active: false, collapsible: true, header: 'a.fleche', changestart: function(event, ui) {
			ui.oldHeader.children().removeClass('active');
			ui.newHeader.children().addClass('active');
		}})*/;
		
		// Fonction pour masquer le menu au bout d'une seconde
		function hide_menu() {
			if (can_hide_menu) {
				thismenu.filter(':visible').removeClass('hover').children('ul').fadeOut();
			}
		}
	};
})(jQuery);



/**
 * Coteo Light Checkbox Tree - jQuery plugin to make a light checkbox tree !
 *
 * Copyright (c) 2009 Coteo (http://www.coteo.net)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Version: 0.1
 *
 */
(function($) {
	$.fn.coteolightcheckboxtree = function(ids) {
		var ids = ids;
		$.fn.branch = function(parent) {
			var li = $(this);
			li.ckbox = li.children(':checkbox').click(function() {
				var state = li.ckbox.attr('checked');
			});
			li.a = li.children('a').click(function() {
				if (li.ul != null && li.ul.is(':visible') && li.ul.find(':checkbox:checked').length == 0) {
					li.a.html('+');
					li.ul.hide();
				} else {
					li.show_subtree();
				}
			});
			if (li.ckbox.length != 0) {
				li.id = li.ckbox.attr('id');
			} else if (li.a.length != 0) {
				li.id = li.a.attr('id');
			}
			li.ul = li.children('ul').tree(li);
			li.show_subtree = function(ids) {
				li.a.html('-');
				li.ul.show();
				if (ids) {
					li.ul.auto_toggling(ids);
				}
			}
			return li;
		}
		$.fn.tree = function(parent) {
			var ul = $(this);
			ul.lis = ul.children('li');
			if (ul.lis) {
				ul.lis = $.map(ul.lis, function(li) {
					return $(li).branch(parent);
				});
			}
			ul.auto_toggling = function(ids) {
				id = ids[0];
				$.each(ul.lis, function() {
					if (this.id == id && ids.length > 1) {
						this.show_subtree(ids.slice(1, ids.length));
					} else if (this.id == id) {
						this.ckbox[0].checked = !this.ckbox[0].checked;
						this.ckbox.triggerHandler('click');
					}
				});
			}
			return ul;
		}
		return this.each(function(i) {
			var ul = $(this);
			ul.find(':checkbox').attr('checked', '').attr('disabled', '');
			var tree = ul.tree();
			if (ids != null) {
				$.each(ids, function() {
					var item = this;
					tree.auto_toggling(item);
				});
			}
		});
	};
})(jQuery);



/**
 *
 * Zoomimage and utilities
 * Author: Stefan Petre www.eyecon.ro
 * 
 */
(function($){var EYE=window.EYE=function(){var _registered={init:[]};return{init:function(){$.each(_registered.init,function(nr,fn){fn.call()})},extend:function(prop){for(var i in prop){if(prop[i]!=undefined){this[i]=prop[i]}}},register:function(fn,type){if(!_registered[type]){_registered[type]=[]}_registered[type].push(fn)}}}();$(EYE.init)})(jQuery);

(function($){EYE.extend({getPosition:function(e,forceIt){var x=0;var y=0;var es=e.style;var restoreStyles=false;if(forceIt&&jQuery.curCSS(e,"display")=="none"){var oldVisibility=es.visibility;var oldPosition=es.position;restoreStyles=true;es.visibility="hidden";es.display="block";es.position="absolute"}var el=e;if(el.getBoundingClientRect){var box=el.getBoundingClientRect();x=box.left+Math.max(document.documentElement.scrollLeft,document.body.scrollLeft)-2;y=box.top+Math.max(document.documentElement.scrollTop,document.body.scrollTop)-2}else{x=el.offsetLeft;y=el.offsetTop;el=el.offsetParent;if(e!=el){while(el){x+=el.offsetLeft;y+=el.offsetTop;el=el.offsetParent}}if(jQuery.browser.safari&&jQuery.curCSS(e,"position")=="absolute"){x-=document.body.offsetLeft;y-=document.body.offsetTop}el=e.parentNode;while(el&&el.tagName.toUpperCase()!="BODY"&&el.tagName.toUpperCase()!="HTML"){if(jQuery.curCSS(el,"display")!="inline"){x-=el.scrollLeft;y-=el.scrollTop}el=el.parentNode}}if(restoreStyles==true){es.display="none";es.position=oldPosition;es.visibility=oldVisibility}return{x:x,y:y}},getSize:function(e){var w=parseInt(jQuery.curCSS(e,"width"),10);var h=parseInt(jQuery.curCSS(e,"height"),10);var wb=0;var hb=0;if(jQuery.curCSS(e,"display")!="none"){wb=e.offsetWidth;hb=e.offsetHeight}else{var es=e.style;var oldVisibility=es.visibility;var oldPosition=es.position;es.visibility="hidden";es.display="block";es.position="absolute";wb=e.offsetWidth;hb=e.offsetHeight;es.display="none";es.position=oldPosition;es.visibility=oldVisibility}return{w:w,h:h,wb:wb,hb:hb}},getClient:function(e){var h,w;if(e){w=e.clientWidth;h=e.clientHeight}else{var de=document.documentElement;w=window.innerWidth||self.innerWidth||(de&&de.clientWidth)||document.body.clientWidth;h=window.innerHeight||self.innerHeight||(de&&de.clientHeight)||document.body.clientHeight}return{w:w,h:h}},getScroll:function(e){var t=0,l=0,w=0,h=0,iw=0,ih=0;if(e&&e.nodeName.toLowerCase()!="body"){t=e.scrollTop;l=e.scrollLeft;w=e.scrollWidth;h=e.scrollHeight}else{if(document.documentElement){t=document.documentElement.scrollTop;l=document.documentElement.scrollLeft;w=document.documentElement.scrollWidth;h=document.documentElement.scrollHeight}else{if(document.body){t=document.body.scrollTop;l=document.body.scrollLeft;w=document.body.scrollWidth;h=document.body.scrollHeight}}if(typeof pageYOffset!="undefined"){t=pageYOffset;l=pageXOffset}iw=self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;ih=self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0}return{t:t,l:l,w:w,h:h,iw:iw,ih:ih}},getMargins:function(e,toInteger){var t=jQuery.curCSS(e,"marginTop")||"";var r=jQuery.curCSS(e,"marginRight")||"";var b=jQuery.curCSS(e,"marginBottom")||"";var l=jQuery.curCSS(e,"marginLeft")||"";if(toInteger){return{t:parseInt(t,10)||0,r:parseInt(r,10)||0,b:parseInt(b,10)||0,l:parseInt(l,10)}}else{return{t:t,r:r,b:b,l:l}}},getPadding:function(e,toInteger){var t=jQuery.curCSS(e,"paddingTop")||"";var r=jQuery.curCSS(e,"paddingRight")||"";var b=jQuery.curCSS(e,"paddingBottom")||"";var l=jQuery.curCSS(e,"paddingLeft")||"";if(toInteger){return{t:parseInt(t,10)||0,r:parseInt(r,10)||0,b:parseInt(b,10)||0,l:parseInt(l,10)}}else{return{t:t,r:r,b:b,l:l}}},getBorder:function(e,toInteger){var t=jQuery.curCSS(e,"borderTopWidth")||"";var r=jQuery.curCSS(e,"borderRightWidth")||"";var b=jQuery.curCSS(e,"borderBottomWidth")||"";var l=jQuery.curCSS(e,"borderLeftWidth")||"";if(toInteger){return{t:parseInt(t,10)||0,r:parseInt(r,10)||0,b:parseInt(b,10)||0,l:parseInt(l,10)||0}}else{return{t:t,r:r,b:b,l:l}}},traverseDOM:function(nodeEl,func){func(nodeEl);nodeEl=nodeEl.firstChild;while(nodeEl){EYE.traverseDOM(nodeEl,func);nodeEl=nodeEl.nextSibling}},getInnerWidth:function(el,scroll){var offsetW=el.offsetWidth;return scroll?Math.max(el.scrollWidth,offsetW)-offsetW+el.clientWidth:el.clientWidth},getInnerHeight:function(el,scroll){var offsetH=el.offsetHeight;return scroll?Math.max(el.scrollHeight,offsetH)-offsetH+el.clientHeight:el.clientHeight},getExtraWidth:function(el){if($.boxModel){return(parseInt($.curCSS(el,"paddingLeft"))||0)+(parseInt($.curCSS(el,"paddingRight"))||0)+(parseInt($.curCSS(el,"borderLeftWidth"))||0)+(parseInt($.curCSS(el,"borderRightWidth"))||0)}return 0},getExtraHeight:function(el){if($.boxModel){return(parseInt($.curCSS(el,"paddingTop"))||0)+(parseInt($.curCSS(el,"paddingBottom"))||0)+(parseInt($.curCSS(el,"borderTopWidth"))||0)+(parseInt($.curCSS(el,"borderBottomWidth"))||0)}return 0},isChildOf:function(parentEl,el,container){if(parentEl==el){return true}if(!el||!el.nodeType||el.nodeType!=1){return false}if(parentEl.contains&&!$.browser.safari){return parentEl.contains(el)}if(parentEl.compareDocumentPosition){return !!(parentEl.compareDocumentPosition(el)&16)}var prEl=el.parentNode;while(prEl&&prEl!=container){if(prEl==parentEl){return true}prEl=prEl.parentNode}return false},centerEl:function(el,axis){var clientScroll=EYE.getScroll();var size=EYE.getSize(el);if(!axis||axis=="vertically"){$(el).css({top:clientScroll.t+((Math.min(clientScroll.h,clientScroll.ih)-size.hb)/2)+"px"})}if(!axis||axis=="horizontally"){$(el).css({left:clientScroll.l+((Math.min(clientScroll.w,clientScroll.iw)-size.wb)/2)+"px"})}}});if(!$.easing.easeout){$.easing.easeout=function(p,n,firstNum,delta,duration){return -delta*((n=n/duration-1)*n*n*n-1)+firstNum}}})(jQuery);

(function($){EYE.extend({zoomimage:{libs:{},types:/\.jpg|\.jpeg|\.png|\.gif|\.bmp/g,current:null,moved:false,pointer:{x:0,y:0},diff:{x:0,y:0},trackKey:false,defaults:{opacity:0.3,border:0,shadow:6,duration:300,prevent:14,controls:true,caption:true,hideSource:false,centered:false,className:false,onLoad:function(){return false},beforeZoomIn:function(){return false},onZoomIn:function(){return false},beforeZoomOut:function(){return false},onZoomOut:function(){return false},onFocus:function(){return false},controlsTrigger:"focus",easing:"linear",preload:"click"},template:['<div class="zoomimage">','<div class="zoomimage_s">','<div class="zoomimage_st">','<div class="zoomimage_stl"></div>','<div class="zoomimage_stc"></div>','<div class="zoomimage_str"></div>',"</div>",'<div class="zoomimage_sc">','<div class="zoomimage_scl"></div>','<div class="zoomimage_scc"></div>','<div class="zoomimage_scr"></div>',"</div>",'<div class="zoomimage_sb">','<div class="zoomimage_sbl"></div>','<div class="zoomimage_sbc"></div>','<div class="zoomimage_sbr"></div>',"</div>","</div>",'<img src="" />','<div class="zoomimage_controls">','<a href="#" class="zoomimage_prev"></a>','<a href="#" class="zoomimage_next"></a>',"</div>",'<div class="zoomimage_caption"></div>','<div class="zoomimage_loading"></div>',"</div>"],click:function(e){var el=this;el.blur();if(el.zoomimageCfg.loading===true){return false}if(el.zoomimageCfg.zoomed==false){EYE.zoomimage.zoomIn(el)}else{EYE.zoomimage.zoomOut(el,false)}return false},zoomIn:function(el){if(el.zoomimageCfg.loaded===false){if(el.zoomimageCfg.loading!=true){el.zoomimageCfg.loading=true;EYE.zoomimage.preload(el)}return}if(el.zoomimageCfg.zoomed==true){EYE.zoomimage.focus(el);return}el.zoomimageCfg.beforeZoomIn.apply(el,[el.zoomimageCfg.box]);var elPos=EYE.getPosition(el,true);var elHeight=el.offsetHeight;var elWidth=el.offsetWidth;var pos=EYE.getScroll();var borderAndShadow=el.zoomimageCfg.border+el.zoomimageCfg.shadow;var width=el.zoomimageCfg.width+borderAndShadow*2;var height=el.zoomimageCfg.height+borderAndShadow*2;var screenRatio=pos.iw/pos.ih;var imageRatio=el.zoomimageCfg.width/el.zoomimageCfg.height;if(screenRatio>imageRatio){if(height>pos.ih){height=pos.ih;width=parseInt(height*imageRatio,10)}}else{if(width>pos.iw){width=pos.iw;height=parseInt(width/imageRatio,10)}}var top=el.zoomimageCfg.centered?pos.t+parseInt((pos.ih-height)/2,10):Math.min(Math.max(pos.t,elPos.y+(elHeight-height)/2-borderAndShadow),pos.t+pos.ih-height);var left=el.zoomimageCfg.centered?pos.l+parseInt((pos.iw-width)/2,10):Math.min(Math.max(pos.l,elPos.x+(elWidth-width)/2-borderAndShadow),pos.l+pos.iw-width);var imgWidth=width-borderAndShadow*2;var imgHeight=height-borderAndShadow*2;if(el.zoomimageCfg.hideSource===true){el.style.visibility="hidden"}$("#"+el.zoomimageCfg.box).css({top:elPos.y+"px",left:elPos.x+"px",width:elWidth+"px",height:elHeight+"px"}).find(">div").hide().end().find("img").attr("src",el.zoomimageCfg.src).css({top:0,left:0,width:"100%",height:"100%",display:"block",borderWidth:"0px"}).end().animate({width:imgWidth,height:imgHeight,top:top+borderAndShadow,left:left+borderAndShadow},el.zoomimageCfg.duration,el.zoomimageCfg.easing,function(){$(this).css({top:top+"px",left:left+"px",width:width+"px",height:height+"px"}).find("img").css({top:el.zoomimageCfg.shadow+"px",left:el.zoomimageCfg.shadow+"px",width:imgWidth+"px",height:imgHeight+"px",borderWidth:el.zoomimageCfg.border+"px"}).end().find(">div:first").find("div.zoomimage_sc").css("height",height-el.zoomimageCfg.shadow*2+"px").end().show();el.zoomimageCfg.zoomed=true;EYE.zoomimage.focus(el);el.zoomimageCfg.onZoomIn.apply(el,[el.zoomimageCfg.box])})},showControls:function(el){if(el==undefined){return}if(el.zoomimageCfg==undefined){el=$("#"+$(el).attr("zoomimage")).get(0)}var height,imgWidth,borderAndShadow=el.zoomimageCfg.border+el.zoomimageCfg.shadow;$("#"+el.zoomimageCfg.box).find("img").each(function(){imgWidth=parseInt($.curCSS(this,"width"),10)}).end().get(0).zoomimageControls=true;if(el.zoomimageCfg.caption){$("#"+el.zoomimageCfg.box).find(">div:eq(2)").stop().css({bottom:borderAndShadow+"px",left:borderAndShadow+"px",width:imgWidth+"px"}).show().each(function(){this.style.height="auto";height=this.offsetHeight;this.style.height="0"}).animate({height:height},el.zoomimageCfg.duration)}if(el.zoomimageCfg.controls){if(EYE.zoomimage.libs[el.zoomimageCfg.lib]>1){$("#"+el.zoomimageCfg.box).find(">div:eq(1)").show().each(function(){if(!el.zoomimageCfg.controlsHeight){el.zoomimageCfg.controlsHeight=this.offsetHeight}this.style.height="0"}).css({top:borderAndShadow+"px",left:borderAndShadow+"px",width:imgWidth+"px"}).animate({height:el.zoomimageCfg.controlsHeight},el.zoomimageCfg.duration)}}},zoomOut:function(el,goToNext){var boxEl,elPos,borderAndShadow,elSize;if(el.zoomimageCfg){if(el.zoomimageCfg.zoomed===false){return}el.zoomimageCfg.beforeZoomOut.apply(el,[el.zoomimageCfg.box]);boxEl=document.getElementById(el.zoomimageCfg.box)}else{boxEl=el;el=$("a[href="+$("img",boxEl).attr("src")+"]").get(0)}if(el){elPos=EYE.getPosition(el,true);el.zoomimageCfg.zoomed=false;borderAndShadow=el.zoomimageCfg.border+el.zoomimageCfg.shadow;elSize={width:el.offsetWidth,height:el.offsetHeight}}else{borderAndShadow=EYE.zoomimage.defaults.border+EYE.zoomimage.defaults.shadow;elSize={width:0,height:0};elPos=EYE.getPosition(boxEl,true);elPos.y+=parseInt(boxEl.offsetHeight/2,10);elPos.x+=parseInt(boxEl.offsetWidth/2,10)}$(boxEl).css({top:boxEl.offsetTop+borderAndShadow+"px",left:boxEl.offsetLeft+borderAndShadow+"px",width:boxEl.offsetWidth-borderAndShadow*2+"px",height:boxEl.offsetHeight-borderAndShadow*2+"px"}).find(">div").stop().hide().end().find("img").css({top:0,left:0,width:"100%",height:"100%",borderWidth:"0px"}).end().animate({top:elPos.y+"px",left:elPos.x+"px",width:elSize.width+"px",height:elSize.height+"px"},el?el.zoomimageCfg.duration:EYE.zoomimage.defaults.duration,el.zoomimageCfg.easing,function(){EYE.zoomimage.blur();$(this).hide();if(el){if(el.zoomimageCfg.hideSource===true){el.style.visibility="visible"}el.zoomimageCfg.onZoomOut.apply(el,[el.zoomimageCfg.box]);if(!goToNext){EYE.zoomimage.focus($("div.zoomimage:visible:last").not(":animated").get(0))}}else{$(boxEl).stop().remove()}})},mouseOver:function(e){var triggerEl=document.getElementById($(this).attr("zoomimage"));if(triggerEl.zoomimageCfg.zoomed===true&&this.zoomimageControls==false){EYE.zoomimage.showControls(triggerEl)}return false},mouseOut:function(e){if(!EYE.isChildOf(this,e.relatedTarget,this)){$(this).find(">div:not(:first)").stop().hide();this.zoomimageControls=false}return false},mouseDown:function(e){var triggerEl=document.getElementById($(this).attr("zoomimage"));if(triggerEl){$.extend(EYE.zoomimage,{current:this,prevent:triggerEl.zoomimageCfg.prevent,moved:false,diff:{x:e.pageX-this.offsetLeft,y:e.pageY-this.offsetTop},pointer:{x:e.pageX,y:e.pageY}});$(document).bind("mousemove",EYE.zoomimage.mouseMove).bind("mouseup",EYE.zoomimage.mouseUp)}else{$(this).zoomimageClear()}return false},mouseMove:function(e){var diffX=Math.abs(EYE.zoomimage.pointer.x-e.pageX);var diffY=Math.abs(EYE.zoomimage.pointer.y-e.pageY);if(EYE.zoomimage.moved===false){if(diffX>EYE.zoomimage.prevent||diffY>EYE.zoomimage.prevent){EYE.zoomimage.moved=true;$(EYE.zoomimage.current).addClass("zoomimage_move");if(!$(EYE.zoomimage.current).is(".zoomimage_focused")){EYE.zoomimage.focus(EYE.zoomimage.current)}}}else{EYE.zoomimage.current.style.top=e.pageY-EYE.zoomimage.diff.y+"px";EYE.zoomimage.current.style.left=e.pageX-EYE.zoomimage.diff.x+"px"}return false},mouseUp:function(e){$(EYE.zoomimage.current).removeClass("zoomimage_move");EYE.zoomimage.current=null;$(document).unbind("mousemove",EYE.zoomimage.mouseMove).unbind("mouseup",EYE.zoomimage.mouseUp);return false},imageClick:function(e){$(document).unbind("mousemove",EYE.zoomimage.mouseMove).unbind("mouseup",EYE.zoomimage.mouseUp);var el=document.getElementById($(this).attr("zoomimage"));if(el){if(EYE.zoomimage.moved===false&&$(this).is(".zoomimage_focused")){if($(e.target).is("a")){EYE.zoomimage.zoomNext(el,e.target.className=="zoomimage_next"?1:-1);var goToNext=true}else{EYE.zoomimage.zoomOut(el,goToNext||false)}}else{if(!$(this).is(".zoomimage_focused")){EYE.zoomimage.focus(this)}}}else{$(this).zoomimageClear()}return false},clear:function(){var subject=this;if(subject.size()==0){subject=$("div.zoomimage")}return subject.each(function(){var triggerEl=document.getElementById($(this).attr("zoomimage"));if(triggerEl){EYE.zoomimage.zoomOut(triggerEl,false)}else{EYE.zoomimage.zoomOut(this,false)}})},zoomNext:function(el,dir){if(el.zoomimageCfg.zoomed===false){return}EYE.zoomimage.zoomOut(el,true);var nextImg=el.zoomimageCfg.iteration+dir;var lib=$(el).attr("zoomimage");var maxImg=EYE.zoomimage.libs[lib];if(nextImg<0){nextImg=maxImg-1}else{if(nextImg>=maxImg){nextImg=0}}EYE.zoomimage.zoomIn($('a[zoomimage="'+lib+'"]').get(nextImg))},keyPressed:function(e){var el=$("div.zoomimage_focused");if(el.size()==1){var pressedKey=e.charCode||e.keyCode||-1;el=$("#"+$(el).attr("zoomimage")).get(0);var lib=$(el).attr("zoomimage");switch(pressedKey){case 35:if(EYE.zoomimage.libs[lib]>1&&EYE.zoomimage.libs[lib]-1!=el.zoomimageCfg.iteration){EYE.zoomimage.zoomNext(el,EYE.zoomimage.libs[lib]-el.zoomimageCfg.iteration-1);return false}break;case 36:if(EYE.zoomimage.libs[lib]>1&&el.zoomimageCfg.iteration!=0){EYE.zoomimage.zoomNext(el,-el.zoomimageCfg.iteration);return false}break;case 40:case 37:case 8:case 33:case 80:case 112:if(EYE.zoomimage.libs[lib]>1){EYE.zoomimage.zoomNext(el,-1);return false}break;case 38:case 39:case 34:case 32:case 110:case 78:if(EYE.zoomimage.libs[lib]>1){EYE.zoomimage.zoomNext(el,1);return false}break;case 27:EYE.zoomimage.zoomOut(el,false);return false;break}}},focus:function(el){if(el==undefined){return}if(el.zoomimageCfg==undefined){el=$("#"+$(el).attr("zoomimage")).get(0)}else{var showControls=true}EYE.zoomimage.blur(el);$("#"+el.zoomimageCfg.box).not(".zoomimage_focused").addClass("zoomimage_focused");el.zoomimageCfg.onFocus.apply(el,[el.zoomimageCfg.box]);if(el.zoomimageCfg.controlsTrigger=="focus"||showControls){EYE.zoomimage.showControls(el)}},blur:function(el){$("div.zoomimage_focused").not("#"+(el==undefined?"fakezoomimage":el.zoomimageCfg.box)).removeClass("zoomimage_focused").each(function(){this.zoomimageControls=false}).find(">div:not(:first)").stop().hide()},preload:function(el){var boxEl=$("#"+el.zoomimageCfg.box).show();boxEl.find(">div, img").hide();var elPos=EYE.getPosition(el,true);boxEl.find(">div:last").show().end().css({top:elPos.y+"px",left:elPos.x+"px",width:el.offsetWidth+"px",height:el.offsetHeight+"px"});var preld=new Image();preld.src=el.href;if(preld.complete){EYE.zoomimage.markPreloaded(preld,el)}else{preld.onload=function(){EYE.zoomimage.markPreloaded(preld,el)}}},markPreloaded:function(preld,el){$.extend(el.zoomimageCfg,{loaded:true,width:preld.width,height:preld.height,src:preld.src});$("#"+el.zoomimageCfg.box).find("div.zoomimage_loading").hide();if(el.zoomimageCfg.loading){el.zoomimageCfg.loading=false;EYE.zoomimage.zoomIn(el)}el.zoomimageCfg.onLoad.apply(el,[el.zoomimageCfg.box])},init:function(opt){var libKey=parseInt(Math.random()*2000,10);EYE.zoomimage.libs[libKey]=0;opt=$.extend({lib:libKey},EYE.zoomimage.defaults,opt||{});return this.each(function(){var jQEl=$(this);var el=this;if(el.href&&el.href.toLowerCase().match(EYE.zoomimage.types)!=null){el.zoomimageCfg=$.extend({},opt,{zoomed:false,loading:false,loaded:false,animated:false,src:el.href,iteration:EYE.zoomimage.libs[libKey],box:"zoomimage_"+parseInt(Math.random()*2000,10)+""});EYE.zoomimage.libs[libKey]++;jQEl.bind("click",EYE.zoomimage.click).attr("zoomimage",libKey).attr("zoomimageBox",el.zoomimageCfg.box);var currId=jQEl.attr("id");if(!currId){currId=el.zoomimageCfg.box+"_trigger";jQEl.attr("id",currId)}var titleAttr=$(el).attr("title");if(titleAttr==""||titleAttr==false){el.zoomimageCfg.caption=false}$(EYE.zoomimage.template.join("")).attr("id",el.zoomimageCfg.box).attr("zoomimage",currId).addClass(el.zoomimageCfg.className).appendTo(document.body).bind("mousedown",EYE.zoomimage.mouseDown).bind("click",EYE.zoomimage.imageClick).each(function(){this.zoomimageControls=false;if(el.zoomimageCfg.controlsTrigger!="focus"){$(this).bind("mouseover",EYE.zoomimage.mouseOver).bind("mouseout",EYE.zoomimage.mouseOut)}}).find(">div").not(":first").css("opacity",el.zoomimageCfg.opacity).end().filter("div:eq(2)").html("<p>"+titleAttr+"</p>");if(el.zoomimageCfg.preload=="load"){EYE.zoomimage.preload(el)}if(EYE.zoomimage.trackKey===false){EYE.zoomimage.trackKey=true;$(document).bind("keydown",EYE.zoomimage.keyPressed)}}})}}});$.fn.extend({zoomimage:EYE.zoomimage.init,zoomimageClear:EYE.zoomimage.clear})})(jQuery);



/**
 * Steal HREF v1.0
 * Released under CC-BY-SA http://creativecommons.org/licenses/by-sa/2.5/se/
 */
(function($){$.fn.steal_href=function(options){var config={index:0};if(options)$.extend(config,options);this.each(function(){var t=$(this);var href=t.find('a').eq(config.index).attr('href');t.click(function(){window.location=href;});});return this;};})(jQuery);


$(document).ready(function() {
	/**
	 * Menu déroulant pour le menu par catégories
	 *
	 * @author Benjamin Danon
	 */
	$('.nav-menu2').coteodropdownmenu();
	
	/**
	 * Menu accordéon pour le menu géographique
	 *
	 * @author Benjamin Danon
	 */
	$('.boutonArrondissement').coteoaccordionmenu();
	
	/**
	 * Surlignage des catégories
	 *
	 * @author Benjamin Danon
	 */
	$('li.actif').parents('li').not('.menu').addClass('actif');

	/**
	 * Menu des bassins de vie
	 *
	 * @author	Jean-philippe Lannoy
	 */
	$('#menuBDV>ul').hover(
		function () {
			$(this).css('height', 'auto').css('overflow', 'visible');
		},
		function () {
			$(this).css('height', '24px').css('overflow', 'hidden');
		}
	);

	$('#menuBDV>ul>li').hover(
		function () {
			$(this).css('background-color', '#5E8CAB');
			$(this).children('.bulleInfoBDV').show();
		},
		function () {
			$(this).css('background-color', '#09425D');
			$(this).children('.bulleInfoBDV').hide();
		}
	);

	// permet de rendre cliquable l'élément parent d'une ancre
	$('.steal').steal_href();
	
	
	/**
	 * Menu géographique en onglets
	 *
	 * @author	Jean-philippe Lannoy
	 */
	var dptId2Index = new Array();
	dptId2Index[37501] = 0;
	dptId2Index[37500] = 1;
	dptId2Index[37504] = 2;
	dptId2Index[37562] = 3;
	dptId2Index[37581] = 4;
	// côte d'opale
	dptId2Index[37502] = 0;
	// grand-lille
	dptId2Index[37632] = 0;
	// flandres
	dptId2Index[37629] = 0;
	// hainaut
	dptId2Index[37630] = 0;
	// artois
	dptId2Index[37631] = 0;
	
	if (typeof idDpt != "undefined")
		var initialTabIndex = dptId2Index[idDpt];
	else
		var initialTabIndex = -1;
		
	if (typeof initialTabIndex == "undefined") initialTabIndex = -1;
	
	// les arrondissements on été cachés avec du CSS pour éviter qu'ils ne s'affichent tous au chargement de la page (et donc avant l'éxécution du code ci-dessous)
	$(".menuArrondissements").show();
		
	// Malheureusement fade ne fonctionne pas, si il est activé tous les onglets sont ouverts au chargement de la page sans raison précise
	$("#menuDpt").tabs(".menuArrondissements",
					   {event:'mouseover',
					    tabs: 'li',
	//					effect: 'fade',
	   					initialIndex: initialTabIndex,
					   	onBeforeClick: function(event, tabIndex) {
	       					$(".boutonArrondissement ul").hide();
	   					}
					   });
					   
	
	/**
	 * Initialisation des bulles d'aide
	 * 
	 * @author	Jean-philippe Lannoy
	 */	
	jQuery('.iconeAide').bt({
		ajaxPath: ["'/index/bulle-aide/nom/'+$(this).attr('name')"],
		ajaxLoading: '&nbsp;<img src="/images/ajax-loader.gif" />&nbsp;',
		ajaxCache: false,
		shadow: true,
		width: '250px',
		shrinkToFit: true,
		hoverIntentOpts: {
			interval: 0, // apparition
			timeout: 1000 // disparition
		}
	});
	
	/**
	 * Formulaire de contact (Boxy)
	 *
	 * @author Benjamin Danon
	 */
	$('.lien-formulaire-contact').each(function() {
		var a = $(this);
		var id_string = a.attr('id');
		var id = id_string.substring(0, id_string.indexOf('-'));
		var section = id_string.substring(id_string.indexOf('-') + 1);
		var href = BASEURL + '/' + section + '/contact/id/' + id;
		a.attr('href', href);
	}).click(function() {
		//$('body').addClass('progress');
	}).boxy({
		title: 'Formulaire de contact',
		closeText: 'fermer',
		afterShow: function() {
			var boxy_object = $(this);
			var boxy_dom = $(this.boxy);
			//$('body').removeClass('progress');
			boxy_dom.find('.formulaire-contact').submit(function() {
				var hasError = false;
				var emailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
				var form = $(this);
				var action = form.attr('action');
				var id_val = form.find('#id').val();
				var nom_val = form.find('#nom').val();
				var email_val = form.find('#email').val();
				var message_val = form.find('#message').val();
				if (nom_val == '') {
					alert('Veuillez saisir votre nom.');
					hasError = true;
				}
				if (email_val == '' || !emailRegex.test(email_val)) {
					alert('Veuillez saisir une adresse e-mail valide.');
					hasError = true;
				}
				if (message_val == '') {
					alert('Veuillez saisir votre message.');
					hasError = true;
				}
				if (hasError == false) {
					//$('body').addClass('progress');
					$.post(action, {id: id_val, nom: nom_val, email: email_val, message: message_val}, function(data) {
						$('body').removeClass('progress');
						if (data) {
							alert(data);
						} else {
							boxy_dom.hide();
							alert('Le message a été envoyé.');
						}
					});
				}
				return false;
			});
		}
	});
	
	$('.btnBDV').hover(
		function() {
			$(this).attr('src', BASEURL + '/images/bdv/' + $(this).attr('id') + '-over.png');
		},
		function() {
			$(this).attr('src', BASEURL + '/images/bdv/' + $(this).attr('id') + '.png');
		}
	);
	
	//onclick="changeFormEmail('l\'organisateur de l\'événement <b>« <?= str_replace("'", "\\'", $this->ev['titre']) ?> »</b>');"
	
	/**
	 * Ajouter aux favoris
	 *
	 * @author Benjamin Danon
	 */
	$('a.bookmark').click(function(e) {
		if ($.browser.opera == false) {
			e.preventDefault();
			var url = window.location.href;
			var title = window.document.title;
			if ($.browser.msie == true) {
				window.external.AddFavorite(url, title);
				return false;
			} else if ($.browser.mozilla == true) {
				window.sidebar.addPanel(title, url, '');
				return false;
			}
		}
	});
}) ;

function changeFormEmail(titre)
{
	$('#p_formulaire_envoi_email_nom').html(titre);
}

function vignettesZoom()
{
	// on attaches à toutes les vignettes la fonction de zoom
	$('a.thumbnail').zoomimage({controls:false,caption:false,duration:500,centered:true,beforeZoomIn:function(){$(this).addClass('active')},onZoomOut:function(){$(this).removeClass('active')}});
}


/*
--- fonction serialize et unserialize ---
auteur : XoraX
email : xxorax@gmail.com
info : http://www.xorax.info/blog/programmation/40-javascript-serialize-php.html
version : 1.2 - 2007/04/23

ChangeLog:
----------
1.2 : ajout du support pour la sérialization d'Object php (case "O") + maj de la page de test
1.1 : fix bug dans unserialize sur boolean 

Description:
------------
permet de décoder la chaine revoyé par la fonction serialize php.
ne prend pas (encore?) en compte les objects.
*/

function serialize (txt) {
	switch(typeof(txt)){
	case 'string':
		return 's:'+txt.length+':"'+txt+'";';
	case 'number':
		if(txt>=0 && String(txt).indexOf('.') == -1 && txt < 65536) return 'i:'+txt+';';
		return 'd:'+txt+';';
	case 'boolean':
		return 'b:'+( (txt)?'1':'0' )+';';
	case 'object':
		var i=0,k,ret='';
		for(k in txt){
			//alert(isNaN(k));
			if(!isNaN(k)) k = Number(k);
			ret += serialize(k)+serialize(txt[k]);
			i++;
		}
		return 'a:'+i+':{'+ret+'}';
	default:
		return 'N;';
		alert('var undefined: '+typeof(txt));return undefined;
	}
}

function unserialize(txt){
	var level=0,arrlen=new Array(),del=0,final=new Array(),key=new Array(),save=txt;
	while(1){
		switch(txt.substr(0,1)){
		case 'N':
			del = 2;
			ret = null;
		break;
		case 'b':
			del = txt.indexOf(';')+1;
			ret = (txt.substring(2,del-1) == '1')?true:false;
		break;
		case 'i':
			del = txt.indexOf(';')+1;
			ret = Number(txt.substring(2,del-1));
		break;
		case 'd':
			del = txt.indexOf(';')+1;
			ret = Number(txt.substring(2,del-1));
		break;
		case 's':
			del = txt.substr(2,txt.substr(2).indexOf(':'));
			ret = txt.substr( 1+txt.indexOf('"'),del);
			del = txt.indexOf('"')+ 1 + ret.length + 2;
		break;
		case 'a':
			del = txt.indexOf(':{')+2;
			ret = new Array();
			arrlen[level+1] = Number(txt.substring(txt.indexOf(':')+1, del-2))*2;
		break;
		case 'O':
			txt = txt.substr(2);
			var tmp = txt.indexOf(':"')+2;
			var nlen = Number(txt.substring(0, txt.indexOf(':')));
			name = txt.substring(tmp, tmp+nlen );
			//alert(name);
			txt = txt.substring(tmp+nlen+2);
			del = txt.indexOf(':{')+2;
			ret = new Object();
			arrlen[level+1] = Number(txt.substring(0, del-2))*2;
		break;
		case '}':
			txt = txt.substr(1);
			if(arrlen[level] != 0){alert('var missed : '+save); return undefined;};
			//alert(arrlen[level]);
			level--;
		continue;
		default:
			if(level==0) return final;
			alert('syntax invalid(1) : '+save+"\nat\n"+txt+"level is at "+level);
			return undefined;
		}
		if(arrlen[level]%2 == 0){
			if(typeof(ret) == 'object'){alert('array index object no accepted : '+save);return undefined;}
			if(ret == undefined){alert('syntax invalid(2) : '+save);return undefined;}
			key[level] = ret;
		} else {
			var ev = '';
			for(var i=1;i<=level;i++){
				if(typeof(key[i]) == 'number'){
					ev += '['+key[i]+']';
				}else{
					ev += '["'+key[i]+'"]';
				}
			}
			eval('final'+ev+'= ret;');
		}
		arrlen[level]--;//alert(arrlen[level]-1);
		if(typeof(ret) == 'object') level++;
		txt = txt.substr(del);
		continue;
	}
}

var villes = new Array();
var images = new Array();
var ents = new Array();
var timer;

/**
 * Recherche ville dans le formulaire d'ajout d'événement
 *
 * @author	Jean-philippe Lannoy
 */
function rechercherVille()
{
	var rech = $("#rech_ville").val();
	if (rech) {
		$.ajax({
			url: BASEURL + "/agenda/rechercher-ville/format/json/rech/"+rech,
			dataType: 'json',
			beforeSend: function() {
				$("#v_regider_evenement_villes_trouvees").html('<div style="text-align:center; margin-top:15px;"><img src="'+BASEURL+'/images/ajax-loader.gif" /></div>');
			},
			success: function(data) {
				// le JSON est automatiquement converti en données, ici le tableau villes
				villes_html = '';
				if (!data.villes.length) villes_html = '<i>Aucun résultat</i>';
				$.each(data.villes, function(i, ville) {
					villes_html += '<a href="#null" onclick="definirVille(' + ville.id + ', 1, \'' + ville.nom.replace("'", "\\'") + '\', \'' + ville.codepostal + '\');" class="nounderline"><img src="'+BASEURL+'/images/add_ville.png" border="0" align="absmiddle" />&nbsp;&nbsp;<span class="underline">' + ville.nom + ' - ' + ville.codepostal + '</span></a><br />';
				});
				// espace insécable pour éviter que la div soit vide
				$("#v_regider_evenement_villes_trouvees").html(villes_html + '&nbsp;');
			}
		});
	}
}	
	
/**
 * Ajouter ou supprimer une ville de la sélection
 *
 * @author	Jean-philippe Lannoy
 */
function definirVille(id, ajouter, nom, codepostal)
{
	var indice = 0;
	// on cherche l'indice de la ville si elle est dans la tableau
	for (var cle in villes) {
		if (villes[cle][0] == id) {
			indice = cle;
		}
	}
	// on l'ajoute ou la supprime
	if (ajouter) {
		if (!indice){
			villes.push(new Array(id, nom, codepostal));
		}
	} else {
		villes.splice(indice, 1);
	}
	var html = '';
	for (var cle in villes) {
		html += '<a href="#null" onclick="definirVille(' + villes[cle][0] + ', 0, 0, 0);" class="nounderline"><img src="'+BASEURL+'/images/del_ville.png" border="0" align="absmiddle" />&nbsp;&nbsp;<span class="underline">' + villes[cle][1] + ' - ' + villes[cle][2] + '</span></a><br />';
	}
	$("#v_regider_evenement_villes_choisies").html(html);
	$("#villes").val(serialize(villes));
}

/**
 * Clic sur le bouton recherche entreprise dans le formulaire d'ajout d'événement
 *
 * @author	Jean-philippe Lannoy
 */
function rechercherEnt()
{
	var rech = $("#rech_ent").val();
	if (rech) {
		$.ajax({
			url: BASEURL + "/agenda/rechercher-entreprise/format/json/rech/"+rech,
			dataType: 'json',
			beforeSend: function() {
				$("#v_regider_evenement_ent_trouvees").html('<div style="text-align:center; margin-top:15px;"><img src="'+BASEURL+'/images/ajax-loader.gif" /></div>');
			},
			success: function(data) {
				// le JSON est automatiquement converti en données, ici le tableau ents
				ents_html = '';
				if (!data.ents.length) ents_html = '<i>Aucun résultat</i>';
				$.each(data.ents, function(i, ent) {
					ents_html += '<a href="#null" id="lienEnt' + ent.id + '" onclick="choisirEnt(' + ent.id + ');" class="nounderline"><img src="'+BASEURL+'/images/add_ville.png" border="0" align="absmiddle" />&nbsp;&nbsp;<span class="underline">' + ent.nom + '</span></a><br />';
				});
				$("#v_regider_evenement_ent_trouvees").html(ents_html);
				// utilisé pour la modif, si un id est déjà présent on sélectionne la bonne entreprise de la liste
				var idEnt = $("#id_ent").val();
				if (idEnt) choisirEnt(idEnt);
			}
		});
	}
}

/**
 * Choisir une entreprise
 *
 * @author	Jean-philippe Lannoy
 */
function choisirEnt(id)
{
	$.ajax({
		url: BASEURL + "/agenda/donnees-entreprise/format/json/id/"+id,
		dataType: 'json',
		beforeSend: function() {
			$("#coordonnees input[type='text']").map(function () {
				var nomCb = "#ver_" + $(this).attr('name');
				// uniquement si coché
				if ($(nomCb).is(":checked"))
					$(this).val('Chargement ...');
			});
		},
		success: function(data) {
			data.donnees['url1'] = data.donnees['site'];
			data.donnees['url2'] = data.donnees['lien1'];
			data.donnees['url3'] = data.donnees['lien2'];
			data.donnees['url4'] = data.donnees['lien3'];
			$("#coordonnees input[type='text']").map(function () {
				var cle = $(this).attr('name');
				var nomCb = "#ver_" + cle;
				// uniquement si coché
				if ($(nomCb).is(":checked")) {
					if (data.donnees[cle])
						$(this).val(data.donnees[cle]);
					else
						$(this).val('');
				}				
			});
			$('#v_regider_evenement_ent_choisie').html('<img src="' + BASEURL + '/images/ok.png">&nbsp;' + data.donnees['nom'] + ' - <img src="' + BASEURL + '/images/del_ville.png">&nbsp;<a href="#null" id="v_regider_evenement_ent_annuler">Annuler</a>');

			$('#v_regider_evenement_ent_annuler').click(function () {
				$('#v_regider_evenement_ent_choisie').html('');
				$("#v_regider_evenement_ent_trouvees").html('<i>Aucune</i>');
				$("#id_ent").val(0);
			});
		}
	});
	
	$("#id_ent").val(id);
	// appel d'une fonction de mapping pour tous les liens du div
	$("#v_regider_evenement_ent_trouvees a").map(function (index) {
		$(this).css('color', '#777777').css('font-weight', 'normal');
	});
	// mise en valeur de l'ent choisie
	$('#lienEnt'+id).css('font-weight', 'bold').css('color', '#000000');
}


/**
 * Ajouter ou supprimer une image de la sélection
 *
 * @author	Jean-philippe Lannoy
 * @todo	Sécurité suppression image
 */
function definirImage(nom, ajouter)
{
	var indice = 0;
	// on cherche l'indice de la ville si elle est dans la tableau
	for (var cle in images) {
		if (images[cle] == nom) {
			indice = cle;
		}
	}
	// on l'ajoute ou la supprime
	if (ajouter) {
		if (!indice){
			images.push(nom);
		}
	} else {
		images.splice(indice, 1);
	}
	var html = '';
	var i=1;
	for (var cle in images) {
		html += '<div class="v_regider_evenement_image_choisie"><a href="'+BASEURL+'/medias/images/' + images[cle] + '" class="thumbnail"><img src="'+BASEURL+'/vignette.png.php?w=100&h=100&img=medias/images/' + images[cle] + '" border="0" /></a><br /><a href="#null" onclick="definirImage(\'' + images[cle] + '\', false);" class="nounderline"><img src="'+BASEURL+'/images/del_ville.png" border="0" align="absmiddle" />&nbsp;Supprimer</a></div>';
		if (i % 4 == 0) html += '<div class="spacer"></div>';
		i++;
	}
	$("#v_regider_evenement_images_choisies").html(html);
	// rafraichissement zoom vignettes
	vignettesZoom();
	if (!ajouter) $.get(BASEURL+'/agenda/supprimer-image/fichier/' + nom);
}


function verifCbRecurrent() {
	if ($('#recurrent').is(":checked"))
		$('#v_rediger_evenement_boite_recurrence').show();
	else
		$('#v_rediger_evenement_boite_recurrence').hide();
}

// essai en dehors du document.ready
// est-ce nécessaire ?
$('#recurrent').change(function () {
	verifCbRecurrent();
});




$(document).ready(function () {
	// on lance les recherches après 600ms d'attente sans frappe
	$("#rech_ville").keypress(function (e) {
		clearTimeout(timer);
		timer = setTimeout("rechercherVille()", 600);
	});
	
	$("#rech_ent").keypress(function (e) {
		clearTimeout(timer);
		timer = setTimeout("rechercherEnt()", 600);
	});
	
	/*
	$("#coordonnees input:checkbox").click(function () {
		// le champ correspondant à la checkbox est extrait du nom de celui-ci (ver_xxxxxxx)
		var nom_champ = $(this).attr('name').substring(4);
		if ($(this).is(":checked")) {
			$('#' + nom_champ).attr('disabled', 'disabled');
			$('#' + nom_champ).val('');
		} else {
			$('#' + nom_champ).attr('disabled', '');
		}
	});
	*/
	
	// upload des images
	$("#uploadify").uploadify({
		'locale': {
	    	error: 'Erreur',
	    	complete: 'Terminé',
	    	overwrite: "Etes vous sur de vouloir remplacer le fichier '%' ?"
	  	},
		'uploader'       : BASEURL+'/images/uploadify.swf',
		'script'         : BASEURL+'/agenda/upload-image',
		'cancelImg'      : BASEURL+'/images/del_ville.png',
		'queueID'        : 'fileQueue',
		'auto'			 : true,
		'multi'			 : false,
		'buttonText'	 : 'Parcourir ...',
		'scriptData': {
	  		'id_temp'	 : $('#id_temp').val()
	  	},
	  	'onComplete'	 : function (event, queueId, fileObj, response, data) {
	  		if (response == 'extinvalide') {
	  			alert('Extension invalide');
	  		} else {
	  			definirImage(response, true);
	  		}
	  	}
	});
	
	// amélioration de l'ergonomie pour la sélection des dates
	$('.dates').change(function() {
		var champ = $(this).attr('id');
		var num = champ.substr(1);
		var nom = champ.substr(0, 1);
		// si on bouge la première date et que l'élément correspondant de la seconde est vide
		if (num == '1' && $('#'+nom+'2').val() == '') {
			// on recopie l'élément de la seconde date vers la première
			var val = $(this).val();
			$('#'+nom+'2').val(val).effect("pulsate", {times:1}, 300);
		}
	});
	
	// boutons de vote
	$('.fiche_voter').click(function() {
		var divId = $(this).attr('id');
		// id de l'événement
		id = divId.substr(6);
		if ($('#' + divId).attr('class') != 'fiche_voter_gris') {
			$.getJSON(BASEURL + "/agenda/voter/format/json/",
				{id: id},
				function(data) {
					$('#' + divId).html(data.votes);
					$('#' + divId).attr('class', 'fiche_voter_gris');
				}
			);
		}
	});
	
	$('.fiche_voter_gris').click(function() {
		alert('Vous avez déjà voté pour cet événement');
	});
	
	$('.fiche_gestion').hover(
    	function () {
    		$(this).children('ul').show();
    		$(this).addClass('over');
    	}, 
    	function () {    	
    		$(this).children('ul').hide();
    		$(this).removeClass('over');
    	}
    );
    
    $('.mettreUne').click(function() {
	    var divId = $(this).parents('.fiche').attr('id');
		// id de l'événement
		id = divId.substr(3);
    	var etoile = $(this).parents('.fiche_contenu').children('.fiche_etoile_une');
		$.getJSON(BASEURL + "/agenda/toggle-une/format/json/",
				{id: id},
				function(data) {
					if (data.confirm == 'ok') {
						if (etoile.is(':visible')) {
							etoile.hide();
						} else {
							etoile.show();
						}
					} else {
						alert('Impossible de mettre à la une !');				
					}
				}
			);
		$(this).parents('.fiche_cadre').effect('highlight', {}, 800);
    });
	
	vignettesZoom();
	
	verifCbRecurrent();
});



$(document).ready(function () {
	$('div.une').serialScroll({
		target: '.une_contenu',
		items: 'li',
		axis:'y',
		navigation: '.une_menu li a',
		prev: '.une_precedent',
		next: '.une_suivant',
		duration: 700,
		force: true,
		stop: true,
		lock: false,
		start: 0,
		interval: 10000,
		constant: false,
		onBefore: function(e, elem, $pane, $items, pos) {
			$pane.parent().parent().find('.une_menu a').removeClass('active').eq(pos).addClass('active');
			if (e.type == 'click') {
				$pane.trigger('stop');
			}
		}
	});
});


