/** 
* Strategies for Validate 
* Implement additional Strategies, must implement isValid (see below)
* @requires class.js
* @requires validate.js
*/

/** @Class Checks if value of input element with type=text is empty */
Strategies = Class(
/** @lends Strategies */
{
	initialize: function()
	{
		this.validate =
		{
			"input-text-required" : new Array("ValidateInputText", "input-text-error"),
			"textarea-text-required" : new Array("ValidateInputText", "textarea-text-error"),
			"input-email-required" : new Array("ValidateInputEmail", "input-email-error"),
			"input-checked-required" : new Array("ValidateInputChecked", "input-checked-error"),
			"select-required" : new Array("ValidateSelect", "select-error")
		}		
	}
	
})

/** @Class Checks if value of input element with type=text is empty */
ValidateInputText = Class(
/** @lends ValidateInputText */
{ 
	/**  
	* @param input {Objext} HTML Element
	* @returns {Bool} True input.value is not empty
	*/
	isValid: function( input )
	{
		return (input.value == '') ? false : true;
	}

})

/** @Class Checks if value of input element with type=text is a valid email address */
ValidateInputEmail = Class(
/** @lends ValidateInputEmail */
{
	initialize: function ()
	{
		this.emailFilter=/^.+@.+\..{2,4}$/;
	},
	
	/**  
	* @param input {Objext} HTML Element
	* @returns {Bool} True input.value is a valid email address
	*/
	isValid: function ( input )
	{
		return ( !this.emailFilter.test( input.value ) ) ? false : true;
	}
	
})
	
/** @Class Checks if input element with type=checkbox is checked */
ValidateInputChecked = Class(
/** @lends ValidateInputChecked */
{
	isValid: function( input)
	{
		return input.checked;
	}
})

/** @Class Assumes that the first option in the select element is the default option and returns false if the default option is selected */
ValidateSelect = Class(
/** @lends ValidateSelect */
{
	/**  
	* @param input {Objext} HTML Element
	* @returns {Bool} True if selected option is the default-option
	*/
	isValid: function( select )
	{
		return (select.options[0].selected == true) ? false : true;
	}
})
