function CheckUsername ( username )
{
  var espressione = /^[a-zA-Z0-9_]{3,13}$/;
  return espressione.test(username);
}

function CheckPassword ( password )
{
  var espressione = /^[a-zA-Z0-9_]{3,20}$/;
  return espressione.test(password);
}


function CheckMail ( mail )
{
  var espressione = /^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/;
  return espressione.test(mail);
}


function CheckRegisterData ( )
{
  var form        = document.mmgm_register_frm;

  var username    = form.mmgm_register_username.value;
  var password    = form.mmgm_register_password.value;
  var password2   = form.mmgm_register_password2.value;
  var mail        = form.mmgm_register_mail.value;
  var mail2       = form.mmgm_register_mail2.value;
  var country     = form.mmgm_register_countries.value;
  var informative = form.mmgm_register_informative.checked;

  document.getElementById ( "error_username" ).innerHTML    = "";
  document.getElementById ( "error_password" ).innerHTML    = "";
  document.getElementById ( "error_password2" ).innerHTML   = "";
  document.getElementById ( "error_mail" ).innerHTML        = "";
  document.getElementById ( "error_mail2" ).innerHTML       = "";
  document.getElementById ( "error_country" ).innerHTML     = "";
  document.getElementById ( "error_informative" ).innerHTML = "";

  if ( !CheckUsername ( username ) ) {
    var error_msg_tag = document.getElementById ( "error_username" );
    error_msg_tag.innerHTML = "3 to 13 alphanumerics and _ characters allowed.";
    return false;
  } else if ( !CheckPassword ( password ) ) {
    var error_msg_tag = document.getElementById ( "error_password" );
    error_msg_tag.innerHTML = "3 to 20 alphanumerics and _ characters allowed.";
    return false;
  } else if ( password != password2 ) {
    var error_msg_tag = document.getElementById ( "error_password2" );
    error_msg_tag.innerHTML = "Re-entered password doesn't match.";
    return false;
  } else if ( country == "" ) {
    var error_msg_tag = document.getElementById ( "error_country" );
    error_msg_tag.innerHTML = "Select a valid country.";
    return false;
  } else if ( !CheckMail ( mail ) ) {
    var error_msg_tag = document.getElementById ( "error_mail" );
    error_msg_tag.innerHTML = "Wrong email format.";
    return false;
  } else if ( mail != mail2 ) {
    var error_msg_tag = document.getElementById ( "error_mail2" );
    error_msg_tag.innerHTML = "Re-typed email doesn't match.";
    return false;
  } else if ( !informative ) {
    var error_msg_tag = document.getElementById ( "error_informative" );
    error_msg_tag.innerHTML = "You must accept the Terms of Service.";
    return false;
  }
  return true;

}


function CheckEditData ( )
{
  var form        = document.mmgm_edit_frm;

  var curr_password = form.mmgm_edit_curr_password.value;
  var new_password  = form.mmgm_edit_new_password.value;
  var new_password2 = form.mmgm_edit_new_password2.value;
  var country       = form.mmgm_edit_countries.value;

  document.getElementById ( "error_curr_password" ).innerHTML = "";
  document.getElementById ( "error_new_password" ).innerHTML  = "";
  document.getElementById ( "error_new_password2" ).innerHTML = "";
  document.getElementById ( "error_country" ).innerHTML       = "";

  if ( curr_password.length > 0 ) {
    if ( !CheckPassword ( curr_password ) ) {
      var error_msg_tag = document.getElementById ( "error_curr_password" );
      error_msg_tag.innerHTML = "3 to 13 alphanumerics and _ characters allowed.";
      return false;
    } else if ( !CheckPassword ( new_password ) ) {
      var error_msg_tag = document.getElementById ( "error_new_password" );
      error_msg_tag.innerHTML = "3 to 20 alphanumerics and _ characters allowed.";
      return false;
    } else if ( new_password != new_password2 ) {
      var error_msg_tag = document.getElementById ( "error_new_password2" );
      error_msg_tag.innerHTML = "Re-entered new password doesn't match.";
      return false;
    }
  }
  if ( country == "" ) {
    var error_msg_tag = document.getElementById ( "error_country" );
    error_msg_tag.innerHTML = "Select a valid country.";
    return false;
  }
  return true;

}


function CheckLoginData ( )
{
  var form        = document.mmgm_login_frm;

  var username  = form.mmgm_username.value;
  var password  = form.mmgm_password.value;


  if ( !CheckUsername ( username ) ) {
    var error_msg_tag = document.getElementById ( "error_login" );
    error_msg_tag.innerHTML = "<font color='#FF0000'>Wrong username format</font>";
    return false;
  } else if ( !CheckPassword ( password ) ) {
    var error_msg_tag = document.getElementById ( "error_login" );
    error_msg_tag.innerHTML = "<font color='#FF0000'>Wrong password format</font>";
    return false;
  }
  return true;

}


function CheckForgotData ( )
{
  var form  = document.mmgm_forgot_frm;
  var mail  = form.mmgm_forgot_mail.value;


  if ( !CheckMail ( mail ) ) {
    var error_msg_tag = document.getElementById ( "error_mail" );
    error_msg_tag.innerHTML = "<font color='#FF0000'>Wrong mail format</font>";
    return false;
  }
  return true;

}


function CheckReviewData ( )
{
  var form  = document.mmgm_review_frm;
  var text  = form.mmgm_review_text.value;


  if ( text == "" ) {
    var review_error = document.getElementById ( "review_error" );
    review_error.innerHTML = "<font color='#FF0000'>You must insert text in the review</font>";
    return false;
  }
  return true;

}
