var
error_message = '',
validators = {
 'password' : /^[0-9a-zA-Z\.\-\_]*$/,
 'name'     : /^[a-zA-Z0-9]*$/,
 'full_name': /^[\sa-zA-Z0-9]*$/,
 'address'  : /^[\s0-9a-zA-Z\.\-\\\/]*$/,
 'text'     : /^.*$/,
 'email'    : /^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/,
 'phone'    : /^[\d\.\s\-]+$/,
 'integer'  : /^[\+\-]?\d*$/,
 'float'    : /^[\+\-]?\d*\.?\d*$/,
 'date'     : /^(\d{1,2})\/(\d{1,2})\/(\d{2,4})$/,
 'time'     : /^(\d{1,2})\:(\d{1,2})\:(\d{1,2})$/
// 'url'      : /^[\w\/\:-\.]+$/
}

function valid(form_field, type, display_name, allow_empty){
	if (type == 'radio' && !allow_empty){
		var valid = false;
		for (var i=0; i<form_field.length; i++){
			if (form_field[i].checked)
				valid = true;
		}
		if (!valid){
			error_message = error_message + display_name + ' is a required field!' + '\n';
		}
		return valid;
/* form_field.value == display_name - this is for the cases where the display name replaces the empty value */
	} else if (form_field.value.length == 0 || form_field.value == display_name){
    if (!allow_empty){
      if (error_message == '') form_field.focus();
      error_message = error_message + display_name + ' is a required field!' + '\n';
      return false;
    }
  } else if(type=='date'){
			var valid = true;
			if (!validators[type].test(form_field.value)) valid = false;
			if (RegExp.$1 > 12 || RegExp.$2 > 31) valid = false; // check allowed ranges	
			var dt_test = new Date(RegExp.$3, Number(RegExp.$1-1), RegExp.$2); // check number of days in month
			if (dt_test.getMonth() != Number(RegExp.$1-1)) valid = false;
			if(!valid){
				if (error_message == '') form_field.focus(); 
				error_message = error_message + '"' + form_field.value + '" is not valid value for ' + display_name + '!' + '\n';
			}
			return valid;
	} else if(type=='time'){
			var valid = true;
			// check format
			if (!validators[type].test(form_field.value)) valid = false;
			// check allowed ranges	
			if (RegExp.$1 > 23 || RegExp.$2 > 59 || RegExp.$3 > 59) valid = false;
			if(!valid){
				if (error_message == '') form_field.focus(); 
				error_message = error_message + '"' + form_field.value + '" is not valid value for ' + display_name + '!' + '\n';
			}
			return valid;
	} else if(type=='text' || type=='password' || type=='name' || type=='full_name' || type=='address' || type=='phone' ){
		return true;
	} else 
	if (!validators[type].test(form_field.value)){
		if (error_message == '') form_field.focus(); 
		error_message = error_message + '"' + form_field.value + '" is not valid value for ' + display_name + '!' + '\n';
		return false;
  }
  return true;
}

function valid_password(form_field, retype_field, display_name, allow_empty){
  if (form_field.value.length == 0){
    if (!allow_empty){
      if (error_message == '') form_field.focus();
      error_message = error_message + display_name + ' is a required field!' + '\n';
      return false;
    }
  } else {
    if (!validators['password'].test(form_field.value)){
      if (error_message == '') form_field.focus();
      error_message = error_message + 'Allowed characters for ' + display_name + ' are (0-9, a-z, A-Z, ".", "-" and "_")!' + '\n';
      return false;
    }
    else if (form_field.value != retype_field.value){
      if (error_message == '') form_field.focus();
      error_message = error_message + 'The ' + display_name + ' was not retyped correctly!' + '\n';
      retype_field.value = '';
      return false;
    }
  }
  return true;
}

function add_error(error){
	error_message = error_message + error + '\n';
}
			
function display_errors(){
  if (error_message != ''){
    alert(error_message);
    error_message = '';
  }
}