RELATION_HTMLS = []

function autoFill(id){
    if (!$(id).attr('title') ) {
        return;
    }
    if ($(id).val() && $(id).val() != $(id).attr('title') ) {
        return;
    }
    var title=$(id).attr('title');
    $(id).addClass("readonly").val(title).focus(function(){
        if($(id).val()==title){
            $(id).val("");
        }
        $(id).removeClass("readonly")
    }).blur(function(){
        if($(id).val()==""){
            $(id).addClass("readonly").val(title);
        }
    });
}

function showOverlay(){
    $(".static .tab").click(
        function() {
             $("#layout").fadeTo("fast", 0.1);
             $("#footer").fadeTo("fast", 0.1);
             $(".overlay").show();
        }
    );
}

function closeOverlay(){
    $(".overlay .close").click(
        function() {
             $("#layout").fadeTo("fast", 1);
             $("#footer").fadeTo("fast", 1);
             $(".overlay").hide();
        }
    );
}

function showBookform(){
    $(".add .inplace").click(
        function() {
            autoFill('.book-form .book_field');
            autoFill('.book-form .note_field');
            autoFill('.book-form .tags_field');
            $(this).hide();
            $(this).parent().find(".book-form").show();

            // for lists
            $("form.add-list-form .title_field").focus();
            $("form.add-list-form .title_field").val("").removeClass("readonly");
            return(false);
        }
    );
}

function hideBookform(){
    $(".add .inplace").show();
    $('.add-book-form').hide();

    $('.add-book-form input.book_field').val('');
    $('.add-book-form input.tags_field').val('');
    $('.add-book-form textarea').val('');
}

function hideListform(){
    $(".add .inplace").show();
    $('.add-list-form').hide();

    $('.add-list-form input.title_field').val('');
    $('.add-list-form textarea').val('');
}

function showAddtolist(){
    $("#add").click(
        function() {
             $(this).hide();
             $("#add-form").show();
             $("form.add-list-form .title_field").get()[0].focus();
             return(false);
        }
    );
}

function showEdit(){
    addEditShow(".item li");
}

function addEditShow(selector)
{
    $(selector).unbind('hover');
    $(selector).hover(
        function() {$(this).find(".icon").css("display","inline");},
        function() {$(this).find(".icon").css("display","none");}
    );
}


function addBook(el) {
    data = {
        book: getField('add-book-form', 'book'),
        note: getField('add-book-form', 'note'),
        tags: getField('add-book-form', 'tags'),
        month: getField('add-book-form', 'month'),
        year: getField('add-book-form', 'year'),
        type: LIST_TYPE,
        list: LIST_ID,
        tag: CURRENT_TAG
    }

    data['month'] = data['month']==undefined ? '' : data['month'];
    data['year'] = data['year']==undefined ? '' : data['year'];

    if (data['book']=='')
    {
        alert('Введите название книги или адрес на amazon или ozon.');
        $('.add-book-form .book_field').focus();
        return false;
    }

    $('#form-buttons').hide();
    $('#form-loader').show();

    $.post(ADD_BOOK_AJAX_URL, data, function(data) {
        if (data['error'])
        {
            alert(data['error']);
            console.error(data['error']);

            $('#form-loader').hide();
            $('#form-buttons').show();

            return ;
        }
        hideBookform();

        if (data['redirect']) {
            top.location = data['redirect'];
            $('#edit-' + data['id']).click();
        }

        if (data['html']) {
            $('.book_list').html(data['html'] + $('.book_list').html());

            $('div.activity>dl>dt').html(data['title']);
            addEditShow(".item ul li");
        }

        $('#form-loader').hide();
        $('#form-buttons').show();
    }, 'json')

    return false;
}

function addList(el) {
    data = {
        title: getField('add-list-form', 'title'),
        description: getField('add-list-form', 'description'),
    }

    if (data['title']=='')
    {
        alert('Введите название списка.');
        $('.add-book-form .title_field').focus();
        return false;
    }

    $('#form-buttons').hide();
    $('#form-loader').show();

    $.post(ADD_LIST_AJAX_URL, data, function(data, textStatus) {
        if (data['error'])
        {
            console.error(data['error']);
            return ;
        }
        hideListform();
        $('.lists ul').html(data['html'] + $('.lists ul').html());
        $('div.activity>dl>dt').html(data['title']);

        addEditShow(".lists ul li");

        $('#form-loader').hide();
        $('#form-buttons').show();
    }, 'json')

    return false;
}

