function UndoRedo(){
    var pages = new Array();
    var titles = new Array();
    var undoButton;
    var redoButton;
    var isInit = false;
    var currentPage = 0;
    var pageCount = 0;

    this.init = function(){
        redoButton = document.getElementById("redo");
        undoButton = document.getElementById("undo");

        $('#undo').button({text: false, icons: {primary: 'ui-icon-arrowreturnthick-1-w'}});
        $('#undo').click(function() {
            if(currentPage > 1){
                currentPage--;
                $("#full_block").empty();
                $("#full_block").append(pages[currentPage-1]);
                if(currentPage == 1){
                    $("#undo").toggle(false);
                }
                if(currentPage < pageCount){
                    $("#redo").toggle(true);
                }
                $( "#fact_tab" ).tabs();
                $( "#full_block" ).dialog( "option", "title", titles[currentPage-1] );
            }
        });
        $('#redo').button({text: false, icons: {primary: 'ui-icon-arrowreturnthick-1-e'}});
        $('#redo').click(function() {
            if(currentPage < pageCount){
                currentPage++;
                $("#full_block").empty();
                $("#full_block").append(pages[currentPage-1]);
                if(currentPage == pageCount){
                    $("#redo").toggle(false);
                }
                if(currentPage > 1){
                    $("#undo").toggle(true);
                }
                $( "#fact_tab" ).tabs();
                $( "#full_block" ).dialog( "option", "title", titles[currentPage-1] );
            }
        });
        $('#undo').insertBefore($('#ui-dialog-title-full_block'));
        $('#redo').insertBefore($('#ui-dialog-title-full_block'));
        $("#undo").toggle(false);
        $("#redo").toggle(false);
    }

    this.reset = function(){
        pageCount = 0;
        currentPage = 0;
    }


    this.push = function(content, title, isTab)
    {
        if(!isInit){
            this.init();
            isInit = true;
        }

        if(currentPage > 5){
            pages[0] = pages[1];
            pages[1] = pages[2];
            pages[2] = pages[3];
            pages[3] = pages[3];
            pages[4] = pages[5];
            titles[0] = titles[1];
            titles[1] = titles[2];
            titles[2] = titles[3];
            titles[3] = titles[3];
            titles[4] = titles[5];
            pageCount = currentPage -1;
        }

        var oldHeight = parseInt($( "#full_block" ).dialog( "option", "height" ));

        pages[currentPage] = content;
        currentPage++;
        pageCount = currentPage;
        $("#full_block").empty();
        $("#full_block").append(content);
        if(pageCount > 1){
            $("#undo").toggle(true);
        }
        if(pageCount != 1){
            $("#redo").toggle(false);
        }
        updateButtons();

        if(isTab){
            $( "#fact_tab" ).tabs({ selected: 0 });
            var delta = 90 + parseInt($(".ui-tabs-panel").position().top);
            $(".ui-tabs-panel").equalHeights(oldHeight-delta,oldHeight-delta);
        }

        if(title){
            titles[currentPage-1] = title;
            $( "#full_block" ).dialog( "option", "title", title );
        }
        else{
            titles[currentPage-1] = '&nbsp&nbspДетальное описание';
        }
    };
}
