/**
 * Главная панель для показа контента (входит и в главное окно, и в модальное окно). Содержит историю посещений.
 *
 * @extends Container_Element_Abstract
 */
function Pannel()
{
    Pannel.superclass.constructor.call(this);
    
    /**
     * Экземпляр истории сообщений
     *
     * @var Pannel_History
     */
    this._history = new Pannel_History(this);
    
    /**
     * Создаем HTML нашей панели
     */
    var oMainDiv = Rup.create('div');
    var oHistoryDiv = Rup.create('div');
    var oContainerDiv = Rup.create('div');
    
    oMainDiv.appendChild(oHistoryDiv);
    oMainDiv.appendChild(oContainerDiv);
    
    this._setBaseElement(oMainDiv);
    this._setContainerElement(oContainerDiv);
    
    this._history.render(oHistoryDiv);
}

Rup.extend(Pannel, Container_Element_Abstract);

Pannel.prototype._getRootNode = function ( params )
{
	return new Root_Node( params );
}

/**
 * Производит переход по заданному адресу объекта (нода дерева)
 *
 * @param Object
 *      typeId: ID типа загружаемого нода
 *      nodeId: ID самого загржаемого нода
 */
Pannel.prototype.go = function( params )
{
    var oNewRootNode = this._getRootNode(params);
    this._history.add(oNewRootNode);
}

/**
 * добавляет заданный объект в уже открытый узел дерева
 *
 * @param Object
 *      typeId: ID типа загружаемого нода
 *      nodeId: ID самого загржаемого нода
 */
Pannel.prototype.append = function( params )
{
    /**
     *  this._childs[0] === корневой Root_Node
     *  Добавляется в Pannel_History.add() => Pannel_History.goNext()
     */
    if( this._childs[0] )
    {
        var oNewRootNode = this._getRootNode(params);
        this._childs[0].appendChild(oNewRootNode);
    }
    else
    {
        this.go(params);
    }
}