(function ($) {
$.tSlider = function (container, options) {
this.options = {};
this.context = container.parent();
container.css('position', 'relative');
this.child = container.children();
this.page = null;
this.pages = [];
this.current = 0;
this.interval = null;
var plugin = this;
container.data('slider', plugin);
this.next = function () {
plugin.current++;
if (plugin.current >= $('.pointer', plugin.context).size()) plugin.current = 0;
plugin.moveTo(plugin.current);
}
this.prev = function () {
plugin.current--;
if (plugin.current < 0) plugin.current = $('.pointer', plugin.context).size() - 1;
plugin.moveTo(plugin.current);
}
this.moveTo = function (index) {
clearInterval(plugin.interval);
$('.page.current', plugin.context)
.fadeOut()
.toggleClass('current');
$('.page', plugin.context).eq(index)
.toggleClass('current')
.fadeIn();
$('.pointer.current', plugin.context)
.toggleClass('current');
$('.pointer', plugin.context).eq(index)
.toggleClass('current');
plugin.interval = setInterval(plugin.next, options.autoPlay.interval);
}
this.init = function (element, options) {
this.options = $.extend({}, $.tSlider.optionsDefault, options);
var pagination = $('' + options.arrows.right + '
')
.addClass('next')
.bind('click', this.next);
var prevBtn = $('' + options.arrows.left + '
')
.addClass('prev')
.bind('click', this.prev);
container
.after(nextBtn)
.after(prevBtn);
}
}
if (options.autoPlay != false) {
this.interval = setInterval(this.next, options.autoPlay.interval);
}
}
this.init(container, options);
}
$.fn.tSlider = function (options) {
return $(this).each(function () {
(new $.tSlider($(this), options));
});
}
$.tSlider.optionsDefault = {
pageSize: 4,
startPage: 1,
arrows: {
left: '<',
right: '>'
},
autoPlay: {
interval: 2000
},
pagination: {
className: 'pagination',
pointer: false
}
}
})(jQuery);