/*
 *
 * 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 +15 ) + '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);