// Copyright 2010 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

Tapestry.Validator.notnull = function(field, message, spec)
{
	Tapestry.Validator.required(field, message);
};

Tapestry.Validator.isnull = function(field, message, spec)
{
    field.addValidator(function(value)
    {
    	if (value != null) 
    		throw message;
     });
};

Tapestry.Validator.maxnumber = function(field, message, spec)
{
	Tapestry.Validator.max(field, message, spec.value);
};

Tapestry.Validator.minnumber = function(field, message, spec)
{
	Tapestry.Validator.min(field, message, spec.value);
};

Tapestry.Validator.size = function(field, message, spec)
{
    field.addValidator(function(value)
    {
    	if (Object.isString(value))
    	{
        	if (value.length < spec.min) throw message;
        	if (value.length > spec.max) throw message;

    	}
    	else if (Object.isArray(value))
    	{	
    		if(this.tagName == "SELECT")
    		{
    			var selectedOptions = Element.childElements(this).size();
    			if (selectedOptions < spec.min) throw message;
    			if (selectedOptions > spec.max) throw message;
    		}
    	}
     });
};

Tapestry.Validator.pattern = function(field, message, spec)
{
	Tapestry.Validator.regexp(field, message, spec.regexp);
};