﻿/*
*
* 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: '-65px'
		    //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);
