/*****************************************************************************
  Konstanty
*/

var _LANG = window.location.search.search(/ln=/) >= 0 ?
            window.location.search.substr(window.location.search.search(/ln=/) + 3, 2) : 'cz';

var _ISDATE_TEXT =    _LANG == 'en' ? 'Variable have to be date in the correct format "[d]d.[m]m.yyyy".' : (
                      _LANG == 'de' ? 'Der Wert muss ein Datum im Format "[d]d.[m]m.yyyy" sein.' : 
                                      'Hodnota musí být datum ve formátu "[d]d.[m]m.yyyy".');
var _ISDATETIME_TEXT =_LANG == 'en' ? 'Variable have to be date and time in the correct format "[d]d.[m]m.yyyy hh:mm:ss".' : (
                      _LANG == 'de' ? 'Der Wert muss Datum und Zeit in Format "[d]d.[m]m.yyyy hh:mm:ss" sein.' : 
                                      'Hodnota musí být datum a čas ve formátu "[d]d.[m]m.yyyy hh:mm:ss".');
var _ISEMAIL_TEXT =   _LANG == 'en' ? 'Variable have to be correct email address.' : (
                      _LANG == 'de' ? 'Der Wert muss ein korrektes e-Mail sein.' : (
                      _LANG == 'cz' ? 'Hodnota musí být korektní email' :
                                      'Variable have to be correct email address.'));
var _ISFLOAT_TEXT =   _LANG == 'en' ? 'Variable have to be real number.' : (
                      _LANG == 'de' ? 'Der Wert muss eine reelles Zahl sein.' : 
                                      'Hodnota musí být reálné číslo.');
var _ISINTEGER_TEXT = _LANG == 'en' ? 'Variable have to be integer.' : (
                      _LANG == 'de' ? 'Der Wert muss eine ganze Zahl sein.' : 
                                      'Hodnota musí být celé číslo.');
var _ISTIME_TEXT =    _LANG == 'en' ? 'Variable have to be time in the correct format "hh:mm:ss".' : (
                      _LANG == 'de' ? 'Der Wert muss eine Zeit im Format "hh:mm:ss" sein.' : 
                                      'Hodnota musí být čas ve formátu "hh:mm:ss".');
var _ISURL_TEXT =     _LANG == 'en' ? 'Variable have to be correct URL link.' : (
                      _LANG == 'de' ? 'Der Wert muss ein korrektes URL Link sein.' : 
                                      'Hodnota musí být korektní URL odkaz.');

/*****************************************************************************
  Funkce isDate().
  Funkce prověří, zda je zadaná hodnota datum dle formátu 'dd.mm.yyyy'.
*/
function isDate(input, blank)
{
    input.value = input.value.replace(/^\s*(.*?)\s*$/, '$1');
    if (blank && !input.value)
        return true;
                                                        // převod na CZ formát
    input.value = input.value.replace(/^(\d{1,2})\D(\d{1,2})\D(\d{4})$/, '$1.$2.$3');
    input.value = input.value.replace(/^(\d{4})\D(\d{1,2})\D(\d{1,2})$/, '$3.$2.$1');
    input.value = input.value.replace(/^(\d{1,2})\D(\d{1,2})\D(\d{2})$/, '$1-$2-20$3');
    input.value = input.value.replace(/^(\d{2})\D(\d{1,2})\D(\d{1,2})$/, '$3-$2-20$1');
                                                        // ISO: yyyy-(m)m-(d)d
//    reg = /^(\d{4})-(0?[1-9]|1[0-2])-(0?[1-9]|[12]\d|3[01])$/;
                                                         // CZ: (d)d.(m)m.yyyy
    reg = /^(0?[1-9]|[12]\d|3[01])\.(0?[1-9]|1[0-2])\.(\d{4})$/;
    if (!(reg.test(input.value)
        && (                                                // měsíce s 30 dny
            ((RegExp.$2 == 4 || RegExp.$2 == 6 || RegExp.$2 == 9 || 
              RegExp.$2 == 11) && RegExp.$1 < 31)
            ||                                              // měsíce s 31 dny
            ((RegExp.$2 == 1 || RegExp.$2 == 3 || RegExp.$2 == 5 || 
              RegExp.$2 == 7 || RegExp.$2 == 8 || RegExp.$2 == 10 ||
              RegExp.$2 == 12) && RegExp.$1 < 32)
            ||                                                         // únor
            (RegExp.$2 == 2 && RegExp.$1 < 29)
            ||                                         // únor - přestupný rok
            (RegExp.$2 == 2 && RegExp.$1 < 30 && ((RegExp.$3 % 100) == 0 || 
                          (RegExp.$3 % 4) == 0 || (RegExp.$3 % 400) == 0))
         ) 
    )) {
        alert(_ISDATE_TEXT);
        input.focus();
        input.select();
        return false;
    }
    return true;
}
/* isDate() *****************************************************************/


