134 lines
2.9 KiB
JavaScript
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); |