// ======================================================================================================================================== value
function	___trim	(s)
{
	return s.replace(/^\s+|\s+$/g, '');
}

// -------------------------------------------------------------------------------------------------------------------- field value
function	field_value	(name)
{
	var	list	=document.getElementsByName	(name);
	
	if (list	!=null)
	{
		var	p	=0;
		
		while (p	<list.length)
		{
			var	o	=list[p];
			
			switch	(o.nodeName)
			{
				case	'SELECT':
					return	(o.selectedIndex	==-1)
						? ''
						: o.options[o.selectedIndex].value;
					
					break;
					
				case	'TEXTAREA':
				case	'INPUT':
					return	o.value;
					
					break;
			}
			
			p	++;
		}
	}

	return	null;
}

// -------------------------------------------------------------------------------------------------------------------- field required
function	field_required	(name)
{
	return	___trim	(field_value	(name)	)	!='';
}

// ======================================================================================================================================== checkers

// -------------------------------------------------------------------------------------------------------------------- field date
function	field_date	(name)
{
	return	true;
}

// -------------------------------------------------------------------------------------------------------------------- field datetime
function	field_datetime	(name)
{
	return	true;
}

//-------------------------------------------------------------------------------------------------------------------- field email
function	field_email	(name)
{
        var	emailRegExp	= /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/;
        var	value		=field_value	(name);
        
        return	(value	=='')
        	||
        	(emailRegExp.test	(value)	)
        ;
}

//-------------------------------------------------------------------------------------------------------------------- field email
function	field_http	(name)
{
	var	httpRegExp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
        var	value		=field_value	(name);
			
        return	(value	=='')
        	||
        	(httpRegExp.test	(value)	)
        ;
}

// -------------------------------------------------------------------------------------------------------------------- field float
function	field_float	(name)
{
	var	a	=field_value	(name);

//	return	((string)	(float)	a)==a;
	return	true;
}

// -------------------------------------------------------------------------------------------------------------------- field integer
function	field_integer	(name)
{
	var	a	=field_value	(name);

	return	(a	=='')	|| (!isNaN	(a)	);
//	return	true;
}

// -------------------------------------------------------------------------------------------------------------------- field time
function	field_time	(name)
{
	return	true;
}

// -------------------------------------------------------------------------------------------------------------------- field htmltext
function	field_htmltext	(name)
{
	return	true;
}

// -------------------------------------------------------------------------------------------------------------------- input index
function	input_index	(obj)
{
	var	form	=obj.form;
	var	c	=form.length;
	
    	for (	var	i	=0;
    			i	<c;
    			i	++
    	)
    	{
    		if (form[i]	==obj)
    		{
    			return	i;
   		}
   	}
    
    	return	null;
}

// -------------------------------------------------------------------------------------------------------------------- next_input
function	next_input	(obj)
{
	var	idx	=input_index	(obj);
	var	form	=obj.form;
	var	c	=form.length;

    	for (	var	i	=idx	+1;
    			i	!=idx;
    			i	=(i	+1)	%c
    	)
    	{
    		if (form[i].type	!='hidden')
    		{
    			return	form[i];
   		}
   	}
    
    	return	obj;
}


// -------------------------------------------------------------------------------------------------------------------- enterer
function	enterer	(obj, e)
{
	var	code	=0;
	
	if (!e)
	{
		var	e	=window.event;
	}
	
	if (e.keyCode)
	{
		code	=e.keyCode;
	}
	else
	if (e.which)
	{
		code	=e.which;
	}
	
	if (e.keyCode	==13)
	{
		var	o	=next_input	(obj);

		if (o.select)
		{
			o.select	();
		}
		
		o.focus	();
		
		return	false;
	}
}

//-------------------------------------------------------------------------------------------------------------------- textarea_counter
function	textarea_counter	(obj, max_length)
{
	var	name	=obj.name	+'___counter';
	var	len	=obj.value.length;

	if (len	>=max_length)
	{
		obj.value	=obj.value.substring	(0, max_length);
	}
	else
	{
		var	list	=document.getElementsByName	(name);

		list[0].value	=max_length	-len;
	}
}

