$(function() {
    //делаем виджет перемещаемым
    $('#notesWidget').draggable({
        handle: '#notesHeader'
        , containment: 'parent'
    });
    //обработчик нажатия на кнопку добавления новой записи
    $('#bAddNote').click(function() {
        if ($('#addNote').val() != '') {
            //сохраняем запись
            $.post('savenote.php', {value:$('#addNote').val(), bAddNote:true}, function(noteid) {
                //добавляем запись в список
                var curDate = new Date();
                var noteData = {id:noteid, note_text:$('#addNote').val(), note_date:curDate.toString()};
                var note = $(createListElement(noteData));
                $('#notes ul').prepend(note);
                $('.edit').editable('savenote.php');
                note.children('.remove').click(function() {addRemove(this);});
                
                refreshClasses();
            });
        }
        else {
            alert('Вы ничего не написали');
        }
        
        return false;
    });
    //загружаем список записей
    $.getJSON('getnotes.php', {}, function(data, status) {
        if (data.status == 'OK') {

            //формируем список
            var notesList = '<ul>';
            $.each(data.notes, function(i, note) {
                notesList += createListElement(note);
            });
            notesList += '</ul>';

            $('#notes').html(notesList);
            
            //делаем записи редактируемыми
            $('.edit').editable('savenote.php');
            
            //добавляем обработчики нажатия на кнопку удаления записи
            $('.remove').click(function() {addRemove(this);});
            
            refreshClasses();
        }
        else {
            //вывод сообщения об ошибке
            $('#notes').html('<p>Не могу загрузить список записей</p>');
        }
    });
});

function createListElement(note) {
    return '<li>'
        + '<img src="images/removenote.gif" alt="Удалить" class="remove" />'
        + '<div class="edit" id="note_' + note.id + '">' + note.note_text + '</div>'
        + '<div class="notedate">' + note.note_date + '</div>'
        + '</li>';
}

function addRemove(element) {
    var noteid = $(element).next().attr('id');
    
    //удаляем запись
    $.post('removenote.php', {id:noteid}, function() {
        //убираем данную запись из списка
        $(element).parent().slideUp("slow", function() {
            $(this).remove();
            refreshClasses();
        });
        
        
    });
}

function refreshClasses() {
    var odds = $('#notes ul li:odd');
    odds.removeClass('even');
    odds.addClass('odd');
    var evens = $('#notes ul li:even');
    evens.removeClass('odd');
    evens.addClass('even');
}