﻿// Copyright (C) 2007 Xtensive LLC.
// All rights reserved.
// For conditions of distribution and use, see license.
// Created by: Alexander Ilyin
// Created:    2007.09.25

Ext.namespace("Xtensive");

Xtensive.DialogPanel = Ext.extend(Ext.Panel, {
  layout: 'card',

  initComponent: function() {
    Xtensive.DialogPanel.superclass.initComponent.call(this);
    this.on('remove', this.showNextChild, this);
  },

  showNextChild: function() {
    var itemCount = this.items.getCount();
    if (itemCount == 0)
      return;
    this.layout.setActiveItem(itemCount - 1);
    this.doLayout();
  },

  onRender: function(ct, position) {
    Xtensive.DialogPanel.superclass.onRender.call(this, ct, position);
    var contentDiv = document.createElement("div");
    this.cDiv = Ext.get(contentDiv);

    contentDiv.innerHTML =
      "<table  cellpadding='0' cellspacing='0' style='width:100%;height:100%' border='0'><tr>" +
          "<td class='stackPanel-col-1' ><table class='stackPanel-col-1' cellpadding='0' cellspacing='0' style='width:100%;'><tr><td class='stackPanel-c11'></td></tr><tr><td class='stackPanel-c21'></td></tr><tr><td class='stackPanel-c31'></td></tr></table></td>" +
          "<td class='stackPanel-col-2' ><table class='stackPanel-col-2' cellpadding='0' cellspacing='0' style='width:100%;'><tr><td class='stackPanel-c12'></td></tr><tr><td class='stackPanel-c22'></td></tr><tr><td class='stackPanel-c32'></td></tr></table></td>" +
          "<td class='stackPanel-col-3' ><table class='stackPanel-col-3' cellpadding='0' cellspacing='0' style='width:100%;'><tr><td class='stackPanel-c13'></td></tr><tr><td class='stackPanel-c23'></td></tr><tr><td class='stackPanel-c33'></td></tr></table></td>" +
        "</tr></table>";

    this.col1 = Ext.get(this.cDiv.select("td.stackPanel-col-1").elements[0]);
    this.col2 = Ext.get(this.cDiv.select("td.stackPanel-col-2").elements[0]);
    this.col3 = Ext.get(this.cDiv.select("td.stackPanel-col-3").elements[0]);

    this.c11 = Ext.get(this.cDiv.select("td.stackPanel-c11").elements[0]);
    this.c12 = Ext.get(this.cDiv.select("td.stackPanel-c12").elements[0]);
    this.c13 = Ext.get(this.cDiv.select("td.stackPanel-c13").elements[0]);

    this.c21 = Ext.get(this.cDiv.select("td.stackPanel-c21").elements[0]);
    this.c22 = Ext.get(this.cDiv.select("td.stackPanel-c22").elements[0]);
    this.c23 = Ext.get(this.cDiv.select("td.stackPanel-c23").elements[0]);

    this.c31 = Ext.get(this.cDiv.select("td.stackPanel-c31").elements[0]);
    this.c32 = Ext.get(this.cDiv.select("td.stackPanel-c32").elements[0]);
    this.c33 = Ext.get(this.cDiv.select("td.stackPanel-c33").elements[0]);

    this.el.appendChild(contentDiv);
    this.c22.dom.appendChild(this.bwrap.dom);
  },

  doLayout: function() {
    if (!this.rendered)
      return;
    var size = this.getSize();
    this.onResize(size.width, size.height);
    Xtensive.DialogPanel.superclass.doLayout.apply(this, arguments);
  },

  onResize: function(w, h) {
    if (w) this.el.setWidth(w);
    if (h) this.el.setHeight(h);

    var activeItem = this.layout.activeItem;
    if (activeItem && activeItem.width) w = Math.min(activeItem.width, w);
    if (activeItem && activeItem.height) h = Math.min(activeItem.height, h);

    var fullWidth = w - this.getFrameWidth();
    var fullHeight = h - this.getFrameHeight();

    var depth = this.items.getCount() - 1;
    if (depth > 0) {
      if (depth > 3)
        depth = 3;
      if (this.bwrap.dom.parentNode != this.c22.dom)
        this.c22.dom.appendChild(this.bwrap.dom);

      this.cDiv.dom.style.display = '';
      if (w) this.cDiv.setWidth(fullWidth);
      if (h) this.cDiv.setHeight(fullHeight);

      var leftMargin = 14 + (depth - 1) * 10;
      var rightMargin = 14 + (depth - 1) * 10;
      var topMargin = 14 + (depth - 1) * 10;
      var bottomMargin = 14 + (depth - 1) * 10;

      var freeWidth = fullWidth - leftMargin - rightMargin;
      var freeHeight = fullHeight - topMargin - bottomMargin;

      Xtensive.DialogPanel.superclass.onResize.call(this, freeWidth, freeHeight);

      this.col1.setWidth(leftMargin);
      this.col3.setWidth(rightMargin);
      this.col2.setWidth(freeWidth);
      this.c11.setWidth(leftMargin);
      this.c11.setHeight(topMargin + 13);
      this.c12.setHeight(topMargin);
      this.c13.setHeight(topMargin + 13);
      this.c13.setWidth(rightMargin);
      this.c21.setWidth(leftMargin);
      this.c22.setWidth(freeWidth);
      this.c23.setWidth(rightMargin);
      this.c31.setWidth(leftMargin);
      this.c31.setHeight(bottomMargin);
      this.c32.setHeight(bottomMargin);
      this.c33.setWidth(rightMargin);
      this.c33.setHeight(bottomMargin);

    }
    else {
      this.cDiv.dom.style.display = 'none';
      if (this.bwrap.dom.parentNode != this.el)
        this.el.appendChild(this.bwrap.dom);
      Xtensive.DialogPanel.superclass.onResize.call(this, w, h);
    }
  }
});
if (typeof (Sys) !== 'undefined')
  Sys.Application.notifyScriptLoaded();