/**
* @requires validate.strategies.js
*/

/** @class Subclass of Strategies implements additional postprocessing strategies 
*   Add new postprocessing Strategies if needed. 
*   eg. {"[key-attribute-value]" : ("[Strategy Class Name]", "[key-attribute-doSomething-value]", ("[Binding form element_1]", "[Binding form element_2]"))}
*/
ExtendedStrategies = Class(
/** @lends Extended Strategies */
{		
		/** @constructs 
		*   @augments Strategies 
		*/
		initialize: function()
		{		
			
			this.postprocess = 
			{
				"process-checkbox" : new Array("PostprocessCheckboxRadioAndSelect", "process-checkbox-action", new Array("agb")),
				"process-checkbox" : new Array("PostprocessCheckboxRadioAndSelect", "process-checkbox-action", new Array("age")),
				"process-select" : new Array("PostprocessCheckboxRadioAndSelect", "process-select-action", new Array("country"))
			}
			
		}
})

ExtendedStrategies = Strategies.extend(new ExtendedStrategies()); //Subclass of Strategies

/**
* Strategies for postprocessing of form fields;
* Add additional Strategies here;
*/

/** 
*@class Postprocessing Strategy for Checkbox, Radiobutton and Select for Internet Explorer and Netscape 
*/
PostprocessCheckboxRadioAndSelect = Class(
{
	/**
	* @param {Object} node 
	* @param {String} attribute
	* @param {String} strategy
	* @param {String} id
	*
	* @returns {Bool} Returns true;
	**/
	postprocess: function(node, attribute, strategy, id)
	{
		if( navigator.appName == "Microsoft Internet Explorer" && (document.getElementById(id).getAttribute("type") == 'checkbox' || document.getElementById(id).getAttribute("type") == 'radio') ) 
		{
			return true;
		}
		else if ( navigator.appName == "Netscape" && document.getElementById(id).nodeName == 'SELECT' )
		{
			return true;
		}
		node.setAttribute(attribute, strategy);
		return true;
	}
	
})
