function trim(strText) { 
  var strText = new String(strText);
  while (1) {
    znak1 = strText.substring(0,1);
    if (znak1 == ' ' || znak1 == '\f' || znak1 == '\n' || znak1 == '\r' || znak1 == '\t')
      strText = strText.substring(1, strText.length);
    else
      break;
  }
  while (1) {
    znak1 = strText.substring(strText.length-1,strText.length)
    if (znak1 == ' ' || znak1 == '\f' || znak1 == '\n' || znak1 == '\r' || znak1 == '\t')
      strText = strText.substring(0, strText.length-1);
    else
      break;
  }
  return strText;
}

function Prazdno(str)
{
  if (trim(str)=="") return true;
  return false;
}

function TestEmail(strEmail)
{
  if (Prazdno(strEmail)) return true;
  var rgExp = new RegExp("^[+_.0-9a-z-]+@[0-9a-z][-0-9a-z.]*[.][a-z][a-z]+$", "i");
  if (!rgExp.test(strEmail))
  {
    alert("Zadaná adresa není správnou adresou elektronické pošty");
    return false;
  }
  return true;
}

function TestRegExp(str, regdef, chyba, bPov)
{
  if (!bPov && str == "")
    return true;
  var rgExp = new RegExp(regdef);
  if (!rgExp.test(str))
  {
    alert(chyba);
    return false;
  }
  return true;
}

function Vyplneno(str, polname)
{
  if (!Prazdno(str))
  {
    return true;
  }
  else
  {
    if (arguments.length < 2)
    {
      alert("Položka musí být vyplněna");
    } 
    else
    {
      alert("Položka '"+polname+"' musí být vyplněna");
    }
    return false;
  }
}

function TestDelka(str, nDelka, bPov)
{
  if (!bPov && str == "")
    return true;
    
  if (!Vyplneno(str))
    return false;
    
  if (str.length <= nDelka)
    return true;
  else
  {
    alert("Délka položky je větší než povolená mez");
    return false;
  }
}

function TestCislo(str, nDelka, bPov)
{
  if (!bPov && str == "")
    return true;
  
  if (!TestDelka(str, nDelka, bPov))
    return false;
  
  var nDots = 0;  
  var i;
  for (i = 0; i < str.length; i++)
  {
    if (str.charAt(i) == '.' || str.charAt(i) == ',')
      nDots++;
    else
      if (str.charAt(i) < '0' || str.charAt(i) > '9' || nDots > 1)
      {
        if (i == 0 && str.charAt(i) == '-')
        {
        }
        else
        {
          alert("Položka musí být číslo");
          return false;
        }
      }
  }
  return true;
}

function TestCeleCislo(str, nDelka, bPov)
{
  if (!bPov && str == "")
    return true;

  if (!TestDelka(str, nDelka, bPov))
    return false;
    
  var i;
  for (i = 0; i < str.length; i++)
    if (str.charAt(i) < '0' || str.charAt(i) > '9')
    {
      if (i == 0 && str.charAt(i) == '-')
      {
      }
      else
      {
        alert("Hodnota musí být celé číslo");
        return false;
      }
    }
  return true;
}

function TestKladneCeleCislo(str, nDelka, bPov)
{
   if (!TestCeleCislo(str, nDelka, bPov)) return false;
   if (str < 0)
   {
      alert("Hodnota musí být celé kladné číslo");
      return false;
   }
   return true;
}

function TestPrestupnyRok(year)
{
  if (year % 4 != 0)
    return false;
  else
    if (year % 100 != 0)
      return true;
    else
      if (year % 400 != 0)
        return false;
      else
        return true;
}

function TestDatumOK(day, month, year)
{
  var LastDay = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  if (month < 1 || month > 12)
    return false;

  if (month != 2)
  {
    if (day < 1 || day > LastDay[month-1])
      return false;
  }
  else
    if (TestPrestupnyRok(year))
    {
      if (day < 1 || day > 29)
        return false;
    }
    else
      if (day < 1 || day > 28)
        return false;

  return true;
}

function TestDatum(str, bPov)
{
   if (!bPov && str == "") return true;
   if (!Vyplneno(str)) return false;
   arrDatum = Array();
   var j = 0;
   arrDatum[j] = "";
   strDatum = str;
   var errmsg = "Neplatné datum. Zadejte je ve formátu DD.MM.RRRR";
   for (i = 0; i < strDatum.length; i++)
   {
      if (strDatum.charAt(i) >= '0' && strDatum.charAt(i) <= 9 || strDatum.charAt(i) == '.')
      {
         if (strDatum.charAt(i) != '.')
            arrDatum[j] += strDatum.charAt(i);
         else
         {
            j++;
            arrDatum[j] = "";
         }
      }
      else 
      {
         alert(errmsg);
         return false;
      }
   }
   if (arrDatum.length != 3)
   {
      alert(errmsg);
      return false;
   }
   if (!TestDatumOK(arrDatum[0], arrDatum[1], arrDatum[2]))
   {
      alert(errmsg);
      return false;
   }
   if (arrDatum[2].length != 4 || arrDatum[1].length > 2 || arrDatum[0].length > 2)
   {
      alert(errmsg);
      return false;
   }
   return true;
}

