(function($){var defaults={direction:"horz",movement:1,speed:400,timeout:6000,easing:"swing",autoStart:true,continuous:true,next:null,prev:null,nextPrevEvent:"click"};var $s={};var $id={};var $x={};jQuery.fn.kcarousel=function(options){$s=$.extend(defaults,options);$id.doc=$(document);$id.t=$(this);$id.win=$id.t.find("div");$id.belt=$id.win.find("ul");$id.panels=$id.belt.find("li");var c=$id.t.attr("id")||$id.t.attr("class");__Initialize(c)};function __Initialize(c){$x[c]={id:{t:$id.t,win:$id.win,belt:$id.belt,panels:$id.panels,btns:{prev:$s.prev,next:$s.next}},anim:{auto:{start:$s.autoStart,cont:$s.continuous},dir:$s.direction,easing:$s.easing,movement:$s.movement,speed:$s.speed,timer:null,timeout:$s.timeout},belt:{pos:{max:0,min:0,now:0}},panels:{current:[],num:$id.panels.length,width:0,height:0,pad:0},btns:{trig:$s.nextPrevEvent},lock:false,over:false};if($x[c].id.btns.prev!==null&&$x[c].id.btns.next!==null){for(var i in $x[c].id.btns){__AddControls(c,i)}}__AdjustPanelDims(c);__FixBeltSize(c);__BindEvents(c);if($x[c].anim.auto.start===true){CarouselTiming(c)}}function __AddControls(c,btn){if(/^[#|\.]/.test($x[c].id.btns[btn])===true){$x[c].id.btns[btn]=$x[c].id.t.find($x[c].id.btns[btn])}else{if(/<\s*[^>]*>/.test($x[c].id.btns[btn])===true){var _t=$($x[c].id.btns[btn]);var _id=(_t.attr("id"))?_t.attr("id"):(_t.attr("class"))?_t.attr("class"):"";_t.prependTo($x[c].id.t);$x[c].id.btns[btn]=$x[c].id.t.find(_id)}}}function __AdjustPanelDims(c){var _w=0;var _h=0;var _p=0;var _lw=0;var _lh=0;var _lp=0;var t=$x[c].anim.dir;var p={horz:{a:"right",b:"left"},vert:{a:"top",b:"bottom"}};for(var i=0;i<$x[c].panels.num;i++){var _t=$x[c].id.panels.eq(i);_w=_t.width();_h=_t.height();for(var j in p[t]){_p+=parseInt(_t.css("margin-"+p[t][j]))+parseInt(_t.css("padding-"+p[t][j]))}if(_w>_lw){_lw=_w}if(_h>_lh){_lh=_h}if(_p>_lp){_lp=_p}_p=0}for(var i=0;i<$x[c].panels.num;i++){if(t==="horz"){$x[c].id.panels.eq(i).css({width:(_lw)+"px"})}else{if(t==="vert"){$x[c].id.panels.eq(i).css({height:(_lh)+"px"})}}}$x[c].panels.width=_lw;$x[c].panels.height=_lh;$x[c].panels.pad=_lp;if(t==="horz"){$x[c].belt.pos.max=($x[c].panels.num-$x[c].anim.movement)*($x[c].panels.width+$x[c].panels.pad)}else{if(t==="vert"){$x[c].belt.pos.max=($x[c].panels.num-$x[c].anim.movement)*($x[c].panels.height+$x[c].panels.pad)}}}function __FixBeltSize(c){var _wh=0;var _p=0;var t=$x[c].anim.dir;var p={horz:{a:"right",b:"left"},vert:{a:"top",b:"bottom"}};for(var i=0;i<$x[c].panels.num;i++){var _t=$x[c].id.panels.eq(i);_wh+=(t==="horz")?_t.width():(t==="vert")?_t.height():0;for(var j in p[t]){_p+=parseInt(_t.css("margin-"+p[t][j]))+parseInt(_t.css("padding-"+p[t][j]))}}if(t==="horz"){$x[c].id.belt.css({width:(_wh+_p)+"px"})}else{if(t==="vert"){$x[c].id.belt.css({height:(_wh+_p)+"px"})}}for(var i=0;i<$x[c].anim.movement;i++){$x[c].panels.current.push(i)}}function __BindEvents(c){if($x[c].id.btns.prev!==null&&$x[c].id.btns.next!==null){$x[c].id.btns.next.bind($x[c].btns.trig,function(){ClickControls(c,true)});$x[c].id.btns.prev.bind($x[c].btns.trig,function(){ClickControls(c,false)})}$x[c].id.win.bind("mouseover",function(){LockCarousel(c,true,true)}).bind("mouseout",function(){LockCarousel(c,false,false);if($x[c].anim.auto.cont===true){CarouselTiming(c,((2000<$x[c].anim.timeout)?2000:$x[c].anim.timeout))}})}function ClickControls(c,dir){if($x[c].lock===true||$x[c].over===true){return}ClearTimer(c);var _panels=[];var _move=0;var _start=$x[c].panels.current[0];var _end=$x[c].panels.current.reverse()[0]+1;var _flag=null;if(dir===true&&_start>=($x[c].panels.num-$x[c].anim.movement)){_start=0;_end=$x[c].anim.movement;_flag=false}else{if(dir===false&&_start===0){_start=$x[c].panels.num-$x[c].anim.movement;_end=$x[c].panels.num;_flag=true}}for(var i=_start;i<_end;i++){var j=(dir===true)?i+$x[c].anim.movement:i-$x[c].anim.movement;var k=(_flag===null)?j:i;var _t=$x[c].id.panels.eq(i);var _n=(j>=0)?$x[c].id.panels.eq(j):"";if(_t.length>0&&_n.length>0){if($x[c].anim.dir==="horz"){_move+=$x[c].panels.width+$x[c].panels.pad}else{if($x[c].anim.dir==="vert"){_move+=$x[c].panels.height+$x[c].panels.pad}}}if(k<0){k+=$x[c].anim.movement}else{if(k>=$x[c].panels.num){k-=$x[c].anim.movement}}_panels.push(k);if(_panels.length>1){_panels.sort(function(a,b){return a-b})}}$x[c].panels.current=_panels;if(_flag===false){_move=$x[c].belt.pos.min}else{if(_flag===true){_move=-$x[c].belt.pos.max}else{_move=(dir===true)?$x[c].belt.pos.now-_move:$x[c].belt.pos.now+_move}}AnimateCarousel(c,_move)}function AnimateCarousel(c,move){if($x[c].lock===true||$x[c].over===true){return}LockCarousel(c,true);if($x[c].anim.dir==="horz"){$x[c].id.belt.animate({marginLeft:move},$x[c].anim.speed,$x[c].anim.easing,function(){AnimateCleanup(c,move)})}else{if($x[c].anim.dir==="vert"){$x[c].id.belt.animate({marginTop:move},$x[c].anim.speed,$x[c].anim.easing,function(){AnimateCleanup(c,move)})}}}function AnimateCleanup(c,move){$x[c].belt.pos.now=move;if($x[c].over===false){LockCarousel(c,false)}if($x[c].anim.auto.cont===true){CarouselTiming(c)}}function LockCarousel(c,key,mouse){ClearTimer(c);$x[c].lock=key;if(mouse===true||mouse===false){$x[c].over=mouse}}function CarouselTiming(c,time){var _time=time||$x[c].anim.timeout;$x[c].anim.timer=setTimeout(function(){ClickControls(c,true)},_time)}function ClearTimer(c){if($x[c].anim.timer!==null){clearTimeout($x[c].anim.timer);$x[c].anim.timer=null}}$(window).unload(function(){for(var i in $x){$x[i]=null}defaults=null;$s=null;$id=null;$x=null})})(jQuery);
