
	Event.observe(window, 'load', function() {
	
		validation_init ();
	
	});
	
	var validators_list = new Array ();
	
	
	function validation_init ()
	{
		
		var validators = $$('*[validation_for]');
		validators.each(function(s) {

			validator_obj = s;
			try { console.log (validator_obj);	} catch(exc) {}

			var validator = new Object();
			validators_list[validators_list.length] = validator;
			
			validator.obj 		= validator_obj;
			validator.input_id	= validator_obj.getAttribute ('validation_for');
			validator.input   	= (validator.input_id) ? $(validator.input_id) : null;
			validator.required	= validator_obj.getAttribute ('required');
			validator.pattern	= validator_obj.getAttribute ('pattern');
			validator.minlen	= validator_obj.getAttribute ('minlen');
			validator.maxlen	= validator_obj.getAttribute ('maxlen');
			validator.confirm	= validator_obj.getAttribute ('confirm');
			
			try {	console.log (validator.input);	} catch(exc) {}
			
			if (validator.input)
			{
				if (!validator.input.validators)
				{
					validator.input.validators = new Array ();
					
					Event.observe (validator.input, 'blur', 
					function(event) {
						var input = event.element();
						validate_input (input);
						
					});
					
				}
				validator.input.validators [validator.input.validators.length] = validator;
				try {	console.log (validator.input.validators.length);	} catch(exc) {}

			}


		});
	}
	

	function validate_input (input)
	{
		value = input.value;
		
		try {	console.log ('start:', value, '[',value.length,']');}	catch (exc) {}
		
		if (input.validators)
		{

			var validator_active = null;
			for ( var validator_index=0 ; validator_index < input.validators.length; validator_index++ )
			{
				var validator = input.validators[validator_index];
				if (validator.required)
				{
					if (!value || value.length == 0)
					{
						validator_active = validator_index;
						break;
					}
				}
				else if (validator.pattern)
				{
					if (!value)
						value = '';
					new_value = value.replace (new RegExp (validator.pattern, 'gi'), '');
					if (new_value.length > 0)
					{
						validator_active = validator_index;

						break;
					}
					
				}
				else if (validator.minlen)
				{
					if (!value)
						value = '';
					if (value.length < validator.minlen)
					{
						validator_active = validator_index;
						break;
					}
				}
				else if (validator.maxlen)
				{
					if (!value)
						value = '';
					if (value.length > validator.maxlen)
					{
						validator_active = validator_index;
						break;
					}
				}
				else if (validator.confirm)
				{
					if (!value)
						value = '';

		try {	console.log ('confirm:', validator.confirm);}	catch (exc) {}

					if ($(validator.confirm))
					{
						var confirm_value = $(validator.confirm).value;
						if (confirm_value != value)
						{
							validator_active = validator_index;
							break;
						}
					}
				}
				
			}
			
			try {	console.log ('input.validator_active', 	input.validator_active, input.validators[input.validator_active].obj); 	} catch(exc) {}
			try {	console.log ('validator_active', 		validator_active, 		input.validators[validator_active].obj);		} catch(exc) {}

		
			if (input.validator_active != validator_active)
			{
				if (input.validator_active != null)
					dom_display (input.validators[input.validator_active].obj, false);
				input.validator_active = validator_active;
				if (input.validator_active != null)
					dom_display (input.validators[input.validator_active].obj, true);
			}
			return input.validator_active;
		}
		return null;
	}


	
	function register_submit()
	{
		var is_ok = true;
		for (var index = 0 ; index < validators_list.length; index++)
		{
			validator = validators_list[index];
				
			var result = validate_input (validator.input);
			
			if (is_ok)
				is_ok = (result == null);
		}
	
		if (is_ok)
			$('login_form').submit();
	}

	
	
	
	
	
	
