(function ($) {

// Observes fields comparing its value with fixed intervals of time
// Compensates not quite sure "change" events.
$(document).behave("load", "*[data-observe]", function () {
    var element = $(this);
    var interval = parseInt(element.data("observe"));
    if (interval === null || interval === undefined) {
        interval = 1000;
    }
    if (element.get(0).nodeName.toLowerCase() !== "input") {
        alert("data-observe attribute must be only used with <input>s.");
        return false;
    }
    element.previousObservedValue = element.val();
    window.setInterval(function () {
        if (element.val() !== element.previousObservedValue) {
            element.trigger("emulated:change");
            element.previousObservedValue = element.val();
        }
    }, interval);
    return true;
});

})(jQuery);