Team:HUST-China/js/showcase.js

From 2013.igem.org

Revision as of 06:04, 21 September 2013 by HUST Oshyn (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

//jQuery animate extension jQuery.easing['jswing'] = jQuery.easing['swing']; jQuery.extend( jQuery.easing, { def: 'easeOutQuad', swing: function (x, t, b, c, d) { //alert(jQuery.easing.default); return jQuery.easing[jQuery.easing.def](x, t, b, c, d); }, easeInQuad: function (x, t, b, c, d) { return c*(t/=d)*t + b; }, easeOutQuad: function (x, t, b, c, d) { return -c *(t/=d)*(t-2) + b; }, easeInOutQuint: function (x, t, b, c, d) { if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; return c/2*((t-=2)*t*t*t*t + 2) + b; }, easeInSine: function (x, t, b, c, d) { return -c * Math.cos(t/d * (Math.PI/2)) + c + b; }, easeOutSine: function (x, t, b, c, d) { return c * Math.sin(t/d * (Math.PI/2)) + b; }, easeInOutSine: function (x, t, b, c, d) { return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; }, easeInExpo: function (x, t, b, c, d) { return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; }, easeOutExpo: function (x, t, b, c, d) { return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; }, easeInOutExpo: function (x, t, b, c, d) { if (t==0) return b; if (t==d) return b+c; if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; }, easeInCirc: function (x, t, b, c, d) { return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; }, easeOutCirc: function (x, t, b, c, d) { return c * Math.sqrt(1 - (t=t/d-1)*t) + b; }, easeInOutCirc: function (x, t, b, c, d) { if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; }, easeInElastic: function (x, t, b, c, d) { var s=1.70158;var p=0;var a=c; if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; if (a < Math.abs(c)) { a=c; var s=p/4; } else var s = p/(2*Math.PI) * Math.asin (c/a); return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; }, easeOutElastic: function (x, t, b, c, d) { var s=1.70158;var p=0;var a=c; if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; if (a < Math.abs(c)) { a=c; var s=p/4; } else var s = p/(2*Math.PI) * Math.asin (c/a); return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; }, easeInOutElastic: function (x, t, b, c, d) { var s=1.70158;var p=0;var a=c; if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); if (a < Math.abs(c)) { a=c; var s=p/4; } else var s = p/(2*Math.PI) * Math.asin (c/a); if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; }, easeInBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c*(t/=d)*t*((s+1)*t - s) + b; }, easeOutBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; }, easeInOutBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; } });

$(function(){ //showcase stuff //init var animation={busy:false,current:0,size:0,inervalId:null}; animation.size=$('.showcase-ones','#showcase-cont').length; if(animation.size>1){ $('#showcase-inner').show(); } $('.showcase-ones','#showcase-cont').css('display','none')[0].id="showcase-current"; $('#showcase-cont').css('overflow','visible'); //ie6 png fix if($.browser.msie&&$.browser.version==6){ $('.showcase-ones').each(function(){ var that=this; $('img',this).each(function(){

var div=$('
')[0];

div.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+$(this).attr('src')+",sizingMethod='image')"; div.style.border="solid 0px #fff"; var a=$('<a href="'+$(this).parent().attr('href')+'" style="cursor:pointer;"></a>'); a.append(div); $(that).append(a); $(this).remove(); }); }); } //events $('#showcase-prev').click(function(){ if(!animation.busy){ clearInterval(animation.inervalId); if(--animation.current<0){ animation.current=animation.size-1; } doChange(); } }); $('#showcase-next').click(function(){ if(!animation.busy){ clearInterval(animation.inervalId); if(++animation.current>=animation.size){ animation.current=0; } doChange(); } }); //adapter function doChange(){ var i=Math.floor(Math.random()*2); var func=i==0?showcaseChangeWay1:showcaseChangeWay2; func($('.showcase-ones','#showcase-cont')[animation.current],function(){ animation.busy=false; animation.inervalId=setInterval(function(){ $('#showcase-next').click(); },5000); }); } //auto play animation.inervalId=setInterval(function(){ $('#showcase-next').click(); },5000); //type 1 function showcaseChangeWay1(theOnes,callback){ var contWidth=1280; var docWidth=$(document).width();

               animation.busy=true;

$('.showcase-left','#showcase-current').animate({left:-(docWidth-contWidth)/2-contWidth},900,'easeInQuad'); $('.showcase-right','#showcase-current').animate({left:-(docWidth-contWidth)/2-contWidth},900,'easeInExpo'); setTimeout(function(){ $(theOnes).css({position:'absolute',display:'block',left:(docWidth-contWidth)/2+contWidth,top:0}).animate({left:0},900,'easeInQuad',function(){ var cur=$('#showcase-current').attr('id',); $('.showcase-left,.showcase-right',cur).css('left','0'); $(theOnes).attr('id','showcase-current').css({position:'relative',display:'none',left:0}); if(typeof callback=='function'){ callback(); } }); },400); } //type 2 function showcaseChangeWay2(theOnes,callback){ var contWidth=1280; var docWidth=$(document).width();

               animation.busy=true;

$('.showcase-left','#showcase-current').animate({left:-(docWidth-contWidth)/2-contWidth},700,'easeInQuad',function(){ $(theOnes).css({position:'absolute',display:'block',left:-(docWidth-contWidth)/2-contWidth,top:0}).animate({left:0},500,'easeInQuad',function(){ var cur=$('#showcase-current').attr('id',); $('.showcase-left,.showcase-right',cur).css('left','0'); $(theOnes).attr('id','showcase-current').css({position:'relative',display:'none',left:0}); if(typeof callback=='function'){ callback(); } }); }); $('.showcase-right','#showcase-current').animate({left:(docWidth-contWidth)/2+contWidth},1000,'easeInExpo'); } });