Files
nhgooi.nl/public/js/jquery.carouFredSel-6.2.1.js
Jorit Tijsen 249f7a7d4c Add favicon
Change logo
Add luister and kijk icons
Tip de streekredactie points to whatsapp 088-8505651
Add s to Podcast
Removed waterschapsverkiezingen from menu
Podcast autoplay disabled
Remove Gooische Courant and NH Nieuws
Changed NH Gooi to Over NH Gooi
Added padding and border-radios to homepage posts
Changed header 12px to 14px
Add now and next programs to homepage
Add new button to programs
Changed contact text
Add fallback image to program guide
Make items height equally in program guide
2024-04-02 17:42:39 +02:00

4255 lines
89 KiB
JavaScript
Vendored

/*
* jQuery carouFredSel 6.2.1
* Demo's and documentation:
* caroufredsel.dev7studios.com
*
* Copyright (c) 2013 Fred Heusschen
* www.frebsite.nl
*
* Dual licensed under the MIT and GPL licenses.
* http://en.wikipedia.org/wiki/MIT_License
* http://en.wikipedia.org/wiki/GNU_General_Public_License
*/
(function($) {
// LOCAL
if ( $.fn.carouFredSel )
{
return;
}
$.fn.caroufredsel = $.fn.carouFredSel = function(options, configs)
{
// no element
if (this.length == 0)
{
debug( true, 'No element found for "' + this.selector + '".' );
return this;
}
// multiple elements
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);
// complement items and sizes
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);
// primary size not set for a responsive carousel
if (opts.responsive)
{
if (!is_percentage(opts[opts.d['width']]))
{
opts[opts.d['width']] = '100%';
}
}
// primary size is percentage
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
{
// visible-items not set
if (!opts.items.visible)
{
opts = in_complementVisibleItems(opts, avail_primary);
}
// primary size not set -> calculate it or set to "variable"
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';
}
}
// align not set -> set to center if primary size is number
if (is_undefined(opts.align))
{
opts.align = (is_number(opts[opts.d['width']]))
? 'center'
: false;
}
// set variabe visible-items
if (opts.items.visibleConf.variable)
{
opts.items.visible = gn_getVisibleItemsNext(a_itm, opts, 0);
}
}
// set visible items by filter
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)
{
// align: center, left or right
case 'center':
case 'left':
case 'right':
if (opts[opts.d['width']] != 'variable')
{
opts = in_getAlignPadding(opts, a_itm);
opts.usePadding = true;
}
break;
// padding
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);
// swipe and mousewheel extend later on, per direction
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);
}
// DEPRECATED
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');
}
// /DEPRECATED
}; // /init
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', 'height', '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);
}
}; // /build
FN._bind_events = function() {
FN._unbind_events();
// stop event
$cfs.bind(cf_e('stop', conf), function(e, imm) {
e.stopPropagation();
// button
if (!crsl.isStopped)
{
if (opts.auto.button)
{
opts.auto.button.addClass(cf_c('stopped', conf));
}
}
// set stopped
crsl.isStopped = true;
if (opts.auto.play)
{
opts.auto.play = false;
$cfs.trigger(cf_e('pause', conf), imm);
}
return true;
});
// finish event
$cfs.bind(cf_e('finish', conf), function(e) {
e.stopPropagation();
if (crsl.isScrolling)
{
sc_stopScroll(scrl);
}
return true;
});
// pause event
$cfs.bind(cf_e('pause', conf), function(e, imm, res) {
e.stopPropagation();
tmrs = sc_clearTimers(tmrs);
// immediately pause
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);
}
// update remaining pause-time
if (!crsl.isPaused && !crsl.isScrolling)
{
if (res)
{
tmrs.timePassed += getTime() - tmrs.startTime;
}
}
// button
if (!crsl.isPaused)
{
if (opts.auto.button)
{
opts.auto.button.addClass(cf_c('paused', conf));
}
}
// set paused
crsl.isPaused = true;
// pause pause callback
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;
});
// play event
$cfs.bind(cf_e('play', conf), function(e, dir, del, res) {
e.stopPropagation();
tmrs = sc_clearTimers(tmrs);
// sort params
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;
}
// stopped?
if (res)
{
crsl.isStopped = false;
opts.auto.play = true;
}
if (!opts.auto.play)
{
e.stopImmediatePropagation();
return debug(conf, 'Carousel stopped: Not scrolling.');
}
// button
if (crsl.isPaused)
{
if (opts.auto.button)
{
opts.auto.button.removeClass(cf_c('stopped', conf));
opts.auto.button.removeClass(cf_c('paused', conf));
}
}
// set playing
crsl.isPaused = false;
tmrs.startTime = getTime();
// timeout the scrolling
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);
// pause start callback
if (opts.auto.onTimeoutStart)
{
opts.auto.onTimeoutStart.call($tt0, perc, dur2);
}
return true;
});
// resume event
$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;
});
// prev + next events
$cfs.bind(cf_e('prev', conf)+' '+cf_e('next', conf), function(e, obj, num, clb, que) {
e.stopPropagation();
// stopped or hidden carousel, don't scroll, don't queue
if (crsl.isStopped || $cfs.is(':hidden'))
{
e.stopImmediatePropagation();
return debug(conf, 'Carousel stopped or hidden: Not scrolling.');
}
// not enough items
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.');
}
// get config
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);
// test conditions callback
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;
}
}
// resume animation, add current to queue
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.');
}
// queue if 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]);
// synchronise
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;
});
// prev event
$cfs.bind(cf_e('slide_prev', conf), function(e, sO, nI) {
e.stopPropagation();
var a_itm = $cfs.children();
// non-circular at start, scroll to end
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);
// find number of items to scroll
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);
}
// prevent non-circular from scrolling to far
if (!opts.circular)
{
if (itms.total - nI < itms.first)
{
nI = itms.total - itms.first;
}
}
// set new number of visible items
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);
// scroll 0, don't scroll
if (nI == 0)
{
e.stopImmediatePropagation();
return debug(conf, '0 items to scroll: Not scrolling.');
}
debug(conf, 'Scrolling '+nI+' items backward.');
// save new config
itms.first += nI;
while (itms.first >= itms.total)
{
itms.first -= itms.total;
}
// non-circular callback
if (!opts.circular)
{
if (itms.first == 0 && sO.onEnd)
{
sO.onEnd.call($tt0, 'prev');
}
if (!opts.infinite)
{
nv_enableNavi(opts, itms.first, conf);
}
}
// rearrange items
$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);
}
// the needed items
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;
// hide items for fx directscroll
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';
}
}
// save new sizes
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']];
// scrolling functions
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() {};
// clone carousel
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);
// reset all scrolls
scrl = sc_setScroll(a_dur, sO.easing, conf);
// animate / set carousel
a_cfs[opts.d['left']] = (opts.usePadding) ? opts.padding[opts.d[3]] : 0;
// animate / set wrapper
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]);
};
}
// animate / set items
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]);
};
}
}
// set position
_position = function() {
$cfs.css(a_cfs);
};
var overFill = opts.items.visible+nI-itms.total;
// rearrange items
_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);
// fire onAfter callbacks
_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));
}
};
// fire onBefore callback
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;
});
// next event
$cfs.bind(cf_e('slide_next', conf), function(e, sO, nI) {
e.stopPropagation();
var a_itm = $cfs.children();
// non-circular at end, scroll to start
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);
// find number of items to scroll
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;
// prevent non-circular from scrolling to far
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;
}
}
// set new number of visible items
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);
// scroll 0, don't scroll
if (nI == 0)
{
e.stopImmediatePropagation();
return debug(conf, '0 items to scroll: Not scrolling.');
}
debug(conf, 'Scrolling '+nI+' items forward.');
// save new config
itms.first -= nI;
while (itms.first < 0)
{
itms.first += itms.total;
}
// non-circular callback
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);
}
}
// rearrange items
if (itms.total < opts.items.visible+nI)
{
$cfs.children().slice(0, (opts.items.visible+nI)-itms.total).clone(true).appendTo($cfs);
}
// the needed items
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];
}
// hide items for fx directscroll
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';
}
}
// save new sizes
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;
// scrolling functions
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() {};
// clone carousel
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;
}
// reset all scrolls
scrl = sc_setScroll(a_dur, sO.easing, conf);
// animate / set carousel
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;
}
// animate / set wrapper
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]);
};
}
// animate / set items
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]);
};
}
// set position
_position = function() {
$cfs.css(a_lef);
};
var overFill = opts.items.visible+nI-itms.total;
// rearrange items
_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);
// fire onAfter callbacks
_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));
}
};
// fire onBefore callbacks
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;
});
// slideTo event
$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;
});
// prevPage event
$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]);
});
// nextPage event
$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]);
});
// slideToPage event
$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]);
});
// jumpToStart event
$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;
});
// synchronise event
$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;
});
// queue event
$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;
});
// insertItem event
$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;
});
// removeItem event
$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;
});
// onBefore and onAfter event
$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];
});
// currentPosition event
$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;
});
// currentPage event
$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;
});
// currentVisible event
$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;
});
// slice event
$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;
});
// isPaused, isStopped and isScrolling events
$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;
});
// configuration event
$cfs.bind(cf_e('configuration', conf), function(e, a, b, c) {
e.stopPropagation();
var reInit = false;
// return entire configuration-object
if (is_function(a))
{
a.call($tt0, opts);
}
// set multiple options via object
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))
{
// callback function for specific option
if (is_function(b))
{
var val = eval('opts.'+a);
if (is_undefined(val))
{
val = '';
}
b.call($tt0, val);
}
// set individual option
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');
}
// return value for specific option
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;
});
// linkAnchors event
$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;
});
// updatePageStatus event
$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;
});
// updateSizes event
$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;
});
// destroy event
$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;
});
// debug event
$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;
});
// triggerEvent, making prefixed and namespaced events accessible from outside
$cfs.bind('_cfs_triggerEvent', function(e, n, o) {
e.stopPropagation();
return $cfs.triggerHandler(cf_e(n, conf), o);
});
}; // /bind_events
FN._unbind_events = function() {
$cfs.unbind(cf_e('', conf));
$cfs.unbind(cf_e('', conf, false));
$cfs.unbind('_cfs_triggerEvent');
}; // /unbind_events
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)); });
}
// play button
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);
}
});
}
// prev button
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)); });
}
}
// next butotn
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)); });
}
}
// pagination
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)); });
}
}
// prev/next keys
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));
}
});
}
// pagination keys
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]);
}
}
});
}
// swipe
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;
}
}
// mousewheel
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);
}
}; // /bind_buttons
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);
}; // /unbind_buttons
// START
if (is_boolean(configs))
{
configs = {
'debug': configs
};
}
// set vars
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';
// create carousel
FN._init(opts_orig, true, starting_position);
FN._build();
FN._bind_events();
FN._bind_buttons();
// find item to start
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;
};
// GLOBAL PUBLIC
$.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);
}
};
// GLOBAL PRIVATE
// scrolling functions
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);
}
// navigation functions
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);
}
}
// get object functions
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;
}
// get number functions
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;
}
// items prev
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;
}
// items next
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;
}
}
}
// get items functions
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);
}
// sizes functions
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));
$c.css(o.d['height'], ms_getLargestSize($i, o, 'height'));
return sz;
}
// measuring functions
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;
}
// config functions
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];
wra[o.d['height']] = ws[1] + pad[0] + pad[2];
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;
}
// init function
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;
}
// visible items
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))
{
// variable visible items
if (obj.visible == 'variable')
{
obj.visibleConf.variable = true;
}
// adjust string visible items
else
{
obj.visibleConf.adjust = obj.visible;
}
obj.visible = false;
}
else if (is_function(obj.visible))
{
obj.visibleConf.adjust = obj.visible;
obj.visible = false;
}
// set items filter
if (!is_string(obj.filter))
{
obj.filter = (itm.filter(':hidden').length > 0) ? ':visible' : '*';
}
// primary item-size not set
if (!obj[opt.d['width']])
{
// responsive carousel -> set to largest
if (opt.responsive)
{
debug(true, 'Set a '+opt.d['width']+' for the items!');
obj[opt.d['width']] = ms_getTrueLargestSize(itm, opt, 'outerWidth');
}
// non-responsive -> measure it or set to "variable"
else
{
obj[opt.d['width']] = (ms_hasVariableSizes(itm, opt, 'outerWidth'))
? 'variable'
: itm[opt.d['outerWidth']](true);
}
}
// secondary item-size not set -> measure it or set to "variable"
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) {
// primary item-size variable -> set visible items variable
if (opt.items[opt.d['width']] == 'variable')
{
opt.items.visibleConf.variable = true;
}
if (!opt.items.visibleConf.variable) {
// primary size is number -> calculate visible-items
if (is_number(opt[opt.d['width']]))
{
opt.items.visible = Math.floor(opt[opt.d['width']] / opt.items[opt.d['width']]);
}
// measure and calculate primary size and visible-items
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) {
// primary size set to auto -> measure largest item-size and set it
if (obj == 'auto')
{
obj = ms_getTrueLargestSize(all, opt, 'outerWidth');
}
return obj;
}
function in_complementSecondarySize(obj, opt, all) {
// secondary size set to auto -> measure largest item-size and set it
if (obj == 'auto')
{
obj = ms_getTrueLargestSize(all, opt, 'outerHeight');
}
// secondary size not set -> set to secondary item-size
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;
}
// buttons functions
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
}
// helper functions
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;
}
// EASING FUNCTIONS
$.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);