var reg_exp_keys = {
	'alpha'   : /^[a-zA-Z\.\-]*$/,
	'alphanum': /^\w+$/,
	'unsigned': /^\d+$/,
	'integer' : /^[\+\-]?\d*$/,
	'real'    : /^[\+\-]?\d*\.?\d*$/,
	'email'   : /\b[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}\b/i,
	'phone'   : /^[\d\.\s\-]+$/,
	'date'    : function (s_date) {
		// check format
		if (!re_dt.test(s_date))
			return false;
		// check allowed ranges	
		if (RegExp.$1 > 31 || RegExp.$2 > 12)
			return false;
		// check number of day in month
		var dt_test = new Date(RegExp.$3, Number(RegExp.$2-1), RegExp.$1);
		if (dt_test.getMonth() != Number(RegExp.$2-1))
			return false;
		return true;
	},
	'time'    : function validate_time(s_time) {
		// check format
		if (!re_tm.test(s_time))
			return false;
		// check allowed ranges	
		if (RegExp.$1 > 23 || RegExp.$2 > 59 || RegExp.$3 > 59)
			return false;
		return true;
	}
};

function formError(str)
{
	if (!str) { str = "Fields in red are required" };
	var d = document.getElementById('error');
	d.style.display = 'inline';
	d.innerHTML = str;
}

var isOpera = (/opera/i.test(navigator.userAgent)) ? 1 : 0;

function validateForm(f)
{
	var x = f.elements;
	if (x)
	{
		var iErrors = 0;
		for (var i=0;i<x.length;i++)
		{
			if (x[i].getAttribute('required') && !x[i].value)
			{
				iErrors += 1;
				//addClassName(x[i], 'alert');
				x[i].className = (isOpera === true) ? 'alertOpera' : 'alert';
			} else if (/alert/i.test(x[i].className)) {
				x[i].className = '';
			}
		}		
	} else {
		//alert('old browser');
	}
	if (iErrors > 0) formError();
	return (iErrors === 0) ? true : false;
};

function raiseError(el)
{
	if (el)
		el.className = (isOpera === true) ? 'alertOpera' : 'alert';
}
