	function init_forms() {
		var forms = document.getElementsByTagName('form');
		for (var j=0;j<forms.length;j++) {
			rig_form(forms[j]);
		}
	}
	function rig_form(form)
	{
		form.valid = false;
		form.buttons = new Array();
		form.fields = new Array();
		form.validate = function() {
			this.valid = true;
			for(var j=0;j<this.fields.length;j++)
			{
				this.valid &= this.fields[j].valid;
			}
			for(var j=0;j<this.buttons.length;j++)
			{
				form.buttons[j].disabled=!this.valid;
			}
		}
		var inputs =  document.getElementsByTagName('input');
		for (var j=0;j<inputs.length;j++)
		{
			if(inputs[j].type=="text") {
				
				var input = inputs[j];
				if( has_class(input, "required") )
				{
					input.onblur=function() { validate(this) };
					form.fields.push(input);
					if(input.value.length > 0)
					{
						validate(input);						
					}					
				}
				input.style.border="1px solid silver";
				input.style.margin="1px 0px 3px 0px";
			}
			else if( inputs[j].type=="checkbox" ) {
				var input = inputs[j];
				if(input.className=="required") {
					input.onchange=function() { validate_checkbox(this) };
					form.fields.push(input);
					if(input.checked) {
						validate_checkbox(input);
					}
				}
			}
			if(inputs[j].type=="button")
			{
				form.buttons.push(inputs[j]);
			}
		}
		form.validate();
	}
	
	function validate_checkbox(field) 
	{
		if(field.checked) {
			field.valid=true;
			field.className="checkbox-valid";
		}
		else {
			field.valid=false;
			field.className="checkbox-invalid";			
		}
		field.form.validate();
	}
	
	function validate(field)
	{		
		var valid = true;
		field.value = field.value.replace(/^\s+|\s+$/g, '');
		
		if( has_class(field, "required") && !field.value.length )
		{
			valid = false;
		}
		if( has_class(field, "knumber") && !field.value.match(/^[0-9]{7}$/) ) 
		{
			valid = false;
		}
		if( has_class(field, "tnumber") && !field.value.match(/^[0-9]{8}$/) ) 
		{
			valid = false;
		}
		if( has_class(field, "number") && !field.value.match(/^[0-9]+$/) ) 
		{
			valid = false;
		} 
		if( has_class(field, "fnumber") && !field.value.match(/[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{2,4}$/) ) 
		{
			valid = false;
		}
		if( has_class(field, "bnumber") && !field.value.match(/[0-9]{2}\.[0-9]{2}\.[0-9]{2}$/) ) 
		{
			valid = false;
		}
		if( has_class(field, "pnumber") && !field.value.match(/[0-9]{4}$/) ) 
		{
			valid = false;
		} 
		
		if( has_class(field, "email") && !field.value.match(/.+@.+\..+/) )
		{
			valid = false;
		}
				
		field.valid=valid;
		remove_class( field, (valid ? "invalid" : "valid" ) );
		add_class( field, (valid ? "valid" : "invalid") );
		field.form.validate();				
	}
	
	function has_class(elm, className) 
	{
		if ( elm.className ) 
		{
			var names = elm.className.split(' ');
			className = className.toUpperCase();
			for ( var i = 0; i < names.length; i++ ) 
			{
				if ( names[i].toUpperCase() == className ) 
				{
					return true;
				}
			}
		}
		return false;
	}
	function remove_class(elm, className)
	{
		if(!has_class(elm, className))
		{
			return;
		}
		newClasses = '';
		var names = elm.className.split(' ');		
		
		for ( var i = 0; i < names.length; i++ ) 
		{
			if ( names[i].toUpperCase() != className.toUpperCase() ) 
			{
				newClasses = newClasses + ' ' + names[i];
			}
		}
		elm.className = newClasses;		
	}
	function add_class(elm, className)
	{		
		if(has_class(elm, className))
		{
			return;
		}		
		
		if(elm.className) 
		{
			elm.className = elm.className + ' ' + className;			
		}
		
		else
		{
			elm.className = className;
		}
	}

