(function($) { $.fn.jcarousellite = function(o) { o = $.extend({ btnprev: null, btnnext: null, btngo: null, mousewheel: false, auto: null, hoverpause: false, speed: 200, easing: null, vertical: false, circular: true, visible: 3, start: 0, scroll: 1, beforestart: null, afterend: null }, o || {}); return this.each(function() { var running = false, animcss = o.vertical ? "top" : "left", sizecss = o.vertical ? "height" : "width"; var div = $(this), ul = $("ul", div), tli = $("li", ul), tl = tli.size(), v = o.visible; if (o.circular) { ul.prepend(tli.slice(tl - v + 1).clone()).append(tli.slice(0, o.scroll).clone()); o.start += v - 1; } var li = $("li", ul), itemlength = li.size(), curr = o.start; div.css("visibility", "visible"); li.css({ overflow: "hidden", float: o.vertical ? "none" : "left" }); ul.css({ margin: "0", padding: "0", position: "relative", "list-style-type": "none", "z-index": "1" }); div.css({ overflow: "hidden", // position: "relative", "z-index": "2", left: "0px" }); var lisize = o.vertical ? height(li) : width(li); var ulsize = lisize * itemlength; var divsize = lisize * v; li.css({ width: li.width(), height: li.height() }); ul.css(sizecss, ulsize + "px").css(animcss, -(curr * lisize)); div.css(sizecss, divsize + "px"); if (o.btnprev) { $(o.btnprev).click(function() { return go(curr - o.scroll); }); if (o.hoverpause) { $(o.btnprev).hover(function() { stopauto(); }, function() { startauto(); }); } } if (o.btnnext) { $(o.btnnext).click(function() { return go(curr + o.scroll); }); if (o.hoverpause) { $(o.btnnext).hover(function() { stopauto(); }, function() { startauto(); }); } } if (o.btngo) $.each(o.btngo, function(i, val) { $(val).click(function() { return go(o.circular ? o.visible + i : i); }); }); if (o.mousewheel && div.mousewheel) div.mousewheel(function(e, d) { return d > 0 ? go(curr - o.scroll) : go(curr + o.scroll); }); var autointerval; function startauto() { stopauto(); autointerval = setinterval(function() { go(curr + o.scroll); }, o.auto + o.speed); }; function stopauto() { clearinterval(autointerval); }; if (o.auto) { if (o.hoverpause) { div.hover(function() { stopauto(); }, function() { startauto(); }); } startauto(); }; function vis() { return li.slice(curr).slice(0, v); }; function go(to) { if (!running) { if (o.beforestart) o.beforestart.call(this, vis()); if (o.circular) { if (to < 0) { ul.css(animcss, -((curr + tl) * lisize) + "px"); curr = to + tl; } else if (to > itemlength - v) { ul.css(animcss, -((curr - tl) * lisize) + "px"); curr = to - tl; } else curr = to; } else { if (to < 0 || to > itemlength - v) return; else curr = to; } running = true; ul.animate(animcss == "left" ? { left: -(curr * lisize) } : { top: -(curr * lisize) }, o.speed, o.easing, function() { if (o.afterend) o.afterend.call(this, vis()); running = false; }); if (!o.circular) { $(o.btnprev + "," + o.btnnext).removeclass("disabled"); $((curr - o.scroll < 0 && o.btnprev) || (curr + o.scroll > itemlength - v && o.btnnext) || []).addclass( "disabled"); } } return false; }; }); }; function css(el, prop) { return parseint($.css(el[0], prop)) || 0; }; function width(el) { return el[0].offsetwidth + css(el, 'marginleft') + css(el, 'marginright'); }; function height(el) { return el[0].offsetheight + css(el, 'margintop') + css(el, 'marginbottom'); }; })(jquery);