﻿///<reference path="VS-IntelliSense.js"/>
///<reference path="../Scripts/Common.js" />
///<reference path="../../../../../Stylesoft.Web.Controls/Stylesoft.Web.Controls.Shared/Javascript/jquery-vsdoc.js" />
///<reference path="../../../../../Stylesoft.Web.Controls/Stylesoft.Web.Controls.Shared/Javascript/DragNDrop.js" />
///<reference path="../../../../../Stylesoft.Web.Controls/Stylesoft.Web.Controls.Shared/Javascript/UIElement.js" />
///<reference path="../../../../../Stylesoft.Web.Controls/Stylesoft.Web.Controls.Shared/Javascript/Utils.js" />
///<reference path="../../../../../Stylesoft.Web.Controls/Stylesoft.Web.Controls.Shared/Javascript/windowClose.js" />
///<reference path="../Scripts/OpenWindow.js" />
///<reference path="../../../../../Stylesoft.Web.Controls/Stylesoft.Web.Controls.Shared/Javascript/EventHandlersManager.js" />
///<reference path="../../../../../Stylesoft.Web.Controls/Stylesoft.Web.Controls.Shared/Javascript/BrowserHelpers.js" />

Common.resizer =
{
    instance: null
};
Common.resizer.resizePage = null;

Common.resizer.create = function()
{
    if (Common.resizer.instance)
        return;
    var resizerTopPanel = Common.top;
    var resizeHandle = $('.resizehandler');
    var resizer = new Drag.Base(resizerTopPanel,
    {
        handle: resizeHandle,
        modifiers: { y: 'height' },
        onComplete: Common.resizer.endResize,
        onStart: Common.resizer.startResize,
        onDrag: Common.resizer.resizing,
        timeout: 500,
        snap: 0,
        virtual: true
    });
    Common.resizer.instance = resizer;
    Common.resizer.setConstraints();
};
Common.resizer.startResize = function()
{
    Resizer.defaultStart(Common.resizer);
    Common.cover.show();
};
Common.resizer.resizing = function()
{
    Common.top.height(Common.top.height());
    var topH = (Common.top.css('display') == 'none') ? 0 : Common.top.outerHeight();
    var resH = (Common.resizer.instance.handle.css('display') == 'none') ? 0 : Common.resizer.instance.handle.outerHeight();
    Common.bottom.height($('#main').innerHeight() - (topH + resH));
    if (Common.resizer && Common.resizer.resizePage)
    {
        Common.resizer.resizePage(Common.main, Common.top, Common.bottom);
    }
};
Common.resizer.endResize = function()
{
    Resizer.defaultEnd(Common.resizer);
    Common.cover.hide();
};
Common.resizer.setConstraints = function()
{
    this.instance.options.limit =
        {
            y:
            [100,
             UI.windowHeight() - 240]
        };
};
    ////////// ---------- Other stuff ---------- \\\\\\\\\\
Resizer = { };

Resizer.invoke = function(resizer)
{
    resizer.startResize();
    resizer.resizing();
    resizer.endResize();
};
Resizer.defaultStart = function(resizer)
{
    document.body.style.cursor = 'n-resize';
    resizer.setConstraints();
    Utils.collapseSelection(document.body);
    invokeAllClosingPopupHandlers();
};
Resizer.defaultEnd = function()
{
    document.body.style.cursor = '';
};
////////// ---------- Vertical resizer logic ---------- \\\\\\\\\\

Common.verticalResizer =
{
    instance: null
};

Common.verticalResizer.Events =
    {
        startResize: 'startResize',
        resizing: 'resizing',
        endResize: 'endResize'

    };

Common.verticalResizer.create = function ()
{
    if (Common.verticalResizer.instance)
        return;

    Common.verticalResizer.eventHandlersManager = new EventHandlersManager();
    
    var resizerLeftPanel = $('#OpenedWindowDiv');
    var resizeHandle = $('#OpenWindowVerticalResizer').appendTo(resizerLeftPanel);
    var resizer = new Drag.Base(resizerLeftPanel,
    {
        handle: resizeHandle,
        modifiers: { x: 'width' },
        onComplete: Common.verticalResizer.endResize,
        onDrag: Common.verticalResizer.resizing,
        onStart: Common.verticalResizer.startResize,
        virtual: true,
        timeout: 400,
        snap:0
    });
    Common.verticalResizer.instance = resizer;
    Common.verticalResizer.setConstraints();
};
Common.verticalResizer.startResize = function ()
{
    var eventArgs = EventArgs.createWithReinvoke(this, []);
    Common.verticalResizer.eventHandlersManager.invokeEvent(Common.verticalResizer.Events.startResize, eventArgs);
    
    Resizer.defaultStart(Common.verticalResizer);
    document.body.style.cursor = 'e-resize';
    Common.cover.show();
};
Common.verticalResizer.resizing = function ()
{
    var windowWidth = UI.windowWidth();
    var openedWindowWidth = UI.Element.width('OpenedWindowDiv');
    if (openedWindowWidth == 0)
        openedWindowWidth = UI.Element.width('OpenedWindowResizerExpandDiv');
    if (!OpenWindow.isPinned && !OpenWindow.isCollapsed)
        openedWindowWidth = 0;

    var eventArgs = EventArgs.createWithReinvoke(this, [openedWindowWidth, windowWidth]);
    Common.verticalResizer.eventHandlersManager.invokeEvent(Common.verticalResizer.Events.resizing, eventArgs);
};
Common.verticalResizer.endResize = function ()
{
    var windowWidth = UI.windowWidth();
    var openedWindowWidth = UI.Element.width('OpenedWindowDiv');
    if (openedWindowWidth == 0)
        openedWindowWidth = UI.Element.width('OpenedWindowResizerExpandDiv');
    if (!OpenWindow.isPinned && !OpenWindow.isCollapsed)
        openedWindowWidth = 0;

    var eventArgs = EventArgs.createWithReinvoke(this, [openedWindowWidth, windowWidth]);
    Common.verticalResizer.eventHandlersManager.invokeEvent(Common.verticalResizer.Events.endResize, eventArgs);
    document.body.style.cursor = "";
    Common.cover.hide();
};
Common.verticalResizer.setConstraints = function ()
{
    this.instance.options.limit =
        {
            x: [150, Math.round(0.5 * UI.windowWidth())]
        };
};
Common.verticalResizer.invoke = function (verticalResizer)
{
    verticalResizer.startResize();
    verticalResizer.resizing();
    verticalResizer.endResize();
};
