// Author: Harel Malka
// Function: dojo textarea with validation
//
// $Id: textarea.js,v 1.3 2011/05/23 14:55:26 jaw Exp $
//
// http://www.harelmalka.com/?p=137
// http://trac.dojotoolkit.org/ticket/6388

dojo.provide("ValidationTextarea");
dojo.require("dijit.form.SimpleTextarea");
dojo.require("dijit.form.ValidationTextBox");

dojo.declare(
    "ValidationTextarea",
    [dijit.form.ValidationTextBox,dijit.form.SimpleTextarea],
    {
        invalidMessage: "This field is required",

        postCreate: function() {
            this.inherited(arguments);
        },

        validator: function(/*anything*/value, /*dijit.form.ValidationTextBox.__Constraints*/constraints){
            // Override base behavior of using a RegExp, it is unnecessarily complex and fails on multiple lines
            // contained in a Textarea.
            return !this._isEmpty(value);
        },

        _onInput: function() {
            this.inherited(arguments);
            // Validate as you type, means any widgets which depend on this get updated without user
            // having to click elsewhere to trigger onBlur.
            this.validate();
        },

        validate: function() {
            this.inherited(arguments);
            if (arguments.length==0) this.validate(true);
            return this.isValid();
        },

        onFocus: function() {
            if (!this.isValid()) {
                this.displayMessage(this.getErrorMessage());
            }
        },

        onBlur: function() {
            this.validate(false);
        }
     }
);


