Type.registerNamespace('MDS.SegurosContinente.Saude.Controls.Extenders');

MDS.SegurosContinente.Saude.Controls.Extenders.ValidatorBehavior = function(element) {
    MDS.SegurosContinente.Saude.Controls.Extenders.ValidatorBehavior.initializeBase(this, [element]);
    this._errorCssClass = null;
    this._clientState = null;
    this._controlToValidate = null;
    this._associatedLabelID = null;
    this._hasError = false;
    this._tooltip = null;
}

MDS.SegurosContinente.Saude.Controls.Extenders.ValidatorBehavior.prototype = {
    initialize : function() {
        MDS.SegurosContinente.Saude.Controls.Extenders.ValidatorBehavior.callBaseMethod(this, 'initialize');  
        
        var element = this.get_element();
        if (element.evaluationfunction) {
            this._originalValidationMethod = Function.createDelegate(element, element.evaluationfunction);
            this._validationMethodOverride = Function.createDelegate(this, this._onValidate);
            element.evaluationfunction = this._validationMethodOverride;
            this._controlToValidate = element.controltovalidate;
            this._tooltip = element.errormessage;
        }     
        
        var clientState = this.get_ClientState();
        if ((clientState != null) && (clientState != "")) {
            this._showError();
        }
    },
    
    dispose : function() {
        MDS.SegurosContinente.Saude.Controls.Extenders.ValidatorBehavior.callBaseMethod(this, 'dispose');
    },
    
    get_ErrorCssClass : function() {
        return this._errorCssClass;
    },
    
    set_ErrorCssClass : function(value) {
        this._errorCssClass = value;
    }, 
    
    get_ClientState : function() {
        return this._clientState;
    }, 
    
    set_ClientState : function(value) {
        this._clientState = value;
    },
    
    get_AssociatedLabel : function() {
        return this._associatedLabel;
    }, 
    
    set_AssociatedLabel : function(value) {
        this._associatedLabel = value;
    },
    
    get_LabelCssClass : function() {
        return this._labelCssClass;
    }, 
    
    set_LabelCssClass : function(value) {
        this._labelCssClass = value;
    },
    
    _onValidate : function(val) {
        if (!this._originalValidationMethod(val)) {    
            this._showError();        
            return false;
        }
        else {
            this._removeError();
            return true;
        }
    }, 
    
    _showError : function() {
        this._hasError = true;
        if ((this._controlToValidate != null) && (this._controlToValidate != "")) {
            var ctl = $get(this._controlToValidate);
            if (ctl && !ctl.disabled && this._errorCssClass) {
                Sys.UI.DomElement.addCssClass(ctl, this._errorCssClass);
            }
        }
        if ((this._associatedLabel != null) && (this._associatedLabel != "") && this._labelCssClass) {     
            var label = $get(this._associatedLabel);
            if (label)  {
                Sys.UI.DomElement.addCssClass(label, this._labelCssClass);
                if (this._tooltip) {
                    label.title = this._tooltip;
                }
            }
        }
    },
    
    _removeError : function() {
        if (!this._hasError) return;
        
        if ((this._controlToValidate != null) && (this._controlToValidate != "")) {
            var ctl = $get(this._controlToValidate);
            if (ctl && !ctl.disabled && this._errorCssClass) {
                Sys.UI.DomElement.removeCssClass(ctl, this._errorCssClass);
            }
        }
        if ((this._associatedLabel != null) && (this._associatedLabel != "") && this._labelCssClass) {            
            var label = $get(this._associatedLabel);
            if (label) {
                Sys.UI.DomElement.removeCssClass(label, this._labelCssClass);
                label.title = "";
            }
        }
        this._hasError = false;
    }
}

MDS.SegurosContinente.Saude.Controls.Extenders.ValidatorBehavior.descriptor = {
    properties: [{name: 'ErrorCssClass', type: String}]
}

MDS.SegurosContinente.Saude.Controls.Extenders.ValidatorBehavior.registerClass('MDS.SegurosContinente.Saude.Controls.Extenders.ValidatorBehavior', Sys.UI.Behavior);
if (typeof(Sys) !== 'undefined') 
    Sys.Application.notifyScriptLoaded();

