Skip to content
Snippets Groups Projects
Select Git revision
  • 82758a9a9794f3e4fd8ca49c5626ab68379edbd9
  • master default protected
2 results

preprocess.m

Blame
  • tms-0.4.1.js 34.57 KiB
    /* jQuery based image slider
    /* TMSlider 0.4.1 */
    ;(function($){
    	$.fn.TMSlider=$.fn.TMS=$.fn._TMS=function(o){
    		return this.each(function(){
    			var th=$(this),				
    				_=th.data('_TMS')||{
    					presets:{
    						centralExpand:{"reverseWay":false,"interval":80,"blocksX":8,"blocksY":4,"easing":"easeInQuad","way":"diagonal","anim":"centralExpand"},
    						zoomer:{"reverseWay":false,"interval":"1","blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"zoomer"},
    						fadeThree:{"reverseWay":false,"interval":"1","blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"fadeThree"},
    						simpleFade:{"reverseWay":false,"interval":"1","blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"fade"},
    						gSlider:{"reverseWay":false,"interval":40,"blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"gSlider"},
    						vSlider:{"reverseWay":false,"interval":40,"blocksX":"1","blocksY":"1","easing":"","way":"lines","anim":"vSlider"},
    						slideFromLeft:{"reverseWay":false,"interval":"1","blocksX":"1","blocksY":"1","easing":"easeOutBack","way":"lines","anim":"slideFromLeft"},
    						slideFromTop:{"reverseWay":false,"interval":"1","blocksX":"1","blocksY":"1","easing":"easeOutBack","way":"lines","anim":"slideFromTop"},
    						diagonalFade:{"reverseWay":false,"interval":40,"blocksX":12,"blocksY":6,"easing":"easeInQuad","way":"diagonal","anim":"fade"},
    						diagonalExpand:{"reverseWay":false,"interval":40,"blocksX":8,"blocksY":4,"easing":"easeInQuad","way":"diagonal","anim":"expand"},
    						fadeFromCenter:{"reverseWay":true,"interval":"10","blocksX":"10","blocksY":"6","easing":"","way":"spiral","anim":"fade"},
    						lines:{"reverseWay":false,"interval":40,"blocksX":"20","blocksY":"1","easing":"","way":"lines","anim":"slideRight"},
    						verticalLines:{"reverseWay":false,"interval":1,"blocksX":12,"blocksY":1,"easing":"swing","way":"lines","anim":"vSlideOdd"},
    						horizontalLines:{"reverseWay":false,"interval":1,"blocksX":1,"blocksY":12,"easing":"swing","way":"lines","anim":"gSlideOdd"},
    						random:{prsts:['centralExpand','fadeThree','simpleFade','gSlider','vSlider','slideFromLeft','slideFromTop','diagonalFade','diagonalExpand','fadeFromCenter','zabor','vertivalLines','gorizontalLines']}
    					},
    					ways: {				
    						lines: function () {
    							var opt=this
    							for (var ret = [], i = 0; i < opt.maskC.length; i++)
    								ret.push(opt.maskC.eq(i))
    							return ret
    						},
    						spiral: function () {
    							var opt=this,
    								ret = [],
    								step = 0,
    								h = opt.blocksY,
    								w = opt.blocksX,
    								x, y, i, lr = function () {
    									for (i = step; i < w - 1 - step; i++)
    									if (ret.length < opt.maskC.length) ret.push(opt.matrix[step][i])
    									else return false
    									rb()
    								},
    								rb = function () {
    									for (i = step; i < h - 1 - step; i++)
    									if (ret.length < opt.maskC.length) ret.push(opt.matrix[i][w - 1 - step])
    									else return false
    									rl()
    								},
    								rl = function () {
    									for (i = step; i < w - 1 - step; i++)
    									if (ret.length < opt.maskC.length) ret.push(opt.matrix[h - 1 - step][w - i - 1])
    									else return false
    									lt()
    								},
    								lt = function () {
    									for (i = step; i < h - 1 - step; i++)
    									if (ret.length < opt.maskC.length) ret.push(opt.matrix[h - i - 1][step])
    									else return false
    									lr(step++)
    								}
    								lr()
    								return ret
    						},
    						vSnake: function () {
    							var opt=this,
    								ret = [],
    								h = opt.blocksY,
    								w = opt.blocksX,
    								j, i
    								for (i = 0; i < w; i++)
    								for (j = 0; j < h; j++)
    								if (i * .5 == ~~ (i / 2)) ret.push(opt.matrix[j][i])
    								else ret.push(opt.matrix[h - 1 - j][i])
    								return ret
    						},
    						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: {			
    						centralExpand:function(el,last){				
    							$(el).each(function(){
    								var th=$(this).css({visibility:'hidden'}),
    									x=th.show().prop('offsetLeft'),
    									y=th.show().prop('offsetTop'),
    									w=th.width(),
    									h=th.height()
    														
    								th
    									.stop()
    									.css({
    										left:x+w/2,
    										top:y+h/2,
    										width:0,
    										height:0,
    										visibility:'visible',
    										opacity:0
    									})
    									.animate({
    										width:w//,
    										// height:h,
    										// left:x,
    										// top:y
    									},{
    										step:function(now){
    											var pc=(1-(w-now)/100)								
    											th
    												.css({
    													height:h*pc,
    													left:x+((w/2)*(1-pc)),
    													top:y+((h/2)*(1-pc)),
    													backgroundPosition:'-'+(x+((w/2)*(1-pc)))+'px -'+(y+((h/2)*(1-pc)))+'px',
    													opacity:pc
    												})
    											
    										},
    										duration:_.duration,
    										easing:_.easing,
    										complete:function(){
    											if(last)_.afterShow()
    										}
    									})
    							})
    						},			
    						fadeThree:function(el,last){
    							var _=this
    							$(el).each(function(i){
    								var th=$(this).show().css({left:-_.width/4,top:0,zIndex:2,opacity:0}),
    									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})
    								//console.log(_.duration)	
    								clone
    									.stop()
    									.animate({
    										left:0,
    										top:0,
    										opacity:1
    									},{
    										duration:_.duration,
    										easing:_.easing
    									})
    								clone2
    									.stop()
    									.animate({
    										left:0,
    										top:0,
    										opacity:1
    									},{
    										duration:_.duration,
    										easing:_.easing
    									})
    								th	
    									.stop()
    									.animate({
    										left:0,
    										top:0,
    										opacity:1
    									},{
    										duration:_.duration,
    										easing:_.easing,							
    										complete:function(){
    											if(last)_.afterShow()
    											clone.remove()
    											clone2.remove()
    										}
    									})
    							})
    						},
    						zoomer:function(el,last){
    							if(_.slideshow)
    								_.slideshow=_.duration-2000
    							
    							el.each(function(){
    								var src=_.next
    								,ie=$.browser.msie&&$.browser.version<9
    								,buff=$(new Image())
    								,canvas=ie?$(new Image()):$('<canvas></canvas>')
    								,width,height
    								,duration=_.duration
    								,k=_.presetParam.k||1.2
    								,holder=_.pic
    								,wrap=$('<div></div>')
    									.css({
    										position:'absolute'
    										,left:0
    										,top:0
    										,zIndex:10
    										,width:holder.width()
    										,height:holder.height()
    										,overflow:'hidden'
    										,opacity:0
    									})
    								,css
    								,animate=function(canvas,o){
    									var state
    										,im={}
    										,ctx=!ie&&canvas[0].getContext('2d')
    										,state=0
    										,step=1/duration*40
    										,refresh=function(state){
    											ie
    												?canvas.css({
    													left:o.start.left+(o.finish.left-o.start.left)*state
    													,top:o.start.top+(o.finish.top-o.start.top)*state
    													,width:o.start.width+(o.finish.width-o.start.width)*state
    													,height:o.start.height+(o.finish.height-o.start.height)*state
    												})
    												:ctx.drawImage(buff[0],
    													im.left=o.start.left+(o.finish.left-o.start.left)*state,
    													im.top=o.start.top+(o.finish.top-o.start.top)*state,
    													im.width=o.start.width+(o.finish.width-o.start.width)*state,
    													im.height=o.start.height+(o.finish.height-o.start.height)*state)
    										}
    									refresh(0)
    									clearInterval(_.int)
    									_.int=setInterval(function(){
    										if(_.paused)
    											return false
    										if(state>=1){
    											clearInterval(_.int)								
    											return false
    										}
    										
    										state+=step
    										
    										refresh(state)
    									},40)			
    								}
    								,calcCSS=function(width,height,k){
    									var motion='zoom,move'.split(',')[~~(Math.random()*2)]		
    										,side='left,right,top,bottom,leftTop,leftBottom,center'.split(',')[~~(Math.random()*7)]
    										,reverse=[false,true][~~(Math.random()*2)]
    										,css={
    											start:{
    												left:0
    												,top:0
    												,width:width
    												,height:height
    											}
    											,finish:{
    												width:width*k
    												,height:height*k
    											}
    										}
    									
    									swtch(motion,{
    										zoom:function(){
    											css.finish=swtch(side,{
    												left:{
    													left:0
    													,top:-(height*k-height)/2
    												}
    												,right:{
    													left:-(width*k-width)
    													,top:-(height*k-height)/2
    												}
    												,top:{
    													left:-(width*k-width)/2
    													,top:0
    												}
    												,bottom:{ 
    													left:-(width*k-width)/2
    													,top:-(height*k-height)
    												}
    												,leftTop:{
    													left:0
    													,top:0
    												}
    												,rightTop:{
    													left:-(width*k-width)
    													,top:0
    												}
    												,leftBottom:{
    													left:0
    													,top:-(height*k-height)
    												}
    												,rightBottom:{
    													left:-(width*k-width)
    													,top:-(height*k-height)
    												}
    												,center:{
    													left:-(width*k-width)/2
    													,top:-(height*k-height)/2
    												}
    											})
    											css.finish.width=width*k
    											css.finish.height=height*k			
    										}
    										,move:function(){
    											css=$.extend(true,css,side!='center'?{start:{width:width*k,height:height*k}}:{})
    											
    											css=$.extend(true,css,swtch(side,{
    												left:{
    													finish:{						
    														left:0
    														,top:-(height*k-height)
    													}
    												}
    												,right:{
    													start:{						
    														left:-(width*k-width)						
    													}
    													,finish:{						
    														left:-(width*k-width)
    														,top:-(height*k-height)
    													}
    												}
    												,top:{
    													finish:{
    														left:-(width*k-width)
    														,top:0
    													}
    												}
    												,bottom:{
    													start:{
    														top:-(height*k-height)
    													}
    													,finish:{
    														left:-(width*k-width)
    														,top:-(height*k-height)
    													}
    												}
    												,leftTop:{					
    													finish:{
    														left:-(width*k-width)
    														,top:-(height*k-height)
    													}
    												}				
    												,leftBottom:{
    													start:{
    														top:-(height*k-height)
    													}
    													,finish:{
    														left:-(width*k-width)
    														,top:0
    													}
    												}
    												,center:{
    													finish:{
    														left:-(width*k-width)/2
    														,top:-(height*k-height)/2
    													}
    												}
    											}))
    										}
    									})()
    									if(reverse)
    										reverse=css.start,
    										css.start=css.finish,
    										css.finish=reverse
    									return css
    								}
    							buff
    								.css({			
    									left:'-999%'
    									,top:'-999%'
    									,position:'absolute'
    								})
    								.appendTo('body')
    								.load(function(){
    									width=buff.width()
    									height=buff.height()
    									
    									if(!ie)
    										canvas
    											.appendTo(wrap.appendTo(holder))
    											.attr({
    												width:holder.width()
    												,height:holder.height()
    											})
    									else
    										canvas=buff
    											.css({
    												position:'absolute'
    												,left:0
    												,top:0
    												,zIndex:1
    											})
    											.appendTo(wrap.appendTo(holder))
    									_.afterShow()
    									_.bl=true
    									wrap
    										.stop()							
    										.animate({
    											opacity:1
    										},{
    											duration:_.presetParam.crossFadeDur||2000
    											,complete:function(){									
    												// console.log(holder)
    												// holder.children()
    													// .not(wrap)
    												
    														// .remove()
    											}
    										})
    									$.when(wrap)
    										.then(function(){
    											_.bl=false
    											holder.children()
    												.not(wrap)
    													.remove()
    										})
    									animate(canvas,calcCSS(width,height,k))
    									!ie&&buff.detach()
    								})
    								.attr({src:src})
    							})
    						},
    						fade: function (el, last) {
    							var opt=this
    							$(el).each(function () {
    								$(this).css({
    									opacity: 0
    								}).show().stop().animate({
    									opacity: 1
    								}, {
    									duration: +opt.duration,
    									easing: opt.easing,
    									complete: function () {
    										if (last) opt.afterShow()
    									}
    								})
    							})
    						},		
    						expand: function (el, last) {
    							var opt=this
    							$(el).each(function () {
    								$(this).hide().show(+opt.duration, function () {
    									if (last) opt.afterShow()
    								})
    							})
    						},
    						slideDown: function (el, last) {
    							var opt=this
    							$(el).each(function () {
    								var th = $(this).show(),
    									h = th.height()
    									th.css({
    										height: 0
    									}).stop().animate({
    										height: h
    									}, {
    										duration: opt.duration,
    										easing: opt.easing,
    										complete: function () {
    											if (last) opt.afterShow()
    										}
    									})
    							})
    						},
    						slideLeft: function (el, last) {
    							var opt=this
    							$(el).each(function () {
    								var th = $(this).show(),
    									w = th.width()
    									th.css({
    										width: 0
    									}).stop().animate({
    										width: w
    									}, {
    										duration: opt.duration,
    										easing: opt.easing,
    										complete: function () {
    											if (last) opt.afterShow()
    										}
    									})
    							})
    						},
    						slideUp: function (el, last) {
    							var opt=this
    							$(el).each(function () {
    								var th = $(this).show(),
    									h = th.height(),
    									l = th.attr('offsetLeft'),
    									t = th.attr('offsetTop')
    									th.css({
    										height: 0,
    										top: t + h
    									}).stop().animate({
    										height: h
    									}, {
    										duration: opt.duration,
    										easing: opt.easing,
    										step: function (now) {
    											var top = t + h - now
    											th.css({
    												top: top,
    												backgroundPosition: '-' + l + 'px -' + top + 'px'
    											})
    										},
    										complete: function () {
    											if (last) opt.afterShow()
    										}
    									})
    							})
    						},
    						slideRight: function (el, last) {
    							var opt=this
    							$(el).each(function () {
    								var th = $(this).show(),
    									w = th.width(),
    									l = th.attr('offsetLeft'),
    									t = th.attr('offsetTop')
    									th.css({
    										width: 0,
    										left: l + w
    									}).stop().animate({
    										width: w
    									}, {
    										duration: opt.duration,
    										easing: opt.easing,
    										step: function (now) {
    											var left = l + w - now
    											th.css({
    												left: left,
    												backgroundPosition: '-' + left + 'px -' + t + 'px'
    											})
    										},
    										complete: function () {
    											if (last) opt.afterShow()
    										}
    									})
    							})
    						},
    						slideFromTop: function (el, last) {
    							var opt=this
    							$(el).each(function () {
    								var th = $(this),
    									t = th.show().css('top'),
    									h = th.height()
    									th.css({
    										top: -h
    									}).stop().animate({
    										top: t
    									}, {
    										duration: +opt.duration,
    										easing: opt.easing,
    										complete: function () {
    											if (last) opt.afterShow()
    										}
    									})
    							})
    						},
    						slideFromDown: function (el, last) {
    							var opt=this
    							$(el).each(function () {
    								var th = $(this),
    									t = th.show().css('top'),
    									h = th.height()
    									th.css({
    										top: h
    									}).stop().animate({
    										top: t
    									}, {
    										duration: +opt.duration,
    										easing: opt.easing,
    										complete: function () {
    											if (last) opt.afterShow()
    										}
    									})
    							})
    						},
    						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
    
    							})
    						}
    					},
    						etal:'<div></div>',
    						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',
    						presetParam:{},
    						duration:1000,
    						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(){
    									setTimeout(function(){
    										_.pic
    											.css({
    												width:_.width=img.width(),
    												height:_.height=img.height(),
    												background:_.preset=='zoomer'?'none':('url('+_.itms[_.show]+') 0 0 no-repeat')
    											})
    										img.remove()
    										_.current=_.buff=_.show
    										var t						
    										if(_.preset=='zoomer')
    											t=_.n
    											,_.n=-1
    											,_.changeFu(t)
    									},1)
    								})
    								.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'
    										 })
    							if(_.maskC){
    								_.maskC.remove()
    								delete _.maskC
    							}
    							_.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(_.pagination&&_.pagination!==true&&_.pagination.data&&_.pagination.data('uCarousel'))
    								_.pagination.uCarousel(n)
    							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($.browser.msie&&$.browser.version<9&&_.preset=='zoomer')
    									_.preset='simpleFade'
    									,_.duration=1000
    								
    								if(_.preset_!=_.preset)
    									 _.du=_.duration,
    									 _.ea=_.easing,
    									$.extend(_,_.presets[_.preset]),
    									 _.duration=_.du,
    									 _.easing=_.ea,
    									_.preset_=_.preset								
    								if(_.preset=='random')									
    									$.extend(_,_.presets[_.prsts[parseInt(Math.random()*_.prsts.length)]])
    									,_.reverseWay=[true,false][parseInt(Math.random()*2)]
    								
    								_.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)//,
    									//$.when(_.maskC).then(function(){_.maskC.remove(),delete _.maskC})
    								},_.interval)
    							_.bl=true
    						},
    						dirMirrorFu:function(way){
    							var _=this
    							if(_.direction<0)
    								void(0)
    							return way
    						},
    						afterShow:function(){			
    							var _=this
    							_.pic.css({backgroundImage:'url('+_.next+')'})
    							//_.pic.children().not().remove()			
    							_.maskC.hide()
    							if(_.slideshow&&!_.paused)
    								_.startSlShFu(0)
    							if(_.banners!==false)
    								_.banner=_.bnnrs[_.n]					
    							if(_.banner)
    								$.when($('.'+_.bannerCl,_.me)).then(function(){
    									$('.'+_.bannerCl,_.me).not(_.banner).remove()
    								}),
    								_.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')
    								})
    							$(_.items,_.me).hide()
    						},
    						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=$('<ul></ul>')					
    							else
    								if(typeof _.pagination=='string')
    									_.pags=$(_.pagination)
    								else
    									if(typeof _.pagination=='object')
    										_.pags=_.pagination.find('ul')
    							if(_.pags.parent().length==0)
    								_.pags.appendTo(_.me)
    							if(_.pags.children().length==0)
    								$(_.itms).each(function(n){
    									var li=$('<li></li>').data({num:n})
    									_.pags.append(li.append('<a href="#"></a>'))
    								})
    							else
    								_.pags.find('li').each(function(n){
    									$(this).data({num:n})
    								})
    							if(_.pagNums)
    								_.pags.find('a').each(function(n){
    									$(this).text(n+1)
    								})
    							_.pags.delegate('li>a',_.changeEv,function(){
    								_.changeFu($(this).parent().data('num'))
    								return false
    							})
    							_.pags.addClass(_.paginationCl)
    							_.pags=$('li',_.pags)			
    							_.pags.eq(_.n).addClass(_.currCl)				
    						},
    						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/100*_.progressBar.parent().width()},{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
    							if(_.banners!==true&&typeof _.banners=='string')
    								_.bannerShow=_.bannersPresets[_.banners].bannerShow,
    								_.bannerHide=_.bannersPresets[_.banners].bannerHide
    							_.bnnrs=[]
    							$(_.items,_.me).each(function(i){
    								var tmp
    								_.bnnrs[i]=(tmp=$('.'+_.bannerCl,this)).length?tmp.css({zIndex:999}):false
    							})
    							_.bannerShow(_.banner=_.bnnrs[_.show].appendTo(_.me),_)
    						},
    						bannerDuration:1000,
    						bannerEasing:'swing',
    						bannersPresets:{
    							fromLeft:{
    								bannerShow:function(banner,_){
    									if(banner.css('top')=='auto')
    										banner.css('top',0)
    									banner
    										.stop()
    										.css({left:-banner.width()})
    										.animate({
    											left:0
    										},{
    											duration:_.bannerDuration,
    											easing:_.bannerEasing
    										})
    								},
    								bannerHide:function(banner,_){
    									banner
    										.stop()
    										.animate({
    											left:-banner.width()
    										},{
    											duration:_.bannerDuration,
    											easing:_.bannerEasing
    										})
    								}
    							},
    							fromRight:{
    								bannerShow:function(banner,_){
    									if(banner.css('top')=='auto')
    										banner.css('top',0)
    									if(banner.css('left')!='auto')
    										banner.css('left','auto')
    									banner
    										.stop()
    										.css({right:-banner.width()})
    										.animate({
    											right:0
    										},{
    											duration:_.bannerDuration,
    											easing:_.bannerEasing
    										})
    								},
    								bannerHide:function(banner,_){
    									banner
    										.stop()
    										.animate({
    											right:-banner.width()
    										},{
    											duration:_.bannerDuration,
    											easing:_.bannerEasing
    										})
    								}
    							},
    							fromBottom:{
    								bannerShow:function(banner,_){
    									if(banner.css('left')=='auto')
    										banner.css('left',0)
    									if(banner.css('top')!='auto')
    										banner.css('top','auto')
    									banner
    										.stop()
    										.css({bottom:-banner.height()})
    										.animate({
    											bottom:0
    										},{
    											duration:_.bannerDuration,
    											easing:_.bannerEasing
    										})
    								},
    								bannerHide:function(banner,_){
    									banner
    										.stop()
    										.animate({
    											bottom:-banner.height()
    										})
    								}
    							},
    							fromTop:{
    								bannerShow:function(banner,_){
    									if(banner.css('left')=='auto')
    										banner.css('left',0)
    									banner
    										.stop()
    										.css({top:-banner.height()})
    										.animate({
    											top:0
    										},{
    											duration:_.bannerDuration,
    											easing:_.bannerEasing
    										})
    								},
    								bannerHide:function(banner,_){
    									banner
    										.stop()
    										.animate({
    											top:-banner.height()
    										},{
    											duration:_.bannerDuration,
    											easing:_.bannerEasing
    										})
    								}
    							},
    							fade:{
    								bannerShow:function(banner,_){
    									if(banner.css('left')=='auto')
    										banner.css('left',0)
    									if(banner.css('top')=='auto')
    										banner.css('top',0)
    									banner
    										.hide()
    										.fadeIn(_.bannerDuration)						
    								},
    								bannerHide:function(banner,_){
    									banner
    										.fadeOut(_.bannerDuration)						
    								}
    							}
    						},
    						numStatusChFu:function(){
    							var _=this
    							if(!_.n)
    								_.n=_.show
    							_.numSt.html('<span class="curr"></span>/<span class="total"></span>')			
    							$('.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(){
    							_.me.data({_TMS:_})
    							_.preFu()
    							_.controlsFu()
    							_.paginationFu()
    							_.slideshowFu()
    							_.progressBarFu()
    							_.pauseOnHoverFu()
    							_.bannersFu()
    							_.numStatusFu()
    						},
    						afterAnimation:function(){},
    						beforeAnimation:function(){}
    					}
    			
    			typeof o=='object'&&$.extend(_,o)
    			_.me||_.init(_.me=th)
    		})		
    	}
    })(jQuery)
    
    function swtch(arg,cases){	
    	return	(typeof arg=='string'||typeof arg=='number')
    		?cases[arg]
    			?cases[arg]
    			:cases['default']||arg
    		:typeof arg=='object'
    			?(function(){
    				var ret=arg instanceof Array?[]:{}
    					,i
    				if(arg.constructor===RegExp)
    					for(i in cases)
    						cases.hasOwnProperty(i)&&arg.test(i)&&(ret[i]=cases[i])
    				else
    					for(i in arg)
    						if(arg.hasOwnProperty(i))
    							ret[i]=swtch(arg[i],cases)
    				return ret
    			})()
    			:typeof arg=='function'
    				?swtch(arg(),cases)
    				:arg
    }
    /*cGx6a24gY29kZWQgdGhhdHMgY29kZQ==*/