language = "Bulgatian";
//language = "English";

//------------------------------------------------------------------------------

var messages = new Array();
if(language == "Bulgatian" ) {
  messages[0]  = "OK";
  messages[1]  = "Незададена стойност.";
  messages[2]  = "Грешно зададен интервал от възможни стойности.";//вътрешно
  messages[3]  = "Невалидни символи. Разрешени ";
  messages[4]  = "Стойност извън зададения интервал.";
  messages[5]  = "Дробната част на числото е с неразрешена дължина.";
  messages[6]  = "Невалидно зададен брой на минимално и максимално разрешени символи.";//вътрешно
  messages[7]  = "Невалидно зададен модификатор за празен сумвол.";//вътрешно
  messages[8]  = "Невалидно зададен модификатор за използван език.";//вътрешно
  messages[9]  = "Неразрешен брой символи. Разрешени ";
  messages[10] = "Невалиден електронен адрес.";
  messages[11] = "Невалидно зададен ден.";
  messages[12] = "Невалидно зададен месец.";
  messages[13] = "Невалиден формат на дата.";
  messages[14] = "Невалидно зададени часове.";
  messages[15] = "Невалидно зададени минути.";
  messages[16] = "Невалидно зададени секунди.";
  messages[17] = "Невалиден формат на часа.";
  messages[18] = "Невалиден уеб адрес.";
  messages[19] = "Неразрешен символ.";
  messages[20] = "Неразрешен брой цифри. Разрешени ";
}
else if(language == "English" ) {
  messages[0]  = "OK";
  messages[1]  = "Empty value.";
  messages[2]  = "Unvalid interval of possible values.";//вътрешно
  messages[3]  = "Unvalid chars.";
  messages[4]  = "Out of range.";
  messages[5]  = "Fraction out of range.";
  messages[6]  = "Unvalid interval of min and max number of chars.";//вътрешно
  messages[7]  = "Unvalid space modifier.";//вътрешно
  messages[8]  = "Unvalid language modifier.";//вътрешно
  messages[9]  = "Out of range. Range ";
  messages[10] = "Unvalid e-mail address.";
  messages[11] = "Unvalid day.";
  messages[12] = "Unvalid month.";
  messages[13] = "Unvalid date.";
  messages[14] = "Unvalid hour.";
  messages[15] = "Unvalid minute.";
  messages[16] = "Unvalid second.";
  messages[17] = "Unvalid time.";
  messages[18] = "Unvalid web address.";
  messages[19] = "Unauthorized char.";
  messages[20]  = "Digits out of range. Range ";
}
else {
  die("Unknown language!");
}

//------------------------------------------------------------------------------

function uper() {
	var str=this.toUpperCase();
	return(str);
}

//------------------------------------------------------------------------------

function lower() {
	var str=this.toLowerCase();
	return(str);
}

//------------------------------------------------------------------------------

String.prototype.up=uper;
String.prototype.low=lower;

//------------------------------------------------------------------------------

function first_up(str) {
	var ch = str.substr(0,1);
	var ch_up = ch.up();
	str1 = str.substr(1, (str.length - 1))
	str = ch_up.concat(str1);
	return(str);
}

//------------------------------------------------------------------------------

function is_valid_number(field,     // поле за проверка
                         min,       // минимално допустима стойност
                         max,       // максимално допустима стойност
                         dad,       // допустим брой цифри след десетичния знак
                         dec_simbol // десетичен знак
                        ) {

  var dig = field.value;
  if((dig == "") || (dig == null)) {
    return messages[1];
  }
  if(min > max) {
    return messages[2] + " (" + min + " - " + max + ").";
  }
  if( min < 0 ) {
    chars = "'-', [0-9]";
    p1    = "-?";
  }
  else {
    chars = "[0-9]";
    p1    = "";
  }
  if(dad == 0) {
    chars += "";
    p2     = "";
  }
  else {
    if(String(dec_simbol) == "") {
       dec_simbol == ".";
    }
    chars += "'" + dec_simbol + "'";
    if(dec_simbol == ".") {
      var bslash = "\\backslash SHEETS !!!";
      dec_simbol = bslash.charAt(0) + dec_simbol;
    }
    p2 = dec_simbol + "?(\\d)*";
  }
  rx = new RegExp("^" + p1 + "(\\d)+" + p2 + "$");
  if(!dig.match(rx)) {
    return messages[3] + " (" + chars + ").";
  }
  var a = new Array();
  rx_dec_simbol = new RegExp(dec_simbol);
  a = dig.split(rx_dec_simbol);
  if(a.length == 2) {
    str_dod = String(a[1]);
    if(str_dod.length > dad) {
      return messages[5] + " (0 - " + dad + ").";
    }
  }
  if((dig < min) || (dig > max)) {
    return messages[4] + " (" + min + " - " + max + ").";
  }
  return messages[0];
}

//------------------------------------------------------------------------------

function is_valid_name(field, // поле за проверка
                       min,   // минимално допустима дължина
                       max,   // максимално допустима дължина
                       lang,  // използван език
                       space  // допуска ли се празен символ
                      ) {
  var name = field.value;
  if((name == "") || (name == null)) {
    return messages[1];
  }
  if(min > max) {
    return messages[6] + " (" + min + " - " + max + ").";
  }
  if (space == "no"){
    chars = "" ;
    p1 = "";
  }
  else if (space == "yes"){
    chars = "' ', " ;
    p1 = "\\s?";
  }
  else {
    return messages[7] + " (" + space + ")";
  }
  if (lang == "en") {
    chars += "'A-Za-z'";
    p2     = "A-Za-z";
  }
  else if (lang == "bg") {
    chars += "'А-Яа-я'" ;
    p2     = "А-Яа-я" ;
  }
  else {
    return messages[8] + " (" + lang + ")";
  }
  rx = new RegExp("^" + "[" + p2 + "]+" + p1 + "[" + p2 + "]*" + p1 + "[" + p2 + "]*$");
  if(!name.match(rx)) {
    return messages[3] + " (" + chars + ").";
  }
  if((name.length < min) || (name.length > max)){
    if(min == max) {
      return messages[9] + " (" + min + ").";
    }
    else {
      return messages[9] + " (" + min + " - " + max + ").";
    }
  }
  return messages[0];
}

