function help(url) {
  x = (screen.width - 375) / 2;
  y = (screen.height - 460) / 2;
  open(url, "_blank", "width=375, height=460, scrollbars=yes, top=" + y + ", left=" + x);
}

function isMatchReg(element_name, pattern, warning) {
  object = document.getElementById(element_name);
  if (typeof object != "undefined") {
    var reg = new RegExp(pattern, "gi");
    if (reg.test(object.value)) {
      return true;
    } else {
      if (warning != null) {
        object.focus();
        alert('Hibás mező:\n' + warning);
      }
      return false;
    }
  } else {
    alert('Hibás paraméter!\nElement name: ' + element_name + '\nObject: ' + object);
    return false;
  }
}

function isMatchNumber(element_name, min, max, warning) {
  object = document.getElementById(element_name);
  if (typeof object != "undefined") {
    var reg = new RegExp("^\\d+$", "gi");
    if (reg.test(object.value) && (min == null || object.value >= min) && (max == null || object.value <= max)) {
      return true;
    } else {
      if (warning != null) {
        object.focus();
        if (max != null && min != null)
          alert('Hibás mező:\n' + warning + '\n' + min + ' és ' + max + ' közé kell esnie!');
        else if (max == null)
          alert('Hibás mező:\n' + warning + '\nLegalább ' + min + ' legyen!');
        else if (min == null)
          alert('Hibás mező:\n' + warning + '\nLegfeljebb ' + max + ' legyen!');
      }
      return false;
    }
  } else {
    alert('Hibás paraméter!\nElement name: ' + element_name + '\nObject: ' + object);
    return false;
  }
}

function isMatchFunction(condition, func, param) {
  if (condition) {
    return this[func](param);
  } else {
    return true;
  }
}

function isMatchPhone(element_name, warning) {
  return (isMatchReg(element_name + '_0', '^\\d{1,2}$', warning) && isMatchReg(element_name + '_1', '^\\d{6,7}$', warning));
}

function isMatchAddress(element_name) {
  return isMatchReg(element_name + '_cim_irsz', '^\\d{4}$', 'Az irányítószámnak 4 jegyű számnak kell lennie!') && isMatchNumber(element_name + '_cim_irsz', 1000, 9985, 'Irányítószám!')
      && isMatchReg(element_name + '_cim_helyseg_irsz5', '.+', 'Helység!') && isMatchReg(element_name + '_cim_utca', '.+', 'Közterület!')
      && isMatchReg(element_name + '_cim_hsz_hrsz', '^[\\w/-]+$', 'Házszám/Helyrajzszám!') && isMatchReg(element_name + '_cim_em', '^\\d*', 'Emelet!')
      && isMatchReg(element_name + '_cim_asz', '^\\d*', 'Ajtószám!')
}

function isMatchNumberSpaces(element_name, min, max, warning) {
  object = document.getElementById(element_name);
  if (typeof object != "undefined") {
    value = object.value.replace(/ /g, "");
    var reg = new RegExp("^\\d+$", "gi");
    if (reg.test(value) && (min == null || value >= min) && (max == null || value <= max)) {
      return true;
    } else {
      if (warning != null) {
        object.focus();
        if (max != null && min != null)
          alert('Hibás mező:\n' + warning + '\n' + min + ' és ' + max + ' közé kell esnie!');
        else if (max == null)
          alert('Hibás mező:\n' + warning + '\nLegalább ' + min + ' legyen!');
        else if (min == null)
          alert('Hibás mező:\n' + warning + '\nLegfeljebb ' + max + ' legyen!');
      }
      return false;
    }
  } else {
    alert('Hibás paraméter!\nElement name: ' + element_name + '\nObject: ' + object);
    return false;
  }
}

