if (!LimTA_Objects) { var LimTA_Objects = []; };


function bs_lt_checkLength(e)
{
    
    var srcEl = e.srcElement ? e.srcElement : e.target; 
    srcEl.bsObj.checkLength();
}


function LimitedTextarea(elementId, maxLength)
{

    var a = arguments;
    if (a.length > 2)
    {
        elementId = a[1];
        maxLength = a[2];
    }

    this._objectId;
    
    this.infolineId = "";

    this._elementId = elementId;
    this._element = document.getElementById(elementId);
    this._maxLength = maxLength;

    this._constructor = function()
    {
        this._id = LimTA_Objects.length;
        LimTA_Objects[this._id] = this;
        this._objectId = this._id;
    }

    this.draw = function()
    {
        if (isNaN(this._maxLength)) return;
        if (this._maxLength <= 0) return;

        this._element.bsObj = this;
       
        try
        {
            if (this._element.addEventListener)
            {
                this._element.addEventListener('change', bs_lt_checkLength, false);
                this._element.addEventListener('keyup', bs_lt_checkLength, false);
                this._element.addEventListener('paste', bs_lt_checkLength, false);
            }
            else if (this._element.attachEvent)
            {
                this._element.attachEvent('onchange', bs_lt_checkLength);
                this._element.attachEvent('onkeyup', bs_lt_checkLength);
                this._element.attachEvent('onpaste', bs_lt_checkLength);
            }
            else
            {
                this._element["onchange"] = bs_lt_checkLength;
                this._element["onkeyup"] = bs_lt_checkLength;
                this._element["onpaste"] = bs_lt_checkLength;
            }
        } 
        catch (e)
        {

        }
        
        if (this.infolineId != "") document.getElementById(this.infolineId).innerHTML = this._maxLength;
    }

    this.checkLength = function()
    {

        if (this._element.value.length > this._maxLength) this._element.value = this._element.value.substr(0, this._maxLength);
        if (this.infolineId != "") document.getElementById(this.infolineId).innerHTML = this._maxLength - this._element.value.length;
    }

    this._constructor(); //call the constructor. needs to be at the end.


}

