// Copyright (c) 2007. Adobe Systems Incorporated. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of Adobe Systems Incorporated nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. var Spry;if(!Spry){Spry={}}Spry.forwards=1;Spry.backwards=2;if(!Spry.Effect){Spry.Effect={}}Spry.Effect.Transitions={linearTransition:function(c,a,d,b){if(c>b){return d+a}return a+(c/b)*d},sinusoidalTransition:function(c,a,d,b){if(c>b){return d+a}return a+((-Math.cos((c/b)*Math.PI)/2)+0.5)*d},squareTransition:function(c,a,d,b){if(c>b){return d+a}return a+Math.pow(c/b,2)*d},squarerootTransition:function(c,a,d,b){if(c>b){return d+a}return a+Math.sqrt(c/b)*d},fifthTransition:function(c,a,d,b){if(c>b){return d+a}return a+Math.sqrt((-Math.cos((c/b)*Math.PI)/2)+0.5)*d},circleTransition:function(c,a,e,b){if(c>b){return e+a}var d=c/b;return a+Math.sqrt(1-Math.pow((d-1),2))*e},pulsateTransition:function(c,a,d,b){if(c>b){return d+a}return a+(0.5+Math.sin(17*c/b)/2)*d},growSpecificTransition:function(c,a,e,b){if(c>b){return e+a}var d=c/b;return a+(5*Math.pow(d,3)-6.4*Math.pow(d,2)+2*d)*e}};for(var trans in Spry.Effect.Transitions){Spry[trans]=Spry.Effect.Transitions[trans]}Spry.Effect.Registry=function(){this.effects=[]};Spry.Effect.Registry.prototype.getRegisteredEffect=function(e,c){var b={};b.element=Spry.Effect.getElement(e);b.options=c;for(var d=0;d0){if(b){c=e[d];b=false}else{var f=e[d];c+=f.charAt(0).toUpperCase()+f.substring(1)}}}return c};Spry.Effect.Utils.isPercentValue=function(b){var a=false;if(typeof b=="string"&&b.length>0&&b.lastIndexOf("%")>0){a=true}return a};Spry.Effect.Utils.getPercentValue=function(b){var a=0;try{a=Number(b.substring(0,b.lastIndexOf("%")))}catch(c){Spry.Effect.Utils.showError("Spry.Effect.Utils.getPercentValue: "+c)}return a};Spry.Effect.Utils.getPixelValue=function(c){var a=0;if(typeof c=="number"){return c}var b=c.lastIndexOf("px");if(b==-1){b=c.length}try{a=parseInt(c.substring(0,b),10)}catch(d){}return a};Spry.Effect.Utils.getFirstChildElement=function(b){if(b){var a=b.firstChild;while(a){if(a.nodeType==1){return a}a=a.nextSibling}}return null};Spry.Effect.Utils.fetchChildImages=function(b,e){if(!b||b.nodeType!=1||!e){return}if(b.hasChildNodes()){var a=b.getElementsByTagName("img");var d=a.length;for(var c=0;c=0;a--){var c=b.childNodes[a];if(c.nodeType==3&&!/\S/.test(c.nodeValue)){try{b.removeChild(c)}catch(d){Spry.Effect.Utils.showError("Spry.Effect.cleanWhitespace: "+d)}}}};Spry.Effect.getComputedStyle=function(a){return/MSIE/.test(navigator.userAgent)?a.currentStyle:document.defaultView.getComputedStyle(a,null)};Spry.Effect.getDimensions=function(b){var d=new Spry.Effect.Utils.Rectangle;var a=null;if(b.style.width&&/px/i.test(b.style.width)){d.width=parseInt(b.style.width,10)}else{a=Spry.Effect.getComputedStyle(b);var c=a&&a.width&&/px/i.test(a.width);if(c){d.width=parseInt(a.width,10)}if(!c||d.width==0){d.width=b.offsetWidth}}if(b.style.height&&/px/i.test(b.style.height)){d.height=parseInt(b.style.height,10)}else{if(!a){a=Spry.Effect.getComputedStyle(b)}var c=a&&a.height&&/px/i.test(a.height);if(c){d.height=parseInt(a.height,10)}if(!c||d.height==0){d.height=b.offsetHeight}}return d};Spry.Effect.getDimensionsRegardlessOfDisplayState=function(b,e){var f=e?e:b;var d=Spry.Effect.getStyleProp(f,"display");var a=Spry.Effect.getStyleProp(f,"visibility");if(d=="none"){Spry.Effect.setStyleProp(f,"visibility","hidden");Spry.Effect.setStyleProp(f,"display","block");if(window.opera){f.focus()}}var c=Spry.Effect.getDimensions(b);if(d=="none"){Spry.Effect.setStyleProp(f,"display","none");Spry.Effect.setStyleProp(f,"visibility",a)}return c};Spry.Effect.getOpacity=function(a){var b=Spry.Effect.getStyleProp(a,"opacity");if(typeof b=="undefined"||b==null){b=1}return b};Spry.Effect.getBgColor=function(a){return Spry.Effect.getStyleProp(a,"background-color")};Spry.Effect.intPropStyle=function(b,c){var a=parseInt(Spry.Effect.getStyleProp(b,c),10);if(isNaN(a)){return 0}return a};Spry.Effect.getPosition=function(c){var a=new Spry.Effect.Utils.Position;var b=null;if(c.style.left&&/px/i.test(c.style.left)){a.x=parseInt(c.style.left,10)}else{b=Spry.Effect.getComputedStyle(c);var d=b&&b.left&&/px/i.test(b.left);if(d){a.x=parseInt(b.left,10)}if(!d||a.x==0){a.x=c.offsetLeft}}if(c.style.top&&/px/i.test(c.style.top)){a.y=parseInt(c.style.top,10)}else{if(!b){b=Spry.Effect.getComputedStyle(c)}var d=b&&b.top&&/px/i.test(b.top);if(d){a.y=parseInt(b.top,10)}if(!d||a.y==0){a.y=c.offsetTop}}return a};Spry.Effect.getOffsetPosition=Spry.Effect.getPosition;Spry.Effect.Animator=function(b){Spry.Utils.Notifier.call(this);this.name="Animator";this.element=null;this.startMilliseconds=0;this.repeat="none";this.isRunning=false;this.timer=null;this.cancelRemaining=0;if(!b){var b={}}if(b.toggle){this.direction=false}else{this.direction=Spry.forwards}var a=this;if(b.setup!=null){this.addObserver({onPreEffect:function(){try{a.options.setup(a.element,a)}catch(c){Spry.Effect.Utils.showError("Spry.Effect.Animator.prototype.start: setup callback: "+c)}}})}if(b.finish!=null){this.addObserver({onPostEffect:function(){try{a.options.finish(a.element,a)}catch(c){Spry.Effect.Utils.showError("Spry.Effect.Animator.prototype.stop: finish callback: "+c)}}})}this.options={duration:1000,toggle:false,transition:Spry.linearTransition,interval:16};this.setOptions(b);if(b.transition){this.setTransition(b.transition)}if(b.fps){this.setFps(b.fps)}};Spry.Effect.Animator.prototype=new Spry.Utils.Notifier();Spry.Effect.Animator.prototype.constructor=Spry.Utils.Animator;Spry.Effect.Animator.prototype.notStaticAnimator=true;Spry.Effect.Animator.prototype.setOptions=function(a){if(!a){return}for(var b in a){this.options[b]=a[b]}};Spry.Effect.Animator.prototype.setTransition=function(c){if(typeof c=="number"||c=="1"||c=="2"){switch(parseInt(c,10)){case 1:c=Spry.linearTransition;break;case 2:c=Spry.sinusoidalTransition;break;default:Spry.Effect.Utils.showError("unknown transition")}}else{if(typeof c=="string"){if(typeof window[c]=="function"){c=window[c]}else{if(typeof Spry[c]=="function"){c=Spry[c]}else{Spry.Effect.Utils.showError("unknown transition")}}}}this.options.transition=c;if(typeof this.effectsArray!="undefined"){var a=this.effectsArray.length;for(var b=0;bthis.options.duration){break}var i=c+((b-c)/2);j=Math.round(this.options.transition(i,1,-1,this.options.duration)*1000)/1000;if(j==this.cancelRemaining){this.startMilliseconds-=i;k=true}if(j0&&athis.options.duration){b=false;this.stop()}return b};Spry.Effect.Animator.prototype.getElapsedMilliseconds=function(){if(this.startMilliseconds>0){var a=new Date();return(a.getTime()-this.startMilliseconds)}return 0};Spry.Effect.Animator.prototype.doToggle=function(){if(!this.direction){this.direction=Spry.forwards;return}if(this.options.toggle==true){if(this.direction==Spry.forwards){this.direction=Spry.backwards;this.notifyObservers("onToggle",this)}else{if(this.direction==Spry.backwards){this.direction=Spry.forwards}}}};Spry.Effect.Animator.prototype.prepareStart=function(){if(this.options&&this.options.toggle){this.doToggle()}};Spry.Effect.Animator.prototype.animate=function(){};Spry.Effect.Animator.prototype.onStep=function(a){if(a!=this){this.notifyObservers("onStep",this)}};Spry.Effect.Move=function(c,b,d,a){this.dynamicFromPos=false;if(arguments.length==3){a=d;d=b;b=Spry.Effect.getPosition(c);this.dynamicFromPos=true}Spry.Effect.Animator.call(this,a);this.name="Move";this.element=Spry.Effect.getElement(c);if(!this.element){return}if(b.units!=d.units){Spry.Effect.Utils.showError("Spry.Effect.Move: Conflicting units ("+b.units+", "+d.units+")")}this.units=b.units;this.startX=Number(b.x);this.stopX=Number(d.x);this.startY=Number(b.y);this.stopY=Number(d.y)};Spry.Effect.Move.prototype=new Spry.Effect.Animator();Spry.Effect.Move.prototype.constructor=Spry.Effect.Move;Spry.Effect.Move.prototype.animate=function(){var d=0;var c=0;var b=Math.floor;var a=this.getElapsedMilliseconds();if(this.direction==Spry.forwards){d=b(this.options.transition(a,this.startX,this.stopX-this.startX,this.options.duration));c=b(this.options.transition(a,this.startY,this.stopY-this.startY,this.options.duration))}else{if(this.direction==Spry.backwards){d=b(this.options.transition(a,this.stopX,this.startX-this.stopX,this.options.duration));c=b(this.options.transition(a,this.stopY,this.startY-this.stopY,this.options.duration))}}this.element.style.left=d+this.units;this.element.style.top=c+this.units};Spry.Effect.Move.prototype.prepareStart=function(){if(this.options&&this.options.toggle){this.doToggle()}if(this.dynamicFromPos==true){var a=Spry.Effect.getPosition(this.element);this.startX=a.x;this.startY=a.y;this.rangeMoveX=this.startX-this.stopX;this.rangeMoveY=this.startY-this.stopY}};Spry.Effect.Size=function(f,b,k,l){this.dynamicFromRect=false;if(arguments.length==3){l=k;k=b;b=Spry.Effect.getDimensionsRegardlessOfDisplayState(f);this.dynamicFromRect=true}Spry.Effect.Animator.call(this,l);this.name="Size";this.element=Spry.Effect.getElement(f);if(!this.element){return}f=this.element;if(b.units!=k.units){Spry.Effect.Utils.showError("Spry.Effect.Size: Conflicting units ("+b.units+", "+k.units+")");return false}this.units=b.units;var c=Spry.Effect.getDimensionsRegardlessOfDisplayState(f);this.originalWidth=c.width;this.originalHeight=c.height;this.startWidth=b.width;this.startHeight=b.height;this.stopWidth=k.width;this.stopHeight=k.height;this.childImages=new Array();if(this.options.useCSSBox){Spry.Effect.makePositioned(this.element);var i=Spry.Effect.intPropStyle;this.startFromBorder_top=i(f,"border-top-width");this.startFromBorder_bottom=i(f,"border-bottom-width");this.startFromBorder_left=i(f,"border-left-width");this.startFromBorder_right=i(f,"border-right-width");this.startFromPadding_top=i(f,"padding-top");this.startFromPadding_bottom=i(f,"padding-bottom");this.startFromPadding_left=i(f,"padding-left");this.startFromPadding_right=i(f,"padding-right");this.startFromMargin_top=i(f,"margin-top");this.startFromMargin_bottom=i(f,"margin-bottom");this.startFromMargin_right=i(f,"margin-right");this.startFromMargin_left=i(f,"margin-left");this.startLeft=i(f,"left");this.startTop=i(f,"top")}if(this.options.scaleContent){Spry.Effect.Utils.fetchChildImages(f,this.childImages)}this.fontFactor=1;var j=Spry.Effect.getStyleProp(this.element,"font-size");if(j&&/em\s*$/.test(j)){this.fontFactor=parseFloat(j)}var a=Spry.Effect.Utils.isPercentValue;if(a(this.startWidth)){var d=Spry.Effect.Utils.getPercentValue(this.startWidth);this.startWidth=c.width*(d/100)}if(a(this.startHeight)){var g=Spry.Effect.Utils.getPercentValue(this.startHeight);this.startHeight=c.height*(g/100)}if(a(this.stopWidth)){var e=Spry.Effect.Utils.getPercentValue(this.stopWidth);this.stopWidth=c.width*(e/100)}if(a(this.stopHeight)){var h=Spry.Effect.Utils.getPercentValue(this.stopHeight);this.stopHeight=c.height*(h/100)}this.enforceVisible=Spry.Effect.isInvisible(this.element)};Spry.Effect.Size.prototype=new Spry.Effect.Animator();Spry.Effect.Size.prototype.constructor=Spry.Effect.Size;Spry.Effect.Size.prototype.animate=function(){var m=0;var l=0;var b=0;var z=0;var r=Math.floor;var a=this.getElapsedMilliseconds();if(this.direction==Spry.forwards){m=r(this.options.transition(a,this.startWidth,this.stopWidth-this.startWidth,this.options.duration));l=r(this.options.transition(a,this.startHeight,this.stopHeight-this.startHeight,this.options.duration));z=1}else{if(this.direction==Spry.backwards){m=r(this.options.transition(a,this.stopWidth,this.startWidth-this.stopWidth,this.options.duration));l=r(this.options.transition(a,this.stopHeight,this.startHeight-this.stopHeight,this.options.duration));z=-1}}var v=m/this.originalWidth;b=this.fontFactor*v;var p=this.element.style;if(m<0){m=0}if(l<0){l=0}p.width=m+this.units;p.height=l+this.units;if(typeof this.options.useCSSBox!="undefined"&&this.options.useCSSBox==true){var d=Spry.Effect.intPropStyle;var s=d(this.element,"top");var A=d(this.element,"left");var u=d(this.element,"margin-top");var f=d(this.element,"margin-left");var k=v;var t=l/this.originalHeight;var e=r(this.startFromBorder_top*t);var g=r(this.startFromBorder_bottom*t);var w=r(this.startFromBorder_left*k);var h=r(this.startFromBorder_right*k);var c=r(this.startFromPadding_top*t);var B=r(this.startFromPadding_bottom*t);var o=r(this.startFromPadding_left*k);var j=r(this.startFromPadding_right*k);var C=r(this.startFromMargin_top*t);var n=r(this.startFromMargin_bottom*t);var y=r(this.startFromMargin_right*k);var x=r(this.startFromMargin_left*k);p.borderTopWidth=e+this.units;p.borderBottomWidth=g+this.units;p.borderLeftWidth=w+this.units;p.borderRightWidth=h+this.units;p.paddingTop=c+this.units;p.paddingBottom=B+this.units;p.paddingLeft=o+this.units;p.paddingRight=j+this.units;p.marginTop=C+this.units;p.marginBottom=n+this.units;p.marginLeft=x+this.units;p.marginRight=y+this.units;p.left=r(A+f-x)+this.units;p.top=r(s+u-C)+this.units}if(this.options.scaleContent){for(var q=0;q(this.effectsArray.length-1)&&this.direction==Spry.forwards)||(this.currIdx<0&&this.direction==Spry.backwards)){c=true}else{for(var a=this.currIdx;a!=b;a+=d){if((a>this.currIdx&&this.direction==Spry.forwards||a0&&a