2008-12-06 20:51:28 +00:00
/ *
2008-06-09 08:55:06 +00:00
* jQuery UI Effects @ VERSION
2008-06-06 20:08:52 +00:00
*
2009-02-27 11:41:40 +00:00
* Copyright ( c ) 2009 AUTHORS . txt ( http : //jqueryui.com/about)
2008-06-06 20:08:52 +00:00
* Dual licensed under the MIT ( MIT - LICENSE . txt )
* and GPL ( GPL - LICENSE . txt ) licenses .
2008-11-20 04:10:34 +00:00
*
2008-06-06 20:08:52 +00:00
* http : //docs.jquery.com/UI/Effects/
* /
2009-02-13 02:25:21 +00:00
; jQuery . effects || ( function ( $ ) {
2008-05-23 09:26:18 +00:00
2009-02-13 02:25:21 +00:00
$ . effects = {
2008-10-05 18:32:34 +00:00
version : "@VERSION" ,
2009-01-22 13:10:18 +00:00
2009-01-07 16:07:23 +00:00
// Saves a set of properties in a data storage
save : function ( element , set ) {
for ( var i = 0 ; i < set . length ; i ++ ) {
if ( set [ i ] !== null ) element . data ( "ec.storage." + set [ i ] , element [ 0 ] . style [ set [ i ] ] ) ;
2008-06-06 19:47:31 +00:00
}
} ,
2009-01-22 13:10:18 +00:00
2009-01-07 16:07:23 +00:00
// Restores a set of previously saved properties from a data storage
restore : function ( element , set ) {
for ( var i = 0 ; i < set . length ; i ++ ) {
if ( set [ i ] !== null ) element . css ( set [ i ] , element . data ( "ec.storage." + set [ i ] ) ) ;
2008-06-06 19:47:31 +00:00
}
} ,
2009-01-22 13:10:18 +00:00
2008-06-06 19:47:31 +00:00
setMode : function ( el , mode ) {
if ( mode == 'toggle' ) mode = el . is ( ':hidden' ) ? 'show' : 'hide' ; // Set for toggle
return mode ;
} ,
2009-01-22 13:10:18 +00:00
2008-06-06 19:47:31 +00:00
getBaseline : function ( origin , original ) { // Translates a [top,left] array into a baseline value
// this should be a little more flexible in the future to handle a string & hash
var y , x ;
switch ( origin [ 0 ] ) {
case 'top' : y = 0 ; break ;
case 'middle' : y = 0.5 ; break ;
case 'bottom' : y = 1 ; break ;
default : y = origin [ 0 ] / original . height ;
} ;
switch ( origin [ 1 ] ) {
case 'left' : x = 0 ; break ;
case 'center' : x = 0.5 ; break ;
case 'right' : x = 1 ; break ;
default : x = origin [ 1 ] / original . width ;
} ;
return { x : x , y : y } ;
} ,
2009-01-22 13:10:18 +00:00
2009-01-07 16:07:23 +00:00
// Wraps the element around a wrapper that copies position properties
createWrapper : function ( element ) {
//if the element is already wrapped, return it
if ( element . parent ( ) . is ( '.ui-effects-wrapper' ) )
return element . parent ( ) ;
//Cache width,height and float properties of the element, and create a wrapper around it
var props = { width : element . outerWidth ( true ) , height : element . outerHeight ( true ) , 'float' : element . css ( 'float' ) } ;
element . wrap ( '<div class="ui-effects-wrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>' ) ;
var wrapper = element . parent ( ) ;
//Transfer the positioning of the element to the wrapper
if ( element . css ( 'position' ) == 'static' ) {
wrapper . css ( { position : 'relative' } ) ;
element . css ( { position : 'relative' } ) ;
2008-06-06 19:47:31 +00:00
} else {
2009-01-07 16:07:23 +00:00
var top = element . css ( 'top' ) ; if ( isNaN ( parseInt ( top , 10 ) ) ) top = 'auto' ;
var left = element . css ( 'left' ) ; if ( isNaN ( parseInt ( left , 10 ) ) ) left = 'auto' ;
wrapper . css ( { position : element . css ( 'position' ) , top : top , left : left , zIndex : element . css ( 'z-index' ) } ) . show ( ) ;
element . css ( { position : 'relative' , top : 0 , left : 0 } ) ;
2008-06-06 19:47:31 +00:00
}
2009-01-07 16:07:23 +00:00
2008-06-06 19:47:31 +00:00
wrapper . css ( props ) ;
return wrapper ;
} ,
2009-01-07 16:07:23 +00:00
removeWrapper : function ( element ) {
if ( element . parent ( ) . is ( '.ui-effects-wrapper' ) )
return element . parent ( ) . replaceWith ( element ) ;
return element ;
2008-06-06 19:47:31 +00:00
} ,
2009-01-07 16:07:23 +00:00
setTransition : function ( element , list , factor , value ) {
value = value || { } ;
$ . each ( list , function ( i , x ) {
unit = element . cssUnit ( x ) ;
if ( unit [ 0 ] > 0 ) value [ x ] = unit [ 0 ] * factor + unit [ 1 ] ;
2008-06-06 19:47:31 +00:00
} ) ;
2009-01-07 16:07:23 +00:00
return value ;
2008-06-06 19:47:31 +00:00
} ,
2009-01-07 16:07:23 +00:00
//Base function to animate from one class to another in a seamless transition
2008-06-06 19:47:31 +00:00
animateClass : function ( value , duration , easing , callback ) {
var cb = ( typeof easing == "function" ? easing : ( callback ? callback : null ) ) ;
2009-01-07 16:07:23 +00:00
var ea = ( typeof easing == "string" ? easing : null ) ;
2008-06-06 19:47:31 +00:00
return this . each ( function ( ) {
var offset = { } ; var that = $ ( this ) ; var oldStyleAttr = that . attr ( "style" ) || '' ;
if ( typeof oldStyleAttr == 'object' ) oldStyleAttr = oldStyleAttr [ "cssText" ] ; /* Stupidly in IE, style is a object.. */
if ( value . toggle ) { that . hasClass ( value . toggle ) ? value . remove = value . toggle : value . add = value . toggle ; }
//Let's get a style offset
var oldStyle = $ . extend ( { } , ( document . defaultView ? document . defaultView . getComputedStyle ( this , null ) : this . currentStyle ) ) ;
if ( value . add ) that . addClass ( value . add ) ; if ( value . remove ) that . removeClass ( value . remove ) ;
var newStyle = $ . extend ( { } , ( document . defaultView ? document . defaultView . getComputedStyle ( this , null ) : this . currentStyle ) ) ;
if ( value . add ) that . removeClass ( value . add ) ; if ( value . remove ) that . addClass ( value . remove ) ;
// The main function to form the object for animation
for ( var n in newStyle ) {
if ( typeof newStyle [ n ] != "function" && newStyle [ n ] /* No functions and null properties */
&& n . indexOf ( "Moz" ) == - 1 && n . indexOf ( "length" ) == - 1 /* No mozilla spezific render properties. */
2009-07-13 00:51:03 +00:00
&& n . indexOf ( "scrollbar" ) == - 1 /* No scrollbar properties - causes problems in IE */
2008-06-06 19:47:31 +00:00
&& newStyle [ n ] != oldStyle [ n ] /* Only values that have changed are used for the animation */
&& ( n . match ( /color/i ) || ( ! n . match ( /color/i ) && ! isNaN ( parseInt ( newStyle [ n ] , 10 ) ) ) ) /* Only things that can be parsed to integers or colors */
&& ( oldStyle . position != "static" || ( oldStyle . position == "static" && ! n . match ( /left|top|bottom|right/ ) ) ) /* No need for positions when dealing with static positions */
) offset [ n ] = newStyle [ n ] ;
}
that . animate ( offset , duration , ea , function ( ) { // Animate the newly constructed offset object
// Change style attribute back to original. For stupid IE, we need to clear the damn object.
if ( typeof $ ( this ) . attr ( "style" ) == 'object' ) { $ ( this ) . attr ( "style" ) [ "cssText" ] = "" ; $ ( this ) . attr ( "style" ) [ "cssText" ] = oldStyleAttr ; } else $ ( this ) . attr ( "style" , oldStyleAttr ) ;
if ( value . add ) $ ( this ) . addClass ( value . add ) ; if ( value . remove ) $ ( this ) . removeClass ( value . remove ) ;
if ( cb ) cb . apply ( this , arguments ) ;
} ) ;
} ) ;
}
2009-02-13 02:25:21 +00:00
} ;
2008-06-06 19:47:31 +00:00
2009-01-29 13:34:58 +00:00
2009-06-10 01:22:38 +00:00
function _normalizeArguments ( effect , options , speed , callback ) {
// shift params for method overloading
2009-07-13 00:51:03 +00:00
if ( typeof effect == 'object' ) {
callback = options ;
speed = null ;
options = effect ;
effect = options . effect ;
}
2009-06-10 01:22:38 +00:00
if ( $ . isFunction ( options ) ) {
callback = options ;
speed = null ;
options = { } ;
}
if ( typeof options == 'number' ) {
callback = speed ;
speed = options ;
options = { } ;
}
options = options || { } ;
2009-01-29 13:34:58 +00:00
2009-06-10 01:22:38 +00:00
speed = speed || options . duration ;
speed = $ . fx . off ? 0 : typeof speed == 'number'
? speed : $ . fx . speeds [ speed ] || $ . fx . speeds . _default ;
2009-01-29 13:34:58 +00:00
2009-06-10 01:25:21 +00:00
callback = callback || options . complete ;
2009-06-10 01:22:38 +00:00
return [ effect , options , speed , callback ] ;
2009-01-29 13:34:58 +00:00
}
2008-06-06 19:47:31 +00:00
$ . fn . extend ( {
2009-06-11 13:06:20 +00:00
effect : function ( effect , options , speed , callback ) {
var args = _normalizeArguments . apply ( this , arguments ) ,
// TODO: make effects takes actual parameters instead of a hash
args2 = {
options : args [ 1 ] ,
duration : args [ 2 ] ,
callback : args [ 3 ]
} ,
effectMethod = $ . effects [ effect ] ;
return effectMethod && ! $ . fx . off ? effectMethod . call ( this , args2 ) : this ;
2008-06-06 19:47:31 +00:00
} ,
2009-01-22 13:10:18 +00:00
2009-06-11 21:21:35 +00:00
_show : $ . fn . show ,
2009-06-10 01:22:38 +00:00
show : function ( speed ) {
if ( ! speed || typeof speed == 'number' || $ . fx . speeds [ speed ] ) {
2008-06-06 19:47:31 +00:00
return this . _show . apply ( this , arguments ) ;
2009-06-10 01:22:38 +00:00
} else {
var args = _normalizeArguments . apply ( this , arguments ) ;
args [ 1 ] . mode = 'show' ;
return this . effect . apply ( this , args ) ;
2008-06-06 19:47:31 +00:00
}
} ,
2009-01-22 13:10:18 +00:00
2009-06-11 21:21:35 +00:00
_hide : $ . fn . hide ,
2009-06-10 01:22:38 +00:00
hide : function ( speed ) {
if ( ! speed || typeof speed == 'number' || $ . fx . speeds [ speed ] ) {
2008-06-06 19:47:31 +00:00
return this . _hide . apply ( this , arguments ) ;
2009-06-10 01:22:38 +00:00
} else {
var args = _normalizeArguments . apply ( this , arguments ) ;
args [ 1 ] . mode = 'hide' ;
return this . effect . apply ( this , args ) ;
2008-06-06 19:47:31 +00:00
}
} ,
2009-01-22 13:10:18 +00:00
2009-06-11 21:21:35 +00:00
// jQuery core overloads toggle and create _toggle
_ _toggle : $ . fn . toggle ,
2009-06-10 01:22:38 +00:00
toggle : function ( speed ) {
if ( ! speed || typeof speed == 'number' || $ . fx . speeds [ speed ] ||
typeof speed == 'boolean' || $ . isFunction ( speed ) ) {
2008-06-06 19:47:31 +00:00
return this . _ _toggle . apply ( this , arguments ) ;
2009-04-19 21:19:23 +00:00
} else {
2009-06-10 01:22:38 +00:00
var args = _normalizeArguments . apply ( this , arguments ) ;
args [ 1 ] . mode = 'toggle' ;
return this . effect . apply ( this , args ) ;
2008-06-06 19:47:31 +00:00
}
} ,
2009-01-22 13:10:18 +00:00
2009-06-11 21:21:35 +00:00
_addClass : $ . fn . addClass ,
2009-01-07 16:07:23 +00:00
addClass : function ( classNames , speed , easing , callback ) {
2008-06-06 19:47:31 +00:00
return speed ? $ . effects . animateClass . apply ( this , [ { add : classNames } , speed , easing , callback ] ) : this . _addClass ( classNames ) ;
} ,
2009-06-11 21:21:35 +00:00
_removeClass : $ . fn . removeClass ,
2008-06-06 19:47:31 +00:00
removeClass : function ( classNames , speed , easing , callback ) {
return speed ? $ . effects . animateClass . apply ( this , [ { remove : classNames } , speed , easing , callback ] ) : this . _removeClass ( classNames ) ;
} ,
2009-06-11 21:21:35 +00:00
_toggleClass : $ . fn . toggleClass ,
2009-07-27 17:35:54 +00:00
toggleClass : function ( classNames , force , speed , easing , callback ) {
if ( typeof force == "boolean" || force === undefined ) {
if ( ! speed ) {
// without speed parameter;
return this . _toggleClass ( classNames , force ) ;
} else {
return $ . effects . animateClass . apply ( this , [ ( force ? { add : classNames } : { remove : classNames } ) , speed , easing , callback ] ) ;
}
} else {
// without switch parameter;
return $ . effects . animateClass . apply ( this , [ { toggle : classNames } , force , speed , easing ] ) ;
}
2008-06-06 19:47:31 +00:00
} ,
2009-06-11 21:21:35 +00:00
2009-06-15 02:18:47 +00:00
switchClass : function ( remove , add , speed , easing , callback ) {
2008-06-06 19:47:31 +00:00
return $ . effects . animateClass . apply ( this , [ { add : add , remove : remove } , speed , easing , callback ] ) ;
} ,
2009-01-22 13:10:18 +00:00
2008-06-06 19:47:31 +00:00
// helper functions
cssUnit : function ( key ) {
var style = this . css ( key ) , val = [ ] ;
$ . each ( [ 'em' , 'px' , '%' , 'pt' ] , function ( i , unit ) {
if ( style . indexOf ( unit ) > 0 )
val = [ parseFloat ( style ) , unit ] ;
} ) ;
return val ;
}
} ) ;
2009-06-12 13:26:45 +00:00
// override the animation for color styles
$ . each ( [ 'backgroundColor' , 'borderBottomColor' , 'borderLeftColor' ,
'borderRightColor' , 'borderTopColor' , 'color' , 'outlineColor' ] ,
2009-06-15 02:15:56 +00:00
function ( i , attr ) {
2009-06-12 13:26:45 +00:00
$ . fx . step [ attr ] = function ( fx ) {
2009-06-15 02:15:56 +00:00
if ( fx . state === 0 ) {
fx . start = getColor ( fx . elem , attr ) ;
fx . end = getRGB ( fx . end ) ;
2009-06-12 13:26:45 +00:00
}
2009-06-15 02:15:56 +00:00
fx . elem . style [ attr ] = 'rgb(' +
Math . max ( Math . min ( parseInt ( ( fx . pos * ( fx . end [ 0 ] - fx . start [ 0 ] ) ) + fx . start [ 0 ] , 10 ) , 255 ) , 0 ) + ',' +
Math . max ( Math . min ( parseInt ( ( fx . pos * ( fx . end [ 1 ] - fx . start [ 1 ] ) ) + fx . start [ 1 ] , 10 ) , 255 ) , 0 ) + ',' +
Math . max ( Math . min ( parseInt ( ( fx . pos * ( fx . end [ 2 ] - fx . start [ 2 ] ) ) + fx . start [ 2 ] , 10 ) , 255 ) , 0 ) + ')' ;
2009-06-12 13:26:45 +00:00
} ;
2008-06-06 19:47:31 +00:00
} ) ;
// Color Conversion functions from highlightFade
// By Blair Mitchelmore
// http://jquery.offput.ca/highlightFade/
// Parse strings looking for color tuples [255,255,255]
function getRGB ( color ) {
var result ;
// Check if we're already dealing with an array of colors
if ( color && color . constructor == Array && color . length == 3 )
return color ;
// Look for rgb(num,num,num)
if ( result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/ . exec ( color ) )
2009-01-07 16:07:23 +00:00
return [ parseInt ( result [ 1 ] , 10 ) , parseInt ( result [ 2 ] , 10 ) , parseInt ( result [ 3 ] , 10 ) ] ;
2008-06-06 19:47:31 +00:00
// Look for rgb(num%,num%,num%)
if ( result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/ . exec ( color ) )
return [ parseFloat ( result [ 1 ] ) * 2.55 , parseFloat ( result [ 2 ] ) * 2.55 , parseFloat ( result [ 3 ] ) * 2.55 ] ;
// Look for #a0b1c2
if ( result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/ . exec ( color ) )
return [ parseInt ( result [ 1 ] , 16 ) , parseInt ( result [ 2 ] , 16 ) , parseInt ( result [ 3 ] , 16 ) ] ;
// Look for #fff
if ( result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/ . exec ( color ) )
return [ parseInt ( result [ 1 ] + result [ 1 ] , 16 ) , parseInt ( result [ 2 ] + result [ 2 ] , 16 ) , parseInt ( result [ 3 ] + result [ 3 ] , 16 ) ] ;
// Look for rgba(0, 0, 0, 0) == transparent in Safari 3
if ( result = /rgba\(0, 0, 0, 0\)/ . exec ( color ) )
2008-10-01 11:52:39 +00:00
return colors [ 'transparent' ] ;
2008-06-06 19:47:31 +00:00
// Otherwise, we're most likely dealing with a named color
2008-11-18 01:54:45 +00:00
return colors [ $ . trim ( color ) . toLowerCase ( ) ] ;
2008-06-06 19:47:31 +00:00
}
function getColor ( elem , attr ) {
var color ;
do {
2008-11-18 01:54:45 +00:00
color = $ . curCSS ( elem , attr ) ;
2008-06-06 19:47:31 +00:00
// Keep going until we find an element that has color, or we hit the body
2008-11-18 01:54:45 +00:00
if ( color != '' && color != 'transparent' || $ . nodeName ( elem , "body" ) )
2008-06-06 19:47:31 +00:00
break ;
attr = "backgroundColor" ;
} while ( elem = elem . parentNode ) ;
return getRGB ( color ) ;
} ;
// Some named colors to work with
// From Interface by Stefan Petre
// http://interface.eyecon.ro/
var colors = {
aqua : [ 0 , 255 , 255 ] ,
azure : [ 240 , 255 , 255 ] ,
beige : [ 245 , 245 , 220 ] ,
black : [ 0 , 0 , 0 ] ,
blue : [ 0 , 0 , 255 ] ,
brown : [ 165 , 42 , 42 ] ,
cyan : [ 0 , 255 , 255 ] ,
darkblue : [ 0 , 0 , 139 ] ,
darkcyan : [ 0 , 139 , 139 ] ,
darkgrey : [ 169 , 169 , 169 ] ,
darkgreen : [ 0 , 100 , 0 ] ,
darkkhaki : [ 189 , 183 , 107 ] ,
darkmagenta : [ 139 , 0 , 139 ] ,
darkolivegreen : [ 85 , 107 , 47 ] ,
darkorange : [ 255 , 140 , 0 ] ,
darkorchid : [ 153 , 50 , 204 ] ,
darkred : [ 139 , 0 , 0 ] ,
darksalmon : [ 233 , 150 , 122 ] ,
darkviolet : [ 148 , 0 , 211 ] ,
fuchsia : [ 255 , 0 , 255 ] ,
gold : [ 255 , 215 , 0 ] ,
green : [ 0 , 128 , 0 ] ,
indigo : [ 75 , 0 , 130 ] ,
khaki : [ 240 , 230 , 140 ] ,
lightblue : [ 173 , 216 , 230 ] ,
lightcyan : [ 224 , 255 , 255 ] ,
lightgreen : [ 144 , 238 , 144 ] ,
lightgrey : [ 211 , 211 , 211 ] ,
lightpink : [ 255 , 182 , 193 ] ,
lightyellow : [ 255 , 255 , 224 ] ,
lime : [ 0 , 255 , 0 ] ,
magenta : [ 255 , 0 , 255 ] ,
maroon : [ 128 , 0 , 0 ] ,
navy : [ 0 , 0 , 128 ] ,
olive : [ 128 , 128 , 0 ] ,
orange : [ 255 , 165 , 0 ] ,
pink : [ 255 , 192 , 203 ] ,
purple : [ 128 , 0 , 128 ] ,
violet : [ 128 , 0 , 128 ] ,
red : [ 255 , 0 , 0 ] ,
silver : [ 192 , 192 , 192 ] ,
white : [ 255 , 255 , 255 ] ,
yellow : [ 255 , 255 , 0 ] ,
transparent : [ 255 , 255 , 255 ]
} ;
2008-11-18 02:55:25 +00:00
2008-05-23 09:26:18 +00:00
/ *
* jQuery Easing v1 . 3 - http : //gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
2008-11-20 04:10:34 +00:00
*
* Open source under the BSD License .
*
2009-01-18 00:04:57 +00:00
* Copyright 2008 George McGinley Smith
2008-05-23 09:26:18 +00:00
* All rights reserved .
2008-11-20 04:10:34 +00:00
*
2008-09-20 03:23:42 +00:00
* Redistribution and use in source and binary forms , with or without modification ,
2008-05-23 09:26:18 +00:00
* are permitted provided that the following conditions are met :
2008-11-20 04:10:34 +00:00
*
* Redistributions of source code must retain the above copyright notice , this list of
2008-05-23 09:26:18 +00:00
* conditions and the following disclaimer .
2008-11-20 04:10:34 +00:00
* 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
2008-05-23 09:26:18 +00:00
* provided with the distribution .
2008-11-20 04:10:34 +00:00
*
* Neither the name of the author nor the names of contributors may be used to endorse
2008-05-23 09:26:18 +00:00
* or promote products derived from this software without specific prior written permission .
2008-11-20 04:10:34 +00:00
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
2008-05-23 09:26:18 +00:00
* 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
2008-06-06 19:47:31 +00:00
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
* EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE
2008-11-20 04:10:34 +00:00
* GOODS OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED
2008-05-23 09:26:18 +00:00
* AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING
2008-11-20 04:10:34 +00:00
* NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE .
2008-05-23 09:26:18 +00:00
*
* /
// t: current time, b: begInnIng value, c: change In value, d: duration
2008-11-18 01:54:45 +00:00
$ . easing . jswing = $ . easing . swing ;
2008-05-23 09:26:18 +00:00
2008-11-18 01:54:45 +00:00
$ . extend ( $ . easing ,
2008-05-23 09:26:18 +00:00
{
def : 'easeOutQuad' ,
swing : function ( x , t , b , c , d ) {
2008-11-18 01:54:45 +00:00
//alert($.easing.default);
return $ . easing [ $ . easing . def ] ( x , t , b , c , d ) ;
2008-05-23 09:26:18 +00:00
} ,
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 ;
} ,
easeInOutQuad : function ( x , t , b , c , d ) {
if ( ( t /= d / 2 ) < 1 ) return c / 2 * t * t + b ;
return - c / 2 * ( ( -- t ) * ( t - 2 ) - 1 ) + b ;
} ,
easeInCubic : function ( x , t , b , c , d ) {
return c * ( t /= d ) * t * t + b ;
} ,
easeOutCubic : function ( x , t , b , c , d ) {
return c * ( ( t = t / d - 1 ) * t * t + 1 ) + b ;
} ,
easeInOutCubic : function ( x , t , b , c , d ) {
if ( ( t /= d / 2 ) < 1 ) return c / 2 * t * t * t + b ;
return c / 2 * ( ( t -= 2 ) * t * t + 2 ) + b ;
} ,
easeInQuart : function ( x , t , b , c , d ) {
return c * ( t /= d ) * t * t * t + b ;
} ,
easeOutQuart : function ( x , t , b , c , d ) {
return - c * ( ( t = t / d - 1 ) * t * t * t - 1 ) + b ;
} ,
easeInOutQuart : function ( x , t , b , c , d ) {
if ( ( t /= d / 2 ) < 1 ) return c / 2 * t * t * t * t + b ;
return - c / 2 * ( ( t -= 2 ) * t * t * t - 2 ) + b ;
} ,
easeInQuint : function ( x , t , b , c , d ) {
return c * ( t /= d ) * t * t * t * t + b ;
} ,
easeOutQuint : function ( x , t , b , c , d ) {
return c * ( ( t = t / d - 1 ) * t * t * t * t + 1 ) + 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 ) {
2008-09-20 03:23:42 +00:00
if ( s == undefined ) s = 1.70158 ;
2008-05-23 09:26:18 +00:00
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 ;
} ,
easeInBounce : function ( x , t , b , c , d ) {
2008-11-18 01:54:45 +00:00
return c - $ . easing . easeOutBounce ( x , d - t , 0 , c , d ) + b ;
2008-05-23 09:26:18 +00:00
} ,
easeOutBounce : function ( x , t , b , c , d ) {
if ( ( t /= d ) < ( 1 / 2.75 ) ) {
return c * ( 7.5625 * t * t ) + b ;
} else if ( t < ( 2 / 2.75 ) ) {
return c * ( 7.5625 * ( t -= ( 1.5 / 2.75 ) ) * t + . 75 ) + b ;
} else if ( t < ( 2.5 / 2.75 ) ) {
return c * ( 7.5625 * ( t -= ( 2.25 / 2.75 ) ) * t + . 9375 ) + b ;
} else {
return c * ( 7.5625 * ( t -= ( 2.625 / 2.75 ) ) * t + . 984375 ) + b ;
}
} ,
easeInOutBounce : function ( x , t , b , c , d ) {
2008-11-18 01:54:45 +00:00
if ( t < d / 2 ) return $ . easing . easeInBounce ( x , t * 2 , 0 , c , d ) * . 5 + b ;
return $ . easing . easeOutBounce ( x , t * 2 - d , 0 , c , d ) * . 5 + c * . 5 + b ;
2008-05-23 09:26:18 +00:00
}
} ) ;
/ *
*
* TERMS OF USE - EASING EQUATIONS
2008-11-20 04:10:34 +00:00
*
* Open source under the BSD License .
*
2009-01-18 00:04:57 +00:00
* Copyright 2001 Robert Penner
2008-05-23 09:26:18 +00:00
* All rights reserved .
2008-11-20 04:10:34 +00:00
*
2008-09-20 03:23:42 +00:00
* Redistribution and use in source and binary forms , with or without modification ,
2008-05-23 09:26:18 +00:00
* are permitted provided that the following conditions are met :
2008-11-20 04:10:34 +00:00
*
* Redistributions of source code must retain the above copyright notice , this list of
2008-05-23 09:26:18 +00:00
* conditions and the following disclaimer .
2008-11-20 04:10:34 +00:00
* 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
2008-05-23 09:26:18 +00:00
* provided with the distribution .
2008-11-20 04:10:34 +00:00
*
* Neither the name of the author nor the names of contributors may be used to endorse
2008-05-23 09:26:18 +00:00
* or promote products derived from this software without specific prior written permission .
2008-11-20 04:10:34 +00:00
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
2008-05-23 09:26:18 +00:00
* 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
2008-06-06 19:47:31 +00:00
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
* EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE
2008-11-20 04:10:34 +00:00
* GOODS OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED
2008-05-23 09:26:18 +00:00
* AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING
2008-11-20 04:10:34 +00:00
* NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE .
2008-05-23 09:26:18 +00:00
*
* /
2008-06-06 19:47:31 +00:00
} ) ( jQuery ) ;