;(function($){$.fn.svCarousel=function(options,callback){if(typeof options=='function'){callback=options;options=null;}
return this.each(function(){var cb=(callback)?callback:function(){};var el=new $svc($(this),options,cb);$(this).data("svCarousel",el);});};var defaults={interval:4000,transition:"fade",transition_mode:"sequential",in_time:1000,out_time:500,in_animation:{'height':'350px'},out_animation:{'height':'0'},controls:0,controls_target:null,controls_position:'after',controls_always:false,icon_path:["",""],keys:false,verso:1,onload:null,autoplay:true,autoplay_delay:4000};$.svCarousel=function($o,op,cb){this.opts=$.extend({},defaults,op||{});this.list=$o;this.cb=cb;this.current=1;if(this.list.find('.active').length!=1){this.list.children(':first').addClass('active');}else{this.current=this.list.children(':not(.ignore)').index(this.list.find('.active'))+1;}
if(this.list.css('position').length<4){this.list.css('position','relative');}
this.n=this.list.children(':not(.ignore)').length;if(this.n>1||this.opts.controls_always){if(this.opts.controls>0){this.ctrl_tgh=this.opts.controls_target||this.list;this._drawControls();}
if(this.opts.keys){this._bindKeys();}
if(this.opts.autoplay&&this.n>1){this._begin(true);}}
if(this.opts.controls===0&&this.opts.onload){this.opts.onload.call(this.list);}
if(this.n==1){this.ctrl_el.find('b.indietro, a.avanti').hide();this.cb.call(this.list.children(':not(.ignore)').eq(0));}};var $svc=$.svCarousel;$svc.fn=$svc.prototype={svCarousel:'1.4'};$svc.fn.extend=$svc.extend=$.extend;$svc.fn.extend({_begin:function(first){var oo=this,time=false;clearTimeout(this.t);if(this.opts.autoplay){time=(first)?this.opts.autoplay_delay:this.opts.interval;this.t=setTimeout(function(){oo._draw();},time);}},_draw:function(n_to){var $active=this.list.find('.active'),oo=this,$to_animate;if(n_to){this.current=n_to+1;$to_animate=this.list.children(':eq('+n_to+')');}else{if(this.opts.verso==1){if(this.current+1<=this.n){this.current++;$to_animate=$active.next(':not(.ignore)');}else{this.current=1;$to_animate=this.list.children(':not(.ignore):first');}}else{if(this.current-1>0){this.current--;$to_animate=$active.prev(':not(.ignore)');}else{this.current=this.n;$to_animate=this.list.children(':not(.ignore):last');}}}
oo._updateControls();this.list.children(':not(.ignore)').stop(true,true).removeAttr('style');$active.show();$to_animate.hide().addClass('active');switch(oo.opts.transition_mode){case'sequential':if(this.opts.transition=='custom'){$active.animate(oo.opts.out_animation,oo.opts.out_time,function(){$to_animate.animate(oo.opts.in_animation,oo.opts.in_time,function(){oo._end($to_animate,$active);});});}else{$active.fadeOut(oo.opts.out_time,function(){$to_animate.fadeIn(oo.opts.in_time,function(){oo._end($to_animate,$active);});});}
break;case'sync':if(this.opts.transition=='custom'){$active.animate(oo.opts.out_animation,oo.opts.out_time);$to_animate.animate(oo.opts.in_animation,oo.opts.in_time,function(){oo._end($to_animate,$active);});}else{$active.fadeOut(oo.opts.out_time);$to_animate.fadeIn(oo.opts.in_time,function(){oo._end($to_animate,$active);});}
break;case'alone_out':if(this.opts.transition=='custom'){$active.css('z-index',5).animate(oo.opts.out_animation,oo.opts.out_time,function(){oo._end($to_animate,$active);});}else{$active.css('z-index',5).fadeOut(oo.opts.out_time,function(){oo._end($to_animate,$active);});}
$to_animate.css('z-index',1).show();break;case'alone_in':$active.css('z-index',1);if(this.opts.transition=='custom'){$to_animate.animate(oo.opts.in_animation,oo.opts.in_time,function(){oo._end($to_animate,$active);});}else{$to_animate.css('z-index',5).fadeIn(oo.opts.in_time,function(){oo._end($to_animate,$active);});}
break;}},_end:function(el,active){active.removeClass('active');this._begin(false);this.cb.call(el);},_drawControls:function(){var html='<div class="svScorri ignore">',css,src;switch(this.opts.controls){case 1:case 2:html+='<b class="indietro"></b>';html+='<a class="indietro" href="#" style="display: none;">prev</a>';if(this.opts.controls==2){html+='<span class="svNum">1</span><span class="svTot">/ '+this.n+'</span>';}
html+='<a class="avanti" href="#">next</a>';html+='<b class="avanti" style="display: none;"></b>';break;case 3:for(var i=1;i<=this.n;i++){css=(i==1)?'active':'';html+='<a class="dot '+css+'" href="#'+(i-1)+'"><span>'+i+'</span></a>';}
break;case 4:for(var i=1;i<=this.n;i++){css=(i==1)?'active':'';src=this.list.children(':not(.ignore):eq('+(i-1)+')').find("img").attr("src");html+='<a class="dot '+css+'" href="#'+(i-1)+'">';html+='<img src="'+src.replace(this.opts.icon_path[0],this.opts.icon_path[1])+'" />';html+='</a>';}}
html+='</div>';switch(this.opts.controls_position){case'append':this.ctrl_tgh.append(html);this.ctrl_el=this.ctrl_tgh.find('.svScorri');break;case'after':this.ctrl_tgh.after(html);this.ctrl_el=$(this.ctrl_tgh).next();break;case'before':this.ctrl_tgh.before(html);this.ctrl_el=$(this.ctrl_tgh).prev();break;}
this._bindControls();if(this.opts.onload){this.opts.onload.call(this.list);}},_bindControls:function(){this.ctrl_el.find('a.avanti').bind('click',{oo:this},function(e){clearTimeout(e.data.oo.t);e.data.oo.opts.autoplay=false;e.data.oo.opts.verso=1;e.data.oo._draw();return false;});this.ctrl_el.find('a.indietro').bind('click',{oo:this},function(e){clearTimeout(e.data.oo.t);e.data.oo.opts.autoplay=false;e.data.oo.opts.verso=-1;e.data.oo._draw();return false;});this.ctrl_el.find('a.dot').bind('click',{oo:this},function(e){clearTimeout(e.data.oo.t);e.data.oo.opts.autoplay=false;var num=$(this).attr('href').match(/\d{1,}$/)[0]||0;if(!$(this).hasClass('active')){e.data.oo._draw(num);}
return false;});},_updateControls:function(){switch(this.opts.controls){case 1:case 2:if(this.current==1){this.ctrl_el.find('a.indietro, b.avanti').hide();this.ctrl_el.find('b.indietro, a.avanti').show();}else if(this.current==this.n){this.ctrl_el.find('b.indietro, a.avanti').hide();this.ctrl_el.find('a.indietro, b.avanti').show();}else{this.ctrl_el.find('a.indietro, a.avanti').show();this.ctrl_el.find('b.indietro, b.avanti').hide();}
if(this.opts.controls==2){this.ctrl_el.find('.svNum').html(this.current);}
break;case 3:case 4:this.ctrl_el.find('.dot').removeClass('active').eq(this.current-1).addClass('active');break;}},_bindKeys:function(){document.onkeydown=function(e){keycode=(e===null)?event.keyCode:e.which;switch(keycode){case 190:case 39:clearTimeout(this.t);this.opts.autoplay=false;this.opts.verso=1;this._draw();break;case 188:case 37:clearTimeout(this.t);this.opts.autoplay=false;this.opts.verso=-1;this._draw();break;}};},stopAutoplay:function(){clearTimeout(this.t);this.opts.autoplay=false;}});$svc.extend({opts:function(d){return $.extend(opts,d||{});}});})(jQuery);
