/*!
 * Позволяет:
 * 1) показывать "-" если файл существует на сервер
 *    и если пользователь нажал удалить, то показывается основной контент
 */

jQuery.fn.fileupdater = function(options) {

    $(this).each(function() {

        if ($(this).attr('haveFileUpdater') != "true") {
            PrepareFileUpdater(this);
        }
        else {
            
            if (options == "reset")
                ResetFileUpdater(this);
            else if (options == "appendFlag")
                AppendDeleteFlag(this);
        }
    })

    //подготовка
    function PrepareFileUpdater(target) {

        var fileInput = $("input[type=file]", $(target));
        var fileName = $(fileInput).attr('filename');
        if (fileName != "" && fileName.length > 30)
            fileName = fileName.substr(0, 30) + "...";

        var fileupdater = $("<table></table>")
                      .addClass("fileupdater")
                      .append("<tr>" +
                                   "<td>" +
                                        "<button bClass='ui-icon-circle-close'>Удалить '" + fileName + "'</button>" +
                                   "</td>" +
                              "</tr>"
                              );
        $("button", $(fileupdater)).each(function() {
            $(this).button({
                text: true,
                icons: {
                    primary: $(this).attr("bClass")
                }
            }).click(function() {

                showDeleteDialog("Вы действительно хотите удалить файл?",
                   "Удаление файла", function() {
                       AppendDeleteFlag(target);
                   });

                return false;
            });
        });

        $(target).after(fileupdater);

        if (fileName == "")
            $(fileupdater).hide();
        else {
            $(target).hide();
        }

        $(target).attr('haveFileUpdater', 'true');
    }

    //сбрасывает fileUpdater
    function ResetFileUpdater(target) {

        $(".fileupdater", $(target).parent()).remove();
        $(target).attr('haveFileUpdater', 'false');
        PrepareFileUpdater(target);
    }

    //добавляет флаг удаления файла
    function AppendDeleteFlag(target) {
        var fileupdater = $(".fileupdater", $(target).parent());
        $(fileupdater).hide();
        $("input[type=text]", $(target)).val("");
        $(target).show();

        var inp = $("<input type='hidden'/>")
                                    .attr('name', $("input[type=file]", $(target)).attr('name') + "_del")
                                    .val('1');
        $("button", $(fileupdater)).after(inp);
    }

}