function isMatchCheckBoxList(element_name, min, max, warning) {
  object = document.adatok.elements[element_name + "[]"];
  if (typeof object != "undefined") {
    count = 0;
    for (i = 0; i < object.length; i++) {
      if (object[i].checked)
        count++;
    }
    if ((min == null || count >= min) && (max == null || count <= max)) {
      return true;
    } else {
      if (warning != null) {
        if (max != null && min != null)
          alert('Hibás mező:\n' + warning + '\n' + min + ' és ' + max + ' között legyen a kiválasztottak száma!');
        else if (max == null)
          alert('Hibás mező:\n' + warning + '\nLegalább ' + min + ' legyen a kiválasztottak száma!');
        else if (min == null)
          alert('Hibás mező:\n' + warning + '\nLegfeljebb ' + max + ' legyen a kiválasztottak száma!');
      }
      return false;
    }
  } else {
    alert('Hibás paraméter!\nElement name: ' + element_name + '\nObject: ' + object);
    return false;
  }
}

function GenCDV(p) {
  var i, cdv;
  i = p.length;
  if (i == 16) {
    cdv = (10 - (9 * p.charAt(0) + 7 * p.charAt(1) + 3 * p.charAt(2) + 1 * p.charAt(3) + 9 * p.charAt(4) + 7 * p.charAt(5) + 3 * p.charAt(6) + 1 * p.charAt(7) + 9 * p.charAt(8) + 7 * p.charAt(9) + 3
        * p.charAt(10) + 1 * p.charAt(11) + 9 * p.charAt(12) + 7 * p.charAt(13) + 3 * p.charAt(14)) % 10) % 10;
  } else {
    cdv = (10 - (9 * p.charAt(0) + 7 * p.charAt(1) + 3 * p.charAt(2) + 1 * p.charAt(3) + 9 * p.charAt(4) + 7 * p.charAt(5) + 3 * p.charAt(6)) % 10) % 10;
  }
  return cdv;
}

function isMatchCDV(element_name, warning) {
  var x = 0;
  var sz1 = document.getElementById(element_name + '_0');
  var sz2 = document.getElementById(element_name + '_1');
  var sz3 = document.getElementById(element_name + '_2');
  if ((typeof sz1 != "undefined") && (typeof sz2 != "undefined") && (typeof sz3 != "undefined")) {
    if (sz3.value == '') {
      sz3.value = '00000000';
    }
    var szamlaszam = sz1.value + sz2.value + sz3.value;
    var len = szamlaszam.length;
    if ((GenCDV(szamlaszam.substring(0, 7)) != szamlaszam.charAt(7)) || (GenCDV(szamlaszam.substr(8)) != szamlaszam.charAt(len - 1))) {
      if (warning != null) {
        sz1.focus();
        alert('Hibás mező:\n' + warning);
      }
      return false;
    } else {
      return true;
    }
  } else {
    alert('Hibás paraméter!\nElement name: ' + element_name + '\nObject1: ' + sz1 + '\nObject2: ' + sz2 + '\nObject3: ' + sz3);
    return false;
  }
}

function isOlderThan18(element_name, warning) {
  y = document.getElementById(element_name + "_ev");
  if (getAgeFromDate(element_name) > 18) {
    return true;
  } else {
    if (warning != null) {
      y.focus();
      alert('Hibás mező:\n' + warning);
    }
    return false;
  }
}

function getAgeFromDate(element_name) {
  y = document.getElementById(element_name + "_ev");
  m = document.getElementById(element_name + "_ho");
  d = document.getElementById(element_name + "_nap");
  if (typeof y != "undefined" && typeof m != "undefined" && typeof d != "undefined") {
    var now = new Date();
    var base = new Date(0);
    var birth = new Date(y.value, m.value - 1, d.value);
    var years = new Date(now.getTime() - birth.getTime());
    return years.getFullYear() - base.getFullYear();
  } else {
    alert('Hibás paraméter!\nElement name: ' + element_name + '\nObject1: ' + y + '\nObject2: ' + m + '\nObject3: ' + d);
    return null;
  }
}

function ellenorzes_meg_kell_adni(adat, szoveg) {
  x = 0;
  if (typeof document.getElementById(adat) != "undefined") {
    if (document.getElementById(adat).value == "") {
      document.getElementById(adat).focus();
      var meg_kell_adni = szoveg;
      alert(meg_kell_adni);
      x = 1;
      return x;
    }
  }
  return x;
}

