﻿/// <reference path="./jquery.min.js" />

; (function() {

    $.fn.KeyDownBlurTimeOut = function(options) {
        var defaults = {
            timeout: 2000,
            onSuccess: null
        };
        var options = $.extend({}, defaults, options);

        return this.each(function() {
            $.fn.KeyDownBlurTimeOut.Single(options, this);
        });
    };

    $.fn.KeyDownBlurTimeOut.Single = function(options, object) {
        var options = options;
        var jObject = $(object);
        var timeout = null;
        var hasChanged = false;

        var success = function() {
            clearTimeout(timeout);

            if (hasChanged == true && typeof (options.onSuccess) == 'function') {
                options.onSuccess(jObject);
            }
            hasChanged = false;
        };

        var keyDown = function(e) {
            clearTimeout(timeout);
            hasChanged = true;
            timeout = setTimeout(success, options.timeout);
        };

        jObject.keydown(keyDown);
        jObject.blur(success);
    };

})(jQuery)
