jQuery.fn.crossSlide=function(opts,plan){var self=this,self_width=this.width(),self_height=this.height();function format(str){for(var i=1;i<arguments.length;i++)
str=str.replace(new RegExp('\\{'+(i-1)+'}','g'),arguments[i]);return str;}
function abort(){arguments[0]='crossSlide: '+arguments[0];throw new Error(format.apply(null,arguments));}
(function(proceed){var n_loaded=0;function loop(i,img){img.onload=function(e){n_loaded++;plan[i].width=img.width;plan[i].height=img.height;if(n_loaded==plan.length)proceed();}
if(!plan[i].src)plan[i].src="http://images.smulweb.nl/v2_1/1x1.gif";img.src=plan[i].src;if(i+1<plan.length)loop(i+1,new Image());}
loop(0,new Image());})
(function(){function position_to_css(p,phase){switch(phase){case 1:var pos=0;break;case 2:var pos=fade_ms/(p.time_ms+2*fade_ms);break;case 3:var pos=1-fade_ms/(p.time_ms+2*fade_ms);break;case 4:var pos=1;break;}
return{left:Math.round(p.from.left+pos*(p.to.left-p.from.left)),top:Math.round(p.from.top+pos*(p.to.top-p.from.top)),width:Math.round(p.from.width+pos*(p.to.width-p.from.width)),height:Math.round(p.from.height+pos*(p.to.height-p.from.height))};}
var fade_ms=Math.round(opts.fade*1000);if(opts.sleep)var sleep=Math.round(opts.sleep*1000);if(opts.speed)var speed=opts.speed/1000,fade_px=Math.round(fade_ms*speed);self.empty().css({overflow:'hidden',padding:0});if(!/^(absolute|relative|fixed)$/.test(self.css('position')))self.css({position:'relative'});if(opts.shuffle)plan.sort(function(){return Math.random()-0.5;});for(var i=0;i<plan.length;++i){var p=plan[i];if(speed){p.time_ms=Math.round(slide_px/speed);}
var elm;if(p.href){if(p.target==''||!p.target)p.target='_blank';if(p.add_class==''||!p.add_class)p.add_class='';if(p.src==''||!p.src)p.src='';elm=jQuery(format('<a href="{0}" target="{2}" class="{3}"></a> \n',p.href,p.src,p.target,p.add_class));}else{elm=jQuery(format('<img src="{0}"/>',p.src));}
if(p.onclick)elm.click(p.onclick);if(p.alt)elm.find('img').attr('alt',p.alt);elm.appendTo(self);}
speed=undefined;var imgs=self.find('a').css({position:'absolute',visibility:'hidden',top:0,left:0,border:0});imgs.eq(0).css({visibility:'visible'});if(!sleep)imgs.eq(0).css(position_to_css(plan[0],2));var countdown=opts.loop;function create_chain(i,chainf){if(i%2==0){if(sleep){var i_sleep=i/2,i_hide=(i_sleep-1+plan.length)%plan.length,img_sleep=imgs.eq(i_sleep),img_hide=imgs.eq(i_hide);var newf=function(){img_hide.css('visibility','hidden');setTimeout(chainf,sleep);};}else{var i_slide=i/2,i_hide=(i_slide-1+plan.length)%plan.length,img_slide=imgs.eq(i_slide),img_hide=imgs.eq(i_hide),time=plan[i_slide].time_ms,slide_anim=position_to_css(plan[i_slide],3);var newf=function(){img_hide.css('visibility','hidden');img_slide.animate(slide_anim,time,'linear',chainf);};}}else{if(sleep){var i_from=Math.floor(i/2),i_to=Math.ceil(i/2)%plan.length,img_from=imgs.eq(i_from),img_to=imgs.eq(i_to),from_anim={},to_init={visibility:'visible'},to_anim={};if(i_to>i_from){to_init.opacity=0;to_anim.opacity=1;}else{from_anim.opacity=0;}
var newf=function(){img_to.css(to_init);if(from_anim.opacity!=undefined)img_from.animate(from_anim,fade_ms,'linear',chainf);else img_to.animate(to_anim,fade_ms,'linear',chainf);};}else{var i_from=Math.floor(i/2),i_to=Math.ceil(i/2)%plan.length,img_from=imgs.eq(i_from),img_to=imgs.eq(i_to),from_anim=position_to_css(plan[i_from],4),to_init=position_to_css(plan[i_to],1),to_anim=position_to_css(plan[i_to],2);if(i_to>i_from){to_init.opacity=0;to_anim.opacity=1;}else{from_anim.opacity=0;}
to_init.visibility='visible';var newf=function(){img_from.animate(from_anim,fade_ms,'linear');img_to.css(to_init);img_to.animate(to_anim,fade_ms,'linear',chainf);};}}
if(opts.loop&&i==plan.length*2-2){var newf_orig=newf;newf=function(){if(--countdown)newf_orig();}}
if(i>0)return create_chain(i-1,newf);else return newf;}
var animation=create_chain(plan.length*2-1,function(){return animation();});animation();});return self;};
