/* forms module javascript code
 * based on	dynlite dhtml dom api
 * @author: Peter Assenov- AIP Solutions Ltd.' 2001-2006
 * @version: 2.2.1.7/2006-03-22
 * @requires: dynlite.0.9.js,web.0.9.js 
 */
 
/* onload initialisation */
load.push('_fldinit()');
/* forms submitting */
function submit(frm,par,action,skipValidation)
{	this.frm=(frm)?((typeof(frm)=='string')? obj(frm):frm):document.forms[0];
//	info(this.frm.action+'->'+action);
	this.msg=[this.frm.getAttribute('onerror')];
	this.err=0;
	if(!skipValidation)
	{	for(var i=this.frm.elements.length-1;i>=0;i--)
		{	this.el=this.frm.elements[i];
			if(_fldcheck(this.el))
			{	this.err++;
				if(this.el.getAttribute('onerror')) this.msg.push(this.el.getAttribute('onerror'));
			}
		}	
	}
	if(this.err) (document.getElementById('error'))? obj('error').innerHTML=this.msg.join("<br>") : alert(this.msg.join("\n"));
	else
	{ 	if(action) this.frm.action=action;
		if(par) (this.frm.action.indexOf('?')!=-1)? this.frm.action+='&'+par:this.frm.action+='?'+par;
		this.frm.submit();
	}
}
function reset(frm)
{	this.frm=(frm)?((typeof(frm)=='string')? obj(frm):frm):document.forms[0];
	this.frm.reset();
	for(i=this.frm.editors.length-1;i>=0;i--)
		this.frm.editors[i].updateEditor();
}	
/* fields processing */
_fldinit=function()
{	var frmArr=document.getElementsByTagName('FORM');
	for(var i=frmArr.length-1;i>=0;i--)
	{	var arr=frmArr[i].elements;
		for(var i=arr.length-1;i>=0;i--)
			if(arr[i].tagName!='FIELDSET'&&arr[i].className.indexOf('inactive')==-1) _fldevt(arr[i]);
	}
}
_fldevt=function(fld)
{	evt(fld,'focus',_fldevoke);
	evt(fld,'blur',_fldevoke);
	evt(fld,'keyup',_fldevoke);
	evt(fld,'change',_fldevoke);
}
_fldevoke=function(e)
{	var el=(ns6)?e.target:event.srcElement;
	var evt=(ns6)?e.type:event.type;
	if(evt=='keyup'&&e.keyCode==13&&el.form.getAttribute('keysubmit')=='1'){submit(el.form)}
	if(evt=='focus')	el.className=el.className.replace(/(active|error)?$/,' active');
	else _fldcheck(el);
}
_fldcheck=function(el)
{	var req=el.getAttribute('req');
	var err=0;
	if((!req||req=='no')&&el.value=='') err=0;
	else
	{	switch(el.getAttribute('vld'))
		{	case 'txt' : err=(/.+[\n\r]?/.test(el.value))? 0:1;break;//any text
			case 'eml' : err=(/^\S+@\w\S+\.\w\w+$/.test(el.value))? 0:2; break;//email (x@xx.xx)
			case 'num' : err=(/^\d+$/.test(el.value))? 0:3; break;//number
			case 'chk' : err=(el.checked)? 0:4;break;//checkbox
			case 'dus' : err=(/^\d\d\/\d\d\/\d\d$/.test(el.value))? 0:5;break;//us date (mm/dd/yy)
			case 'dit' : err=(/^\d\d\/\d\d\/\d\d\d\d$/.test(el.value))? 0:6;break;//us date (mm/dd/yyyy)
			case 'sel' : err=(el.options[el.options.selectedIndex].value!='')? 0:7;break;//select box	
		default : err=0;
		}
	}
	el.className=el.className.replace(/(active|error)?$/,((err)?' error':' '));
return err;
}
/* end of forms module */

