var FDChecker={
	/////////add form with array of fields to checking
	addField:function(formName,field,filter,optional){
		if(!optional)
			optional=false;
		if(!this.controlArr)
			this.controlArr=[];
		if(!this.controlArr[formName])
			this.controlArr[formName]=[];
		this.controlArr[formName].push({field:field,filter:filter,optional:optional});
	},
	
	/////////check array of fields
	check:function(formName){
		if(!this.err) this.err=[];
		this.err[formName]=[];
				
		for (var i=0;i < this.controlArr[formName].length;i++){
			var field=eval('document.'+formName+'.'+this.controlArr[formName][i].field);
			if(field==null || field=='undefined' || field.disabled)
				continue;
			if(String(field.value)=='' && this.controlArr[formName][i].optional)
				continue;
			if(!(this._trim(String(field.value))).match(this.controlArr[formName][i].filter) || (field.type=='checkbox' && !field.checked)){
				this.err[formName].push(this.controlArr[formName][i].field);
			}
		}
		if(this.err[formName].length){
			this.showErrors(formName,this.err[formName],this.controlArr[formName]);
			return false;
		}
	},
	
	///////trim spaces from string
	_trim:function(str){
		return (str.replace(/^\s+/,'')).replace(/\s+$/,'');
	},
	
	//////method wich called if filled data is incorrect (must be redefined)
	showErrors:function(formName,errFields,allFields){
		alert('Some fields are filled incorrectly');
	}
}

FDChecker.filters={

	NOT_EMPTY	:	/^[\d\D]+$/i,
	DIGITS	:	/^\d+$/i,
	NO_SPEC_CHARS	:	/^[a-zą-’]+$/i,
	NUMBER	:	/^\d+([\.]{1}\d+)*$/i,
	PHONE	:	/^\+?([\d\s\(\)]*)$/i,
	COLOR_CODE	:	/^(\d|[a-f]){6}$/i,
	E_MAIL	:	/^[0-9a-z_\-\.]+@[0-9a-z_\-]+(\.[0-9a-z\-]+)*(\.[a-z]{2,4})$/i,
	URL	:	/^http=>\/\/(www\.)?[0-9a-z\-]+(\.[0-9a-z\-]+)*(\.[a-z]{2,4})/i,
	DATE	:	/\d{2}\.\d{2}\.\d{4}/i	
}