$(document).ready(function(){
   $("input").live('click', function () {
        $(this).keydown(function (event) {
            timeoutFunction('validateForm', this.name, 500);   
        }); 
   });
});

function validateForm(name) {
    elementId = "#" + name;
    // Subform?
    if ($(elementId).length == 0) {
        elementId = "input[name="+name+"]"    
    }    
    element = $(elementId);
    data = (!element.val())? '' : element.val();
    
    // Die Eingabe validieren und ausgeben.
    destination = $("form").has(elementId).attr("action"); 
     

    $.post(
        destination,
        name + "=" + data,
        function (json) {
            if (json != true) {
                // Den ganzen Streß wegen möglicher Subforms
                var regex = RegExp(/\[([^\]]*)\]/);
                var result = regex.exec(name);
                  
                if (result !== null) {
                    name = result[1];
                }                        
                element.next(".errors").remove();          
                element.after(json[name]); 
            } else {
                element.next(".errors").remove();
            }
        },
        "json"
    );
}

var timeout = null;
function timeoutFunction(functionName, name, time) {
    clearTimeout(timeout);
    eval('timeout = setTimeout("'+functionName+'(\''+name+'\')", '+time+')');
}
