var
error_message = '',
validators = {
 'password' : /^[0-9a-zA-Z\.\-\_]*$/,
 'name'     : /^[a-zA-Z]*$/,
 'full_name': /^[\sa-zA-Z]*$/,
 'address'  : /^[\s0-9a-zA-Z\.\-\\\/]*$/,
 'text'     : /^.*$/,
 'email'    : /^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/,
 'phone'    : /^[\d\.\s\-]+$/,
 'integer'  : /^[\+\-]?\d*$/,
 'integer2'  : /^[\+]?\d*$/,
 'float'    : /^[\+\-]?\d*\.?\d*$/
}
  
function valid(form_field, type, display_name, allow_empty){
  /* form_field.value == display_name - this is for the cases where the display name replaces the empty value */
  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 (!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_feature(form_field, type, display_name, allow_empty, not_null){

  if (form_field.value.length == 0 || form_field.value == display_name || form_field.value == 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[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 display_errors(){
  if (error_message != ''){
    alert(error_message);
    error_message = '';
  }
}