Набросок:
setStatus = function(user_id){
if (user_id==undefined) user_id = 0;
$('#statuseditor').remove();
$('.usr_status_text span').hide();
var h = '<input id="statuseditor" type="text" value="'+$('.usr_status_text span').eq(0).html()+'">'
$(h).prependTo('.usr_status_bar');
var new_status = '';
$('#statuseditor').on('keyup',
function(){
new_status = $(this).context.value;
if(event.which == 13){
$.post('/components/users/ajax/status.php', {'status': new_status, 'id': user_id}, function(data){
$('.usr_status_text span').eq(0).html(new_status);
$('.usr_status_date').html(LANG_HAVE_JUST);
if (new_status.length == 0){
$('.usr_status_text').hide();
$('.usr_status_date').hide();
} else {
$('.usr_status_text span').show()
$('.usr_status_text').show()
}
$('#statuseditor').remove();
});
}
});
}
При нажатии "Изменить статус", появится поле вместо статуса, где можно задать новый статус, после ввода, при нажатии Enter статус сохранится
п.с. С остальным можно по аналогии, либо немного поправить шаблоны, чтобы решение было не с костылями, а также не зависело от шаблона(верстки), как будет время постараюсь набросать для всех всплывающих окон