﻿Type.registerNamespace("SoftAIN.Controls");

SoftAIN.Controls.HoverButton = function(element)
{

    SoftAIN.Controls.HoverButton.initializeBase(this, [element]);

    this._hoverClass = null;
    this._pressedClass = null;
    this._activeControlClientId = null;
    this._requestHidedControlClientId = null;
}

SoftAIN.Controls.HoverButton.prototype = {

    initialize: function()
    {
        SoftAIN.Controls.HoverButton.callBaseMethod(this, 'initialize');

        if (this._activeControlClientId)
        {
            if (this._hoverClass) RegisterHoverButton(this._activeControlClientId, this._hoverClass);
            if (this._pressedClass) RegisterPressedButton(this._activeControlClientId, this._pressedClass);
        }

        this._beginRequestHandlerDelegate = Function.createDelegate(this, this.HandleBeginRequest);

        if (Sys.WebForms && Sys.WebForms.PageRequestManager)
        {
            this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
        }
        if (this._pageRequestManager !== null)
        {
            this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);
        }
    },

    dispose: function()
    {
        SoftAIN.Controls.HoverButton.callBaseMethod(this, 'dispose');
    },

    HandleBeginRequest: function(sender, arg)
    {
        if (this._requestHidedControlClientId)
        {
            var control = $get(this._requestHidedControlClientId);
            if (!control) return;

            var updatingPanel = null;

            for (var i = 0; i < sender._updatePanelClientIDs.length; i++)
            {
                if (IsParent(arg._postBackElement, sender._updatePanelClientIDs[i]))
                {
                    updatingPanel = sender._updatePanelClientIDs[i];
                    break;
                }
            }

            if (!updatingPanel) return;
            if (!IsParent(control, updatingPanel)) return;

            control.style.visibility = 'hidden';
        }
    },

    set_HoverClass: function(value)
    {
        this._hoverClass = value;
    },

    get_HoverClass: function()
    {
        return this._hoverClass;
    },

    set_PressedClass: function(value)
    {
        this._pressedClass = value;
    },

    get_PressedClass: function()
    {
        return this._pressedClass;
    },

    set_ActiveControlClientId: function(value)
    {
        this._activeControlClientId = value;
    },

    get_ActiveControlClientId: function()
    {
        return this._activeControlClientId;
    },

    set_RequestHidedControlClientId: function(value)
    {
        this._requestHidedControlClientId = value;
    },

    get_RequestHidedControlClientId: function()
    {
        return this._requestHidedControlClientId;
    }
}

SoftAIN.Controls.HoverButton.registerClass('SoftAIN.Controls.HoverButton', Sys.UI.Control);

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