/*****************************************************************************
  Funkce isDateTime().
  Funkce prověří, zda je zadaná hodnota datum a čas dle 
         formátu 'dd.mm.yyyy hh:mm:ss'.
*/
function isDateTime(input, blank)
{
    input.value = input.value.replace(/^\s*(.*?)\s*$/, '$1');
    if (blank && !input.value)
        return true;

    if (!input.value.match(/^(0?[1-9]|[12]\d|3[01])\.(0?[1-9]|1[0-2])\.(\d{4}) (?:[01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d$/)) {
        alert(_ISDATETIME_TEXT);
        input.focus();
        input.select();
        return false;
    }
    return true;
}
/* isDateTime() *************************************************************/


/*****************************************************************************
  Funkce isEmail().
  Funkce prověří, zda je zadaný řetězec email.
*/
function isEmail(input, blank)
{
  if (blank && !input.value) return true;
  if (!blank && !input.value) return true;

  // input.value = input.value.replace(/^\s*(.*?)\s*$/, 'null');

  if (!input.value.match(/^[\w_-]+(?:\.[\w_-]+)*@(?:[\w_-]+\.)+\w{2,4}$/)) {
    alert(_ISEMAIL_TEXT);
    input.focus();
    input.select();
    return false;
  }
  
  return true;
}
/* isEmail() ****************************************************************/


/*****************************************************************************
  Funkce isFloat().
  Funkce prověří, zda je zadané číslo reálné.
*/
function isFloat(input)
{
    input.value = input.value.replace(/^\s*(.*?)\s*$/, '$1');
    input.value = input.value.replace(/\,/, '.');
    if (!input.value.match(/^[+-]?[0-9]+\.[0-9]+$/))
        if (input.value.match(/^[+-]?[0-9]+$/)) {     // vstupem je cele cislo
            input.value += '.00';              // prevedem jej na realne cislo
        } else {
            alert(_ISFLOAT_TEXT);
            input.focus();
            input.select();
            return false;
        }
    return true;
}
/* isFloat() ****************************************************************/


/*****************************************************************************
  Funkce isInteger().
  Funkce prověří, zda je zadané číslo celé.
*/
function isInteger(input)
{
    input.value = input.value.replace(/^\s*(.*?)\s*$/, '$1');
    if (!input.value.match(/^[+-]?[0-9]+$/)) {
        alert(_ISINTEGER_TEXT);
        input.focus();
        input.select();
        return false;
    }
    return true;
}
/* isInteger() **************************************************************/


/*****************************************************************************
  Funkce isTime().
  Funkce prověří, zda je zadaná hodnota čas dle formátu 'hh:mm:ss'.
*/
function isTime(input, blank)
{
    input.value = input.value.replace(/^\s*(.*?)\s*$/, '$1');
    if (blank && !input.value)
        return true;
                                                       // převod na ISO formát
    input.value = input.value.replace(/^(\d{1,2})\D(\d{1,2})\D(\d{1,2})$/, '$1:$2:$3');
    input.value = input.value.replace(/^(\d{1,2})\D(\d{1,2})$/, '$1:$2:00');
    input.value = input.value.replace(/^(\d{1,2})$/, '$1:00:00');
                                                        // ISO: (h)h:(m)m:(s)s
    if (!input.value.match(/^(?:[01]?\d|2[0-3]):[0-5]?\d:[0-5]?\d$/)) {
        alert(_ISTIME_TEXT);
        input.focus();
        input.select();
        return false;
    }
    return true;
}
/* isTime() *****************************************************************/


/*****************************************************************************
  Funkce isUrl().
  Funkce prověří, zda je zadaný řetězec URL odkaz.
*/
function isUrl(input, blank)
{
    input.value = input.value.replace(/^\s*(.*?)\s*$/, '$1');
    if (blank && !input.value)
        return true;
    if (!input.value.match(/^(?:(?:https?|ftp):\/\/)?[\w_-]+(\.[\w_-]+)*(\.\w{2,5})(?:\/|:|$)/)) {
        alert(_ISURL_TEXT);
        input.focus();
        input.select();
        return false;
    }
    return true;
}
/* isEmail() ****************************************************************/


/*****************************************************************************
  Funkce countIt().
  Volání probíhá událostními ovladači prvků, u kterých je požadováno
  počítání délky zadaného textu s následným zobrazením výsledku graficky
  a numericky. 
*/
function countIt(name, maxscale, etrim)
{
    if (!document.getElementById)
        return false;
    remain = document.getElementById(name + '_rm');
    scale = document.getElementById(name + '_sc');
    sender = document.getElementById(name + '_id');
    var len = sender.value.length;
    if (etrim) {
        len += countETrim(sender.value);
        while (len > maxscale) {
            sender.value = sender.value.substring(0, sender.value.length - 1);
            len = sender.value.length + countETrim(sender.value);
        }
    } else {
        if (len > maxscale)
            sender.value = sender.value.substring(0, maxscale);
        len = sender.value.length;
    }
    scale.style.width = Math.round(len / maxscale * 100) + '%';
    remain.innerHTML = len + '/' + maxscale + ' znaků';
    return true;
}
/* countIt() ****************************************************************/


/*****************************************************************************
  Funkce countETrim().
  Funkce vrací, o kolik znaků se zvětší parametrem předaný řetězec,
  bude-li na něj aplikována funkce ETrim(), která nahrazuje některé speciální
  znaky entitatmi HTML.
*/
function countETrim(s)
{
  cnt = 0;
  for (i = 0; i < s.length; i++) {
    switch (s.charAt(i)) {
      case "\"": cnt += 5; break;                                     //&quot;
      case "\'": cnt += 4; break;                                      //&#39;
      case "\\": cnt += 4; break;                                      //&#92;
      case "&":  cnt += 4; break;                                      //&amp;
      case "<":  cnt += 3; break;                                       //&lt;
      case ">":  cnt += 3; break;                                       //&gt;
    }
  }
  return cnt;
}
/* countETrim() *************************************************************/


/* End of file. */