function ellenorzes_irsz_check(adat, szoveg) {
  x = 0;
  if (typeof document.getElementById(adat) != "undefined") {
    if ((isNaN(document.getElementById(adat).value)) || (document.getElementById(adat).value < 1000) || (document.getElementById(adat).value > 9985)) {
      document.getElementById(adat).focus();
      var irsz_check = szoveg;
      alert(irsz_check);
      x = 1;
      return x;
    }
  }
  return x;
}

function ellenorzes_szam_betu(adat, szoveg) {
  x = 0;
  var y = 0;
  var z = 0;
  var zs = 0;
  var sz = 0;
  var szamok = "0123456789";
  var kisbetuk = "abcdefghijklmnopqrstuvwxyz";
  var nagybetuk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var karakterek = "/-";
  var vizsgalando = document.getElementById(adat).value;
  for (i = 0; i < vizsgalando.length; i++) {
    if (szamok.indexOf(vizsgalando.charAt(i)) >= 0) {
      y = 1;
    }
    if (kisbetuk.indexOf(vizsgalando.charAt(i)) >= 0) {
      z = 1;
    }
    if (nagybetuk.indexOf(vizsgalando.charAt(i)) >= 0) {
      zs = 1;
    }
    if (karakterek.indexOf(vizsgalando.charAt(i)) >= 0) {
      sz = 1;
    }
    if (szamok.indexOf(vizsgalando.charAt(i)) < 0 && kisbetuk.indexOf(vizsgalando.charAt(i)) < 0 && nagybetuk.indexOf(vizsgalando.charAt(i)) < 0 && karakterek.indexOf(vizsgalando.charAt(i)) < 0) {
      document.getElementById(adat).focus();
      var hibauzenet = szoveg;
      alert(hibauzenet);
      x = 1;
      return x;
    }
  }
  return x;
}

function ellenorzes_datum_nap(adat) {
  x = 0;
  if (((document.getElementById(adat + "_ho").value == "1" || document.getElementById(adat + "_ho").value == "3" || document.getElementById(adat + "_ho").value == "5"
      || document.getElementById(adat + "_ho").value == "7" || document.getElementById(adat + "_ho").value == "8" || document.getElementById(adat + "_ho").value == "10" || document
      .getElementById(adat + "_ho").value == "12") && document.getElementById(adat + "_nap").value * 1 > 31)
      || ((document.getElementById(adat + "_ho").value == "4" || document.getElementById(adat + "_ho").value == "6" || document.getElementById(adat + "_ho").value == "9" || document
          .getElementById(adat + "_ho").value == "11") && document.getElementById(adat + "_nap").value * 1 > 30)
      || (document.getElementById(adat + "_ho").value == "2" && document.adatok.szoko_ev.value == "0" && document.getElementById(adat + "_nap").value * 1 > 28)
      || (document.getElementById(adat + "_ho").value == "2" && document.adatok.szoko_ev.value == "1" && document.getElementById(adat + "_nap").value * 1 > 29)) {
    alert("A d\xb7tum nem megfelel\u0131!");
    document.getElementById(adat + "_nap").focus();
    x = 1;
  }
  return x;
}

function sugo(url) {
  x = (screen.width - 375) / 2;
  y = (screen.height - 460) / 2;
  open(url, "window", "width=375, height=460, scrollbars=yes, top=" + y + ", left=" + x);
}

function uj_ablak(url) {
  open(url, "window");
}

function goToURL() {
  // v3.0
  var i, args = goToURL.arguments;
  document.returnValue = false;
  for (i = 0; i < (args.length - 1); i += 2) {
    eval(args[i] + ".location='" + args[i + 1] + "'");
  }
}

function ezres_csoport(field) {
  var input = field.value.replace(/ /g, "");
  kimeno = "";
  j = 0;
  hossz = input.length;
  for (i = hossz - 1; i >= 0; i--) {
    if (((j % 3) == 2) && (j < (hossz - 1))) {
      kimeno = " " + input.substr(i, 1) + kimeno;
    } else {
      kimeno = input.substr(i, 1) + kimeno;
    }
    j++;
  }
  field.value = kimeno;
}

