﻿jQuery.fn.pulse = function (properties, duration, numTimes, interval) {

    if (duration === undefined || duration < 0) duration = 500;
    if (duration < 0) duration = 500;

    if (numTimes === undefined) numTimes = 1;
    if (numTimes < 0) numTimes = 0;

    if (interval === undefined || interval < 0) interval = 0;

    return this.each(function () {
        var $this = jQuery(this);
        var origProperties = {};
        for (property in properties) {
            origProperties[property] = $this.css(property);
        }

        var subsequentTimeout = 0;
        for (var i = 0; i < numTimes; i++) {
            window.setTimeout(function () {
                $this.animate(
               properties,
               {
                   duration: duration / 2,
                   complete: function () {
                       $this.animate(origProperties, duration / 2)
                   }
               }
            );
            }, (duration + interval) * i);
        }
    });

};
