/*
+ SUPREMATION
+ copyright Luke Shumard & Dave Donahue, licensed GPL & MIT
+ version 0.1

+ Documentation: http://www.supremation.com
+ GitHub: https://github.com/lukeshumard/supremation

+ lukeshumard.com
+ monowi.net

*/
(function($){$.fn.supremate=function(properties,speed,easing,callback){var element=this;duration=calcDuration(element,properties,speed);$(element).animate(properties,duration,easing,callback);function calcDuration(element,properties,speed){before=measurePosition(element);cloned=element.clone().insertBefore(element);element.hide();$.each(properties,function(key,value){var isRelative=value.substr(0,2);if(isRelative=="+="||isRelative=="-="){value=value.substr(2);value=parseFloat(value);elemRelative=element.css("position");if(elemRelative=="relative"){var prevState=element.css(key);prevState=parseFloat(prevState);isRelative=="+="?value=prevState+value:value=prevState-value}else{isRelative=="+="?value=Math.abs(value):value=Math.abs(0-value)}}cloned.css(key,value)});after=measurePosition(cloned);cloned.remove();element.show();distance=calcDistance(before,after);return distance/(speed/1000)}function calcDistance(elem1,elem2){var max=0;var distance=0;$.each(elem1,function(key,value){if(elem1[key]>=elem2[key]){distance=Math.abs(elem1[key]-elem2[key])}else{distance=Math.abs(elem2[key]-elem1[key])}max=(distance>max)?distance:max});return max}function measurePosition(elem){return{top:$(elem).offset().top,left:$(elem).offset().left,width:$(elem).width(),height:$(elem).height()}}}})(jQuery);
