// textAnimation
(function($) {  
$.fn.textAnimation = function(settings) {  
      
var container = this;
settings = $.extend({  
mode : "roll"}, settings);
            
function parse(e){if(e.hasClass("isTextAnimated")) return;
var text = e.text();
e.html("");
for(var i=0;i< text.length;i++) {var span = $("<span></span>").text(text.charAt(i));
e.append(span);}
e.addClass("isTextAnimated");}
            
function parseDiv(e,width,verticalAlign){if(e.hasClass("isTextAnimated")) return;
var text = e.text();
e.html("");
			
var css = {position:"absolute"};
verticalAlign = verticalAlign || "bottom";
css[verticalAlign] = "0px";
            
if(width === false) width = e[0].style.fontSize.replace(/px/,"")/1.25;
for(var i=0;i< text.length;i++) {css.left = width*i;
var div = $("<div></div>").text(text.charAt(i)).css(css);
e.append(div);}
e.addClass("isTextAnimated").css({position:"relative"});
}
		
function execute(options,start,finish){
var time  = options.time;
var interval = options.interval;
var repeat = options.repeat;
var startId;
var amountInterval = interval + time;
if(finish) amountInterval*=2;
var e = options.e;
			
if (options.onStart) {e.bind(options.onStart, function(){
if (startId) return;
start();
if (repeat) {startId = setInterval(start, amountInterval);
if (finish) {setTimeout(function(){
finish();
if (repeat) 
setInterval(finish, amountInterval);
}, amountInterval / 2);
}}
});
} else {start();
if(repeat) setInterval(start, amountInterval);
if(finish) {setTimeout(function(){
finish();
if(repeat) setInterval(finish, amountInterval);},amountInterval/2);
}}
if (options.onFinish) {e.bind(options.onFinish, function(){
if (startId && repeat) {clearInterval(startId);
startId = false;
}
if(finish) finish();
});
}}

var f = {roll: function(e){
var options = $.extend({
e : e,minsize : 15,magnification:15,delay : 20,onStart : false,onFinish : false,onToggle : false,stuff : 1,fixed : "bottom"},settings);
                
parseDiv(e,options.minsize/options.stuff,options.fixed);
var i = 0;
var minsize = options.minsize;
var magnification = options.magnification;
e.css({height:minsize+magnification+"px",textAlign:"center"});
var elements = e.children();
var de = options.delay;
var r = function(){
i--;
elements.each(function(j){
var fontSize = Math.abs(Math.sin((i+j)/de)*magnification)+minsize;
this.style.fontSize = fontSize+"px";
this.style.width = minsize+"px";
});};
				
if (options.onStart) {var intervalId;
e.bind(options.onStart, function(){
r();
intervalId = setInterval(r,30);
});
e.bind(options.onFinish,function(){
if(intervalId) clearInterval(intervalId);});
} else {
r();
setInterval(r, 30);}
},
			
step : function(e) {
var options = $.extend({
e : e,
minsize : 12,maxsize :35,fixed : "bottom",upper : true,stuff: 2.0,delay : 50,interval : 3000,duration : 300,
repeat: true,onStart : false,onFinish : false},settings);
                
parseDiv(e,options.minsize,options.fixed);
e.css({height:options.maxsize+"px",textAlign:"center"});
var elements = e.children().css({
fontSize: "0px",width: "0px",left: "0px",opacity: 0});

var length = elements.length;
var m = (options.maxsize-options.minsize) / (length-1);
var ba = options.minsize;
var upper = options.upper;
if (!upper) {m *= -1;
ba = options.maxsize;}
var du = options.duration;
var de = options.delay;
var st = options.stuff;
var interval = options.interval;
				
var start = function(){var left = 0;
elements.each(function(i){
var c = $(this);
                        
setTimeout(function(){var fs = ba + (m * i);
c.animate({fontSize:fs+"px",width : fs,left: left,opacity:1.0},{
duration: du});
left += (fs / st);
},de*i);});
}
var finish = function(){
elements.each(function(i){var c = $(this);
setTimeout(function(){c.animate({fontSize: "0px",width: 0,left: 0,opacity:0},{
duration: du});
},de*i);});
}
				
options.time = (options.delay * length);
execute(options,start, finish);},
            
highlight:function(e){var options = $.extend({
e : e,baseColor : "#AAAAAA",highlightColor : "#FDFF00",delay : 50,interval : 100,duration : 300,repeat: true,onStart : false,onFinish : false},settings);
                
parse(e);
var i = 0;
var elements = e.children().css({color:options.baseColor});
var length = elements.length;
if(!options.interval && !options.delay) options.interval = 100;
var hc = options.highlightColor;
var bc = options.baseColor;
var du = options.duration;
var de = options.delay;
                
var start = function(){elements.each(function(i){
var s = $(this);
setTimeout(function(){
s.animate({color: hc}, {
duration: du}).animate({color: bc},{
duration: du});
},de*i);
});
}
                
options.time = (options.delay * length);
execute(options,start);},

jump:function(e){
var options = $.extend({
e : e,altitude : 30,bound : true,delay : 400,interval : 300,duration : 600,fixed : "bottom",repeat: true,onStart : false,onFinish : false},settings);
                
parseDiv(e,false,options.fixed);
e.css({height:e[0].style.fontSize});
var i = 0;
var elements = e.children();
var length = elements.length;
if(!options.interval && !options.delay) options.interval = 100;
var al = options.altitude;
var bo = options.bound;
var du = options.duration;
var de = options.delay;
var ea = options.bound ? "easeOutBounce" : "easeInQuad";
var fi = options.fixed;

var start = function(){
elements.each(function(i){var s = $(this);
setTimeout(function(){var cssleave = {};
cssleave[fi] = al;
var cssarrive = {};
cssarrive[fi] = 0;
s.animate(cssleave, {duration: du,easing : "swing"}).animate(cssarrive,{
duration: du,easing : ea});},de*i);
});
}
                
options.time = (options.delay * length);
execute(options,start);}

}
		
return container.each(function(){  
f[settings.mode]($(this));
});
}
  
})(jQuery);