function edit_relation(id, url) {
    $('.relation-' + id + ' p.info').fadeOut('slow', function() {
        $('.relation-' + id + ' p.info').remove();
    });
    $.get(url, {}, function(data){
        $('.relation-' + id).hide();
        $('.relation-' + id).after(data);
        if ($('#edit-' + id).attr('rel') == 'copy') {
            $('li.edit-book-' + id + ' h2').html('Вы уже добавили эту книгу раньше:');
            $('#edit-' + id).removeAttr('rel');
        }
    }, 'html')
}

function copy_relation(id, url) {
    if ($('.edit-item').length > 0) {
        return false;
    }
    $('.relation-' + id + ' p.info').fadeOut('slow', function() {
        $('.relation-' + id + ' p.info').remove();
    });
    $.get(url, {}, function(data){
        // $('.relation-' + id).hide();
        $('.relation-' + id).after(data);
        autoFill('.book_field');
        autoFill('.note_field');
        autoFill('.tags_field');
        $('.note_field').val('');
        $('.tags_field').val('');
        top.scrollTo(0, $('.edit-item').position().top);
    }, 'html')
}

function edit_list(id, url) {
    $.get(url, {}, function(data){
        $('.list-' + id).hide();
        $('.list-' + id).after(data);
        autoFill('.book_field');
        autoFill('.note_field');
        autoFill('.tags_field');
    }, 'html')
}


function save_relation_copy(id) {
    return save_relation_core(id, true);
}

function save_relation(id) {
    return save_relation_core(id, false);
}

function save_relation_core(id, is_copy) {
    form = $('.edit-book-' + id + ' form')
    data = {
        book: form.find('.book_field').attr('value'),
        note: (form.find('.note_field').attr('value') != form.find('.note_field').attr('title') && form.find('.note_field').attr('value')) || '',
        tags: (form.find('.tags_field').attr('value') != form.find('.tags_field').attr('title') && form.find('.tags_field').attr('value')) || '',
        copy: form.find('.copy_to_list_field').val(),
        id: id,
    }
    data['month'] = form.find('.month_field').length>0 ? form.find('.month_field')[0].value : '';
    data['year'] = form.find('.year_field').length>0 ? form.find('.year_field')[0].value : '';
    data['month'] = data['month']==undefined ? '' : data['month'];
    data['year'] = data['year']==undefined ? '' : data['year'];

    $('fieldset#form-buttons').hide();
    $('fieldset#form-loader').show();

    $.post(UPDATE_BOOK_AJAX_URL, data, function(data) {
        if (data['error'])
        {
            if (window.console) {
                window.console.error(data['error'])
            } else {
                alert(data['error']);
            }
            return ;
        }
        $('.edit-book-' + id).remove()

        if (data['redirect']) {
            top.location = data['redirect'];
            $('#edit-' + data['id']).click();
        }

        if (data['found_url']) {
            $('.relation-' + id).show();
            $('.relation-' + id).append('<p class="info found">Вы уже добавляли эту книгу, <a href="'+data['found_url']+'">кликните для перехода к ней.</a></p>');
            $('.relation-' + id + ' p.info').fadeIn('slow');
            top.scrollTo(0, $('.relation-' + id).position().top);
        }

        if (data['success_url']) {
            $('.relation-' + id).show();
            $('.relation-' + id).append('<p class="info success"><a href="'+data['success_url']+'">Книга добавлена.</a></p>');
            $('.relation-' + id + ' p.info').fadeIn('slow');
            top.scrollTo(0, $('.relation-' + id).position().top);
        }

        if (data['html']) {
            if (is_copy) {
                $('.relation-' + id).show();
            } else {
                $('.relation-' + id).replaceWith(data['html']);
                $('.relation-' + id).show();

                addEditShow(".item ul li");
            };
        }

        $('fieldset#form-buttons').show();
        $('fieldset#form-loader').hide();

        if (data['html'] && window.location.hash == '#edit-' + id) {
            window.location.hash = '';
        }
    }, 'json')
}

