(function($) {
    $.ajaxSettings.accepts._default = "text/javascript, text/html, application/xml, text/xml, */*"
})(jQuery); (function($) {
    $.fn.reset = function() {
        return this.each(function() {
            if (typeof this.reset == "function" || (typeof this.reset == "object" && !this.reset.nodeType)) {
                this.reset()
            }
        })
    };
    $.fn.enable = function() {
        return this.each(function() {
            this.disabled = false
        })
    };
    $.fn.disable = function() {
        return this.each(function() {
            this.disabled = true
        })
    }
})(jQuery); (function($) {
    $.extend({
        fieldEvent: function(el, obs) {
            var field = el[0] || el,
            e = "change";
            if (field.type == "radio" || field.type == "checkbox") {
                e = "click"
            } else {
                if (obs && (field.type == "text" || field.type == "textarea" || field.type == "password")) {
                    e = "keyup"
                }
            }
            return e
        }
    });
    $.fn.extend({
        delayedObserver: function(delay, callback) {
            var el = $(this);
            if (typeof window.delayedObserverStack == "undefined") {
                window.delayedObserverStack = []
            }
            if (typeof window.delayedObserverCallback == "undefined") {
                window.delayedObserverCallback = function(stackPos) {
                    var observed = window.delayedObserverStack[stackPos];
                    if (observed.timer) {
                        clearTimeout(observed.timer)
                    }
                    observed.timer = setTimeout(function() {
                        observed.timer = null;
                        observed.callback(observed.obj, observed.obj.formVal())
                    },
                    observed.delay * 1000);
                    observed.oldVal = observed.obj.formVal()
                }
            }
            window.delayedObserverStack.push({
                obj: el,
                timer: null,
                delay: delay,
                oldVal: el.formVal(),
                callback: callback
            });
            var stackPos = window.delayedObserverStack.length - 1;
            if (el[0].tagName == "FORM") {
                $(":input", el).each(function() {
                    var field = $(this);
                    field.bind($.fieldEvent(field, delay),
                    function() {
                        var observed = window.delayedObserverStack[stackPos];
                        if (observed.obj.formVal() == observed.oldVal) {
                            return
                        } else {
                            window.delayedObserverCallback(stackPos)
                        }
                    })
                })
            } else {
                el.bind($.fieldEvent(el, delay),
                function() {
                    var observed = window.delayedObserverStack[stackPos];
                    if (observed.obj.formVal() == observed.oldVal) {
                        return
                    } else {
                        window.delayedObserverCallback(stackPos)
                    }
                })
            }
        },
        formVal: function() {
            var el = this[0];
            if (el.tagName == "FORM") {
                return this.serialize()
            }
            if (el.type == "checkbox" || el.type == "radio") {
                return this.filter("input:checked").val() || ""
            } else {
                return this.val()
            }
        }
    })
})(jQuery);
