kaktusy/strona/js/jquery.thumbs.js

134 lines
2.9 KiB
JavaScript

/*
*
* Copyright (c) 2006-2010 Joan Piedra (http://joanpiedra.com)
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*
*/
(function($) {
/*
* Converts image and link elements to thumbnails
*
* @name $.fn.thumbs
* @author Joan Piedra (http://joanpiedra.com)
* @example $('.thumb').thumbs();
*
*/
$.fn.thumbs = function(options) {
var $thumbs = this;
if (options == 'destroy') {
return Thumbs.destroy($thumbs);
}
if( $thumbs.data('thumbs') ) {
return $thumbs;
}
var center = {},
defaults = {
center: true,
classNames: {
center: 'thumb-center',
container: 'thumb-container',
icon: 'thumb-icon',
img: 'thumb-img',
inner: 'thumb-inner',
strip: 'thumb-strip'
},
html: '<span class="%container%"><span class="%inner%"><span class="%img%"></span><span class="%strip%">%strip_content%</span><span class="%icon%"></span></span></span>',
strip: true
};
options = $.extend(true, {}, defaults, options);
return $thumbs.each(function(){
var $thumb = $(this),
c = options.classNames,
clone = $thumb.clone(true),
html = new String(options.html),
centered = false,
strip = '';
for (className in c) {
var newClassName = c[className];
if ( options.center && !centered && className == 'container' ) {
newClassName = c.container + ' ' + c.center;
centered = true;
}
html = html.replace('%' + className + '%', newClassName);
}
if (options.strip) {
strip = $thumb.is('img') ? $thumb.attr('alt') : $thumb.find('img').attr('alt');
strip = strip != undefined ? strip : $thumb.attr('title');
strip = strip != undefined ? strip : '';
}
html = html.replace('%strip_content%', strip);
$thumb.wrap( html );
if (options.center) {
Thumbs.centerImg( $thumb );
}
var data = {
'container': $thumb.parents('.' + c.container),
'raw': clone
};
$thumb.data('thumbs', data);
});
};
var Thumbs = {
/*
* Private: Absolute positions the image in the center of the thumbnail frame
*
* @name thumbs.centerImg
* @author Joan Piedra (http://joanpiedra.com)
* @example Thumbs.centerImg($thumb);
*
*/
centerImg: function($thumb) {
var $img = $thumb.is('img') ? $thumb : $thumb.find('img'),
css = {
left: '-' + ( parseInt( $img.css('width') ) / 2 ) + 'px',
top: '-' + ( parseInt( $img.css('height') ) / 2 ) + 'px'
};
$img.css( css );
return $thumb;
},
/*
* Private: Removes all the added thumbnail html
*
* @name thumbs.destroy
* @author Joan Piedra (http://joanpiedra.com)
* @example Thumbs.destroy($thumbs);
*
*/
destroy: function($thumbs) {
$thumbs.each(function(index) {
var $thumb = $(this),
data = $thumb.data('thumbs');
if (!data) {
return;
}
data.container.after(data.raw).remove();
});
}
}
})(jQuery);