function save_list(url, id) {
    form = $('.edit-list-' + id + ' form')
    data = {
        title: form.find('.title_field').val(),
        description: form.find('.description_field').val(),
    }

    $('fieldset#form-buttons').hide();
    $('fieldset#form-loader').show();

    $.post(url, data, function(data) {
        if (!data)
        {
            console.error('error');
            return ;
        }
        form.remove()
        $('.edit-list-' + id).remove();
        $('.list-' + id).show();
        $('.list-' + id).replaceWith(data)

        addEditShow(".lists ul li");

        $('fieldset#form-buttons').show();
        $('fieldset#form-loader').hide();
    }, 'html')
}


function delete_relation(id){
    if (confirm('Вы действительно хотите удалить книгу?'))
    {
        data = {
            id: id,
            type: LIST_TYPE,
            list: LIST_ID,
            tag: CURRENT_TAG
        }
        $('fieldset#form-buttons').hide();
        $('fieldset#form-loader').show();

        $.post(DELETE_BOOK_AJAX_URL, data, function(data){
            if (data['error'])
            {
                console.error(data['error']);
                return ;
            }
            $('.relation-' + id).remove();
            $('.edit-book-' + id).remove();

            $('div.activity>dl>dt').html(data['title']);

            $('fieldset#form-buttons').show();
            $('fieldset#form-loader').hide();
        }, 'json')
    }
}

function delete_list(url, id){
    if (confirm('Вы действительно хотите удалить список?'))
    {
        data = {
            id: id
        }
        $('fieldset#form-buttons').hide();
        $('fieldset#form-loader').show();

        $.post(url, data, function(data){
            if (data['error'])
            {
                console.error(data['error']);
                return ;
            }
            $('.list-' + id).remove();
            $('.edit-list-' + id).remove();

            $('div.activity>dl>dt').html(data['title']);

            $('fieldset#form-buttons').show();
            $('fieldset#form-loader').hide();
        }, 'json')
    }
}

function cancel_edit_book(id) {
    $('.edit-book-' + id).remove();
    $('.relation-' + id).show();
}

function cancel_edit_list(id) {
    $('.edit-list-' + id).remove();
    $('.list-' + id).show();
}

function getField(form, name) {
    if ($('form.' + form + ' .' + name + '_field').hasClass('readonly')) {
        value = '';
    }
    else {
        value = $('form.' + form + ' .' + name +'_field').attr('value');
    }
    return value
}

function create_month_field(id, default_value)
{
    if (default_value==undefined) {
        now = new Date();
        default_value = now.getMonth() + 1;
    }

    var monthes = ['', 'январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь'];

    var html = '';
    for (i in monthes)
    {
        if (i==0)
            continue;

        if (i==default_value) {
            html+='<option value="' + i + '" selected="selected">' + monthes[i] + '</option>';
        } else {
            html+='<option value="' + i + '">' + monthes[i] + '</option>';
        }

    }
    $('#' + id).html(html);
}

function create_year_field(id, default_value)
{
    now = new Date();
    to_year = now.getFullYear();
    default_value = parseInt(default_value);
    default_value = isNaN(default_value) ? to_year : default_value;

    var html = '';
    for (var i=to_year; i>=to_year-10; i--)
    {
        if (i==default_value) {
            html+='<option value="' + i + '" selected="selected">' + i + '</option>';
        } else {
            html+='<option value="' + i + '">' + i + '</option>';
        }
    }
    $('#' + id).html(html);
}

$(
    function () {
        showBookform();
        showEdit();
        showAddtolist();
        showOverlay();
        closeOverlay();

        if (window.location.hash && window.location.hash.match(/^#edit-\d+$/)) {
            $(window.location.hash).attr('rel', 'copy');
            $(window.location.hash).click();
        }
    }
)

