
////////////////////////////////////////////////////////////////////////////////////////////////////
// Set of created widgets
////////////////////////////////////////////////////////////////////////////////////////////////////
var Widgets = new Object();

////////////////////////////////////////////////////////////////////////////////////////////////////
// Widget constructor
////////////////////////////////////////////////////////////////////////////////////////////////////
function Widget(iId)
{
    var widget = this;

    this.widgetId = iId;
    Widgets[iId] = this;
    
    this.show = function()
        {
            widget.getElement().style.display = "block";
        }
    
    this.hide = function()
        {
            widget.getElement().style.display = "none";
        }

    this.getElement = function()
        { return document.getElementById(widget.widgetId); }
 
    this.getPosition = function()
        {
            var e = widget.getElement();
            var left = 0;
            var top = 0;
            while (e)
            {
                left += e.offsetLeft;
                top += e.offsetTop;
                e = e.offsetParent;
            }
            if (typeof document.body.leftMargin != 'undefined')
            {
                left += parseInt(document.body.leftMargin);
                top += parseInt(document.body.topMargin);
            }
            return {'left': left, 'top': top};
        }
 
    this.addOnClick = function(iEvent)
        {
            if (!widget._onClick)
            {
                widget._onClick = new EventHandler();
                widget.getElement().onclick = widget._onClick.invoke;
            }
            widget._onClick.add(iEvent);
        }
        
    this.addOnMouseOver = function(iEvent)
        {
            if (!widget._onMouseOver)
            {
                widget._onMouseOver = new EventHandler();
                widget.getElement().onmouseover = widget._onMouseOver.invoke;
            }
            widget._onMouseOver.add(iEvent);
        }
        
    this.addOnMouseOut = function(iEvent)
        {
            if (!widget._onMouseOut)
            {
                widget._onMouseOut = new EventHandler();
                widget.getElement().onmouseout = widget._onMouseOut.invoke;
            }
            widget._onMouseOut.add(iEvent);
        }
 
}

////////////////////////////////////////////////////////////////////////////////////////////////////

Widget.get = function(iId)
    { return Widgets[iId]; }

////////////////////////////////////////////////////////////////////////////////////////////////////