/* jquery.animate-enhanced plugin v1.11 --- http://github.com/benbarnett/jQuery-Animate-Enhanced http://benbarnett.net @benpbarnett --- Copyright (c) 2013 Ben Barnett Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- Extends jQuery.animate() to automatically use CSS3 transformations where applicable. Tested with jQuery 1.3.2+ Supports -moz-transition, -webkit-transition, -o-transition, transition Targetted properties (for now): - left - top - opacity - width - height Usage (exactly the same as it would be normally): jQuery(element).animate({left: 200}, 500, function() { // callback }); Changelog: 1.11 (08/07/2014): - Merging PR #157, fixes #156 for animating with 0 1.10 (09/04/2014): - Merging PR #153 Don't try to restore values which weren't saved 1.09 (09/04/2014): - Merging PR #154 Added support of AMD and Node.js (via browserify) environments 1.08 (16/01/2014): - Merging PR #147 Access element tag name appropriately 1.07 (06/12/2013): - Merging PR #139 Other units, beside '%' should also be kept 1.06 (06/12/2013): - Merging PR #140 Do not change a user defined display mode for elements, after show/hide 1.05 (14/08/2013): - Merging PR #124 fix for highcharts clash. Thanks @bensonc! 1.04 (14/08/2013): - Using fix from issue #69 by @rickyk586 to support percentages 1.03 (19/7/2013): - Merge PR #129 (Use originalAnimateMethod if a step callback function is provided.) /thx @lehni 1.02 (8/5/2013): - Fixing use3D default flags. It must explicitly be set to false to disable 3d now, the plugin by default will use it if available. 1.01 (8/5/2013): - Adding appropriate display value for wider range of elements (issue #121 - thanks smacky) 1.0 (8/5/2103): - Fix avoidTransforms: true behaviour for directional transitions 0.99.1 (3/4/2013): - Add Set or unset the 'disabled by default' value (PR #117) 0.99 (5/12/2012): - PR #109 Added support for list-item nodes. FadeIn on tags was omitting the list-style support. (thx @SeanCannon) 0.98 (12/11/2012): - Merging pull request #106 thx @gboysko - checking for ownerDocument before using getComputedStyle 0.97 (6/11/2012): - Merging pull request #104 thx @gavrochelegnou - .bind instead of .one 0.96a (20/08/2012): - Checking event is from dispatch target (issue #58) 0.96 (20/08/2012): - Fixes for context, all elements returned as context (issue #84) - Reset position with leaveTransforms !== true fixes (issue #93) 0.95 (20/08/2012): - If target opacity == current opacity, pass back to jquery native to get callback firing (#94) 0.94 (20/08/2012): - Addresses Firefox callback mechanisms (issue #94) - using $.one() to bind to CSS callbacks in a more generic way 0.93 (6/8/2012): - Adding other Opera 'transitionend' event (re: issue #90) 0.92 (6/8/2012): - Seperate unbinds into different threads (re: issue #91) 0.91 (2/4/2012): - Merge Pull Request #74 - Unit Management 0.90 (7/3/2012): - Adding public $.toggleDisabledByDefault() feature to disable entire plugin by default (Issue #73) 0.89 (24/1/2012): - Adding 'avoidCSSTransitions' property. Set to true to disable entire plugin. (Issue #47) 0.88 (24/1/2012): - Fix Issue #67 for HighchartsJS compatibility 0.87 (24/1/2012): - Fix Issue #66 selfCSSData.original is undefined 0.86 (9/1/2012): - Strict JS fix for undefined variable 0.85 (20/12/2011): - Merge Pull request #57 from Kronuz - Codebase cleaned and now passes jshint. - Fixed a few bugs (it now saves and restores the original css transition properties). - fadeOut() is fixed, it wasn't restoring the opacity after hiding it. 0.80 (13/09/2011): - Issue #28 - Report $(el).is(':animated') fix 0.79 (06/09/2011): - Issue #42 - Right negative position animation: please see issue notes on Github. 0.78 (02/09/2011): - Issue #18 - jQuery/$ reference joys 0.77 (02/09/2011): - Adding feature on Github issue #44 - Use 3D Transitions by default 0.76 (28/06/2011): - Fixing issue #37 - fixed stop() method (with gotoEnd == false) 0.75 (15/06/2011): - Fixing issue #35 to pass actual object back as context for callback 0.74 (28/05/2011): - Fixing issue #29 to play nice with 1.6+ 0.73 (05/03/2011): - Merged Pull Request #26: Fixed issue with fadeOut() / "hide" shortcut 0.72 (05/03/2011): - Merged Pull Request #23: Added Penner equation approximations from Matthew Lein's Ceaser, and added failsafe fallbacks 0.71 (05/03/2011): - Merged Pull Request #24: Changes translation object to integers instead of strings to fix relative values bug with leaveTransforms = true 0.70 (17/03/2011): - Merged Pull Request from amlw-nyt to add bottom/right handling 0.68 (15/02/2011): - width/height fixes & queue issues resolved. 0.67 (15/02/2011): - Code cleanups & file size improvements for compression. 0.66 (15/02/2011): - Zero second fadeOut(), fadeIn() fixes 0.65 (01/02/2011): - Callbacks with queue() support refactored to support element arrays 0.64 (27/01/2011): - BUGFIX #13: .slideUp(), .slideToggle(), .slideDown() bugfixes in Webkit 0.63 (12/01/2011): - BUGFIX #11: callbacks not firing when new value == old value 0.62 (10/01/2011): - BUGFIX #11: queue is not a function issue fixed 0.61 (10/01/2011): - BUGFIX #10: Negative positions converting to positive 0.60 (06/01/2011): - Animate function rewrite in accordance with new queue system - BUGFIX #8: Left/top position values always assumed relative rather than absolute - BUGFIX #9: animation as last item in a chain - the chain is ignored? - BUGFIX: width/height CSS3 transformation with left/top working 0.55 (22/12/2010): - isEmptyObject function for