/* initialisation */
/* onscriptload */
modfrm=new Object();
modfrm.ver=2.2;
modfrm.check=function(frm){}/* quick onsubmit check */
/* module version check */
if(modfrm.ver!=ver)	error('incorect module version:'+modfrm.ver+' should be:'+ver,'forms.0.8.js','modfrm','Version');
/* forms checking */
function dynsubmit(frm)
{	fldinit(frm)
	for(var j in frm.dynstatus){frm.dynerror+=parseInt(frm.dynstatus[j]);}
	if(frm.dynerror) alert(errMess);
	else return true;
return false;	
}
/* fields initialisation */
function fldinit(frm)
{	frm.dynstatus=[], frm.dynerror=0;
	for(var i=frm.elements.length-1;i>=0;i--)
	{	var fld=frm.elements[i];
		if(fld.name) fldcheck(fld,frm);
	}
}
/* fileds checking */
function fldcheck(fld,frm)
{	var req=attr(fld,'dynreq');
	if((!req||req=='no')&&fld.value=='') err=0;
	else
	{	switch(attr(fld,'dynvld'))
		{	case 'txt' : err=(/.+[\n\r]?/.test(fld.value))? 0:1;break;//any text
			case 'chr' : err=(/^\w+$/.test(fld.value))? 0:2; break;//alpahbetical character+number
			case 'tel' : err=(/.+[\n\r]?/.test(fld.value))? 0:1;break;//phone number- to be fixed 
			case 'eml' : err=(/^\S+@\w\S+\.\w\w+$/.test(fld.value))? 0:3; break;//email (x@xx.xx)
			case 'num' : err=(/^\d+$/.test(fld.value))? 0:4; break;//number
			case 'sel' : err=(fld.options[fld.options.selectedIndex].value)? 0:5; break;//selectbox
			case 'chk' : err=(fld.checked)? 0:6;break;//checkbox
			case 'eur' : err=(/^\d[\d\.]*(,\d\d?)?$/.test(fld.value) && !/\d\d\d\d/.test(fld.value) && !/\.\d{1,2}(\.|\,|$)/.test(fld.value))? 0:7;  break;//euro
			case 'bgn' : err=(/^\d+(.\d\d?)?$/.test(fld.value))? 0:7;  break;//bgn
			case 'dat' : err=(/^(\d{1,2})\.(\d{1,2})\.(\d{2}|\d{4})$/.test(fld.value))? 0:8;break;//dd.mm.yyyy - d.m.yy;
			case 'cod' : err=(/^[0-9a-zA-Z]{16}$/.test(fld.value))? 0:9; break;//italian fiscal code
		default : err=0;
		}
	}
	if(frm) frm.dynstatus[fld.name]=err;
	fld.className=fld.className.replace(/(active|error)?$/,((err)?' error':''));
}
