diff options
author | tomtom84 <63dc41d76451@ba77e90e49a6.anonbox.net> | 2012-04-07 07:41:23 -0700 |
---|---|---|
committer | tomtom84 <63dc41d76451@ba77e90e49a6.anonbox.net> | 2012-04-07 07:41:23 -0700 |
commit | 0fa3b7f348c3deeb85cb5f5f9bd35ba47b0e92ee (patch) | |
tree | 625102ab98b1f89f14b44ab729dc4b5a88fdeb3d /view/theme/diabook-aerith/js/jquery.ae.image.resize.js | |
parent | 1440786c319b25f870ef1f85dba7aaf50e49f842 (diff) | |
parent | 1c0700f371f96466be113a4184d7ab9acd39e22f (diff) | |
download | volse-hubzilla-0fa3b7f348c3deeb85cb5f5f9bd35ba47b0e92ee.tar.gz volse-hubzilla-0fa3b7f348c3deeb85cb5f5f9bd35ba47b0e92ee.tar.bz2 volse-hubzilla-0fa3b7f348c3deeb85cb5f5f9bd35ba47b0e92ee.zip |
Merge pull request #212 from tomtom84/master
fixes in diabook-themes
Diffstat (limited to 'view/theme/diabook-aerith/js/jquery.ae.image.resize.js')
-rw-r--r-- | view/theme/diabook-aerith/js/jquery.ae.image.resize.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/view/theme/diabook-aerith/js/jquery.ae.image.resize.js b/view/theme/diabook-aerith/js/jquery.ae.image.resize.js new file mode 100644 index 000000000..bac09cd45 --- /dev/null +++ b/view/theme/diabook-aerith/js/jquery.ae.image.resize.js @@ -0,0 +1,69 @@ +(function( $ ) { + + $.fn.aeImageResize = function( params ) { + + var aspectRatio = 0 + // Nasty I know but it's done only once, so not too bad I guess + // Alternate suggestions welcome :) + , isIE6 = $.browser.msie && (6 == ~~ $.browser.version) + ; + + // We cannot do much unless we have one of these + if ( !params.height && !params.width ) { + return this; + } + + // Calculate aspect ratio now, if possible + if ( params.height && params.width ) { + aspectRatio = params.width / params.height; + } + + // Attach handler to load + // Handler is executed just once per element + // Load event required for Webkit browsers + return this.one( "load", function() { + + // Remove all attributes and CSS rules + this.removeAttribute( "height" ); + this.removeAttribute( "width" ); + this.style.height = this.style.width = ""; + + var imgHeight = this.height + , imgWidth = this.width + , imgAspectRatio = imgWidth / imgHeight + , bxHeight = params.height + , bxWidth = params.width + , bxAspectRatio = aspectRatio; + + // Work the magic! + // If one parameter is missing, we just force calculate it + if ( !bxAspectRatio ) { + if ( bxHeight ) { + bxAspectRatio = imgAspectRatio + 1; + } else { + bxAspectRatio = imgAspectRatio - 1; + } + } + + // Only resize the images that need resizing + if ( (bxHeight && imgHeight > bxHeight) || (bxWidth && imgWidth > bxWidth) ) { + + if ( imgAspectRatio > bxAspectRatio ) { + bxHeight = ~~ ( imgHeight / imgWidth * bxWidth ); + } else { + bxWidth = ~~ ( imgWidth / imgHeight * bxHeight ); + } + + this.height = bxHeight; + this.width = bxWidth; + } + }) + .each(function() { + + // Trigger load event (for Gecko and MSIE) + if ( this.complete || isIE6 ) { + $( this ).trigger( "load" ); + } + }); + }; +})( jQuery );
\ No newline at end of file |