﻿/*
* jQuery HoverPulse Plugin by M. Alsup
* Examples and docs at: http://malsup.com/jquery/hoverpulse/
* Dual licensed under the MIT and GPL
* Requires: jQuery v1.2.6 or later
* @version: 1.01  26-FEB-2009
*/

(function($) {

    $.fn.hoverpulse = function(options) {
        // in 1.3+ we can fix mistakes with the ready state
        if (this.length == 0) {
            if (!$.isReady && this.selector) {
                var s = this.selector, c = this.context;
                $(function() {
                    $(s, c).hoverpulse(options);
                });
            }
            return this;
        }

        var opts = $.extend({}, $.fn.hoverpulse.defaults, options);

        // parent must be relatively positioned
        this.parent().css({ position: 'relative' });
        // pulsing element must be absolutely positioned
        this.css({ position: 'absolute', top: 0, left: 0 });

        this.each(function() {
            var $this = $(this);
            var w = $this.width(), h = $this.height();
            $this.data('hoverpulse.size', { w: parseInt(w), h: parseInt(h) });
        });

        // bind hover event for behavior
        return this.hover(
        // hover over
		function() {
		    var $this = $(this);
		    $this.parent().css('z-index', opts.zIndexActive);

		    var size = $this.data('hoverpulse.size');
		    var w = size.w, h = size.h;
		    $this.stop().animate({
		        top: ('-' + opts.size + 'px'),
		        left: ('-' + opts.size + 'px'),
		        height: (h + 2 * opts.size) + 'px',
		        width: (w + 2 * opts.size) + 'px'
		    }, opts.speed);
		},
        // hover out
		function() {
		    var $this = $(this);
		    var size = $this.data('hoverpulse.size');
		    var w = size.w, h = size.h;

		    $this.stop().animate({
		        top: 0,
		        left: 0,
		        height: (h + 'px'),
		        width: (w + 'px')
		    }, opts.speed, function() {
		        $this.parent().css('z-index', opts.zIndexNormal);
		    });
		}
	);
    };

    $.fn.hoverpulse.defaults = {
        size: 8,
        speed: 150,
        zIndexActive: 100,
        zIndexNormal: 1
    };

})(jQuery);