| 255 | } |
| 256 | |
| 257 | function propFilter( props, specialEasing ) { |
| 258 | var index, name, easing, value, hooks; |
| 259 | |
| 260 | // camelCase, specialEasing and expand cssHook pass |
| 261 | for ( index in props ) { |
| 262 | name = jQuery.camelCase( index ); |
| 263 | easing = specialEasing[ name ]; |
| 264 | value = props[ index ]; |
| 265 | if ( jQuery.isArray( value ) ) { |
| 266 | easing = value[ 1 ]; |
| 267 | value = props[ index ] = value[ 0 ]; |
| 268 | } |
| 269 | |
| 270 | if ( index !== name ) { |
| 271 | props[ name ] = value; |
| 272 | delete props[ index ]; |
| 273 | } |
| 274 | |
| 275 | hooks = jQuery.cssHooks[ name ]; |
| 276 | if ( hooks && "expand" in hooks ) { |
| 277 | value = hooks.expand( value ); |
| 278 | delete props[ name ]; |
| 279 | |
| 280 | // Not quite $.extend, this won't overwrite existing keys. |
| 281 | // Reusing 'index' because we have the correct "name" |
| 282 | for ( index in value ) { |
| 283 | if ( !( index in props ) ) { |
| 284 | props[ index ] = value[ index ]; |
| 285 | specialEasing[ index ] = easing; |
| 286 | } |
| 287 | } |
| 288 | } else { |
| 289 | specialEasing[ name ] = easing; |
| 290 | } |
| 291 | } |
| 292 | } |
| 293 | |
| 294 | function Animation( elem, properties, options ) { |
| 295 | var result, |