
(function($){
if($.fn.carouFredSel){
return;
}
$.fn.caroufredsel=$.fn.carouFredSel=function(options, configs){
if(this.length==0){
debug(true, 'No element found for "' + this.selector + '".');
return this;
}
if(this.length > 1){
return this.each(function(){
$(this).carouFredSel(options, configs);
});
}
var $cfs=this,
$tt0=this[0],
starting_position=false;
if($cfs.data('_cfs_isCarousel')){
starting_position=$cfs.triggerHandler('_cfs_triggerEvent', 'currentPosition');
$cfs.trigger('_cfs_triggerEvent', ['destroy', true]);
}
var FN={};
FN._init=function(o, setOrig, start){
o=go_getObject($tt0, o);
o.items=go_getItemsObject($tt0, o.items);
o.scroll=go_getScrollObject($tt0, o.scroll);
o.auto=go_getAutoObject($tt0, o.auto);
o.prev=go_getPrevNextObject($tt0, o.prev);
o.next=go_getPrevNextObject($tt0, o.next);
o.pagination=go_getPaginationObject($tt0, o.pagination);
o.swipe=go_getSwipeObject($tt0, o.swipe);
o.mousewheel=go_getMousewheelObject($tt0, o.mousewheel);
if(setOrig){
opts_orig=$.extend(true, {}, $.fn.carouFredSel.defaults, o);
}
opts=$.extend(true, {}, $.fn.carouFredSel.defaults, o);
opts.d=cf_getDimensions(opts);
crsl.direction=(opts.direction=='up'||opts.direction=='left') ? 'next':'prev';
var	a_itm=$cfs.children(),
avail_primary=ms_getParentSize($wrp, opts, 'width');
if(is_true(opts.cookie)){
opts.cookie='caroufredsel_cookie_' + conf.serialNumber;
}
opts.maxDimension=ms_getMaxDimension(opts, avail_primary);
opts.items=in_complementItems(opts.items, opts, a_itm, start);
opts[opts.d['width']]=in_complementPrimarySize(opts[opts.d['width']], opts, a_itm);
opts[opts.d['height']]=in_complementSecondarySize(opts[opts.d['height']], opts, a_itm);
if(opts.responsive){
if(!is_percentage(opts[opts.d['width']])){
opts[opts.d['width']]='100%';
}}
if(is_percentage(opts[opts.d['width']])){
crsl.upDateOnWindowResize=true;
crsl.primarySizePercentage=opts[opts.d['width']];
opts[opts.d['width']]=ms_getPercentage(avail_primary, crsl.primarySizePercentage);
if(!opts.items.visible){
opts.items.visibleConf.variable=true;
}}
if(opts.responsive){
opts.usePadding=false;
opts.padding=[0, 0, 0, 0];
opts.align=false;
opts.items.visibleConf.variable=false;
}else{
if(!opts.items.visible){
opts=in_complementVisibleItems(opts, avail_primary);
}
if(!opts[opts.d['width']]){
if(!opts.items.visibleConf.variable&&is_number(opts.items[opts.d['width']])&&opts.items.filter=='*'){
opts[opts.d['width']]=opts.items.visible * opts.items[opts.d['width']];
opts.align=false;
}else{
opts[opts.d['width']]='variable';
}}
if(is_undefined(opts.align)){
opts.align=(is_number(opts[opts.d['width']]))
? 'center'
: false;
}
if(opts.items.visibleConf.variable){
opts.items.visible=gn_getVisibleItemsNext(a_itm, opts, 0);
}}
if(opts.items.filter!='*'&&!opts.items.visibleConf.variable){
opts.items.visibleConf.org=opts.items.visible;
opts.items.visible=gn_getVisibleItemsNextFilter(a_itm, opts, 0);
}
opts.items.visible=cf_getItemsAdjust(opts.items.visible, opts, opts.items.visibleConf.adjust, $tt0);
opts.items.visibleConf.old=opts.items.visible;
if(opts.responsive){
if(!opts.items.visibleConf.min){
opts.items.visibleConf.min=opts.items.visible;
}
if(!opts.items.visibleConf.max){
opts.items.visibleConf.max=opts.items.visible;
}
opts=in_getResponsiveValues(opts, a_itm, avail_primary);
}else{
opts.padding=cf_getPadding(opts.padding);
if(opts.align=='top'){
opts.align='left';
}
else if(opts.align=='bottom'){
opts.align='right';
}
switch (opts.align){
case 'center':
case 'left':
case 'right':
if(opts[opts.d['width']]!='variable'){
opts=in_getAlignPadding(opts, a_itm);
opts.usePadding=true;
}
break;
default:
opts.align=false;
opts.usePadding=(
opts.padding[0]==0 &&
opts.padding[1]==0 &&
opts.padding[2]==0 &&
opts.padding[3]==0
) ? false:true;
break;
}}
if(!is_number(opts.scroll.duration)){
opts.scroll.duration=500;
}
if(is_undefined(opts.scroll.items)){
opts.scroll.items=(opts.responsive||opts.items.visibleConf.variable||opts.items.filter!='*')
? 'visible'
: opts.items.visible;
}
opts.auto=$.extend(true, {}, opts.scroll, opts.auto);
opts.prev=$.extend(true, {}, opts.scroll, opts.prev);
opts.next=$.extend(true, {}, opts.scroll, opts.next);
opts.pagination=$.extend(true, {}, opts.scroll, opts.pagination);
opts.auto=go_complementAutoObject($tt0, opts.auto);
opts.prev=go_complementPrevNextObject($tt0, opts.prev);
opts.next=go_complementPrevNextObject($tt0, opts.next);
opts.pagination=go_complementPaginationObject($tt0, opts.pagination);
opts.swipe=go_complementSwipeObject($tt0, opts.swipe);
opts.mousewheel=go_complementMousewheelObject($tt0, opts.mousewheel);
if(opts.synchronise){
opts.synchronise=cf_getSynchArr(opts.synchronise);
}
if(opts.auto.onPauseStart){
opts.auto.onTimeoutStart=opts.auto.onPauseStart;
deprecated('auto.onPauseStart', 'auto.onTimeoutStart');
}
if(opts.auto.onPausePause){
opts.auto.onTimeoutPause=opts.auto.onPausePause;
deprecated('auto.onPausePause', 'auto.onTimeoutPause');
}
if(opts.auto.onPauseEnd){
opts.auto.onTimeoutEnd=opts.auto.onPauseEnd;
deprecated('auto.onPauseEnd', 'auto.onTimeoutEnd');
}
if(opts.auto.pauseDuration){
opts.auto.timeoutDuration=opts.auto.pauseDuration;
deprecated('auto.pauseDuration', 'auto.timeoutDuration');
}};
FN._build=function(){
$cfs.data('_cfs_isCarousel', true);
var a_itm=$cfs.children(),
orgCSS=in_mapCss($cfs, ['textAlign', 'float', 'position', 'top', 'right', 'bottom', 'left', 'zIndex', 'width', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft']),
newPosition='relative';
switch (orgCSS.position){
case 'absolute':
case 'fixed':
newPosition=orgCSS.position;
break;
}
if(conf.wrapper=='parent'){
sz_storeOrigCss($wrp);
}else{
$wrp.css(orgCSS);
}
$wrp.css({
'overflow':'hidden',
'position':newPosition
});
sz_storeOrigCss($cfs);
$cfs.data('_cfs_origCssZindex', orgCSS.zIndex);
$cfs.css({
'textAlign':'left',
'float':'none',
'position':'absolute',
'top':0,
'right':'auto',
'bottom':'auto',
'left':0,
'marginTop':0,
'marginRight':0,
'marginBottom':0,
'marginLeft':0
});
sz_storeMargin(a_itm, opts);
sz_storeOrigCss(a_itm);
if(opts.responsive){
sz_setResponsiveSizes(opts, a_itm);
}};
FN._bind_events=function(){
FN._unbind_events();
$cfs.bind(cf_e('stop', conf), function(e, imm){
e.stopPropagation();
if(!crsl.isStopped){
if(opts.auto.button){
opts.auto.button.addClass(cf_c('stopped', conf));
}}
crsl.isStopped=true;
if(opts.auto.play){
opts.auto.play=false;
$cfs.trigger(cf_e('pause', conf), imm);
}
return true;
});
$cfs.bind(cf_e('finish', conf), function(e){
e.stopPropagation();
if(crsl.isScrolling){
sc_stopScroll(scrl);
}
return true;
});
$cfs.bind(cf_e('pause', conf), function(e, imm, res){
e.stopPropagation();
tmrs=sc_clearTimers(tmrs);
if(imm&&crsl.isScrolling){
scrl.isStopped=true;
var nst=getTime() - scrl.startTime;
scrl.duration -=nst;
if(scrl.pre){
scrl.pre.duration -=nst;
}
if(scrl.post){
scrl.post.duration -=nst;
}
sc_stopScroll(scrl, false);
}
if(!crsl.isPaused&&!crsl.isScrolling){
if(res){
tmrs.timePassed +=getTime() - tmrs.startTime;
}}
if(!crsl.isPaused){
if(opts.auto.button){
opts.auto.button.addClass(cf_c('paused', conf));
}}
crsl.isPaused=true;
if(opts.auto.onTimeoutPause){
var dur1=opts.auto.timeoutDuration - tmrs.timePassed,
perc=100 - Math.ceil(dur1 * 100 / opts.auto.timeoutDuration);
opts.auto.onTimeoutPause.call($tt0, perc, dur1);
}
return true;
});
$cfs.bind(cf_e('play', conf), function(e, dir, del, res){
e.stopPropagation();
tmrs=sc_clearTimers(tmrs);
var v=[dir, del, res],
t=['string', 'number', 'boolean'],
a=cf_sortParams(v, t);
dir=a[0];
del=a[1];
res=a[2];
if(dir!='prev'&&dir!='next'){
dir=crsl.direction;
}
if(!is_number(del)){
del=0;
}
if(!is_boolean(res)){
res=false;
}
if(res){
crsl.isStopped=false;
opts.auto.play=true;
}
if(!opts.auto.play){
e.stopImmediatePropagation();
return debug(conf, 'Carousel stopped: Not scrolling.');
}
if(crsl.isPaused){
if(opts.auto.button){
opts.auto.button.removeClass(cf_c('stopped', conf));
opts.auto.button.removeClass(cf_c('paused', conf));
}}
crsl.isPaused=false;
tmrs.startTime=getTime();
var dur1=opts.auto.timeoutDuration + del;
dur2=dur1 - tmrs.timePassed;
perc=100 - Math.ceil(dur2 * 100 / dur1);
if(opts.auto.progress){
tmrs.progress=setInterval(function(){
var pasd=getTime() - tmrs.startTime + tmrs.timePassed,
perc=Math.ceil(pasd * 100 / dur1);
opts.auto.progress.updater.call(opts.auto.progress.bar[0], perc);
}, opts.auto.progress.interval);
}
tmrs.auto=setTimeout(function(){
if(opts.auto.progress){
opts.auto.progress.updater.call(opts.auto.progress.bar[0], 100);
}
if(opts.auto.onTimeoutEnd){
opts.auto.onTimeoutEnd.call($tt0, perc, dur2);
}
if(crsl.isScrolling){
$cfs.trigger(cf_e('play', conf), dir);
}else{
$cfs.trigger(cf_e(dir, conf), opts.auto);
}}, dur2);
if(opts.auto.onTimeoutStart){
opts.auto.onTimeoutStart.call($tt0, perc, dur2);
}
return true;
});
$cfs.bind(cf_e('resume', conf), function(e){
e.stopPropagation();
if(scrl.isStopped){
scrl.isStopped=false;
crsl.isPaused=false;
crsl.isScrolling=true;
scrl.startTime=getTime();
sc_startScroll(scrl, conf);
}else{
$cfs.trigger(cf_e('play', conf));
}
return true;
});
$cfs.bind(cf_e('prev', conf)+' '+cf_e('next', conf), function(e, obj, num, clb, que){
e.stopPropagation();
if(crsl.isStopped||$cfs.is(':hidden')){
e.stopImmediatePropagation();
return debug(conf, 'Carousel stopped or hidden: Not scrolling.');
}
var minimum=(is_number(opts.items.minimum)) ? opts.items.minimum:opts.items.visible + 1;
if(minimum > itms.total){
e.stopImmediatePropagation();
return debug(conf, 'Not enough items ('+itms.total+' total, '+minimum+' needed): Not scrolling.');
}
var v=[obj, num, clb, que],
t=['object', 'number/string', 'function', 'boolean'],
a=cf_sortParams(v, t);
obj=a[0];
num=a[1];
clb=a[2];
que=a[3];
var eType=e.type.slice(conf.events.prefix.length);
if(!is_object(obj)){
obj={};}
if(is_function(clb)){
obj.onAfter=clb;
}
if(is_boolean(que)){
obj.queue=que;
}
obj=$.extend(true, {}, opts[eType], obj);
if(obj.conditions&&!obj.conditions.call($tt0, eType)){
e.stopImmediatePropagation();
return debug(conf, 'Callback "conditions" returned false.');
}
if(!is_number(num)){
if(opts.items.filter!='*'){
num='visible';
}else{
var arr=[num, obj.items, opts[eType].items];
for (var a=0, l=arr.length; a < l; a++){
if(is_number(arr[a])||arr[a]=='page'||arr[a]=='visible'){
num=arr[a];
break;
}}
}
switch(num){
case 'page':
e.stopImmediatePropagation();
return $cfs.triggerHandler(cf_e(eType+'Page', conf), [obj, clb]);
break;
case 'visible':
if(!opts.items.visibleConf.variable&&opts.items.filter=='*'){
num=opts.items.visible;
}
break;
}}
if(scrl.isStopped){
$cfs.trigger(cf_e('resume', conf));
$cfs.trigger(cf_e('queue', conf), [eType, [obj, num, clb]]);
e.stopImmediatePropagation();
return debug(conf, 'Carousel resumed scrolling.');
}
if(obj.duration > 0){
if(crsl.isScrolling){
if(obj.queue){
if(obj.queue=='last'){
queu=[];
}
if(obj.queue!='first'||queu.length==0){
$cfs.trigger(cf_e('queue', conf), [eType, [obj, num, clb]]);
}}
e.stopImmediatePropagation();
return debug(conf, 'Carousel currently scrolling.');
}}
tmrs.timePassed=0;
$cfs.trigger(cf_e('slide_'+eType, conf), [obj, num]);
if(opts.synchronise){
var s=opts.synchronise,
c=[obj, num];
for (var j=0, l=s.length; j < l; j++){
var d=eType;
if(!s[j][2]){
d=(d=='prev') ? 'next':'prev';
}
if(!s[j][1]){
c[0]=s[j][0].triggerHandler('_cfs_triggerEvent', ['configuration', d]);
}
c[1]=num + s[j][3];
s[j][0].trigger('_cfs_triggerEvent', ['slide_'+d, c]);
}}
return true;
});
$cfs.bind(cf_e('slide_prev', conf), function(e, sO, nI){
e.stopPropagation();
var a_itm=$cfs.children();
if(!opts.circular){
if(itms.first==0){
if(opts.infinite){
$cfs.trigger(cf_e('next', conf), itms.total-1);
}
return e.stopImmediatePropagation();
}}
sz_resetMargin(a_itm, opts);
if(!is_number(nI)){
if(opts.items.visibleConf.variable){
nI=gn_getVisibleItemsPrev(a_itm, opts, itms.total-1);
}
else if(opts.items.filter!='*'){
var xI=(is_number(sO.items)) ? sO.items:gn_getVisibleOrg($cfs, opts);
nI=gn_getScrollItemsPrevFilter(a_itm, opts, itms.total-1, xI);
}else{
nI=opts.items.visible;
}
nI=cf_getAdjust(nI, opts, sO.items, $tt0);
}
if(!opts.circular){
if(itms.total - nI < itms.first){
nI=itms.total - itms.first;
}}
opts.items.visibleConf.old=opts.items.visible;
if(opts.items.visibleConf.variable){
var vI=cf_getItemsAdjust(gn_getVisibleItemsNext(a_itm, opts, itms.total-nI), opts, opts.items.visibleConf.adjust, $tt0);
if(opts.items.visible+nI <=vI&&nI < itms.total){
nI++;
vI=cf_getItemsAdjust(gn_getVisibleItemsNext(a_itm, opts, itms.total-nI), opts, opts.items.visibleConf.adjust, $tt0);
}
opts.items.visible=vI;
}
else if(opts.items.filter!='*'){
var vI=gn_getVisibleItemsNextFilter(a_itm, opts, itms.total-nI);
opts.items.visible=cf_getItemsAdjust(vI, opts, opts.items.visibleConf.adjust, $tt0);
}
sz_resetMargin(a_itm, opts, true);
if(nI==0){
e.stopImmediatePropagation();
return debug(conf, '0 items to scroll: Not scrolling.');
}
debug(conf, 'Scrolling '+nI+' items backward.');
itms.first +=nI;
while (itms.first >=itms.total){
itms.first -=itms.total;
}
if(!opts.circular){
if(itms.first==0&&sO.onEnd){
sO.onEnd.call($tt0, 'prev');
}
if(!opts.infinite){
nv_enableNavi(opts, itms.first, conf);
}}
$cfs.children().slice(itms.total-nI, itms.total).prependTo($cfs);
if(itms.total < opts.items.visible + nI){
$cfs.children().slice(0, (opts.items.visible+nI)-itms.total).clone(true).appendTo($cfs);
}
var a_itm=$cfs.children(),
i_old=gi_getOldItemsPrev(a_itm, opts, nI),
i_new=gi_getNewItemsPrev(a_itm, opts),
i_cur_l=a_itm.eq(nI-1),
i_old_l=i_old.last(),
i_new_l=i_new.last();
sz_resetMargin(a_itm, opts);
var pL=0,
pR=0;
if(opts.align){
var p=cf_getAlignPadding(i_new, opts);
pL=p[0];
pR=p[1];
}
var oL=(pL < 0) ? opts.padding[opts.d[3]]:0;
var hiddenitems=false,
i_skp=$();
if(opts.items.visible < nI){
i_skp=a_itm.slice(opts.items.visibleConf.old, nI);
if(sO.fx=='directscroll'){
var orgW=opts.items[opts.d['width']];
hiddenitems=i_skp;
i_cur_l=i_new_l;
sc_hideHiddenItems(hiddenitems);
opts.items[opts.d['width']]='variable';
}}
var $cf2=false,
i_siz=ms_getTotalSize(a_itm.slice(0, nI), opts, 'width'),
w_siz=cf_mapWrapperSizes(ms_getSizes(i_new, opts, true), opts, !opts.usePadding),
i_siz_vis=0,
a_cfs={},
a_wsz={},
a_cur={},
a_old={},
a_new={},
a_lef={},
a_lef_vis={},
a_dur=sc_getDuration(sO, opts, nI, i_siz);
switch(sO.fx){
case 'cover':
case 'cover-fade':
i_siz_vis=ms_getTotalSize(a_itm.slice(0, opts.items.visible), opts, 'width');
break;
}
if(hiddenitems){
opts.items[opts.d['width']]=orgW;
}
sz_resetMargin(a_itm, opts, true);
if(pR >=0){
sz_resetMargin(i_old_l, opts, opts.padding[opts.d[1]]);
}
if(pL >=0){
sz_resetMargin(i_cur_l, opts, opts.padding[opts.d[3]]);
}
if(opts.align){
opts.padding[opts.d[1]]=pR;
opts.padding[opts.d[3]]=pL;
}
a_lef[opts.d['left']]=-(i_siz - oL);
a_lef_vis[opts.d['left']]=-(i_siz_vis - oL);
a_wsz[opts.d['left']]=w_siz[opts.d['width']];
var _s_wrapper=function(){},
_a_wrapper=function(){},
_s_paddingold=function(){},
_a_paddingold=function(){},
_s_paddingnew=function(){},
_a_paddingnew=function(){},
_s_paddingcur=function(){},
_a_paddingcur=function(){},
_onafter=function(){},
_moveitems=function(){},
_position=function(){};
switch(sO.fx){
case 'crossfade':
case 'cover':
case 'cover-fade':
case 'uncover':
case 'uncover-fade':
$cf2=$cfs.clone(true).appendTo($wrp);
break;
}
switch(sO.fx){
case 'crossfade':
case 'uncover':
case 'uncover-fade':
$cf2.children().slice(0, nI).remove();
$cf2.children().slice(opts.items.visibleConf.old).remove();
break;
case 'cover':
case 'cover-fade':
$cf2.children().slice(opts.items.visible).remove();
$cf2.css(a_lef_vis);
break;
}
$cfs.css(a_lef);
scrl=sc_setScroll(a_dur, sO.easing, conf);
a_cfs[opts.d['left']]=(opts.usePadding) ? opts.padding[opts.d[3]]:0;
if(opts[opts.d['width']]=='variable'||opts[opts.d['height']]=='variable'){
_s_wrapper=function(){
$wrp.css(w_siz);
};
_a_wrapper=function(){
scrl.anims.push([$wrp, w_siz]);
};}
if(opts.usePadding){
if(i_new_l.not(i_cur_l).length){
a_cur[opts.d['marginRight']]=i_cur_l.data('_cfs_origCssMargin');
if(pL < 0){
i_cur_l.css(a_cur);
}else{
_s_paddingcur=function(){
i_cur_l.css(a_cur);
};
_a_paddingcur=function(){
scrl.anims.push([i_cur_l, a_cur]);
};}}
switch(sO.fx){
case 'cover':
case 'cover-fade':
$cf2.children().eq(nI-1).css(a_cur);
break;
}
if(i_new_l.not(i_old_l).length){
a_old[opts.d['marginRight']]=i_old_l.data('_cfs_origCssMargin');
_s_paddingold=function(){
i_old_l.css(a_old);
};
_a_paddingold=function(){
scrl.anims.push([i_old_l, a_old]);
};}
if(pR >=0){
a_new[opts.d['marginRight']]=i_new_l.data('_cfs_origCssMargin') + opts.padding[opts.d[1]];
_s_paddingnew=function(){
i_new_l.css(a_new);
};
_a_paddingnew=function(){
scrl.anims.push([i_new_l, a_new]);
};}}
_position=function(){
$cfs.css(a_cfs);
};
var overFill=opts.items.visible+nI-itms.total;
_moveitems=function(){
if(overFill > 0){
$cfs.children().slice(itms.total).remove();
i_old=$($cfs.children().slice(itms.total-(opts.items.visible-overFill)).get().concat($cfs.children().slice(0, overFill).get()) );
}
sc_showHiddenItems(hiddenitems);
if(opts.usePadding){
var l_itm=$cfs.children().eq(opts.items.visible+nI-1);
l_itm.css(opts.d['marginRight'], l_itm.data('_cfs_origCssMargin'));
}};
var cb_arguments=sc_mapCallbackArguments(i_old, i_skp, i_new, nI, 'prev', a_dur, w_siz);
_onafter=function(){
sc_afterScroll($cfs, $cf2, sO);
crsl.isScrolling=false;
clbk.onAfter=sc_fireCallbacks($tt0, sO, 'onAfter', cb_arguments, clbk);
queu=sc_fireQueue($cfs, queu, conf);
if(!crsl.isPaused){
$cfs.trigger(cf_e('play', conf));
}};
crsl.isScrolling=true;
tmrs=sc_clearTimers(tmrs);
clbk.onBefore=sc_fireCallbacks($tt0, sO, 'onBefore', cb_arguments, clbk);
switch(sO.fx){
case 'none':
$cfs.css(a_cfs);
_s_wrapper();
_s_paddingold();
_s_paddingnew();
_s_paddingcur();
_position();
_moveitems();
_onafter();
break;
case 'fade':
scrl.anims.push([$cfs, { 'opacity': 0 }, function(){
_s_wrapper();
_s_paddingold();
_s_paddingnew();
_s_paddingcur();
_position();
_moveitems();
scrl=sc_setScroll(a_dur, sO.easing, conf);
scrl.anims.push([$cfs, { 'opacity': 1 }, _onafter]);
sc_startScroll(scrl, conf);
}]);
break;
case 'crossfade':
$cfs.css({ 'opacity': 0 });
scrl.anims.push([$cf2, { 'opacity': 0 }]);
scrl.anims.push([$cfs, { 'opacity': 1 }, _onafter]);
_a_wrapper();
_s_paddingold();
_s_paddingnew();
_s_paddingcur();
_position();
_moveitems();
break;
case 'cover':
scrl.anims.push([$cf2, a_cfs, function(){
_s_paddingold();
_s_paddingnew();
_s_paddingcur();
_position();
_moveitems();
_onafter();
}]);
_a_wrapper();
break;
case 'cover-fade':
scrl.anims.push([$cfs, { 'opacity': 0 }]);
scrl.anims.push([$cf2, a_cfs, function(){
_s_paddingold();
_s_paddingnew();
_s_paddingcur();
_position();
_moveitems();
_onafter();
}]);
_a_wrapper();
break;
case 'uncover':
scrl.anims.push([$cf2, a_wsz, _onafter]);
_a_wrapper();
_s_paddingold();
_s_paddingnew();
_s_paddingcur();
_position();
_moveitems();
break;
case 'uncover-fade':
$cfs.css({ 'opacity': 0 });
scrl.anims.push([$cfs, { 'opacity': 1 }]);
scrl.anims.push([$cf2, a_wsz, _onafter]);
_a_wrapper();
_s_paddingold();
_s_paddingnew();
_s_paddingcur();
_position();
_moveitems();
break;
default:
scrl.anims.push([$cfs, a_cfs, function(){
_moveitems();
_onafter();
}]);
_a_wrapper();
_a_paddingold();
_a_paddingnew();
_a_paddingcur();
break;
}
sc_startScroll(scrl, conf);
cf_setCookie(opts.cookie, $cfs, conf);
$cfs.trigger(cf_e('updatePageStatus', conf), [false, w_siz]);
return true;
});
$cfs.bind(cf_e('slide_next', conf), function(e, sO, nI){
e.stopPropagation();
var a_itm=$cfs.children();
if(!opts.circular){
if(itms.first==opts.items.visible){
if(opts.infinite){
$cfs.trigger(cf_e('prev', conf), itms.total-1);
}
return e.stopImmediatePropagation();
}}
sz_resetMargin(a_itm, opts);
if(!is_number(nI)){
if(opts.items.filter!='*'){
var xI=(is_number(sO.items)) ? sO.items:gn_getVisibleOrg($cfs, opts);
nI=gn_getScrollItemsNextFilter(a_itm, opts, 0, xI);
}else{
nI=opts.items.visible;
}
nI=cf_getAdjust(nI, opts, sO.items, $tt0);
}
var lastItemNr=(itms.first==0) ? itms.total:itms.first;
if(!opts.circular){
if(opts.items.visibleConf.variable){
var vI=gn_getVisibleItemsNext(a_itm, opts, nI),
xI=gn_getVisibleItemsPrev(a_itm, opts, lastItemNr-1);
}else{
var vI=opts.items.visible,
xI=opts.items.visible;
}
if(nI + vI > lastItemNr){
nI=lastItemNr - xI;
}}
opts.items.visibleConf.old=opts.items.visible;
if(opts.items.visibleConf.variable){
var vI=cf_getItemsAdjust(gn_getVisibleItemsNextTestCircular(a_itm, opts, nI, lastItemNr), opts, opts.items.visibleConf.adjust, $tt0);
while (opts.items.visible-nI >=vI&&nI < itms.total){
nI++;
vI=cf_getItemsAdjust(gn_getVisibleItemsNextTestCircular(a_itm, opts, nI, lastItemNr), opts, opts.items.visibleConf.adjust, $tt0);
}
opts.items.visible=vI;
}
else if(opts.items.filter!='*'){
var vI=gn_getVisibleItemsNextFilter(a_itm, opts, nI);
opts.items.visible=cf_getItemsAdjust(vI, opts, opts.items.visibleConf.adjust, $tt0);
}
sz_resetMargin(a_itm, opts, true);
if(nI==0){
e.stopImmediatePropagation();
return debug(conf, '0 items to scroll: Not scrolling.');
}
debug(conf, 'Scrolling '+nI+' items forward.');
itms.first -=nI;
while (itms.first < 0){
itms.first +=itms.total;
}
if(!opts.circular){
if(itms.first==opts.items.visible&&sO.onEnd){
sO.onEnd.call($tt0, 'next');
}
if(!opts.infinite){
nv_enableNavi(opts, itms.first, conf);
}}
if(itms.total < opts.items.visible+nI){
$cfs.children().slice(0, (opts.items.visible+nI)-itms.total).clone(true).appendTo($cfs);
}
var a_itm=$cfs.children(),
i_old=gi_getOldItemsNext(a_itm, opts),
i_new=gi_getNewItemsNext(a_itm, opts, nI),
i_cur_l=a_itm.eq(nI-1),
i_old_l=i_old.last(),
i_new_l=i_new.last();
sz_resetMargin(a_itm, opts);
var pL=0,
pR=0;
if(opts.align){
var p=cf_getAlignPadding(i_new, opts);
pL=p[0];
pR=p[1];
}
var hiddenitems=false,
i_skp=$();
if(opts.items.visibleConf.old < nI){
i_skp=a_itm.slice(opts.items.visibleConf.old, nI);
if(sO.fx=='directscroll'){
var orgW=opts.items[opts.d['width']];
hiddenitems=i_skp;
i_cur_l=i_old_l;
sc_hideHiddenItems(hiddenitems);
opts.items[opts.d['width']]='variable';
}}
var $cf2=false,
i_siz=ms_getTotalSize(a_itm.slice(0, nI), opts, 'width'),
w_siz=cf_mapWrapperSizes(ms_getSizes(i_new, opts, true), opts, !opts.usePadding),
i_siz_vis=0,
a_cfs={},
a_cfs_vis={},
a_cur={},
a_old={},
a_lef={},
a_dur=sc_getDuration(sO, opts, nI, i_siz);
switch(sO.fx){
case 'uncover':
case 'uncover-fade':
i_siz_vis=ms_getTotalSize(a_itm.slice(0, opts.items.visibleConf.old), opts, 'width');
break;
}
if(hiddenitems){
opts.items[opts.d['width']]=orgW;
}
if(opts.align){
if(opts.padding[opts.d[1]] < 0){
opts.padding[opts.d[1]]=0;
}}
sz_resetMargin(a_itm, opts, true);
sz_resetMargin(i_old_l, opts, opts.padding[opts.d[1]]);
if(opts.align){
opts.padding[opts.d[1]]=pR;
opts.padding[opts.d[3]]=pL;
}
a_lef[opts.d['left']]=(opts.usePadding) ? opts.padding[opts.d[3]]:0;
var _s_wrapper=function(){},
_a_wrapper=function(){},
_s_paddingold=function(){},
_a_paddingold=function(){},
_s_paddingcur=function(){},
_a_paddingcur=function(){},
_onafter=function(){},
_moveitems=function(){},
_position=function(){};
switch(sO.fx){
case 'crossfade':
case 'cover':
case 'cover-fade':
case 'uncover':
case 'uncover-fade':
$cf2=$cfs.clone(true).appendTo($wrp);
$cf2.children().slice(opts.items.visibleConf.old).remove();
break;
}
switch(sO.fx){
case 'crossfade':
case 'cover':
case 'cover-fade':
$cfs.css('zIndex', 1);
$cf2.css('zIndex', 0);
break;
}
scrl=sc_setScroll(a_dur, sO.easing, conf);
a_cfs[opts.d['left']]=-i_siz;
a_cfs_vis[opts.d['left']]=-i_siz_vis;
if(pL < 0){
a_cfs[opts.d['left']] +=pL;
}
if(opts[opts.d['width']]=='variable'||opts[opts.d['height']]=='variable'){
_s_wrapper=function(){
$wrp.css(w_siz);
};
_a_wrapper=function(){
scrl.anims.push([$wrp, w_siz]);
};}
if(opts.usePadding){
var i_new_l_m=i_new_l.data('_cfs_origCssMargin');
if(pR >=0){
i_new_l_m +=opts.padding[opts.d[1]];
}
i_new_l.css(opts.d['marginRight'], i_new_l_m);
if(i_cur_l.not(i_old_l).length){
a_old[opts.d['marginRight']]=i_old_l.data('_cfs_origCssMargin');
}
_s_paddingold=function(){
i_old_l.css(a_old);
};
_a_paddingold=function(){
scrl.anims.push([i_old_l, a_old]);
};
var i_cur_l_m=i_cur_l.data('_cfs_origCssMargin');
if(pL > 0){
i_cur_l_m +=opts.padding[opts.d[3]];
}
a_cur[opts.d['marginRight']]=i_cur_l_m;
_s_paddingcur=function(){
i_cur_l.css(a_cur);
};
_a_paddingcur=function(){
scrl.anims.push([i_cur_l, a_cur]);
};}
_position=function(){
$cfs.css(a_lef);
};
var overFill=opts.items.visible+nI-itms.total;
_moveitems=function(){
if(overFill > 0){
$cfs.children().slice(itms.total).remove();
}
var l_itm=$cfs.children().slice(0, nI).appendTo($cfs).last();
if(overFill > 0){
i_new=gi_getCurrentItems(a_itm, opts);
}
sc_showHiddenItems(hiddenitems);
if(opts.usePadding){
if(itms.total < opts.items.visible+nI){
var i_cur_l=$cfs.children().eq(opts.items.visible-1);
i_cur_l.css(opts.d['marginRight'], i_cur_l.data('_cfs_origCssMargin') + opts.padding[opts.d[1]]);
}
l_itm.css(opts.d['marginRight'], l_itm.data('_cfs_origCssMargin'));
}};
var cb_arguments=sc_mapCallbackArguments(i_old, i_skp, i_new, nI, 'next', a_dur, w_siz);
_onafter=function(){
$cfs.css('zIndex', $cfs.data('_cfs_origCssZindex'));
sc_afterScroll($cfs, $cf2, sO);
crsl.isScrolling=false;
clbk.onAfter=sc_fireCallbacks($tt0, sO, 'onAfter', cb_arguments, clbk);
queu=sc_fireQueue($cfs, queu, conf);
if(!crsl.isPaused){
$cfs.trigger(cf_e('play', conf));
}};
crsl.isScrolling=true;
tmrs=sc_clearTimers(tmrs);
clbk.onBefore=sc_fireCallbacks($tt0, sO, 'onBefore', cb_arguments, clbk);
switch(sO.fx){
case 'none':
$cfs.css(a_cfs);
_s_wrapper();
_s_paddingold();
_s_paddingcur();
_position();
_moveitems();
_onafter();
break;
case 'fade':
scrl.anims.push([$cfs, { 'opacity': 0 }, function(){
_s_wrapper();
_s_paddingold();
_s_paddingcur();
_position();
_moveitems();
scrl=sc_setScroll(a_dur, sO.easing, conf);
scrl.anims.push([$cfs, { 'opacity': 1 }, _onafter]);
sc_startScroll(scrl, conf);
}]);
break;
case 'crossfade':
$cfs.css({ 'opacity': 0 });
scrl.anims.push([$cf2, { 'opacity': 0 }]);
scrl.anims.push([$cfs, { 'opacity': 1 }, _onafter]);
_a_wrapper();
_s_paddingold();
_s_paddingcur();
_position();
_moveitems();
break;
case 'cover':
$cfs.css(opts.d['left'], $wrp[opts.d['width']]());
scrl.anims.push([$cfs, a_lef, _onafter]);
_a_wrapper();
_s_paddingold();
_s_paddingcur();
_moveitems();
break;
case 'cover-fade':
$cfs.css(opts.d['left'], $wrp[opts.d['width']]());
scrl.anims.push([$cf2, { 'opacity': 0 }]);
scrl.anims.push([$cfs, a_lef, _onafter]);
_a_wrapper();
_s_paddingold();
_s_paddingcur();
_moveitems();
break;
case 'uncover':
scrl.anims.push([$cf2, a_cfs_vis, _onafter]);
_a_wrapper();
_s_paddingold();
_s_paddingcur();
_position();
_moveitems();
break;
case 'uncover-fade':
$cfs.css({ 'opacity': 0 });
scrl.anims.push([$cfs, { 'opacity': 1 }]);
scrl.anims.push([$cf2, a_cfs_vis, _onafter]);
_a_wrapper();
_s_paddingold();
_s_paddingcur();
_position();
_moveitems();
break;
default:
scrl.anims.push([$cfs, a_cfs, function(){
_position();
_moveitems();
_onafter();
}]);
_a_wrapper();
_a_paddingold();
_a_paddingcur();
break;
}
sc_startScroll(scrl, conf);
cf_setCookie(opts.cookie, $cfs, conf);
$cfs.trigger(cf_e('updatePageStatus', conf), [false, w_siz]);
return true;
});
$cfs.bind(cf_e('slideTo', conf), function(e, num, dev, org, obj, dir, clb){
e.stopPropagation();
var v=[num, dev, org, obj, dir, clb],
t=['string/number/object', 'number', 'boolean', 'object', 'string', 'function'],
a=cf_sortParams(v, t);
obj=a[3];
dir=a[4];
clb=a[5];
num=gn_getItemIndex(a[0], a[1], a[2], itms, $cfs);
if(num==0){
return false;
}
if(!is_object(obj)){
obj=false;
}
if(dir!='prev'&&dir!='next'){
if(opts.circular){
dir=(num <=itms.total / 2) ? 'next':'prev';
}else{
dir=(itms.first==0||itms.first > num) ? 'next':'prev';
}}
if(dir=='prev'){
num=itms.total-num;
}
$cfs.trigger(cf_e(dir, conf), [obj, num, clb]);
return true;
});
$cfs.bind(cf_e('prevPage', conf), function(e, obj, clb){
e.stopPropagation();
var cur=$cfs.triggerHandler(cf_e('currentPage', conf));
return $cfs.triggerHandler(cf_e('slideToPage', conf), [cur-1, obj, 'prev', clb]);
});
$cfs.bind(cf_e('nextPage', conf), function(e, obj, clb){
e.stopPropagation();
var cur=$cfs.triggerHandler(cf_e('currentPage', conf));
return $cfs.triggerHandler(cf_e('slideToPage', conf), [cur+1, obj, 'next', clb]);
});
$cfs.bind(cf_e('slideToPage', conf), function(e, pag, obj, dir, clb){
e.stopPropagation();
if(!is_number(pag)){
pag=$cfs.triggerHandler(cf_e('currentPage', conf));
}
var ipp=opts.pagination.items||opts.items.visible,
max=Math.ceil(itms.total / ipp)-1;
if(pag < 0){
pag=max;
}
if(pag > max){
pag=0;
}
return $cfs.triggerHandler(cf_e('slideTo', conf), [pag*ipp, 0, true, obj, dir, clb]);
});
$cfs.bind(cf_e('jumpToStart', conf), function(e, s){
e.stopPropagation();
if(s){
s=gn_getItemIndex(s, 0, true, itms, $cfs);
}else{
s=0;
}
s +=itms.first;
if(s!=0){
if(itms.total > 0){
while (s > itms.total){
s -=itms.total;
}}
$cfs.prepend($cfs.children().slice(s, itms.total));
}
return true;
});
$cfs.bind(cf_e('synchronise', conf), function(e, s){
e.stopPropagation();
if(s){
s=cf_getSynchArr(s);
}
else if(opts.synchronise){
s=opts.synchronise;
}else{
return debug(conf, 'No carousel to synchronise.');
}
var n=$cfs.triggerHandler(cf_e('currentPosition', conf)),
x=true;
for (var j=0, l=s.length; j < l; j++){
if(!s[j][0].triggerHandler(cf_e('slideTo', conf), [n, s[j][3], true])){
x=false;
}}
return x;
});
$cfs.bind(cf_e('queue', conf), function(e, dir, opt){
e.stopPropagation();
if(is_function(dir)){
dir.call($tt0, queu);
}
else if(is_array(dir)){
queu=dir;
}
else if(!is_undefined(dir)){
queu.push([dir, opt]);
}
return queu;
});
$cfs.bind(cf_e('insertItem', conf), function(e, itm, num, org, dev){
e.stopPropagation();
var v=[itm, num, org, dev],
t=['string/object', 'string/number/object', 'boolean', 'number'],
a=cf_sortParams(v, t);
itm=a[0];
num=a[1];
org=a[2];
dev=a[3];
if(is_object(itm)&&!is_jquery(itm)){
itm=$(itm);
}
else if(is_string(itm)){
itm=$(itm);
}
if(!is_jquery(itm)||itm.length==0){
return debug(conf, 'Not a valid object.');
}
if(is_undefined(num)){
num='end';
}
sz_storeMargin(itm, opts);
sz_storeOrigCss(itm);
var orgNum=num,
before='before';
if(num=='end'){
if(org){
if(itms.first==0){
num=itms.total-1;
before='after';
}else{
num=itms.first;
itms.first +=itm.length;
}
if(num < 0){
num=0;
}}else{
num=itms.total-1;
before='after';
}}else{
num=gn_getItemIndex(num, dev, org, itms, $cfs);
}
var $cit=$cfs.children().eq(num);
if($cit.length){
$cit[before](itm);
}else{
debug(conf, 'Correct insert-position not found! Appending item to the end.');
$cfs.append(itm);
}
if(orgNum!='end'&&!org){
if(num < itms.first){
itms.first +=itm.length;
}}
itms.total=$cfs.children().length;
if(itms.first >=itms.total){
itms.first -=itms.total;
}
$cfs.trigger(cf_e('updateSizes', conf));
$cfs.trigger(cf_e('linkAnchors', conf));
return true;
});
$cfs.bind(cf_e('removeItem', conf), function(e, num, org, dev){
e.stopPropagation();
var v=[num, org, dev],
t=['string/number/object', 'boolean', 'number'],
a=cf_sortParams(v, t);
num=a[0];
org=a[1];
dev=a[2];
var removed=false;
if(num instanceof $&&num.length > 1){
$removed=$();
num.each(function(i, el){
var $rem=$cfs.trigger(cf_e('removeItem', conf), [$(this), org, dev]);
if($rem){
$removed=$removed.add($rem);
}});
return $removed;
}
if(is_undefined(num)||num=='end'){
$removed=$cfs.children().last();
}else{
num=gn_getItemIndex(num, dev, org, itms, $cfs);
var $removed=$cfs.children().eq(num);
if($removed.length){
if(num < itms.first){
itms.first -=$removed.length;
}}
}
if($removed&&$removed.length){
$removed.detach();
itms.total=$cfs.children().length;
$cfs.trigger(cf_e('updateSizes', conf));
}
return $removed;
});
$cfs.bind(cf_e('onBefore', conf)+' '+cf_e('onAfter', conf), function(e, fn){
e.stopPropagation();
var eType=e.type.slice(conf.events.prefix.length);
if(is_array(fn)){
clbk[eType]=fn;
}
if(is_function(fn)){
clbk[eType].push(fn);
}
return clbk[eType];
});
$cfs.bind(cf_e('currentPosition', conf), function(e, fn){
e.stopPropagation();
if(itms.first==0){
var val=0;
}else{
var val=itms.total - itms.first;
}
if(is_function(fn)){
fn.call($tt0, val);
}
return val;
});
$cfs.bind(cf_e('currentPage', conf), function(e, fn){
e.stopPropagation();
var ipp=opts.pagination.items||opts.items.visible,
max=Math.ceil(itms.total/ipp-1),
nr;
if(itms.first==0){
nr=0;
}
else if(itms.first < itms.total % ipp){
nr=0;
}
else if(itms.first==ipp&&!opts.circular){
nr=max;
}else{
nr=Math.round((itms.total-itms.first)/ipp);
}
if(nr < 0){
nr=0;
}
if(nr > max){
nr=max;
}
if(is_function(fn)){
fn.call($tt0, nr);
}
return nr;
});
$cfs.bind(cf_e('currentVisible', conf), function(e, fn){
e.stopPropagation();
var $i=gi_getCurrentItems($cfs.children(), opts);
if(is_function(fn)){
fn.call($tt0, $i);
}
return $i;
});
$cfs.bind(cf_e('slice', conf), function(e, f, l, fn){
e.stopPropagation();
if(itms.total==0){
return false;
}
var v=[f, l, fn],
t=['number', 'number', 'function'],
a=cf_sortParams(v, t);
f=(is_number(a[0])) ? a[0]:0;
l=(is_number(a[1])) ? a[1]:itms.total;
fn=a[2];
f +=itms.first;
l +=itms.first;
if(items.total > 0){
while (f > itms.total){
f -=itms.total;
}
while (l > itms.total){
l -=itms.total;
}
while (f < 0){
f +=itms.total;
}
while (l < 0){
l +=itms.total;
}}
var $iA=$cfs.children(),
$i;
if(l > f){
$i=$iA.slice(f, l);
}else{
$i=$($iA.slice(f, itms.total).get().concat($iA.slice(0, l).get()) );
}
if(is_function(fn)){
fn.call($tt0, $i);
}
return $i;
});
$cfs.bind(cf_e('isPaused', conf)+' '+cf_e('isStopped', conf)+' '+cf_e('isScrolling', conf), function(e, fn){
e.stopPropagation();
var eType=e.type.slice(conf.events.prefix.length),
value=crsl[eType];
if(is_function(fn)){
fn.call($tt0, value);
}
return value;
});
$cfs.bind(cf_e('configuration', conf), function(e, a, b, c){
e.stopPropagation();
var reInit=false;
if(is_function(a)){
a.call($tt0, opts);
}
else if(is_object(a)){
opts_orig=$.extend(true, {}, opts_orig, a);
if(b!==false) reInit=true;
else opts=$.extend(true, {}, opts, a);
}
else if(!is_undefined(a)){
if(is_function(b)){
var val=eval('opts.'+a);
if(is_undefined(val)){
val='';
}
b.call($tt0, val);
}
else if(!is_undefined(b)){
if(typeof c!=='boolean') c=true;
eval('opts_orig.'+a+'=b');
if(c!==false) reInit=true;
else eval('opts.'+a+'=b');
}else{
return eval('opts.'+a);
}}
if(reInit){
sz_resetMargin($cfs.children(), opts);
FN._init(opts_orig);
FN._bind_buttons();
var sz=sz_setSizes($cfs, opts);
$cfs.trigger(cf_e('updatePageStatus', conf), [true, sz]);
}
return opts;
});
$cfs.bind(cf_e('linkAnchors', conf), function(e, $con, sel){
e.stopPropagation();
if(is_undefined($con)){
$con=$('body');
}
else if(is_string($con)){
$con=$($con);
}
if(!is_jquery($con)||$con.length==0){
return debug(conf, 'Not a valid object.');
}
if(!is_string(sel)){
sel='a.caroufredsel';
}
$con.find(sel).each(function(){
var h=this.hash||'';
if(h.length > 0&&$cfs.children().index($(h))!=-1){
$(this).unbind('click').click(function(e){
e.preventDefault();
$cfs.trigger(cf_e('slideTo', conf), h);
});
}});
return true;
});
$cfs.bind(cf_e('updatePageStatus', conf), function(e, build, sizes){
e.stopPropagation();
if(!opts.pagination.container){
return;
}
var ipp=opts.pagination.items||opts.items.visible,
pgs=Math.ceil(itms.total/ipp);
if(build){
if(opts.pagination.anchorBuilder){
opts.pagination.container.children().remove();
opts.pagination.container.each(function(){
for (var a=0; a < pgs; a++){
var i=$cfs.children().eq(gn_getItemIndex(a*ipp, 0, true, itms, $cfs));
$(this).append(opts.pagination.anchorBuilder.call(i[0], a+1));
}});
}
opts.pagination.container.each(function(){
$(this).children().unbind(opts.pagination.event).each(function(a){
$(this).bind(opts.pagination.event, function(e){
e.preventDefault();
$cfs.trigger(cf_e('slideTo', conf), [a*ipp, -opts.pagination.deviation, true, opts.pagination]);
});
});
});
}
var selected=$cfs.triggerHandler(cf_e('currentPage', conf)) + opts.pagination.deviation;
if(selected >=pgs){
selected=0;
}
if(selected < 0){
selected=pgs-1;
}
opts.pagination.container.each(function(){
$(this).children().removeClass(cf_c('selected', conf)).eq(selected).addClass(cf_c('selected', conf));
});
return true;
});
$cfs.bind(cf_e('updateSizes', conf), function(e){
var vI=opts.items.visible,
a_itm=$cfs.children(),
avail_primary=ms_getParentSize($wrp, opts, 'width');
itms.total=a_itm.length;
if(crsl.primarySizePercentage){
opts.maxDimension=avail_primary;
opts[opts.d['width']]=ms_getPercentage(avail_primary, crsl.primarySizePercentage);
}else{
opts.maxDimension=ms_getMaxDimension(opts, avail_primary);
}
if(opts.responsive){
opts.items.width=opts.items.sizesConf.width;
opts.items.height=opts.items.sizesConf.height;
opts=in_getResponsiveValues(opts, a_itm, avail_primary);
vI=opts.items.visible;
sz_setResponsiveSizes(opts, a_itm);
}
else if(opts.items.visibleConf.variable){
vI=gn_getVisibleItemsNext(a_itm, opts, 0);
}
else if(opts.items.filter!='*'){
vI=gn_getVisibleItemsNextFilter(a_itm, opts, 0);
}
if(!opts.circular&&itms.first!=0&&vI > itms.first){
if(opts.items.visibleConf.variable){
var nI=gn_getVisibleItemsPrev(a_itm, opts, itms.first) - itms.first;
}
else if(opts.items.filter!='*'){
var nI=gn_getVisibleItemsPrevFilter(a_itm, opts, itms.first) - itms.first;
}else{
var nI=opts.items.visible - itms.first;
}
debug(conf, 'Preventing non-circular: sliding '+nI+' items backward.');
$cfs.trigger(cf_e('prev', conf), nI);
}
opts.items.visible=cf_getItemsAdjust(vI, opts, opts.items.visibleConf.adjust, $tt0);
opts.items.visibleConf.old=opts.items.visible;
opts=in_getAlignPadding(opts, a_itm);
var sz=sz_setSizes($cfs, opts);
$cfs.trigger(cf_e('updatePageStatus', conf), [true, sz]);
nv_showNavi(opts, itms.total, conf);
nv_enableNavi(opts, itms.first, conf);
return sz;
});
$cfs.bind(cf_e('destroy', conf), function(e, orgOrder){
e.stopPropagation();
tmrs=sc_clearTimers(tmrs);
$cfs.data('_cfs_isCarousel', false);
$cfs.trigger(cf_e('finish', conf));
if(orgOrder){
$cfs.trigger(cf_e('jumpToStart', conf));
}
sz_restoreOrigCss($cfs.children());
sz_restoreOrigCss($cfs);
FN._unbind_events();
FN._unbind_buttons();
if(conf.wrapper=='parent'){
sz_restoreOrigCss($wrp);
}else{
$wrp.replaceWith($cfs);
}
return true;
});
$cfs.bind(cf_e('debug', conf), function(e){
debug(conf, 'Carousel width: ' + opts.width);
debug(conf, 'Carousel height: ' + opts.height);
debug(conf, 'Item widths: ' + opts.items.width);
debug(conf, 'Item heights: ' + opts.items.height);
debug(conf, 'Number of items visible: ' + opts.items.visible);
if(opts.auto.play){
debug(conf, 'Number of items scrolled automatically: ' + opts.auto.items);
}
if(opts.prev.button){
debug(conf, 'Number of items scrolled backward: ' + opts.prev.items);
}
if(opts.next.button){
debug(conf, 'Number of items scrolled forward: ' + opts.next.items);
}
return conf.debug;
});
$cfs.bind('_cfs_triggerEvent', function(e, n, o){
e.stopPropagation();
return $cfs.triggerHandler(cf_e(n, conf), o);
});
};
FN._unbind_events=function(){
$cfs.unbind(cf_e('', conf));
$cfs.unbind(cf_e('', conf, false));
$cfs.unbind('_cfs_triggerEvent');
};
FN._bind_buttons=function(){
FN._unbind_buttons();
nv_showNavi(opts, itms.total, conf);
nv_enableNavi(opts, itms.first, conf);
if(opts.auto.pauseOnHover){
var pC=bt_pauseOnHoverConfig(opts.auto.pauseOnHover);
$wrp.bind(cf_e('mouseenter', conf, false), function(){ $cfs.trigger(cf_e('pause', conf), pC);	})
.bind(cf_e('mouseleave', conf, false), function(){ $cfs.trigger(cf_e('resume', conf));		});
}
if(opts.auto.button){
opts.auto.button.bind(cf_e(opts.auto.event, conf, false), function(e){
e.preventDefault();
var ev=false,
pC=null;
if(crsl.isPaused){
ev='play';
}
else if(opts.auto.pauseOnEvent){
ev='pause';
pC=bt_pauseOnHoverConfig(opts.auto.pauseOnEvent);
}
if(ev){
$cfs.trigger(cf_e(ev, conf), pC);
}});
}
if(opts.prev.button){
opts.prev.button.bind(cf_e(opts.prev.event, conf, false), function(e){
e.preventDefault();
$cfs.trigger(cf_e('prev', conf));
});
if(opts.prev.pauseOnHover){
var pC=bt_pauseOnHoverConfig(opts.prev.pauseOnHover);
opts.prev.button.bind(cf_e('mouseenter', conf, false), function(){ $cfs.trigger(cf_e('pause', conf), pC);	})
.bind(cf_e('mouseleave', conf, false), function(){ $cfs.trigger(cf_e('resume', conf));		});
}}
if(opts.next.button){
opts.next.button.bind(cf_e(opts.next.event, conf, false), function(e){
e.preventDefault();
$cfs.trigger(cf_e('next', conf));
});
if(opts.next.pauseOnHover){
var pC=bt_pauseOnHoverConfig(opts.next.pauseOnHover);
opts.next.button.bind(cf_e('mouseenter', conf, false), function(){ $cfs.trigger(cf_e('pause', conf), pC); 	})
.bind(cf_e('mouseleave', conf, false), function(){ $cfs.trigger(cf_e('resume', conf));		});
}}
if(opts.pagination.container){
if(opts.pagination.pauseOnHover){
var pC=bt_pauseOnHoverConfig(opts.pagination.pauseOnHover);
opts.pagination.container.bind(cf_e('mouseenter', conf, false), function(){ $cfs.trigger(cf_e('pause', conf), pC);	})
.bind(cf_e('mouseleave', conf, false), function(){ $cfs.trigger(cf_e('resume', conf));	});
}}
if(opts.prev.key||opts.next.key){
$(document).bind(cf_e('keyup', conf, false, true, true), function(e){
var k=e.keyCode;
if(k==opts.next.key){
e.preventDefault();
$cfs.trigger(cf_e('next', conf));
}
if(k==opts.prev.key){
e.preventDefault();
$cfs.trigger(cf_e('prev', conf));
}});
}
if(opts.pagination.keys){
$(document).bind(cf_e('keyup', conf, false, true, true), function(e){
var k=e.keyCode;
if(k >=49&&k < 58){
k=(k-49) * opts.items.visible;
if(k <=itms.total){
e.preventDefault();
$cfs.trigger(cf_e('slideTo', conf), [k, 0, true, opts.pagination]);
}}
});
}
if($.fn.swipe){
var isTouch='ontouchstart' in window;
if((isTouch&&opts.swipe.onTouch)||(!isTouch&&opts.swipe.onMouse)){
var scP=$.extend(true, {}, opts.prev, opts.swipe),
scN=$.extend(true, {}, opts.next, opts.swipe),
swP=function(){ $cfs.trigger(cf_e('prev', conf), [scP]) },
swN=function(){ $cfs.trigger(cf_e('next', conf), [scN]) };
switch (opts.direction){
case 'up':
case 'down':
opts.swipe.options.swipeUp=swN;
opts.swipe.options.swipeDown=swP;
break;
default:
opts.swipe.options.swipeLeft=swN;
opts.swipe.options.swipeRight=swP;
}
if(crsl.swipe){
$cfs.swipe('destroy');
}
$wrp.swipe(opts.swipe.options);
$wrp.css('cursor', 'move');
crsl.swipe=true;
}}
if($.fn.mousewheel){
if(opts.mousewheel){
var mcP=$.extend(true, {}, opts.prev, opts.mousewheel),
mcN=$.extend(true, {}, opts.next, opts.mousewheel);
if(crsl.mousewheel){
$wrp.unbind(cf_e('mousewheel', conf, false));
}
$wrp.bind(cf_e('mousewheel', conf, false), function(e, delta){
e.preventDefault();
if(delta > 0){
$cfs.trigger(cf_e('prev', conf), [mcP]);
}else{
$cfs.trigger(cf_e('next', conf), [mcN]);
}});
crsl.mousewheel=true;
}}
if(opts.auto.play){
$cfs.trigger(cf_e('play', conf), opts.auto.delay);
}
if(crsl.upDateOnWindowResize){
var resizeFn=function(e){
$cfs.trigger(cf_e('finish', conf));
if(opts.auto.pauseOnResize&&!crsl.isPaused){
$cfs.trigger(cf_e('play', conf));
}
sz_resetMargin($cfs.children(), opts);
$cfs.trigger(cf_e('updateSizes', conf));
};
var $w=$(window),
onResize=null;
if($.debounce&&conf.onWindowResize=='debounce'){
onResize=$.debounce(200, resizeFn);
}
else if($.throttle&&conf.onWindowResize=='throttle'){
onResize=$.throttle(300, resizeFn);
}else{
var _windowWidth=0,
_windowHeight=0;
onResize=function(){
var nw=$w.width(),
nh=$w.height();
if(nw!=_windowWidth||nh!=_windowHeight){
resizeFn();
_windowWidth=nw;
_windowHeight=nh;
}};}
$w.bind(cf_e('resize', conf, false, true, true), onResize);
}};
FN._unbind_buttons=function(){
var ns1=cf_e('', conf),
ns2=cf_e('', conf, false);
ns3=cf_e('', conf, false, true, true);
$(document).unbind(ns3);
$(window).unbind(ns3);
$wrp.unbind(ns2);
if(opts.auto.button){
opts.auto.button.unbind(ns2);
}
if(opts.prev.button){
opts.prev.button.unbind(ns2);
}
if(opts.next.button){
opts.next.button.unbind(ns2);
}
if(opts.pagination.container){
opts.pagination.container.unbind(ns2);
if(opts.pagination.anchorBuilder){
opts.pagination.container.children().remove();
}}
if(crsl.swipe){
$cfs.swipe('destroy');
$wrp.css('cursor', 'default');
crsl.swipe=false;
}
if(crsl.mousewheel){
crsl.mousewheel=false;
}
nv_showNavi(opts, 'hide', conf);
nv_enableNavi(opts, 'removeClass', conf);
};
if(is_boolean(configs)){
configs={
'debug': configs
};}
var crsl={
'direction':'next',
'isPaused':true,
'isScrolling':false,
'isStopped':false,
'mousewheel':false,
'swipe':false
},
itms={
'total':$cfs.children().length,
'first':0
},
tmrs={
'auto':null,
'progress':null,
'startTime':getTime(),
'timePassed':0
},
scrl={
'isStopped':false,
'duration':0,
'startTime':0,
'easing':'',
'anims':[]
},
clbk={
'onBefore':[],
'onAfter':[]
},
queu=[],
conf=$.extend(true, {}, $.fn.carouFredSel.configs, configs),
opts={},
opts_orig=$.extend(true, {}, options),
$wrp=(conf.wrapper=='parent')
? $cfs.parent()
: $cfs.wrap('<'+conf.wrapper.element+' class="'+conf.wrapper.classname+'" />').parent();
conf.selector=$cfs.selector;
conf.serialNumber=$.fn.carouFredSel.serialNumber++;
conf.transition=(conf.transition&&$.fn.transition) ? 'transition':'animate';
FN._init(opts_orig, true, starting_position);
FN._build();
FN._bind_events();
FN._bind_buttons();
if(is_array(opts.items.start)){
var start_arr=opts.items.start;
}else{
var start_arr=[];
if(opts.items.start!=0){
start_arr.push(opts.items.start);
}}
if(opts.cookie){
start_arr.unshift(parseInt(cf_getCookie(opts.cookie), 10));
}
if(start_arr.length > 0){
for (var a=0, l=start_arr.length; a < l; a++){
var s=start_arr[a];
if(s==0){
continue;
}
if(s===true){
s=window.location.hash;
if(s.length < 1){
continue;
}}
else if(s==='random'){
s=Math.floor(Math.random()*itms.total);
}
if($cfs.triggerHandler(cf_e('slideTo', conf), [s, 0, true, { fx: 'none' }])){
break;
}}
}
var siz=sz_setSizes($cfs, opts),
itm=gi_getCurrentItems($cfs.children(), opts);
if(opts.onCreate){
opts.onCreate.call($tt0, {
'width': siz.width,
'height': siz.height,
'items': itm
});
}
$cfs.trigger(cf_e('updatePageStatus', conf), [true, siz]);
$cfs.trigger(cf_e('linkAnchors', conf));
if(conf.debug){
$cfs.trigger(cf_e('debug', conf));
}
return $cfs;
};
$.fn.carouFredSel.serialNumber=1;
$.fn.carouFredSel.defaults={
'synchronise':false,
'infinite':true,
'circular':true,
'responsive':false,
'direction':'left',
'items':{
'start':0
},
'scroll':{
'easing':'swing',
'duration':500,
'pauseOnHover':false,
'event':'click',
'queue':false
}};
$.fn.carouFredSel.configs={
'debug':false,
'transition':false,
'onWindowResize': 'throttle',
'events':{
'prefix':'',
'namespace':'cfs'
},
'wrapper':{
'element':'div',
'classname':'caroufredsel_wrapper'
},
'classnames':{}};
$.fn.carouFredSel.pageAnchorBuilder=function(nr){
return '<a href="#"><span>'+nr+'</span></a>';
};
$.fn.carouFredSel.progressbarUpdater=function(perc){
$(this).css('width', perc+'%');
};
$.fn.carouFredSel.cookie={
get: function(n){
n +='=';
var ca=document.cookie.split(';');
for (var a=0, l=ca.length; a < l; a++){
var c=ca[a];
while (c.charAt(0)==' '){
c=c.slice(1);
}
if(c.indexOf(n)==0){
return c.slice(n.length);
}}
return 0;
},
set: function(n, v, d){
var e="";
if(d){
var date=new Date();
date.setTime(date.getTime() + (d * 24 * 60 * 60 * 1000));
e="; expires=" + date.toGMTString();
}
document.cookie=n + '=' + v + e + '; path=/';
},
remove: function(n){
$.fn.carouFredSel.cookie.set(n, "", -1);
}};
function sc_setScroll(d, e, c){
if(c.transition=='transition'){
if(e=='swing'){
e='ease';
}}
return {
anims: [],
duration: d,
orgDuration: d,
easing: e,
startTime: getTime()
};}
function sc_startScroll(s, c){
for (var a=0, l=s.anims.length; a < l; a++){
var b=s.anims[a];
if(!b){
continue;
}
b[0][c.transition](b[1], s.duration, s.easing, b[2]);
}}
function sc_stopScroll(s, finish){
if(!is_boolean(finish)){
finish=true;
}
if(is_object(s.pre)){
sc_stopScroll(s.pre, finish);
}
for (var a=0, l=s.anims.length; a < l; a++){
var b=s.anims[a];
b[0].stop(true);
if(finish){
b[0].css(b[1]);
if(is_function(b[2])){
b[2]();
}}
}
if(is_object(s.post)){
sc_stopScroll(s.post, finish);
}}
function sc_afterScroll($c, $c2, o){
if($c2){
$c2.remove();
}
switch(o.fx){
case 'fade':
case 'crossfade':
case 'cover-fade':
case 'uncover-fade':
$c.css('opacity', 1);
$c.css('filter', '');
break;
}}
function sc_fireCallbacks($t, o, b, a, c){
if(o[b]){
o[b].call($t, a);
}
if(c[b].length){
for (var i=0, l=c[b].length; i < l; i++){
c[b][i].call($t, a);
}}
return [];
}
function sc_fireQueue($c, q, c){
if(q.length){
$c.trigger(cf_e(q[0][0], c), q[0][1]);
q.shift();
}
return q;
}
function sc_hideHiddenItems(hiddenitems){
hiddenitems.each(function(){
var hi=$(this);
hi.data('_cfs_isHidden', hi.is(':hidden')).hide();
});
}
function sc_showHiddenItems(hiddenitems){
if(hiddenitems){
hiddenitems.each(function(){
var hi=$(this);
if(!hi.data('_cfs_isHidden')){
hi.show();
}});
}}
function sc_clearTimers(t){
if(t.auto){
clearTimeout(t.auto);
}
if(t.progress){
clearInterval(t.progress);
}
return t;
}
function sc_mapCallbackArguments(i_old, i_skp, i_new, s_itm, s_dir, s_dur, w_siz){
return {
'width': w_siz.width,
'height': w_siz.height,
'items': {
'old': i_old,
'skipped': i_skp,
'visible': i_new
},
'scroll': {
'items': s_itm,
'direction': s_dir,
'duration': s_dur
}};}
function sc_getDuration(sO, o, nI, siz){
var dur=sO.duration;
if(sO.fx=='none'){
return 0;
}
if(dur=='auto'){
dur=o.scroll.duration / o.scroll.items * nI;
}
else if(dur < 10){
dur=siz / dur;
}
if(dur < 1){
return 0;
}
if(sO.fx=='fade'){
dur=dur / 2;
}
return Math.round(dur);
}
function nv_showNavi(o, t, c){
var minimum=(is_number(o.items.minimum)) ? o.items.minimum:o.items.visible + 1;
if(t=='show'||t=='hide'){
var f=t;
}
else if(minimum > t){
debug(c, 'Not enough items ('+t+' total, '+minimum+' needed): Hiding navigation.');
var f='hide';
}else{
var f='show';
}
var s=(f=='show') ? 'removeClass':'addClass',
h=cf_c('hidden', c);
if(o.auto.button){
o.auto.button[f]()[s](h);
}
if(o.prev.button){
o.prev.button[f]()[s](h);
}
if(o.next.button){
o.next.button[f]()[s](h);
}
if(o.pagination.container){
o.pagination.container[f]()[s](h);
}}
function nv_enableNavi(o, f, c){
if(o.circular||o.infinite) return;
var fx=(f=='removeClass'||f=='addClass') ? f:false,
di=cf_c('disabled', c);
if(o.auto.button&&fx){
o.auto.button[fx](di);
}
if(o.prev.button){
var fn=fx||(f==0) ? 'addClass':'removeClass';
o.prev.button[fn](di);
}
if(o.next.button){
var fn=fx||(f==o.items.visible) ? 'addClass':'removeClass';
o.next.button[fn](di);
}}
function go_getObject($tt, obj){
if(is_function(obj)){
obj=obj.call($tt);
}
else if(is_undefined(obj)){
obj={};}
return obj;
}
function go_getItemsObject($tt, obj){
obj=go_getObject($tt, obj);
if(is_number(obj)){
obj={
'visible': obj
};}
else if(obj=='variable'){
obj={
'visible': obj,
'width': obj,
'height': obj
};}
else if(!is_object(obj)){
obj={};}
return obj;
}
function go_getScrollObject($tt, obj){
obj=go_getObject($tt, obj);
if(is_number(obj)){
if(obj <=50){
obj={
'items': obj
};}else{
obj={
'duration': obj
};}}
else if(is_string(obj)){
obj={
'easing': obj
};}
else if(!is_object(obj)){
obj={};}
return obj;
}
function go_getNaviObject($tt, obj){
obj=go_getObject($tt, obj);
if(is_string(obj)){
var temp=cf_getKeyCode(obj);
if(temp==-1){
obj=$(obj);
}else{
obj=temp;
}}
return obj;
}
function go_getAutoObject($tt, obj){
obj=go_getNaviObject($tt, obj);
if(is_jquery(obj)){
obj={
'button': obj
};}
else if(is_boolean(obj)){
obj={
'play': obj
};}
else if(is_number(obj)){
obj={
'timeoutDuration': obj
};}
if(obj.progress){
if(is_string(obj.progress)||is_jquery(obj.progress)){
obj.progress={
'bar': obj.progress
};}}
return obj;
}
function go_complementAutoObject($tt, obj){
if(is_function(obj.button)){
obj.button=obj.button.call($tt);
}
if(is_string(obj.button)){
obj.button=$(obj.button);
}
if(!is_boolean(obj.play)){
obj.play=true;
}
if(!is_number(obj.delay)){
obj.delay=0;
}
if(is_undefined(obj.pauseOnEvent)){
obj.pauseOnEvent=true;
}
if(!is_boolean(obj.pauseOnResize)){
obj.pauseOnResize=true;
}
if(!is_number(obj.timeoutDuration)){
obj.timeoutDuration=(obj.duration < 10)
? 2500
: obj.duration * 5;
}
if(obj.progress){
if(is_function(obj.progress.bar)){
obj.progress.bar=obj.progress.bar.call($tt);
}
if(is_string(obj.progress.bar)){
obj.progress.bar=$(obj.progress.bar);
}
if(obj.progress.bar){
if(!is_function(obj.progress.updater)){
obj.progress.updater=$.fn.carouFredSel.progressbarUpdater;
}
if(!is_number(obj.progress.interval)){
obj.progress.interval=50;
}}else{
obj.progress=false;
}}
return obj;
}
function go_getPrevNextObject($tt, obj){
obj=go_getNaviObject($tt, obj);
if(is_jquery(obj)){
obj={
'button': obj
};}
else if(is_number(obj)){
obj={
'key': obj
};}
return obj;
}
function go_complementPrevNextObject($tt, obj){
if(is_function(obj.button)){
obj.button=obj.button.call($tt);
}
if(is_string(obj.button)){
obj.button=$(obj.button);
}
if(is_string(obj.key)){
obj.key=cf_getKeyCode(obj.key);
}
return obj;
}
function go_getPaginationObject($tt, obj){
obj=go_getNaviObject($tt, obj);
if(is_jquery(obj)){
obj={
'container': obj
};}
else if(is_boolean(obj)){
obj={
'keys': obj
};}
return obj;
}
function go_complementPaginationObject($tt, obj){
if(is_function(obj.container)){
obj.container=obj.container.call($tt);
}
if(is_string(obj.container)){
obj.container=$(obj.container);
}
if(!is_number(obj.items)){
obj.items=false;
}
if(!is_boolean(obj.keys)){
obj.keys=false;
}
if(!is_function(obj.anchorBuilder)&&!is_false(obj.anchorBuilder)){
obj.anchorBuilder=$.fn.carouFredSel.pageAnchorBuilder;
}
if(!is_number(obj.deviation)){
obj.deviation=0;
}
return obj;
}
function go_getSwipeObject($tt, obj){
if(is_function(obj)){
obj=obj.call($tt);
}
if(is_undefined(obj)){
obj={
'onTouch': false
};}
if(is_true(obj)){
obj={
'onTouch': obj
};}
else if(is_number(obj)){
obj={
'items': obj
};}
return obj;
}
function go_complementSwipeObject($tt, obj){
if(!is_boolean(obj.onTouch)){
obj.onTouch=true;
}
if(!is_boolean(obj.onMouse)){
obj.onMouse=false;
}
if(!is_object(obj.options)){
obj.options={};}
if(!is_boolean(obj.options.triggerOnTouchEnd)){
obj.options.triggerOnTouchEnd=false;
}
return obj;
}
function go_getMousewheelObject($tt, obj){
if(is_function(obj)){
obj=obj.call($tt);
}
if(is_true(obj)){
obj={};}
else if(is_number(obj)){
obj={
'items': obj
};}
else if(is_undefined(obj)){
obj=false;
}
return obj;
}
function go_complementMousewheelObject($tt, obj){
return obj;
}
function gn_getItemIndex(num, dev, org, items, $cfs){
if(is_string(num)){
num=$(num, $cfs);
}
if(is_object(num)){
num=$(num, $cfs);
}
if(is_jquery(num)){
num=$cfs.children().index(num);
if(!is_boolean(org)){
org=false;
}}else{
if(!is_boolean(org)){
org=true;
}}
if(!is_number(num)){
num=0;
}
if(!is_number(dev)){
dev=0;
}
if(org){
num +=items.first;
}
num +=dev;
if(items.total > 0){
while (num >=items.total){
num -=items.total;
}
while (num < 0){
num +=items.total;
}}
return num;
}
function gn_getVisibleItemsPrev(i, o, s){
var t=0,
x=0;
for (var a=s; a >=0; a--){
var j=i.eq(a);
t +=(j.is(':visible')) ? j[o.d['outerWidth']](true):0;
if(t > o.maxDimension){
return x;
}
if(a==0){
a=i.length;
}
x++;
}}
function gn_getVisibleItemsPrevFilter(i, o, s){
return gn_getItemsPrevFilter(i, o.items.filter, o.items.visibleConf.org, s);
}
function gn_getScrollItemsPrevFilter(i, o, s, m){
return gn_getItemsPrevFilter(i, o.items.filter, m, s);
}
function gn_getItemsPrevFilter(i, f, m, s){
var t=0,
x=0;
for (var a=s, l=i.length; a >=0; a--){
x++;
if(x==l){
return x;
}
var j=i.eq(a);
if(j.is(f)){
t++;
if(t==m){
return x;
}}
if(a==0){
a=l;
}}
}
function gn_getVisibleOrg($c, o){
return o.items.visibleConf.org||$c.children().slice(0, o.items.visible).filter(o.items.filter).length;
}
function gn_getVisibleItemsNext(i, o, s){
var t=0,
x=0;
for (var a=s, l=i.length-1; a <=l; a++){
var j=i.eq(a);
t +=(j.is(':visible')) ? j[o.d['outerWidth']](true):0;
if(t > o.maxDimension){
return x;
}
x++;
if(x==l+1){
return x;
}
if(a==l){
a=-1;
}}
}
function gn_getVisibleItemsNextTestCircular(i, o, s, l){
var v=gn_getVisibleItemsNext(i, o, s);
if(!o.circular){
if(s + v > l){
v=l - s;
}}
return v;
}
function gn_getVisibleItemsNextFilter(i, o, s){
return gn_getItemsNextFilter(i, o.items.filter, o.items.visibleConf.org, s, o.circular);
}
function gn_getScrollItemsNextFilter(i, o, s, m){
return gn_getItemsNextFilter(i, o.items.filter, m+1, s, o.circular) - 1;
}
function gn_getItemsNextFilter(i, f, m, s, c){
var t=0,
x=0;
for (var a=s, l=i.length-1; a <=l; a++){
x++;
if(x >=l){
return x;
}
var j=i.eq(a);
if(j.is(f)){
t++;
if(t==m){
return x;
}}
if(a==l){
a=-1;
}}
}
function gi_getCurrentItems(i, o){
return i.slice(0, o.items.visible);
}
function gi_getOldItemsPrev(i, o, n){
return i.slice(n, o.items.visibleConf.old+n);
}
function gi_getNewItemsPrev(i, o){
return i.slice(0, o.items.visible);
}
function gi_getOldItemsNext(i, o){
return i.slice(0, o.items.visibleConf.old);
}
function gi_getNewItemsNext(i, o, n){
return i.slice(n, o.items.visible+n);
}
function sz_storeMargin(i, o, d){
if(o.usePadding){
if(!is_string(d)){
d='_cfs_origCssMargin';
}
i.each(function(){
var j=$(this),
m=parseInt(j.css(o.d['marginRight']), 10);
if(!is_number(m)){
m=0;
}
j.data(d, m);
});
}}
function sz_resetMargin(i, o, m){
if(o.usePadding){
var x=(is_boolean(m)) ? m:false;
if(!is_number(m)){
m=0;
}
sz_storeMargin(i, o, '_cfs_tempCssMargin');
i.each(function(){
var j=$(this);
j.css(o.d['marginRight'], ((x) ? j.data('_cfs_tempCssMargin'):m + j.data('_cfs_origCssMargin')));
});
}}
function sz_storeOrigCss(i){
i.each(function(){
var j=$(this);
j.data('_cfs_origCss', j.attr('style')||'');
});
}
function sz_restoreOrigCss(i){
i.each(function(){
var j=$(this);
j.attr('style', j.data('_cfs_origCss')||'');
});
}
function sz_setResponsiveSizes(o, all){
var visb=o.items.visible,
newS=o.items[o.d['width']],
seco=o[o.d['height']],
secp=is_percentage(seco);
all.each(function(){
var $t=$(this),
nw=newS - ms_getPaddingBorderMargin($t, o, 'Width');
$t[o.d['width']](nw);
if(secp){
$t[o.d['height']](ms_getPercentage(nw, seco));
}});
}
function sz_setSizes($c, o){
var $w=$c.parent(),
$i=$c.children(),
$v=gi_getCurrentItems($i, o),
sz=cf_mapWrapperSizes(ms_getSizes($v, o, true), o, false);
$w.css(sz);
if(o.usePadding){
var p=o.padding,
r=p[o.d[1]];
if(o.align&&r < 0){
r=0;
}
var $l=$v.last();
$l.css(o.d['marginRight'], $l.data('_cfs_origCssMargin') + r);
$c.css(o.d['top'], p[o.d[0]]);
$c.css(o.d['left'], p[o.d[3]]);
}
$c.css(o.d['width'], sz[o.d['width']]+(ms_getTotalSize($i, o, 'width')*2));
return sz;
}
function ms_getSizes(i, o, wrapper){
return [ms_getTotalSize(i, o, 'width', wrapper), ms_getLargestSize(i, o, 'height', wrapper)];
}
function ms_getLargestSize(i, o, dim, wrapper){
if(!is_boolean(wrapper)){
wrapper=false;
}
if(is_number(o[o.d[dim]])&&wrapper){
return o[o.d[dim]];
}
if(is_number(o.items[o.d[dim]])){
return o.items[o.d[dim]];
}
dim=(dim.toLowerCase().indexOf('width') > -1) ? 'outerWidth':'outerHeight';
return ms_getTrueLargestSize(i, o, dim);
}
function ms_getTrueLargestSize(i, o, dim){
var s=0;
for (var a=0, l=i.length; a < l; a++){
var j=i.eq(a);
var m=(j.is(':visible')) ? j[o.d[dim]](true):0;
if(s < m){
s=m;
}}
return s;
}
function ms_getTotalSize(i, o, dim, wrapper){
if(!is_boolean(wrapper)){
wrapper=false;
}
if(is_number(o[o.d[dim]])&&wrapper){
return o[o.d[dim]];
}
if(is_number(o.items[o.d[dim]])){
return o.items[o.d[dim]] * i.length;
}
var d=(dim.toLowerCase().indexOf('width') > -1) ? 'outerWidth':'outerHeight',
s=0;
for (var a=0, l=i.length; a < l; a++){
var j=i.eq(a);
s +=(j.is(':visible')) ? j[o.d[d]](true):0;
}
return s;
}
function ms_getParentSize($w, o, d){
var isVisible=$w.is(':visible');
if(isVisible){
$w.hide();
}
var s=$w.parent()[o.d[d]]();
if(isVisible){
$w.show();
}
return s;
}
function ms_getMaxDimension(o, a){
return (is_number(o[o.d['width']])) ? o[o.d['width']]:a;
}
function ms_hasVariableSizes(i, o, dim){
var s=false,
v=false;
for (var a=0, l=i.length; a < l; a++){
var j=i.eq(a);
var c=(j.is(':visible')) ? j[o.d[dim]](true):0;
if(s===false){
s=c;
}
else if(s!=c){
v=true;
}
if(s==0){
v=true;
}}
return v;
}
function ms_getPaddingBorderMargin(i, o, d){
return i[o.d['outer'+d]](true) - i[o.d[d.toLowerCase()]]();
}
function ms_getPercentage(s, o){
if(is_percentage(o)){
o=parseInt(o.slice(0, -1), 10);
if(!is_number(o)){
return s;
}
s *=o/100;
}
return s;
}
function cf_e(n, c, pf, ns, rd){
if(!is_boolean(pf)){
pf=true;
}
if(!is_boolean(ns)){
ns=true;
}
if(!is_boolean(rd)){
rd=false;
}
if(pf){
n=c.events.prefix + n;
}
if(ns){
n=n +'.'+ c.events.namespace;
}
if(ns&&rd){
n +=c.serialNumber;
}
return n;
}
function cf_c(n, c){
return (is_string(c.classnames[n])) ? c.classnames[n]:n;
}
function cf_mapWrapperSizes(ws, o, p){
if(!is_boolean(p)){
p=true;
}
var pad=(o.usePadding&&p) ? o.padding:[0, 0, 0, 0];
var wra={};
wra[o.d['width']]=ws[0] + pad[1] + pad[3];
return wra;
}
function cf_sortParams(vals, typs){
var arr=[];
for (var a=0, l1=vals.length; a < l1; a++){
for (var b=0, l2=typs.length; b < l2; b++){
if(typs[b].indexOf(typeof vals[a]) > -1&&is_undefined(arr[b])){
arr[b]=vals[a];
break;
}}
}
return arr;
}
function cf_getPadding(p){
if(is_undefined(p)){
return [0, 0, 0, 0];
}
if(is_number(p)){
return [p, p, p, p];
}
if(is_string(p)){
p=p.split('px').join('').split('em').join('').split(' ');
}
if(!is_array(p)){
return [0, 0, 0, 0];
}
for (var i=0; i < 4; i++){
p[i]=parseInt(p[i], 10);
}
switch (p.length){
case 0:
return [0, 0, 0, 0];
case 1:
return [p[0], p[0], p[0], p[0]];
case 2:
return [p[0], p[1], p[0], p[1]];
case 3:
return [p[0], p[1], p[2], p[1]];
default:
return [p[0], p[1], p[2], p[3]];
}}
function cf_getAlignPadding(itm, o){
var x=(is_number(o[o.d['width']])) ? Math.ceil(o[o.d['width']] - ms_getTotalSize(itm, o, 'width')):0;
switch (o.align){
case 'left':
return [0, x];
case 'right':
return [x, 0];
case 'center':
default:
return [Math.ceil(x/2), Math.floor(x/2)];
}}
function cf_getDimensions(o){
var dm=[
['width'	, 'innerWidth'	, 'outerWidth'	, 'height'	, 'innerHeight'	, 'outerHeight'	, 'left', 'top'	, 'marginRight'	, 0, 1, 2, 3],
['height'	, 'innerHeight'	, 'outerHeight'	, 'width'	, 'innerWidth'	, 'outerWidth'	, 'top'	, 'left', 'marginBottom', 3, 2, 1, 0]
];
var dl=dm[0].length,
dx=(o.direction=='right'||o.direction=='left') ? 0:1;
var dimensions={};
for (var d=0; d < dl; d++){
dimensions[dm[0][d]]=dm[dx][d];
}
return dimensions;
}
function cf_getAdjust(x, o, a, $t){
var v=x;
if(is_function(a)){
v=a.call($t, v);
}
else if(is_string(a)){
var p=a.split('+'),
m=a.split('-');
if(m.length > p.length){
var neg=true,
sta=m[0],
adj=m[1];
}else{
var neg=false,
sta=p[0],
adj=p[1];
}
switch(sta){
case 'even':
v=(x % 2==1) ? x-1:x;
break;
case 'odd':
v=(x % 2==0) ? x-1:x;
break;
default:
v=x;
break;
}
adj=parseInt(adj, 10);
if(is_number(adj)){
if(neg){
adj=-adj;
}
v +=adj;
}}
if(!is_number(v)||v < 1){
v=1;
}
return v;
}
function cf_getItemsAdjust(x, o, a, $t){
return cf_getItemAdjustMinMax(cf_getAdjust(x, o, a, $t), o.items.visibleConf);
}
function cf_getItemAdjustMinMax(v, i){
if(is_number(i.min)&&v < i.min){
v=i.min;
}
if(is_number(i.max)&&v > i.max){
v=i.max;
}
if(v < 1){
v=1;
}
return v;
}
function cf_getSynchArr(s){
if(!is_array(s)){
s=[[s]];
}
if(!is_array(s[0])){
s=[s];
}
for (var j=0, l=s.length; j < l; j++){
if(is_string(s[j][0])){
s[j][0]=$(s[j][0]);
}
if(!is_boolean(s[j][1])){
s[j][1]=true;
}
if(!is_boolean(s[j][2])){
s[j][2]=true;
}
if(!is_number(s[j][3])){
s[j][3]=0;
}}
return s;
}
function cf_getKeyCode(k){
if(k=='right'){
return 39;
}
if(k=='left'){
return 37;
}
if(k=='up'){
return 38;
}
if(k=='down'){
return 40;
}
return -1;
}
function cf_setCookie(n, $c, c){
if(n){
var v=$c.triggerHandler(cf_e('currentPosition', c));
$.fn.carouFredSel.cookie.set(n, v);
}}
function cf_getCookie(n){
var c=$.fn.carouFredSel.cookie.get(n);
return (c=='') ? 0:c;
}
function in_mapCss($elem, props){
var css={};
for (var p=0, l=props.length; p < l; p++){
css[props[p]]=$elem.css(props[p]);
}
return css;
}
function in_complementItems(obj, opt, itm, sta){
if(!is_object(obj.visibleConf)){
obj.visibleConf={};}
if(!is_object(obj.sizesConf)){
obj.sizesConf={};}
if(obj.start==0&&is_number(sta)){
obj.start=sta;
}
if(is_object(obj.visible)){
obj.visibleConf.min=obj.visible.min;
obj.visibleConf.max=obj.visible.max;
obj.visible=false;
}
else if(is_string(obj.visible)){
if(obj.visible=='variable'){
obj.visibleConf.variable=true;
}else{
obj.visibleConf.adjust=obj.visible;
}
obj.visible=false;
}
else if(is_function(obj.visible)){
obj.visibleConf.adjust=obj.visible;
obj.visible=false;
}
if(!is_string(obj.filter)){
obj.filter=(itm.filter(':hidden').length > 0) ? ':visible':'*';
}
if(!obj[opt.d['width']]){
if(opt.responsive){
debug(true, 'Set a '+opt.d['width']+' for the items!');
obj[opt.d['width']]=ms_getTrueLargestSize(itm, opt, 'outerWidth');
}else{
obj[opt.d['width']]=(ms_hasVariableSizes(itm, opt, 'outerWidth'))
? 'variable'
: itm[opt.d['outerWidth']](true);
}}
if(!obj[opt.d['height']]){
obj[opt.d['height']]=(ms_hasVariableSizes(itm, opt, 'outerHeight'))
? 'variable'
: itm[opt.d['outerHeight']](true);
}
obj.sizesConf.width=obj.width;
obj.sizesConf.height=obj.height;
return obj;
}
function in_complementVisibleItems(opt, avl){
if(opt.items[opt.d['width']]=='variable'){
opt.items.visibleConf.variable=true;
}
if(!opt.items.visibleConf.variable){
if(is_number(opt[opt.d['width']])){
opt.items.visible=Math.floor(opt[opt.d['width']] / opt.items[opt.d['width']]);
}else{
opt.items.visible=Math.floor(avl / opt.items[opt.d['width']]);
opt[opt.d['width']]=opt.items.visible * opt.items[opt.d['width']];
if(!opt.items.visibleConf.adjust){
opt.align=false;
}}
if(opt.items.visible=='Infinity'||opt.items.visible < 1){
debug(true, 'Not a valid number of visible items: Set to "variable".');
opt.items.visibleConf.variable=true;
}}
return opt;
}
function in_complementPrimarySize(obj, opt, all){
if(obj=='auto'){
obj=ms_getTrueLargestSize(all, opt, 'outerWidth');
}
return obj;
}
function in_complementSecondarySize(obj, opt, all){
if(obj=='auto'){
obj=ms_getTrueLargestSize(all, opt, 'outerHeight');
}
if(!obj){
obj=opt.items[opt.d['height']];
}
return obj;
}
function in_getAlignPadding(o, all){
var p=cf_getAlignPadding(gi_getCurrentItems(all, o), o);
o.padding[o.d[1]]=p[1];
o.padding[o.d[3]]=p[0];
return o;
}
function in_getResponsiveValues(o, all, avl){
var visb=cf_getItemAdjustMinMax(Math.ceil(o[o.d['width']] / o.items[o.d['width']]), o.items.visibleConf);
if(visb > all.length){
visb=all.length;
}
var newS=Math.floor(o[o.d['width']]/visb);
o.items.visible=visb;
o.items[o.d['width']]=newS;
o[o.d['width']]=visb * newS;
return o;
}
function bt_pauseOnHoverConfig(p){
if(is_string(p)){
var i=(p.indexOf('immediate') > -1) ? true:false,
r=(p.indexOf('resume') 	> -1) ? true:false;
}else{
var i=r = false;
}
return [i, r];
}
function bt_mousesheelNumber(mw){
return (is_number(mw)) ? mw:null
}
function is_null(a){
return (a===null);
}
function is_undefined(a){
return (is_null(a)||typeof a=='undefined'||a===''||a==='undefined');
}
function is_array(a){
return (a instanceof Array);
}
function is_jquery(a){
return (a instanceof jQuery);
}
function is_object(a){
return ((a instanceof Object||typeof a=='object')&&!is_null(a)&&!is_jquery(a)&&!is_array(a)&&!is_function(a));
}
function is_number(a){
return ((a instanceof Number||typeof a=='number')&&!isNaN(a));
}
function is_string(a){
return ((a instanceof String||typeof a=='string')&&!is_undefined(a)&&!is_true(a)&&!is_false(a));
}
function is_function(a){
return (a instanceof Function||typeof a=='function');
}
function is_boolean(a){
return (a instanceof Boolean||typeof a=='boolean'||is_true(a)||is_false(a));
}
function is_true(a){
return (a===true||a==='true');
}
function is_false(a){
return (a===false||a==='false');
}
function is_percentage(x){
return (is_string(x)&&x.slice(-1)=='%');
}
function getTime(){
return new Date().getTime();
}
function deprecated(o, n){
debug(true, o+' is DEPRECATED, support for it will be removed. Use '+n+' instead.');
}
function debug(d, m){
if(!is_undefined(window.console)&&!is_undefined(window.console.log)){
if(is_object(d)){
var s=' ('+d.selector+')';
d=d.debug;
}else{
var s='';
}
if(!d){
return false;
}
if(is_string(m)){
m='carouFredSel'+s+': ' + m;
}else{
m=['carouFredSel'+s+':', m];
}
window.console.log(m);
}
return false;
}
$.extend($.easing, {
'quadratic': function(t){
var t2=t * t;
return t * (-t2 * t + 4 * t2 - 6 * t + 4);
},
'cubic': function(t){
return t * (4 * t * t - 9 * t + 6);
},
'elastic': function(t){
var t2=t * t;
return t * (33 * t2 * t2 - 106 * t2 * t + 126 * t2 - 67 * t + 15);
}});
})(jQuery);