function NormalizujDatum(str)
{
  arrDatum = Array();
  var j = 0;
  arrDatum[j] = "";
  strDatum = str;
  for (i = 0; i < strDatum.length; i++)
  {
      if (strDatum.charAt(i) != '.')
        arrDatum[j] += strDatum.charAt(i);
      else 
      {
        j++;
        arrDatum[j] = "";
      }
  }

  if (arrDatum[0].length==1)
  {
    arrDatum[0] = "0"+arrDatum[0];
  }
  if (arrDatum[1].length==1)
  {
    arrDatum[1] = "0"+arrDatum[1];
  }
    str = arrDatum[0]+"."+arrDatum[1]+"."+arrDatum[2];

  return str;
}

function OtocDatum(str)
{
   ret = '';
   if ((str != '') && LTstDatum(str, true))
   {
      str = NormalizujDatum(str);
      if (str.length == 10) ret = str.substr(6,4) + str.substr(3,2) + str.substr(0,2);
   }
   return ret;
}

function TestCas(str, bPov)
{
   if (!bPov && str == "") return true;
   if (!Vyplneno(str)) return false;
   var rgExp = new RegExp("^([01]?[0-9]|[2][0-3]):[0-5][0-9]$");
   if (!rgExp.test(str))
   {
      alert("Chybně zadaný čas. Zadejte ve formátu HH:MM (např. 13:45)");
      return false;
   }
   return true;
}

function TestPSC(strPSC, bPov) {

  if (!bPov && strPSC == "")
    return true;
  if (!Vyplneno(strPSC))
    return false;

  var rgExp = new RegExp("^[0-9]{5}$");
  if (!rgExp.test(strPSC))
    {
    alert("PSČ musí být pětimístné číslo bez mezer");
    return false;
    }

  return true;
}

function array_indexOf(val)
{
  for (arrayindex=0; arrayindex<this.length; arrayindex++)
  {
    if (this[arrayindex] == val) return arrayindex;
  }
  return -1;
}

Array.prototype.indexOf = array_indexOf;

function replaceUnicodeChar(chr)
{
  if (chr=="<") return "&lt;";
  if (chr==">") return "&gt;";
  if (chr=="\"") return "&quot;";
  if (chr=="&") return "&amp;";

  var chrCode = chr.charCodeAt(0);
  var czTable = Array(193, 201, 205, 211, 218, 221, 225, 233, 237, 243, 250, 253, 268, 269, 270, 271, 282, 283, 317, 318, 327, 328, 344, 345, 352, 353, 356, 357, 366, 367, 381, 382);
  if (czTable.indexOf(chrCode) < 0) return "&#"+chrCode+";";

  return chr;
}

function HtmlSpecialChars(str)
{
   return str.replace(/[<>"&\u00A0-\uFFFF]/g, function(m){return replaceUnicodeChar(m)});
}

function round(number, precision)
{
   var t = typeof(number);
   if (t.toLowerCase() == 'string')
   {
      var lcnumber = number;
      number = '';
      lnIndex = lcnumber.indexOf(',');
      while (lnIndex != -1)
      {
         number += lcnumber.substring(0, lnIndex) + '.';
         lcnumber = lcnumber.slice(lnIndex + 1);
         lnIndex = lcnumber.indexOf(',');
      }
      number += lcnumber;
   }
   lnRet = Math.round(number * Math.pow(10,precision))/Math.pow(10,precision);
   if (isNaN(lnRet)) lnRet = 0;
   lcRet = lnRet + '';
   lnIndex = lcRet.indexOf('.');
   if (lnIndex != -1) lcDecPart = lcRet.slice(lnIndex + 1); else lcDecPart = '';
   if ((precision > 0) && (precision != lcDecPart.length))
   {
      if (lcDecPart == '') lcRet += '.';
      for (var i = 0; i < precision - lcDecPart.length; i++)
      {
         lcRet += '0';
      }
   }
   return lcRet;
}

function roundup(number, precision)
{
   var t = typeof(number);
   if (t.toLowerCase() == 'string')
   {
      var lcnumber = number;
      number = '';
      lnIndex = lcnumber.indexOf(',');
      while (lnIndex != -1)
      {
         number += lcnumber.substring(0, lnIndex) + '.';
         lcnumber = lcnumber.slice(lnIndex + 1);
         lnIndex = lcnumber.indexOf(',');
      }
      number += lcnumber;
   }
   lnRet = Math.round(number * Math.pow(10,precision))/Math.pow(10,precision);
   if (isNaN(lnRet)) lnRet = 0;
   rozdil = number - lnRet;
   if ((rozdil>0) && (rozdil<0.5)) lnRet = ((lnRet * Math.pow(10,precision)) + 1)/Math.pow(10,precision);
   lcRet = lnRet + '';
   lnIndex = lcRet.indexOf('.');
   if (lnIndex != -1) lcDecPart = lcRet.slice(lnIndex + 1); else lcDecPart = '';
   if ((precision > 0) && (precision != lcDecPart.length))
   {
      if (lcDecPart == '') lcRet += '.';
      for (var i = 0; i < precision - lcDecPart.length; i++)
      {
         lcRet += '0';
      }
   }
   return lcRet;
}

function ShowObject(id) 
{
   document.getElementById(id).style.display="";
}

function HideObject(id) 
{
   document.getElementById(id).style.display="none";
} 


