$.fn.ajaxProcess=function(callback){
    $form=$(this);
    
    if($form.attr('submitting'))
        return;
    $form.attr('submitting',true);
    
    $(this).find('[id$=Password]').each(function(){
        $(this).attr('id',$(this).attr('id').replace('Password','Passwort'));
        $(this).attr('name',$(this).attr('name').replace('password','passwort'));
    });
    $('.tipsy').hide();
    
    $(this).ajaxSubmit({
        dataType:'json',
        complete:function(){$form.removeAttr('submitting');},
        error:function(){$('#AjaxError').showOverlay();if($.isFunction(callback)) callback.call(this);},
        success:function(data){
            
            if(!$.isFunction(callback))
                return;
            var errors={};
            
            
            if(!$.isEmptyObject(data)){
                var fields=$.map($form.find('input:not(input[type=hidden])'),function(n){return ($(n).attr('id')?$(n).attr('id'):null);});
                
                for(idx in fields){
                    var id=fields[idx];
                    if(data[id])
                        errors[id]=data[id];
                }
                fields=$.map($form.find('input[type=hidden]'),function(n){return ($(n).attr('id')?$(n).attr('id'):null);});
                for(idx in fields){
                    var id=fields[idx];
                    if(data[id])
                        errors[id]=data[id];
                }
            } else {
                errors=false;
                $('.success',$form[0]).animate({height:'show',opacity:'show'}).delay(8000).animate({height:'hide',opacity:'hide'});
            }
            if(data.GeneralMessage){
                var id='GeneralMessage';
                var message=data.GeneralMessage;
                errors[id]=message;
            }
            callback.call($form[0],errors);
        }
    });
}