function uj_ablak(url) {
  open(url, "window");
}

function replaceSubstring(inputString, fromString, toString) {
  if (fromString == "") {
    return inputString;
  }
  var temp = inputString;
  if (toString.indexOf(fromString) == -1) {
    while (temp.indexOf(fromString) != -1) {
      var toTheLeft = temp.substring(0, temp.indexOf(fromString));
      var toTheRight = temp.substring(temp.indexOf(fromString) + fromString.length, temp.length);
      temp = toTheLeft + toString + toTheRight;
    }
  } else {
    var midStrings = new Array("~", "`", "_", "^", "#");
    var midStringLen = 1;
    var midString = "";
    while (midString == "") {
      for ( var i = 0; i < midStrings.length; i++) {
        var tempMidString = "";
        for ( var j = 0; j < midStringLen; j++) {
          tempMidString += midStrings[i];
        }
        if (fromString.indexOf(tempMidString) == -1) {
          midString = tempMidString;
          i = midStrings.length + 1;
        }
      }
    }
    while (temp.indexOf(fromString) != -1) {
      var toTheLeft = temp.substring(0, temp.indexOf(fromString));
      var toTheRight = temp.substring(temp.indexOf(fromString) + fromString.length, temp.length);
      temp = toTheLeft + midString + toTheRight;
    }
    while (temp.indexOf(midString) != -1) {
      var toTheLeft = temp.substring(0, temp.indexOf(midString));
      var toTheRight = temp.substring(temp.indexOf(midString) + midString.length, temp.length);
      temp = toTheLeft + toString + toTheRight;
    }
  }
  return temp;
}

function days_between(date1, date2) {
  // The number of milliseconds in one day
  var ONE_DAY = 1000 * 60 * 60 * 24
  // Convert both dates to milliseconds
  var date1_ms = date1.getTime()
  var date2_ms = date2.getTime()
  // Calculate the difference in milliseconds
  var difference_ms = Math.abs(date1_ms - date2_ms)
  // Convert back to days and return
  return Math.round(difference_ms / ONE_DAY)
}

String.prototype.pad = function(l, s, t) {
  return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length) + 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2)) + this + s.substr(0, l - t) : this;
};

String.prototype.number_format = function() {
  var cnum = this.replace(/ /g, "");
  parr = [];
  j = cnum.length;
  m = Math.floor(j / 3);
  n = cnum.length % 3 || 3;
  for ( var i = 0; i < j; i += n) {
    if (i != 0) {
      n = 3;
    }
    parr[parr.length] = cnum.substr(i, n);
    m -= 1;
  }
  return parr.join(' ');
};

Number.prototype.format = function() {
  return this.toString().number_format();
}

function luhn_check(element_name, warning) {
  object = document.getElementById(element_name);
  if (typeof object != "undefined") {
    // Strip any non-digits (useful for credit card numbers with spaces and hyphens)
    var number = object.value.replace(/\D/g, '');
    // Set the string length and parity
    var number_length = number.length;
    var parity = number_length % 2;
    // Loop through each digit and do the maths
    var total = 0;
    for (i = 0; i < number_length; i++) {
      var digit = number.charAt(i);
      // Multiply alternate digits by two
      if (i % 2 == parity) {
        digit = digit * 2;
        // If the sum is two digits, add them together (in effect)
        if (digit > 9) {
          digit = digit - 9;
        }
      }
      // Total up the digits
      total = total + parseInt(digit);
    }
    // If the total mod 10 equals 0, the number is valid
    if (total % 10 == 0) {
      return true;
    } else {
      if (warning != null) {
        object.focus();
        alert('Hibás mező:\n' + warning);
      }
      return false;
    }
  } else {
    alert('Hibás paraméter!\nElement name: ' + element_name + '\nObject: ' + object);
    return false;
  }

}
