//z retezce (mystring) odstrani definovane znaky (pole validchars)
function trimChars(mystring, validchars)
{
  var i;
  var returnstring = "";

  for (i = 0; i < mystring.length; i++)
  {
    var c = mystring.charAt(i);
    if (validchars.indexOf(c) == -1) returnstring += c;
  }
  return returnstring;
}

//overi platnost cisla (nvalue) a minimalni (mindigits) s maximalnim (maxdigits) poctem cislic
function validate_numbers(nvalue, mindigits, maxdigits, fname)
{
  var mySwitch=1
  var strNumber = nvalue.value
  var minDigits = mindigits;
  var maxDigits = maxdigits;

  strNumber = trimChars(strNumber," ");
  //return strPhone;
  if (isNaN(strNumber)) mySwitch = 0;
  if ((strNumber.length < minDigits || strNumber.length > maxDigits) && strNumber.length != 0) mySwitch = 0;
  
  if (mySwitch == 0)
  {
    if (minDigits == maxDigits)
    {
    return ("\"" + fname + "\": nesprávný formát, vyžaduje přesně " + minDigits + " číslic\n");
    }
    else
    {
    return ("\"" + fname + "\": nesprávný formát, vyžaduje min. " + minDigits + " a max. " + maxDigits + " číslic\n");
    }
  }
  {
    return ("");
  }
}

//overi platnost cisla (nvalue) a minimalni (minval) s maximalni (maxval) hodnotou
function validate_numvalue(nvalue, minval, maxval, fname)
{
  var mySwitch=1
  var strNumber = nvalue.value
  var minVal = minval;
  var maxVal = maxval;

  strNumber = trimChars(strNumber," ");
  //return strPhone;
  if (isNaN(strNumber)) mySwitch = 0;
  var numVal = parseInt(strNumber);
  if ((numVal < minVal) || (numVal > maxVal)) mySwitch = 0;
  
  if (mySwitch == 0)
  {
     return ("\"" + fname + "\": nesprávný formát, vyžaduje číslo od " + minVal + " do " + maxVal + "\n");
  }
  else
  {
    return ("");
  }
}

//overi platnost telefonniho cisla (phone)
function validate_phone(phone, fname)
{
  var phoneNumberDelimiters = "()- ";
  var validPhoneChars = phoneNumberDelimiters + "+";
  var minDigits = 9;
  var mySwitch=1
  var strPhone = phone.value

  strPhone = trimChars(strPhone," ");
  //return strPhone;
  if (strPhone.indexOf("+") > 0) mySwitch = 0;

  strPhone = trimChars(strPhone,validPhoneChars);
  //return strPhone;
  if (isNaN(strPhone)) mySwitch = 0;
  if (strPhone.length > 0 && strPhone.length < minDigits) mySwitch = 0;
  
  if (mySwitch == 0)
  {
    return ("\"" + fname + "\": nesprávný formát, vyžaduje min. " + minDigits + " číslic\n");
  }
  {
    return ("");
  }
}

//overi platnost emailu (email)
function validate_email(email, fname)
{
  re = /^[^.]+(\.[^.]+)*@([^.]+[.])+[a-z]{2,4}$/;
  if (email.value.search(re) != 0 && email.value!=0)
  {
    return ("\"" + fname + "\": nesprávný formát\n");
  }
  else
  {
    return ("");
  }
}

//overi, zda uzivatel zadal udaje do povinneho pole (field)
function validate_required(field, fname)
{
  if (field.value == "")
  {
     return ("\"" + fname + "\": pole není vyplněno\n");
   }
   else
   {
      return ("");
    }
}

//nasleduje samotna validacni funkce, vyvolavana pri onsubmit()
function validate_form(obj)
{
  var alert_message = "";
  var alert_prefix = "Ve formuláři se vyskytly tyto problémy:\n";

  if (obj.id=="doporuceni")
  {
    alert_message  = alert_message + validate_required(obj.targetemail, "E-mail příjemce") + validate_email(obj.targetemail, "E-mail příjemce") + validate_required(obj.email, "Váš e-mail") + validate_email(obj.email, "Váš e-mail");
  };

  if (obj.id=="kurzy")
  {
    alert_message = alert_message + validate_required(obj.jmeno, "Příjmení a jméno") + validate_required(obj.adresa, "Adresa") + validate_required(obj.telefon, "Telefon") + validate_phone(obj.telefon, "Telefon") + validate_required(obj.email, "E-mail") + validate_email(obj.email, "E-mail");
    var si=document.getElementById("Kurz").selectedIndex;
    if (si == "0")
    {
      alert_message = alert_message + "\"Kurz\": Vyberte prosím požadovaný kurz\n";
    }
    if ((document.getElementById("Info_z1").checked == false) && (document.getElementById("Info_z2").checked == false) && (document.getElementById("Info_z3").checked == false) && (document.getElementById("Info_z4").checked == false))
    {
      alert_message = alert_message + "\"Zdroj informací\": Zaškrtněte prosím jednu z možností\n";
    }
  };

  if (obj.id=="seminare")
  {
    alert_message = alert_message + validate_required(obj.instituce, "Název školy / Instituce") + validate_required(obj.fakturace, "Fakturační adresa") + validate_required(obj.ico, "IČO") + validate_numbers(obj.ico, 8, 8, "IČO") + validate_required(obj.email, "E-mail kontaktní osoby") + validate_email(obj.email, "E-mail kontaktní osoby");
    var si=document.getElementById("Seminar").selectedIndex;
    if (si == "0")
    {
      alert_message = alert_message + "\"Seminář\": Vyberte prosím požadovaný seminář\n";
    }
    alert_message = alert_message + validate_required(obj.osoba, "Jméno přihlášené osoby");
    if ((document.getElementById("Info_z1").checked == false) && (document.getElementById("Info_z2").checked == false) && (document.getElementById("Info_z3").checked == false) && (document.getElementById("Info_z4").checked == false))
    {
      alert_message = alert_message + "\"Zdroj informací\": Zaškrtněte prosím jednu z možností\n";
    }
  };

  if (obj.id=="archiv")
  {
    alert_message = alert_message + validate_required(obj.jmeno_prijmeni, "Jméno a příjmení") + validate_required(obj.adresa, "Adresa");
    var si=document.getElementById("Nazev_casopisu").selectedIndex;
    if (si == "0")
    {
      alert_message = alert_message + "\"Název časopisu\": Vyberte prosím požadovaný časopis\n";
    }
    alert_message = alert_message + validate_required(obj.cislo_predplatitele, "Předplatitelské číslo") + validate_numbers(obj.cislo_predplatitele, 5, 20, "Předplatitelské číslo") + validate_required(obj.email, "E-mail") + validate_email(obj.email, "E-mail");
  };

  if (obj.id=="napiste")
  {
    alert_message = alert_message + validate_required(obj.jmeno, "Jméno a příjmení") + validate_required(obj.email, "E-mail") + validate_email(obj.email, "E-mail") + validate_required(obj.vzkaz, "Vzkaz");
  };

  if (obj.id=="prihlaseni")
  {
    alert_message = alert_message + validate_required(obj.username, "Uživatelské jméno") + validate_required(obj.password, "Heslo");
  };

  if (obj.id=="diskuse")
  {
    alert_message = alert_message + validate_required(obj.email, "E-mail") + validate_email(obj.email, "E-mail") + validate_required(obj.name, "Nadpis") + validate_required(obj.body, "Text");
  };

  if (alert_message != "")
  {
    alert(alert_prefix + alert_message);
    return (false);
  }
  else
  {
    return (true);
  };
}



