//cookie function setCookie(name, value, iDay) { if(iDay!==false) { var oDate=new Date(); oDate.setDate(oDate.getDate()+iDay); document.cookie=name+'='+value+';expires='+oDate+';path=/'; } else { document.cookie=name+'='+value; } } function getCookie(name) { var arr=document.cookie.split('; '); var i=0; for(i=0;i0; } fnCallBack(bDown); if(oEvent.preventDefault)oEvent.preventDefault(); return false; } } //摆动运动 zns.site.fx.swing=function (obj, cur, target, fnDo, fnEnd, acc) { if(zns.site.fx.browser_test.IE6) { fnDo&&fnDo.call(obj, target); fnEnd&&fnEnd.call(obj, target); return; } if(!acc)acc=0.1; var now={}; var x=0; //0-100 if(!obj.__swing_v)obj.__swing_v=0; if(!obj.__last_timer)obj.__last_timer=0; var t=new Date().getTime(); if(t-obj.__last_timer>20) { fnMove(); obj.__last_timer=t; } clearInterval(obj.timer); obj.timer=setInterval(fnMove, 20); function fnMove(){ if(x<50) { obj.__swing_v+=acc; } else { obj.__swing_v-=acc; } //if(Math.abs(obj.__flex_v)>MAX_SPEED)obj.__flex_v=obj.__flex_v>0?MAX_SPEED:-MAX_SPEED; x+=obj.__swing_v; //alert(x+','+obj.__swing_v); for(var i in cur) { now[i]=(target[i]-cur[i])*x/100+cur[i]; } if(fnDo)fnDo.call(obj, now); if(/*Math.abs(obj.__swing_v)<1 || */Math.abs(100-x)<1) { clearInterval(obj.timer); if(fnEnd)fnEnd.call(obj, target); obj.__swing_v=0; } } }; //弹性运动 zns.site.fx.flex=function (obj, cur, target, fnDo, fnEnd, fs, ms) { if(zns.site.fx.browser_test.IE6) { fnDo&&fnDo.call(obj, target); fnEnd&&fnEnd.call(obj, target); return; } var MAX_SPEED=16; if(!fs)fs=6; if(!ms)ms=0.75; var now={}; var x=0; //0-100 if(!obj.__flex_v)obj.__flex_v=0; if(!obj.__last_timer)obj.__last_timer=0; var t=new Date().getTime(); if(t-obj.__last_timer>20) { fnMove(); obj.__last_timer=t; } clearInterval(obj.timer); obj.timer=setInterval(fnMove, 20); function fnMove(){ obj.__flex_v+=(100-x)/fs; obj.__flex_v*=ms; if(Math.abs(obj.__flex_v)>MAX_SPEED)obj.__flex_v=obj.__flex_v>0?MAX_SPEED:-MAX_SPEED; x+=obj.__flex_v; for(var i in cur) { now[i]=(target[i]-cur[i])*x/100+cur[i]; } if(fnDo)fnDo.call(obj, now); if(Math.abs(obj.__flex_v)<1 && Math.abs(100-x)<1) { clearInterval(obj.timer); if(fnEnd)fnEnd.call(obj, target); obj.__flex_v=0; } } };