// SNOW

(function($){
$.fn.snowfall = function(options){
var element = this;

random = function random(min, max){
return Math.round(min + Math.random()*(max-min));}

function Flake(_x, _y, _size, _speed){
this.id = flakeId; 
this.x  = _x;
this.y  = _y;
this.size = _size;
this.speed = _speed;
this.step = 0,
this.stepSize = random(1,10) / 100;

var flakeMarkup = "<div id='flake-" + this.id + "' style='width: " + this.size + "px; height: " + this.size + "px; background: " + options.flakeColor + "; position: absolute; top: " + this.y + "px; left:" + this.x + "px; font-size: 0px; z-index: " + options.flakeIndex + ";'></div>";

if($(element).get(0).tagName === $(document).get(0).tagName){$('body').append(flakeMarkup);
}else{
$(element).append(flakeMarkup);}

this.element = document.getElementById('flake-' + this.id);
this.update = function(){this.y += this.speed;

if(this.y > (elHeight) - 6){this.reset();}

this.element.style.top = this.y + 'px';
this.element.style.left = this.x + 'px';

this.step += this.stepSize;
this.x += Math.cos(this.step);

if(this.x > (elWidth) - 6 || this.x < 6){
this.reset();}
}

this.reset = function(){
this.y = 0;
this.x = random(0, elWidth);
this.stepSize = random(1,10) / 100;
this.size = random((options.minSize * 100), (options.maxSize * 100)) / 100;
this.speed = random(options.minSpeed, options.maxSpeed);
}}

var flakes = [],
flakeId = 0,
i = 0,
elHeight = $(element).height(),
elWidth = $(element).width(),
defaults = {flakeCount : 35,flakeColor : '#ffffff',flakeIndex: 999999,minSize : 1,maxSize : 3,minSpeed : 2,maxSpeed : 3},
options = $.extend(defaults, options);		

$(window).bind("resize", function(){elHeight = $(element).height();
elWidth = $(element).width();}); 

for(i = 0; i < options.flakeCount; i+=1){flakeId = i;
flakes[i] = new Flake(random(0,elWidth), random(0, elHeight), random((options.minSize * 100), (options.maxSize * 100)) / 100, random(options.minSpeed, options.maxSpeed));
}

function snow(){for( i = 0; i < options.flakeCount; i += 1){
flakes[i].update();}

setTimeout(function(){snow()}, 30);}
snow();
	};
})(jQuery);


// fadeimage

$(document).ready(function() {

var additional_slides_urls = ["http://www.atoutfisc.com/reduction-impot/template1e/lib/i/img/info-texte41b.jpg",
"http://www.atoutfisc.com/reduction-impot/template1e/lib/i/img/info-texte31c.gif",
"http://www.atoutfisc.com/reduction-impot/template1e/lib/i/img/info-texte41a.jpg",
"http://www.atoutfisc.com/reduction-impot/template1e/lib/i/img/info-texte31c.gif"];

/* LES ORRES :
var additional_slides_urls = ["reduction-impot/template1e/lib/i/img/info-texte31a.jpg",
"reduction-impot/template1e/lib/i/img/info-texte31c.gif",
"reduction-impot/template1e/lib/i/img/info-texte31b.jpg",
"reduction-impot/template1e/lib/i/img/info-texte31c.gif"];
*/

var slideshow_speed = 3800;//arret sur l image
var animation_speed = 1800;//600; duree du fade

var sync_slideshow_container = $("#sync_slideshow");
var sync_slideshow_indicator = $("span", sync_slideshow_container);

var sync_slide1_container = $("div", sync_slideshow_container);

var sync_slides = [$("img", sync_slide1_container)];

$.each(additional_slides_urls, function(index, url) {var img = $(new Image());
img.load(function() {sync_slides[index + 1] = img;
}).attr("src", url);
});

var sync_timer;

startbutt = function() {if (additional_slides_urls.length >= 1) {
sync_timer = setInterval(sync_slides_update, slideshow_speed);
}return false;
};

stopbutt = function() {clearInterval(sync_timer); slide = 0;
return false;
};

var sync_slide_counter = 1;

function sync_slides_update() {var counter;var slide1;
if (sync_slide_counter == additional_slides_urls.length + 1) sync_slide_counter = 0;
slide1 = sync_slides[sync_slide_counter];

var change_slides = setInterval(function() {
if (slide1) {clearInterval(change_slides);
sync_animate(slide1, sync_slide1_container);}
}, 200);
};

function sync_animate(next_slide, container) {var slide_container = container;
var current_slide = $("img", slide_container);
var slide = next_slide;

slide.hide();

current_slide.fadeOut(animation_speed, function() {
slide_container.append(slide);
slide.fadeIn(animation_speed);
current_slide.remove();
sync_slide_counter++;});
};

});