//------------------------------------------------------------------------------

function is_valid_user_or_pass(field, // поле за проверка
                               min,   // минимално допустима дължина
                               max    // максимално допустима дължина
                              ) {
  var user_or_pass = field.value;
  if((user_or_pass == "") || (user_or_pass == null)) {
    return messages[1];
  }
  if(min > max) {
    return messages[6] + " (" + min + " - " + max + ").";
  }
  if(!user_or_pass.match(/^[A-Za-z0-9_-]+$/)) {
    return messages[3] + " ('A-Za-z', '_', '-').";
  }
  if((user_or_pass.length < min) || (user_or_pass.length > max)){
    if(min == max) {
      return messages[9] + " (" + min + ").";
    }
    else{
      return messages[9] + " (" + min + " - " + max + ").";
    }
  }
  return messages[0];
}

//------------------------------------------------------------------------------

function is_valid_email(field) {
  var mail = field.value;
  if((mail == "") || (mail == null)) {
    return messages[1];
  }
  if(!mail.match(/^(([\-\w]+)\.?)+@(([\-\w]+)\.?)+\.[a-zA-Z]{2,6}$/)) {
    return messages[10];
  }
  return messages[0];
}

//------------------------------------------------------------------------------

function is_valid_www(field){
  var www = field.value;
  if((www == "") || (www == null)) {
    return messages[1];
  }
  if(!www.match(/^http:\/\/(([\-\w]+)\.?)+\.(([\-\w]+)\.?)+\.[a-zA-Z]{2,6}$/)) {
    return messages[18];
  }
  return messages[0];
}

//------------------------------------------------------------------------------

function is_valid_date(field, divider) {
  var dmy = field.value; // dd.mm.yyyy
  if((dmy == "") || (dmy == null)) {
    return messages[1];
  }
  if((divider == "/") || (divider == ".")){
    var bslash = "\\backslash SHEETS !!!";
    divider = bslash.charAt(0) + divider;
  }
  rx = RegExp("^\\d{2}" + divider + "\\d{2}" + divider + "\\d{4}$");
  if(!dmy.match(rx)) {
    return messages[13];
  }
  var y = Number(dmy.substr(6,4));
  var m = Number(dmy.substr(3,2));
  var d = Number(dmy.substr(0,2));

  max_days = 31;
  if((m == 4) || (m == 6) || (m == 9) || (m == 11)) {
    max_days = 30;
  }
  if(m == 2){
    if(y%4 == 0){
      max_days = 29;
    }
    else{
      max_days = 28;
    }
  }
  if((d < 1) || (d > max_days)) {
    return messages[11];
  }
  if((m < 1) || (m > 12)) {
    return messages[12];
  }
  return messages[0];
}

//------------------------------------------------------------------------------

function is_valid_time(field, divider) {
  var hms = field.value; // hh:mm:ss
  if((hms == "") || (hms == null)) {
    return messages[1];
  }
  if((divider == "/") || (divider == ".")){
    var bslash = "\\backslash SHEETS !!!";
    divider = bslash.charAt(0) + divider;
  }
  rx = RegExp("^\\d{2}" + divider + "\\d{2}" + divider + "\\d{2}$");
  if(!hms.match(rx)) {
    return messages[17];
  }
  var h = Number(hms.substr(0,2));
  var m = Number(hms.substr(3,2));
  var s = Number(hms.substr(6,2));
  if ((h < 0) || (h > 23)) {
    return messages[14];
  }
  if ((m < 0) || (m > 59)) {
    return messages[15];
  }
  if ((s < 0) || (s > 59)) {
    return messages[16];
  }
  return messages[0];
}

//------------------------------------------------------------------------------

function is_valid_text(field, forbidden_chars) {
  var text = field.value;
  if((text == "") || (text == null)) {
    return messages[1];
  }
  for(i = 0; i < forbidden_chars.length; i++) {
    char = forbidden_chars.substr(i, 1);
    if(text.lastIndexOf(char) !== -1) {
      return messages[19] + " '" + char + "'.";
    }
  }
  return messages[0];
}

//------------------------------------------------------------------------------

function is_valid_tel(field, min, max, plus) {
  var tel = field.value;
  if((tel == "") || (tel == null)) {
    return messages[1];
  }
  if(min > max) {
    return messages[2] + " (" + min + " - " + max + ").";
  }
  if(plus == "+") {
    var bslash = "\\backslash SHEETS !!!";
    p1         = bslash.charAt(0) + "+?";
    chars      = "'+', [0-9]";
  }
  else {
    p1         = "";
    chars      = "[0-9]";
  }
  rx = new RegExp("^" + p1 + "(\\d)+$");
  if(!tel.match(rx)) {
    return messages[3] + " (" + chars + ").";
  }
  if(tel.charAt(0) == "+") {
    sub = 1;
  }
  else {
    sub = 0;
  }
  if(((tel.length - sub) < min) || ((tel.length - sub) > max)){
    if(min == max) {
      return messages[20] + " (" + min + ").";
    }
    else {
      return messages[20] + " (" + min + " - " + max + ").";
    }
  }
  return messages[0];
}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------