﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("aorta.lembreto.site.includes");

aorta.lembreto.site.includes.contador_de_caracteres = function(campoTexto, campoContador, tamanhoMaximo, mensagemReset) {

    aorta.lembreto.site.includes.contador_de_caracteres.initializeBase(this, [campoTexto]);
    aorta.lembreto.site.includes.contador_de_caracteres.initializeBase(this, [campoContador]);
    
    this._txtCampo = campoTexto;
    this._contador = campoContador;
    this._tamanhoMaximo = tamanhoMaximo;
    this._mensagem = mensagemReset;
    
    this.initialize();
}

aorta.lembreto.site.includes.contador_de_caracteres.prototype = {
    initialize: function() {
    
        aorta.lembreto.site.includes.contador_de_caracteres.callBaseMethod(this, 'initialize');
        
        this._txtCampo_KeyDelegate = Function.createDelegate(this, this._contadorCaracterMethod);
        
        this._txtCampo_KeyCallBack = Function.createCallback(this._txtCampo_KeyDelegate, "");
        
        $addHandler(this._txtCampo, "keydown", this._txtCampo_KeyCallBack);
        
        $addHandler(this._txtCampo, "keyup", this._txtCampo_KeyCallBack);
        
        $addHandler(this._txtCampo, "keypress", this._txtCampo_KeyCallBack);
        
        this._txtCampo_FocusDelegate = Function.createDelegate(this, this._focus);
        
        $addHandler(this._txtCampo, "focus", this._txtCampo_FocusDelegate);
        
        this._txtCampo_BlurDelegate = Function.createDelegate(this, this._blur);
        
        $addHandler(this._txtCampo, "blur", this._txtCampo_BlurDelegate);
    },
    
    dispose: function() {
        aorta.lembreto.site.includes.contador_de_caracteres.callBaseMethod(this, 'dispose');
    },
    
    _contadorCaracterMethod: function(event) {    
        var tecla = event ? event.keyCode : event.which;
        var qtd = this._tamanhoMaximo - this._txtCampo.value.length;
        
        if (tecla != 8) {
            
            this._contador.value = qtd >= 0 ? qtd : 0;
        
            if (this._txtCampo.value.length == this._tamanhoMaximo) {
            
                this._contador.value = 0
            
                return false;
            }
        }
        else {
            this._contador.value = qtd >= 0 ? qtd : 0;
        }
     
        if (this._txtCampo.value.length >= this._tamanhoMaximo) {
        
            this._txtCampo.value = this._txtCampo.value.substring(0, this._tamanhoMaximo);
        }
    },
        
    _focus: function()
    {
        if (this._txtCampo.value === this._mensagem) {
        
            this._txtCampo.value = "";
        }
    },
    
    _blur: function()
    {
        if (this._txtCampo.value === ""){
        
            this._txtCampo.value = this._mensagem;
        }
    }
}

aorta.lembreto.site.includes.contador_de_caracteres.registerClass('aorta.lembreto.site.includes.contador_de_caracteres', Sys.UI.Behavior);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
