(function ($) { $.fn.touchSlider = function (settings) { settings.supportsCssTransitions = (function (style) { var prefixes = ['Webkit','Moz','Ms']; for(var i=0, l=prefixes.length; i < l; i++ ) { if( typeof style[prefixes[i] + 'Transition'] !== 'undefined') { return true; } } return false; })(document.createElement('div').style); settings = jQuery.extend({ roll : true, flexible : false, btn_prev : null, btn_next : null, paging : null, speed : 75, view : 1, range : 0.15, page : 1, transition : false, initComplete : null, counter : null, multi : false }, settings); var opts = []; opts = $.extend({}, $.fn.touchSlider.defaults, settings); return this.each(function () { $.fn.extend(this, touchSlider); var _this = this; this.opts = opts; this._view = this.opts.view; this._speed = this.opts.speed; this._tg = $(this); this._list = this._tg.children().children(); this._width = parseInt(this._tg.css("width")); this._item_w = parseInt(this._list.css("width")); this._len = this._list.length; this._range = this.opts.range * this._width; this._pos = []; this._start = []; this._startX = 0; this._startY = 0; this._left = 0; this._top = 0; this._drag = false; this._scroll = false; this._btn_prev; this._btn_next; this.init(); $(this) .bind("touchstart", this.touchstart) .bind("touchmove", this.touchmove) .bind("touchend", this.touchend) .bind("dragstart", this.touchstart) .bind("drag", this.touchmove) .bind("dragend", this.touchend) $(window).bind("orientationchange resize", function () { _this.resize(_this); }); }); }; var touchSlider = { init : function () { var _this = this; $(this).children().css({ "width":this._width + "px", "overflow":"visible" }); if(this.opts.flexible) this._item_w = this._width / this._view; if(this.opts.roll) this._len = Math.ceil(this._len / this._view) * this._view; var page_gap = (this.opts.page > 1 && this.opts.page <= this._len) ? (this.opts.page - 1) * this._item_w : 0; for(var i=0; i gap) this._left = gap; if(this._left < - gap) this._left = - gap; } if(this.opts.roll) { var tmp_pos = []; for(var i=0; i= 0) || (this._drag && tmp_pos[0] >= 100)) { for(var i=0; i= 0) || (this._drag && tmp_pos[0] > 0)) { for(var i=0; i this._range) r = 1; if(!this._drag || this._scroll) r = 0; return r; }, limit_chk : function () { var last_p = parseInt((this._len - 1) / this._view) * this._view; return ( (this._start[0] == 0 && this._left > 0) || (this._start[last_p] == 0 && this._left < 0) ); }, go_page : function (i, e) { var crt = ($.inArray(0, this._pos) / this._view) + 1; var cal = crt - (i + 1); while(cal != 0) { if(cal < 0) { this.animate(-1, true); cal++; } else if(cal > 0) { this.animate(1, true); cal--; } } }, counter : function () { if(typeof(this.opts.counter) == "function") { var param = { total : Math.ceil(this._len / this._view), current : ($.inArray(0, this._pos) / this._view) + 1 }; this.opts.counter(param); } } }; })(jQuery);