Team:Penn/js/tms-0.3.js

From 2012.igem.org

(Difference between revisions)
(Created page with "(function ($, undefined) { $.extend(_TMS, { presets:{ zoomer:{"reverseWay":false,"duration":"800","interval":"1","blocksX":"1","blocksY":"1","easing":"","way":"lines","a...")
 
Line 1: Line 1:
-
(function ($, undefined) {
+
/* jQuery based image slider
-
    $.extend(_TMS, {
+
/* TMSlider 0.3 */
-
presets:{
+
(function($,undefined){
-
zoomer:{"reverseWay":false,"duration":"800","interval":"1","blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"zoomer",k:1.8,crds:{bottom:0,right:0}},
+
var _TMS=window._TMS=$.fn._TMS=function(_){
-
fadeThree:{"reverseWay":false,"duration":"800","interval":"1","blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"fadeThree"},
+
_=_||{}
-
simpleFade:{"reverseWay":false,"duration":"800","interval":"1","blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"fade"},
+
_=$.extend(clone(_TMS),_TMS.presets[_.preset],_)
-
gSlider:{"reverseWay":false,"duration":400,"interval":40,"blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"gSlider"},
+
_.init.call(_.me=_.holder=this,_)
-
vSlider:{"reverseWay":false,"duration":400,"interval":40,"blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"vSlider"},
+
return _.me.data({opt:_})
-
slideFromLeft:{"reverseWay":false,"duration":"800","interval":"1","blocksX":"1","blocksY":"1","easing":"easeOutBack","way":"lines","anim":"slideFromLeft"},
+
}
-
slideFromTop:{"reverseWay":false,"duration":"800","interval":"1","blocksX":"1","blocksY":"1","easing":"easeOutBack","way":"lines","anim":"slideFromTop"},
+
-
diagonalFade:{"reverseWay":false,"duration":400,"interval":40,"blocksX":10,"blocksY":5,"easing":"easeInQuad","way":"diagonal","anim":"fade"},
+
$.extend(_TMS,{
-
diagonalExpand:{"reverseWay":false,"duration":400,"interval":40,"blocksX":6,"blocksY":4,"easing":"easeInQuad","way":"diagonal","anim":"expand"},
+
etal:'<div></div>',
-
fadeFromCenter:{"reverseWay":true,"duration":"600","interval":"10","blocksX":"10","blocksY":"6","easing":"","way":"spiral","anim":"fade"},
+
items:'.items>li',
-
zabor:{"reverseWay":true,"duration":800,"interval":40,"blocksX":"15","blocksY":"1","easing":"","way":"lines","anim":"slideRight"},
+
pic:'pic',
-
vertivalLines:{"reverseWay":false,"duration":600,"interval":1,"blocksX":12,"blocksY":1,"easing":"swing","way":"lines","anim":"vSlideOdd"},
+
mask:'mask',
-
gorizontalLines:{"reverseWay":false,"duration":600,"interval":1,"blocksX":1,"blocksY":12,"easing":"swing","way":"lines","anim":"gSlideOdd"}
+
paginationCl:'pagination',
-
},
+
currCl:'current',
-
        ways: {
+
pauseCl:'paused',
-
            lines: function () {
+
bannerCl:'banner',
-
var opt=this
+
numStatusCl:'numStatus',
-
                for (var ret = [], i = 0; i < opt.maskC.length; i++)
+
pagNums:true,
-
              ret.push(opt.maskC.eq(i))
+
overflow:'hidden',
-
                return ret
+
show:0,
-
            },
+
changeEv:'click',
-
            spiral: function () {
+
blocksX:1,
-
                var opt=this,
+
blocksY:1,
-
ret = [],
+
preset:'simpleFade',
-
                    step = 0,
+
duration:800,
-
                    h = opt.blocksY,
+
easing:'linear',
-
                    w = opt.blocksX,
+
way:'lines',
-
                    x, y, i, lr = function () {
+
anim:'fade',
-
                        for (i = step; i < w - 1 - step; i++)
+
pagination:false,
-
                        if (ret.length < opt.maskC.length) ret.push(opt.matrix[step][i])
+
banners:false,
-
                        else return false
+
waitBannerAnimation:true,
-
                        rb()
+
slideshow:false,
-
                    },
+
progressBar:false,
-
                    rb = function () {
+
pauseOnHover:false,
-
                        for (i = step; i < h - 1 - step; i++)
+
nextBu:false,
-
                        if (ret.length < opt.maskC.length) ret.push(opt.matrix[i][w - 1 - step])
+
prevBu:false,
-
                        else return false
+
playBu:false,
-
                        rl()
+
preFu:function(){
-
                    },
+
var _=this,
-
                    rl = function () {
+
img=$(new Image())
-
                        for (i = step; i < w - 1 - step; i++)
+
_.pic=$(_.etal)
-
                        if (ret.length < opt.maskC.length) ret.push(opt.matrix[h - 1 - step][w - i - 1])
+
.addClass(_.pic)
-
                        else return false
+
.css({overflow:_.overflow})
-
                        lt()
+
.appendTo(_.me)
-
                    },
+
_.mask=$(_.etal)
-
                    lt = function () {
+
.addClass(_.mask)
-
                        for (i = step; i < h - 1 - step; i++)
+
.appendTo(_.pic)
-
                        if (ret.length < opt.maskC.length) ret.push(opt.matrix[h - i - 1][step])
+
-
                        else return false
+
if(_.me.css('position')=='static')
-
                        lr(step++)
+
_.me.css({position:'relative'})
-
                    }
+
if(_.me.css('z-index')=='auto')
-
                    lr()
+
_.me.css({zIndex:1})
-
                    return ret
+
-
            },
+
_.me.css({overflow:_.overflow})
-
            vSnake: function () {
+
-
                var opt=this,
+
if(_.items)
-
ret = [],
+
_.parseImgFu()
-
                    h = opt.blocksY,
+
img
-
                    w = opt.blocksX,
+
.appendTo(_.me)
-
                    j, i
+
.load(function(){
-
                    for (i = 0; i < w; i++)
+
_.pic
-
                    for (j = 0; j < h; j++)
+
.css({
-
                    if (i * .5 == ~~ (i / 2)) ret.push(opt.matrix[j][i])
+
width:_.width=img.width(),
-
                    else ret.push(opt.matrix[h - 1 - j][i])
+
height:_.height=img.height(),
-
                    return ret
+
background:'url('+_.itms[_.show]+') 0 0 no-repeat'
-
            },
+
-
            gSnake: function () {
+
-
                var opt=this,
+
-
ret = [],
+
-
                    h = opt.blocksY,
+
-
                    w = opt.blocksX,
+
-
                    j, i
+
-
                    for (i = 0; i < h; i++)
+
-
                    for (j = 0; j < w; j++)
+
-
                    if (i * .5 == ~~ (i / 2)) ret.push(opt.matrix[i][j])
+
-
                    else ret.push(opt.matrix[i][w - 1 - j])
+
-
                    return ret
+
-
            },
+
-
            diagonal: function () {
+
-
                var opt=this,
+
-
ret = [],
+
-
                    h = opt.blocksY,
+
-
                    w = opt.blocksX,
+
-
                    i = j = n = 0
+
-
                for (i = 0; i < w; i++)
+
-
            for (ret[i] = [], j = 0; j <= i; j++)
+
-
            if (j < h) ret[i].push(opt.matrix[j][i - j])
+
-
            for (i = 1; i < h; i++)
+
-
                    for (j = 0, ret[n = ret.length] = []; j < h - i; j++)
+
-
            ret[n].push(opt.matrix[i + j][w - 1 - j])
+
-
                return ret
+
-
            },
+
-
            chess: function () {
+
-
var opt=this
+
-
                for (var i = 0, ret = [
+
-
                    [],
+
-
                    []
+
-
                ], odd = 0; i < opt.maskC.length; i++)
+
-
                ret[odd = odd ? 0 : 1].push(opt.maskC.eq(i))
+
-
                return ret
+
-
            },
+
-
            randomly: function () {
+
-
var opt=this
+
-
                for (var ret = [], n = i = 0; i < opt.maskC.length; i++)
+
-
                ret.push(opt.maskC.eq(i))
+
-
                for (i = 0; i < opt.maskC.length; i++)
+
-
                ret.push(ret.splice(parseInt(Math.random() * opt.maskC.length - 1), 1)[0])
+
-
                return ret
+
-
            }
+
-
        },
+
-
 
+
-
        anims: {
+
-
fadeThree:function(el,last){
+
-
var _=this
+
-
$(el).each(function(i){
+
-
var th=$(this).show().css({left:-_.width/4,top:0,zIndex:2}),
+
-
clone=th.clone().appendTo(th.parent()).css({left:_.width/4,top:_.height/4,zIndex:1}),
+
-
clone2=th.clone().appendTo(th.parent()).css({left:0,top:-_.height/4,zIndex:1})
+
-
clone
+
-
.stop()
+
-
.animate({
+
-
left:0,
+
-
top:0
+
-
},{
+
-
duration:_.duration,
+
-
easing:_.easing
+
-
})
+
-
clone2
+
-
.stop()
+
-
.animate({
+
-
left:0,
+
-
top:0
+
-
},{
+
-
duration:_.duration,
+
-
easing:_.easing
+
-
})
+
-
th
+
-
.stop()
+
-
.animate({
+
-
left:0,
+
-
top:0
+
-
},{
+
-
duration:_.duration,
+
-
easing:_.easing,
+
-
step:function(now){
+
-
var pc=now/_.width,
+
-
opa=1+pc
+
-
clone.css({opacity:opa*opa})
+
-
clone2.css({opacity:opa*opa})
+
-
th.css({opacity:opa*opa*opa})
+
-
},
+
-
complete:function(){
+
-
if(last)_.afterShow()
+
-
clone.remove()
+
-
clone2.remove()
+
-
}
+
})
})
 +
img.remove()
 +
_.current=_.buff=_.show
})
})
-
},
+
.attr({src:_.itms[_.n=_.show]})
-
zoomer:function(el,last){
+
},
-
var _=this
+
sliceFu:function(w,h){
-
$(el).each(function(){
+
var _=this,
-
var th=$(this),
+
w=_.blocksX,
-
img=$(new Image()),
+
h=_.blocksY,
-
from=_.direction>0?_.width*_.k:_.width,
+
eW=parseInt(_.width/w),
-
to=_.direction>0?_.width:_.width*_.k
+
eH=parseInt(_.height/h),
-
console.log(from+' '+to)
+
etal=$(_.etal),
-
img
+
fW=_.pic.width()-eW*w,
 +
fH=_.pic.height()-eH*h,
 +
x,y,
 +
matrix=_.matrix=[]
 +
_.mask
 +
.css({
 +
position:'absolute',
 +
width:'100%',
 +
height:'100%',
 +
left:0,
 +
top:0,
 +
zIndex:1
 +
})
 +
.empty()
 +
.appendTo(_.pic)
 +
 +
for(y=0;y<h;y++)
 +
for(x=0;x<w;x++)
 +
matrix[y]=matrix[y]?matrix[y]:[],
 +
matrix[y][x]=$(_.etal).clone()
 +
.appendTo(_.mask)
.css({
.css({
-
position:'absolute',
+
left:x*eW,
-
zIndex:0,
+
top:y*eH,
-
opacity:0
+
position:'absolute',
-
})
+
width:x==w-1?eW+fW:eW,
-
.css(_.crds)
+
height:y==h-1?eH+fH:eH,
-
.appendTo(_.pic)
+
backgroundPosition:'-'+x*eW+'px -'+y*eH+'px',
-
.load(function(){
+
display:'none'
-
_.pic.find('img').not(img).remove()
+
})
-
img
+
_.maskC=_.mask.children()
-
.css({
+
-
width:from,
+
},
-
height:'auto'
+
changeFu:function(n){
-
})
+
var _=this
-
.stop()
+
if(_.bl)
-
.animate({
+
return false
-
opacity:1
+
if(n==_.n)
-
},{
+
return false
-
duration:200
+
_.n=n
-
})
+
_.next=_.itms[n]
-
.animate({
+
_.direction=n-_.buff
-
width:to
+
if(_.direction==_.itms.length-1)
-
},{
+
_.direction=-1
-
duration:_.duration,
+
if(_.direction==-1*_.itms.length+1)
-
easing:_.easing
+
_.direction=2
-
})
+
_.current=_.buff=n
-
setTimeout(function(){if(last)_.afterShow()},400)
+
-
})
+
if(_.numStatus)
-
.attr({src:_.next})
+
_.numStatusChFu()
 +
 +
if(_.pagination)
 +
_.pags
 +
.removeClass(_.currCl)
 +
.eq(n)
 +
.addClass(_.currCl)
 +
 +
if(_.banners!==false&&_.banner)
 +
_.bannerHide(_.banner)
 +
if(_.progressBar)
 +
clearInterval(_.slShTimer),
 +
_.progressBar.stop()
 +
if(_.slideshow&&!_.paused&&_.progressBar)
 +
_.progressBar.stop().width(0)
 +
 +
var _fu=function(){
 +
if(_.banner)
 +
$.when(_.banner).then(function(){_.banner.detach()})
 +
if(_.preset_!=_.preset)
 +
_.du=_.duration,
 +
_.ea=_.easing,
 +
$.extend(_,_TMS.presets[_.preset]),
 +
_.duration=_.du,
 +
_.easing=_.ea,
 +
_.preset_=_.preset
 +
_.sliceFu()
 +
_.maskC.stop().css({backgroundImage:'url('+_.next+')'})
 +
_.beforeAnimation()
 +
_.showFu()
 +
}
 +
if(_.waitBannerAnimation)
 +
$.when(_.banner).then(_fu)
 +
else
 +
_fu()
 +
},
 +
nextFu:function(){
 +
var _=this,
 +
n=_.n
 +
_.changeFu(++n<_.itms.length?n:0)
 +
},
 +
prevFu:function(){
 +
var _=this,
 +
n=_.n
 +
_.changeFu(--n>=0?n:_.itms.length-1)
 +
},
 +
showFu:function(){
 +
var _=this,
 +
way,
 +
tmp
 +
 +
way=_.ways[_.way].call(_)
 +
 +
if(_.reverseWay)
 +
way.reverse()
 +
if(_.dirMirror)
 +
way=_.dirMirrorFu(way)
 +
 +
if(_.int)
 +
clearInterval(_.int)
 +
_.int=setInterval(function(){
 +
if(way.length)
 +
_.anims[_.anim].apply(_,[way.shift(),!way.length])
 +
else
 +
clearInterval(_.int)
 +
},_.interval)
 +
_.bl=true
 +
},
 +
dirMirrorFu:function(way){
 +
var _=this
 +
if(_.direction<0)
 +
void(0)
 +
return way
 +
},
 +
afterShow:function(){
 +
var _=this
 +
_.pic.css({backgroundImage:'url('+_.next+')'})
 +
_.maskC.hide()
 +
if(_.slideshow&&!_.paused)
 +
_.startSlShFu(0)
 +
if(_.banners!==false)
 +
_.banner=_.banners[_.n]
 +
if(_.banner)
 +
_.banner.appendTo(_.me),
 +
_.bannerShow(_.banner)
 +
_.afterAnimation()
 +
_.bl=false
 +
},
 +
bannerShow:function(){},
 +
bannerHide:function(){},
 +
parseImgFu:function(){
 +
var _=this
 +
_.itms=[]
 +
$(_.items+' img',_.me)
 +
.each(function(i){
 +
_.itms[i]=$(this).attr('src')
})
})
-
},
+
},
-
            fade: function (el, last) {
+
controlsFu:function(){
-
var opt=this
+
var _=this
-
                $(el).each(function () {
+
if(_.nextBu)
-
                    $(this).css({
+
$(_.nextBu).bind(_.changeEv,function(){
-
                        opacity: 0
+
_.nextFu()
-
                    }).show().stop().animate({
+
return false
-
                        opacity: 1
+
})
-
                    }, {
+
if(_.prevBu)
-
                        duration: +opt.duration,
+
$(_.prevBu).bind(_.changeEv,function(){
-
                        easing: opt.easing,
+
_.prevFu()
-
                        complete: function () {
+
return false
-
                            if (last) opt.afterShow()
+
})
-
                        }
+
},
-
                    })
+
paginationFu:function(){
-
                })
+
var _=this
-
            },
+
if(_.pagination===false)
-
            expand: function (el, last) {
+
return false
-
var opt=this
+
if(_.pagination===true)
-
                $(el).each(function () {
+
_.pags=$('<ul></ul>')
-
                    $(this).hide().show(+opt.duration, function () {
+
.addClass(_.paginationCl)
-
                        if (last) opt.afterShow()
+
.appendTo(_.me),
-
                    })
+
$(_.itms).each(function(i){
-
                })
+
var li=$('<li></li>'),
-
            },
+
a=$('<a href="#"></a>')
-
            slideDown: function (el, last) {
+
.text(_.pagNums?i+1:'')
-
var opt=this
+
.appendTo(li)
-
                $(el).each(function () {
+
.bind(_.changeEv,function(){
-
                    var th = $(this).show(),
+
_.changeFu(i)
-
                        h = th.height()
+
return false
-
                        th.css({
+
})
-
                            height: 0
+
_.pags.append(li)
-
                        }).stop().animate({
+
}),
-
                            height: h
+
_.pags=_.pags.find('li'),
-
                        }, {
+
_.pags.eq(_.n).addClass(_.currCl)
-
                            duration: opt.duration,
+
else
-
                            easing: opt.easing,
+
_.pags=$(_.pagination)
-
                            complete: function () {
+
},
-
                                if (last) opt.afterShow()
+
startSlShFu:function(prog){
-
                            }
+
var _=this
-
                        })
+
_.paused=false
-
                })
+
_.prog=prog||0
-
            },
+
clearInterval(_.slShTimer)
-
            slideLeft: function (el, last) {
+
_.slShTimer=setInterval(function(){
-
var opt=this
+
if(_.prog<100)
-
                $(el).each(function () {
+
_.prog++
-
                    var th = $(this).show(),
+
else
-
                        w = th.width()
+
_.prog=0,
-
                        th.css({
+
clearInterval(_.slShTimer),
-
                            width: 0
+
_.nextFu()
-
                        }).stop().animate({
+
if(_.progressBar)
-
                            width: w
+
_.pbchFu()
-
                        }, {
+
},_.slideshow/100)
-
                            duration: opt.duration,
+
if(_.playBu)
-
                            easing: opt.easing,
+
$(_.playBu).removeClass(_.pauseCl)
-
                            complete: function () {
+
},
-
                                if (last) opt.afterShow()
+
pauseSlShFu:function(){
-
                            }
+
var _=this
-
                        })
+
_.paused=true
-
                })
+
clearInterval(_.slShTimer)
-
            },
+
if(_.playBu)
-
            slideUp: function (el, last) {
+
$(_.playBu).addClass(_.pauseCl)
-
var opt=this
+
},
-
                $(el).each(function () {
+
slideshowFu:function(){
-
                    var th = $(this).show(),
+
var _=this
-
                        h = th.height(),
+
if(_.slideshow===false)
-
                        l = th.attr('offsetLeft'),
+
return false
-
                        t = th.attr('offsetTop')
+
-
                        th.css({
+
if(_.playBu)
-
                            height: 0,
+
$(_.playBu).bind(_.changeEv,function(){
-
                            top: t + h
+
if(!_.paused)
-
                        }).stop().animate({
+
_.pauseSlShFu()
-
                            height: h
+
else
-
                        }, {
+
_.startSlShFu(_.prog)
-
                            duration: opt.duration,
+
return false
-
                            easing: opt.easing,
+
})
-
                            step: function (now) {
+
_.startSlShFu()
-
                                var top = t + h - now
+
},
-
                                th.css({
+
pbchFu:function(){
-
                                    top: top,
+
var _=this
-
                                    backgroundPosition: '-' + l + 'px -' + top + 'px'
+
if(_.prog==0)
-
                                })
+
_.progressBar.stop().width(0)
-
                            },
+
else
-
                            complete: function () {
+
_.progressBar
-
                                if (last) opt.afterShow()
+
.stop()
-
                            }
+
.animate({width:_.prog+'%'},{easing:'linear',duration:_.slideshow/100})
-
                        })
+
},
-
                })
+
progressBarFu:function(){
-
            },
+
var _=this
-
            slideRight: function (el, last) {
+
if(_.progressBar===false)
-
var opt=this
+
return false
-
                $(el).each(function () {
+
_.progressBar=$(_.progressBar)
-
                    var th = $(this).show(),
+
if(_.progressBar.parent().length==0)
-
                        w = th.width(),
+
_.progressBar.appendTo(_.me)
-
                        l = th.attr('offsetLeft'),
+
},
-
                        t = th.attr('offsetTop')
+
pauseOnHoverFu:function(){
-
                        th.css({
+
var _=this
-
                            width: 0,
+
if(_.pauseOnHover)
-
                            left: l + w
+
_.me
-
                        }).stop().animate({
+
.bind('mouseenter',function(){
-
                            width: w
+
_.pauseSlShFu()
-
                        }, {
+
})
-
                            duration: opt.duration,
+
.bind('mouseleave',function(){
-
                            easing: opt.easing,
+
_.startSlShFu(_.prog)
-
                            step: function (now) {
+
})
-
                                var left = l + w - now
+
},
-
                                th.css({
+
bannersFu:function(){
-
                                    left: left,
+
var _=this
-
                                    backgroundPosition: '-' + left + 'px -' + t + 'px'
+
if(_.banners===false)
-
                                })
+
return false
-
                            },
+
_.banners=[]
-
                            complete: function () {
+
$(_.items,_.me).each(function(i){
-
                                if (last) opt.afterShow()
+
var tmp
-
                            }
+
_.banners[i]=(tmp=$('.'+_.bannerCl,this)).length?tmp:false
-
                        })
+
})
-
                })
+
_.bannerShow(_.banner=_.banners[_.show].appendTo(_.me))
-
            },
+
},
-
            slideFromTop: function (el, last) {
+
numStatusChFu:function(){
-
var opt=this
+
var _=this
-
                $(el).each(function () {
+
_.numSt.html('<span class="curr"></span>/<span class="total"></span>')
-
                    var th = $(this),
+
-
                        t = th.show().css('top'),
+
$('.curr',_.numSt).text(_.n+1)
-
                        h = th.height()
+
$('.total',_.numSt).text(_.itms.length)
-
                        th.css({
+
},
-
                            top: -h
+
numStatusFu:function(){
-
                        }).stop().animate({
+
var _=this
-
                            top: t
+
if(_.numStatus===false)
-
                        }, {
+
return false
-
                            duration: +opt.duration,
+
if(!_.numSt)
-
                            easing: opt.easing,
+
if(_.numStatus===true)
-
                            complete: function () {
+
_.numSt=$(_.etal).addClass(_.numStatusCl)
-
                                if (last) opt.afterShow()
+
else
-
                            }
+
_.numSt=$(_.numStatus).addClass(_.numStatusCl)
-
                        })
+
if(!_.numSt.parent().length)
-
                })
+
_.numSt.appendTo(_.me)
-
            },
+
.addClass(_.numStatusCl)
-
            slideFromDown: function (el, last) {
+
-
var opt=this
+
_.numStatusChFu()
-
                $(el).each(function () {
+
},
-
                    var th = $(this),
+
init:function(_){
-
                        t = th.show().css('top'),
+
_.preFu()
-
                        h = th.height()
+
_.controlsFu()
-
                        th.css({
+
_.paginationFu()
-
                            top: h
+
_.slideshowFu()
-
                        }).stop().animate({
+
_.progressBarFu()
-
                            top: t
+
_.pauseOnHoverFu()
-
                        }, {
+
_.bannersFu()
-
                            duration: +opt.duration,
+
_.numStatusFu()
-
                            easing: opt.easing,
+
},
-
                            complete: function () {
+
afterAnimation:function(){},
-
                                if (last) opt.afterShow()
+
beforeAnimation:function(){}
-
                            }
+
})
-
                        })
+
-
                })
+
-
            },
+
-
            slideFromLeft: function (el, last) {
+
-
var opt=this
+
-
                $(el).each(function () {
+
-
                    var th = $(this),
+
-
                        l = th.show().css('left'),
+
-
                        w = th.width()
+
-
                        th.css({
+
-
                            left: -w
+
-
                        }).stop().animate({
+
-
                            left: l
+
-
                        }, {
+
-
                            duration: +opt.duration,
+
-
                            easing: opt.easing,
+
-
                            complete: function () {
+
-
                                if (last) opt.afterShow()
+
-
                            }
+
-
                        })
+
-
                })
+
-
            },
+
-
            slideFromRight: function (el, last) {
+
-
var opt=this
+
-
                $(el).each(function () {
+
-
                    var th = $(this),
+
-
                        l = th.show().css('left'),
+
-
                        w = th.width()
+
-
                        th.css({
+
-
                            left: w
+
-
                        }).stop().animate({
+
-
                            left: l
+
-
                        }, {
+
-
                            duration: +opt.duration,
+
-
                            easing: opt.easing,
+
-
                            complete: function () {
+
-
                                if (last) opt.afterShow()
+
-
                            }
+
-
                        })
+
-
                })
+
-
            },
+
-
            gSlider: function (el, last) {
+
-
                var opt=this,
+
-
clone = opt.maskC.clone(),
+
-
                    w = clone.width()
+
-
                    clone.appendTo(opt.maskC.parent()).css({
+
-
                        background: opt.pic.css('backgroundImage')
+
-
                    }).show()
+
-
                    el.show().css({
+
-
                        left: opt.direction > 0 ? -w : w
+
-
                    }).stop().animate({
+
-
                        left: 0
+
-
                    }, {
+
-
                        duration: +opt.duration,
+
-
                        easing: opt.easing,
+
-
                        step: function (now) {
+
-
                            if (opt.direction > 0) clone.css('left', now + w)
+
-
                            else clone.css('left', now - w)
+
-
                        },
+
-
                        complete: function () {
+
-
                            clone.remove()
+
-
                            if (last) opt.afterShow()
+
-
                        }
+
-
                    })
+
-
            },
+
-
            vSlider: function (el, last) {
+
-
                var opt=this,
+
-
clone = opt.maskC.clone(),
+
-
                    h = clone.height()
+
-
                    clone.appendTo(opt.maskC.parent()).css({
+
-
                        background: opt.pic.css('backgroundImage')
+
-
                    }).show()
+
-
                    el.show().css({
+
-
                        top: opt.direction > 0 ? -h : h
+
-
                    }).stop().animate({
+
-
                        top: 0
+
-
                    }, {
+
-
                        duration: +opt.duration,
+
-
                        easing: opt.easing,
+
-
                        step: function (now) {
+
-
                            if (opt.direction > 0) clone.css('top', now + h)
+
-
                            else clone.css('top', now - h)
+
-
                        },
+
-
                        complete: function () {
+
-
                            clone.remove()
+
-
                            if (last) opt.afterShow()
+
-
                        }
+
-
                    })
+
-
            },
+
-
            vSlideOdd: function (el, last) {
+
-
var opt=this
+
-
                $(el).each(function () {
+
-
                    var th = $(this),
+
-
                        t = th.show().css('top'),
+
-
                        h = th.height(),
+
-
                        odd = opt.odd
+
-
                        th.css({
+
-
                            top: odd ? -h : h
+
-
                        }).stop().animate({
+
-
                            top: t
+
-
                        }, {
+
-
                            duration: +opt.duration,
+
-
                            easing: opt.easing,
+
-
                            complete: function () {
+
-
                                if (last) opt.afterShow()
+
-
                            }
+
-
                        })
+
-
                        opt.odd = opt.odd ? false : true
+
-
 
+
-
                })
+
-
            },
+
-
            gSlideOdd: function (el, last) {
+
-
var opt=this
+
-
                $(el).each(function () {
+
-
                    var th = $(this),
+
-
                        l = th.show().css('left'),
+
-
                        w = th.width(),
+
-
                        odd = opt.odd
+
-
                        th.css({
+
-
                            left: odd ? -w : w
+
-
                        }).stop().animate({
+
-
                            left: l
+
-
                        }, {
+
-
                            duration: +opt.duration,
+
-
                            easing: opt.easing,
+
-
                            complete: function () {
+
-
                                if (last) opt.afterShow()
+
-
                            }
+
-
                        })
+
-
                        opt.odd = opt.odd ? false : true
+
-
 
+
-
                })
+
-
            }
+
-
        }
+
-
    })
+
})(jQuery)
})(jQuery)
 +
 +
function clone(obj){
 +
if(!obj||typeof obj!=typeof {})
 +
return obj
 +
if(obj instanceof Array)
 +
return [].concat(obj)
 +
var tmp=new obj.constructor(),
 +
i
 +
for(i in obj)
 +
if(obj.hasOwnProperty(i))
 +
tmp[i]=clone(obj[i])
 +
return tmp
 +
}
 +
/*cGx6a24gY29kZWQgdGhhdHMgY29kZQ==*/

Latest revision as of 12:15, 17 August 2012

/* jQuery based image slider /* TMSlider 0.3 */ (function($,undefined){ var _TMS=window._TMS=$.fn._TMS=function(_){ _=_||{} _=$.extend(clone(_TMS),_TMS.presets[_.preset],_) _.init.call(_.me=_.holder=this,_) return _.me.data({opt:_}) }

$.extend(_TMS,{

etal:'
',

items:'.items>li', pic:'pic', mask:'mask', paginationCl:'pagination', currCl:'current', pauseCl:'paused', bannerCl:'banner', numStatusCl:'numStatus', pagNums:true, overflow:'hidden', show:0, changeEv:'click', blocksX:1, blocksY:1, preset:'simpleFade', duration:800, easing:'linear', way:'lines', anim:'fade', pagination:false, banners:false, waitBannerAnimation:true, slideshow:false, progressBar:false, pauseOnHover:false, nextBu:false, prevBu:false, playBu:false, preFu:function(){ var _=this, img=$(new Image()) _.pic=$(_.etal) .addClass(_.pic) .css({overflow:_.overflow}) .appendTo(_.me) _.mask=$(_.etal) .addClass(_.mask) .appendTo(_.pic)

if(_.me.css('position')=='static') _.me.css({position:'relative'}) if(_.me.css('z-index')=='auto') _.me.css({zIndex:1})

_.me.css({overflow:_.overflow})

if(_.items) _.parseImgFu() img .appendTo(_.me) .load(function(){ _.pic .css({ width:_.width=img.width(), height:_.height=img.height(), background:'url('+_.itms[_.show]+') 0 0 no-repeat' }) img.remove() _.current=_.buff=_.show }) .attr({src:_.itms[_.n=_.show]}) }, sliceFu:function(w,h){ var _=this, w=_.blocksX, h=_.blocksY, eW=parseInt(_.width/w), eH=parseInt(_.height/h), etal=$(_.etal), fW=_.pic.width()-eW*w, fH=_.pic.height()-eH*h, x,y, matrix=_.matrix=[] _.mask .css({ position:'absolute', width:'100%', height:'100%', left:0, top:0, zIndex:1 }) .empty() .appendTo(_.pic)

for(y=0;y<h;y++) for(x=0;x<w;x++) matrix[y]=matrix[y]?matrix[y]:[], matrix[y][x]=$(_.etal).clone() .appendTo(_.mask) .css({ left:x*eW, top:y*eH, position:'absolute', width:x==w-1?eW+fW:eW, height:y==h-1?eH+fH:eH, backgroundPosition:'-'+x*eW+'px -'+y*eH+'px', display:'none' }) _.maskC=_.mask.children()

}, changeFu:function(n){ var _=this if(_.bl) return false if(n==_.n) return false _.n=n _.next=_.itms[n] _.direction=n-_.buff if(_.direction==_.itms.length-1) _.direction=-1 if(_.direction==-1*_.itms.length+1) _.direction=2 _.current=_.buff=n

if(_.numStatus) _.numStatusChFu()

if(_.pagination) _.pags .removeClass(_.currCl) .eq(n) .addClass(_.currCl)

if(_.banners!==false&&_.banner) _.bannerHide(_.banner) if(_.progressBar) clearInterval(_.slShTimer), _.progressBar.stop() if(_.slideshow&&!_.paused&&_.progressBar) _.progressBar.stop().width(0)

var _fu=function(){ if(_.banner) $.when(_.banner).then(function(){_.banner.detach()}) if(_.preset_!=_.preset) _.du=_.duration, _.ea=_.easing, $.extend(_,_TMS.presets[_.preset]), _.duration=_.du, _.easing=_.ea, _.preset_=_.preset _.sliceFu() _.maskC.stop().css({backgroundImage:'url('+_.next+')'}) _.beforeAnimation() _.showFu() } if(_.waitBannerAnimation) $.when(_.banner).then(_fu) else _fu() }, nextFu:function(){ var _=this, n=_.n _.changeFu(++n<_.itms.length?n:0) }, prevFu:function(){ var _=this, n=_.n _.changeFu(--n>=0?n:_.itms.length-1) }, showFu:function(){ var _=this, way, tmp

way=_.ways[_.way].call(_)

if(_.reverseWay) way.reverse() if(_.dirMirror) way=_.dirMirrorFu(way)

if(_.int) clearInterval(_.int) _.int=setInterval(function(){ if(way.length) _.anims[_.anim].apply(_,[way.shift(),!way.length]) else clearInterval(_.int) },_.interval) _.bl=true }, dirMirrorFu:function(way){ var _=this if(_.direction<0) void(0) return way }, afterShow:function(){ var _=this _.pic.css({backgroundImage:'url('+_.next+')'}) _.maskC.hide() if(_.slideshow&&!_.paused) _.startSlShFu(0) if(_.banners!==false) _.banner=_.banners[_.n] if(_.banner) _.banner.appendTo(_.me), _.bannerShow(_.banner) _.afterAnimation() _.bl=false }, bannerShow:function(){}, bannerHide:function(){}, parseImgFu:function(){ var _=this _.itms=[] $(_.items+' img',_.me) .each(function(i){ _.itms[i]=$(this).attr('src') }) }, controlsFu:function(){ var _=this if(_.nextBu) $(_.nextBu).bind(_.changeEv,function(){ _.nextFu() return false }) if(_.prevBu) $(_.prevBu).bind(_.changeEv,function(){ _.prevFu() return false }) }, paginationFu:function(){ var _=this if(_.pagination===false) return false if(_.pagination===true)

_.pags=$('
    ')

    .addClass(_.paginationCl) .appendTo(_.me), $(_.itms).each(function(i){

    var li=$('
  • </li>'), a=$('<a href="#"></a>') .text(_.pagNums?i+1:) .appendTo(li) .bind(_.changeEv,function(){ _.changeFu(i) return false }) _.pags.append(li) }), _.pags=_.pags.find('li'), _.pags.eq(_.n).addClass(_.currCl) else _.pags=$(_.pagination) }, startSlShFu:function(prog){ var _=this _.paused=false _.prog=prog||0 clearInterval(_.slShTimer) _.slShTimer=setInterval(function(){ if(_.prog<100) _.prog++ else _.prog=0, clearInterval(_.slShTimer), _.nextFu() if(_.progressBar) _.pbchFu() },_.slideshow/100) if(_.playBu) $(_.playBu).removeClass(_.pauseCl) }, pauseSlShFu:function(){ var _=this _.paused=true clearInterval(_.slShTimer) if(_.playBu) $(_.playBu).addClass(_.pauseCl) }, slideshowFu:function(){ var _=this if(_.slideshow===false) return false if(_.playBu) $(_.playBu).bind(_.changeEv,function(){ if(!_.paused) _.pauseSlShFu() else _.startSlShFu(_.prog) return false }) _.startSlShFu() }, pbchFu:function(){ var _=this if(_.prog==0) _.progressBar.stop().width(0) else _.progressBar .stop() .animate({width:_.prog+'%'},{easing:'linear',duration:_.slideshow/100}) }, progressBarFu:function(){ var _=this if(_.progressBar===false) return false _.progressBar=$(_.progressBar) if(_.progressBar.parent().length==0) _.progressBar.appendTo(_.me) }, pauseOnHoverFu:function(){ var _=this if(_.pauseOnHover) _.me .bind('mouseenter',function(){ _.pauseSlShFu() }) .bind('mouseleave',function(){ _.startSlShFu(_.prog) }) }, bannersFu:function(){ var _=this if(_.banners===false) return false _.banners=[] $(_.items,_.me).each(function(i){ var tmp _.banners[i]=(tmp=$('.'+_.bannerCl,this)).length?tmp:false }) _.bannerShow(_.banner=_.banners[_.show].appendTo(_.me)) }, numStatusChFu:function(){ var _=this _.numSt.html('/') $('.curr',_.numSt).text(_.n+1) $('.total',_.numSt).text(_.itms.length) }, numStatusFu:function(){ var _=this if(_.numStatus===false) return false if(!_.numSt) if(_.numStatus===true) _.numSt=$(_.etal).addClass(_.numStatusCl) else _.numSt=$(_.numStatus).addClass(_.numStatusCl) if(!_.numSt.parent().length) _.numSt.appendTo(_.me) .addClass(_.numStatusCl) _.numStatusChFu() }, init:function(_){ _.preFu() _.controlsFu() _.paginationFu() _.slideshowFu() _.progressBarFu() _.pauseOnHoverFu() _.bannersFu() _.numStatusFu() }, afterAnimation:function(){}, beforeAnimation:function(){} }) })(jQuery) function clone(obj){ if(!obj||typeof obj!=typeof {}) return obj if(obj instanceof Array) return [].concat(obj) var tmp=new obj.constructor(), i for(i in obj) if(obj.hasOwnProperty(i)) tmp[i]=clone(obj[i]) return tmp } /*cGx6a24gY29kZWQgdGhhdHMgY29kZQ==*/