﻿
function ControlManager()
{
    var This = this;

    // Data members
    This.Controls = {};

    // Methods
    This.Register = function(iControl)
    { This.Controls[iControl.Id] = iControl; }

    This.Unregister = function(iControl)
    { delete This.Controls[iControl.Id]; }

    This.Get = function(iId)
    { return This.Controls[iId]; }
}

var Controls = new ControlManager();


function Control(iId, iStyles)
{
    var This = this;

    // Data members
    This.Id = iId;
    This.Styles = null;

    // Methods
    This.GetElement = function()
    { return document.getElementById(This.Id); }

    This.SetStyle = function(iStyleIds)
    {
        if (iStyleIds)
            This.GetElement().className = This.Styles.Get(iStyleIds);
        else
            This.GetElement().className = This.Styles.Default;
    }

    // Initialize
    if (iStyles)
        This.Styles = iStyles;
    else
    {
        var element = This.GetElement();
        if (element)
            This.Styles = new Styles(element.className);
        else
            throw "No element with id '" + This.Id + "'";

        Controls.Register(This);
    }
}
