/* forms module javascript code
 * based on	dynlite dhtml dom api
 * @author: Peter Assenov- AIP Solutions Ltd.' 2001-2007
 * @version: 2.2.1.9/2007-01-03
 * @requires: dynlite.1.0.js,app.1.0.js
 */
/* onload initialisation */
load.push('_fldinit()');
/* forms submitting */
function doSubmit(frm,par,action,skipValidation)
{	//info(frm)
	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 j = arr.length - 1; j >= 0; j--)
		{
			if (arr[j].tagName != 'FIELDSET' && arr[j].className.indexOf('inactive') == -1 && !arr[j].getAttribute('suggest'))
				_fldevt(arr[j]);
		}
	}
}

_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') 
	    doSubmit(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 (el.getAttribute('err')) 
	    return 10;
	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 'dbg' : err=(/^\d\d\.\d\d\.\d\d\d\d$/.test(el.value))? 0:7;break;//bg date (dd.mm.yyyy)
			case 'sel' : err=(el.options[el.options.selectedIndex].value!='')? 0:8;break;//select box
		default : err=0;
		}
	}
	
	el.className = el.className.replace(/(active|error)?$/,((err)?' error':' '));
	
    return err;
}
/* end of forms module */