//*********************************************************************
//  Höfundur   :    Helgi Þorvarðsson
//                  XPC hugbúnaður ehf
//                  xpc@xpc.is
//*********************************************************************
function xjDisableEnter(e) {
  // Bankareikningar (select(onkeyup), reikningsnúmer(onkeydown))
  var keyCode = e.charCode ? e.charCode : e.keyCode
  if (keyCode == 13) {
    return false;
  }
  else
    return true;
}
function xjfCheckLansnumer(V) {
  return xjfLansnumerCheck(V, "Ábending. Lánsnúmerið er ekki gilt.\nNúmerið er sex stafa.", 6)
}
function xjfCheckBankanumer(V) {
  return xjfLansnumerCheck(V, "Ábending. Bankanúmerið er ekki gilt.\nNúmerið er fjögra stafa.", 4)
}
function xjfCheckHofudbok(V) {
  return xjfLansnumerCheck(V, "Ábending. Númer höfuðbókar er ekki gilt.\nNúmerið er tveggja stafa.", 2)
}

function xjfLansnumerCheck(V, str, lengd) {
  if (V.value != "") {
    if ((!xjsValidNumberCheck(V.value)) || (V.value.length != lengd)) {
      alert(str)
      V.value = ""
      V.focus()
      return false
    }
  }
  return true
}

function ForEach(array, fn) {
  for (var n = 0; n < array.length; n++)
    fn(array[n]);
}
function SumArray(array) {
  var nSum = 0;
  ForEach(array, function(n) { nSum += xjfStr2Int(document.getElementById(n)); });
  return nSum;
}
function PMT(vextir, gjalddPerAr, ar, fjarh) {
  var PMT = 0
  if (!((vextir == 0) || (gjalddPerAr == 0) || (ar == 0) || (fjarh == 0))) {
    var r = vextir / gjalddPerAr / 100;
    var n = gjalddPerAr * ar;
    PMT = fjarh / ((1 - (1 / Math.pow((1 + r), n))) / r) * gjalddPerAr / 12;
    if (PMT < 0)
      PMT = 0;
  }
  return Math.round(PMT)
}
function PMT2(rate, nper, pv) {
  var PMT = 0
  if (!((rate == 0) || (nper == 0) || (pv == 0))) {
    PMT = (rate * pv) / (1 - Math.pow(1 + rate, -nper));
    if (PMT < 0)
      PMT = 0;
  }
  return Math.round(PMT)
}
function FV(rate, nper, pv) {
  var FV = 0;
  if (!((rate == 0) || (nper == 0) || (pv == 0))) {
    FV = pv * Math.pow(1 + rate, nper);
    if (FV < 0)
      FV = 0;
  }
  return FV
}
function JafnarAfborganir(rate, nper, pv) {
  var JA = 0
  if (!((rate == 0) || (nper == 0) || (pv == 0))) {
    JA = (pv / nper) + (pv * rate);
    if (JA < 0)
      JA = 0;
  }
  return Math.round(JA)
}
//##### FORM aðgerðir #####
// xjfCheckSkraningarnumerBifreidar(V)
// xjfCheckSimi(V)
// xjfCheckCPRFasteignarILS(V)
// xjfCheckCPRFasteignarRSK(V)
// xjfCheckTextarea(V)
// xjfCheckDate(V)
// xjfCheckAr(V)
// xjfCheckRangeAr(V)
// xjfCheckFramtidarAr(V)
// xjfCheckCPRPerson(V)
// xjfCheckCPRFelag(V)
// xjfCheckCPRBoth(V)
// xjfCheckNumber(V)
// xjfCheckKommutala(V,Fjoldi)
// xjfCheckReikningsnumer(V)
// xjfCheckVedskuldabref(V)
// xjfCheckSkuldabref(V)
// xjfCheckLan(V)

//##### REIKNI aðgerðir #####
// xjfStr2Int(V)
// xjfStr2Real(V) -- EKKI NOTAÐ
// xjsStr2Int(str)

//##### ALMENNAR aðgerðir #####
// xjOpenHelp(slod) -- EKKI NOTAÐ
// xjNowYear()

//##### GRUNN aðgerðir #####
// xjfNumberCheck(V,str)
// xjsValidNumberCheck(string)
// xjfKommutalaCheck(V,Fjoldi,str)
// xjsValidKommutalaCheck(strengur)
// xjsValidDateCheckFuture(strengur)
// xjsValidDateCheck(strengur)
// xjfCPRcheck(V,str,adferd)
// xjsCPRChecksumCheck(strengur)
// xjfBankaCheck(V,str)

//##### MASK aðgerðir #####
// xjsMaskOff(strengur)
// xjsMaskOn(strengur)

// ShowHide(eId,eOnOff)
// GetElement( nafn )
// xjfNaestiReitur(objEvent, V, U)
// xjfHaetta()
// xjsRandom(intInn)

//##### FORM aðgerðir #####

// Aðgerð: Athugar hvort skráningarnúmer bifreiðar sé gilt frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt skráningarnúmer bifreiðar eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckSkraningarnumerBifreidar(V) {
  if (V.value !== "") {
    var str, validStrengur, validStrengur2;
    str = V.value;
    str = str.toUpperCase();
    validStrengur = "AÁBCDÐEÉFGHIJKLMNOÓPQRSTUÚVWXYÝZÞÆÖ";
    validStrengur2 = "AÁBCDÐEÉFGHIJKLMNOÓPQRSTUÚVWXYÝZÞÆÖ0123456789";
    if ((validStrengur.indexOf(str.substr(0, 1)) === -1) ||
       (validStrengur.indexOf(str.substr(1, 1)) === -1) ||
       (validStrengur2.indexOf(str.substr(2, 1)) === -1) ||
       (str.substr(3, 1) < "0" || "9" < str.substr(3, 1)) ||
       (str.substr(4, 1) < "0" || "9" < str.substr(4, 1)) ||
       (str.length !== 5)) {
      alert("Ábending. Skráningarnúmer bifreiðar er ekki gilt.\nÍ þennan reit skal skrá fimm stafa númer sem samanstendur\naf tveimur bókstöfum og þremur tölustöfum\neða þremur bókstöfum og tveimur tölustöfum.")
      V.value = "";
      V.focus();
      return false;
    }
    else {
      V.value = str;
    }
  }
  return true;
}
// Aðgerð: Athugar hvort símanúmer sé gilt frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt símanúmer eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckSimi(V) {
  if (V.value != "") {
    if (xjsValidNumberCheck(V.value) && V.value.length == 7) {
      return true
    }
    else {
      alert("Símanúmer/faxnúmer/gsm er ekki rétt skrifað.\nNúmerið er sjö stafa og á að skrifa án bandstriks/bils.")
      V.value = ""
      V.focus()
      return false
    }
  }
  else {
    return true
  }
}
// Aðgerð: Athugar hvort fastanúmer eignar sé gilt frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt fastanúmer eignar eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckCPRFasteignarILS(V) {
  if (V.value != "") {
    if (xjsValidNumberCheck(V) && V.value.length == 7) {
      return true
    }
    else {
      alert("Fastanúmer eignar er ekki rétt skrifað.\nNúmerið er sjö stafa og á að skrifa án bandstriks.")
      V.value = ""
      V.focus()
      return false
    }
  }
  else {
    return true
  }
}
// Aðgerð: Athugar hvort fastanúmer eignar sé gilt frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt fastanúmer eignar eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckCPRFasteignarILS2(V) {
  if (V.value != "") {
    if (xjsValidNumberCheck(V) && (V.value.length == 7) && (V.value.substr(0, 1) == "2")) {
      return true
    }
    else {
      alert("Fastanúmer eignar er ekki rétt skrifað.\nNúmerið er sjö stafa og á að skrifa án bandstriks.\nFyrsti tölustafurinn á alltaf að byrja á '2'")
      V.value = ""
      V.focus()
      return false
    }
  }
  else {
    return true
  }
}
// Aðgerð: Athugar hvort fastanúmer eignar sé gilt frá formi (tekur tillit til sex stafa númer sumarbústaða)
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt fastanúmer eignar eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckCPRFasteignarRSK(V) {
  if (V.value != "") {
    if (xjsValidNumberCheck(V) && V.value.length == 7) {
      return true
    }
    else {
      alert("Fastanúmer eignar er ekki rétt skrifað.\nNúmerið er (oftast) sjö stafa og á að skrifa án bandstriks.\n\nEf um er að ræða 6 stafa fastanúmer, t.d. vegna sumarbústaðar,\nskal setja 0 fyrir framan númerið svo það verði sjö stafa.")
      V.value = ""
      V.focus()
      return false
    }
  }
  else {
    return true
  }
}
// Aðgerð: Athugar hvort memo svæði sé stærra en 2000 tákn og hreinsar það sem er framyfir
// Inntak: Tekur inn form
// Úttak:  EKKERT
function xjfCheckTextarea(V, staerd) {
  var Fjoldi = V.value.length
  if (Fjoldi > staerd) {
    V.value = V.value.substring(0, staerd)
    alert("Athugið að textinn má ekki vera lengri en " + staerd + " stafir.");
    V.focus()
  }
}
// Aðgerð: Athugar hvort dagsetning eignar sé gild frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gild dagsetning eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckDate(V) {
  if (V.value != "") {
    var str = "";
    for (var i = 0; i < V.value.length; i++) {
      if ((V.value.charAt(i) == ",") || (V.value.charAt(i) == "/")) {
        str += ".";
      }
      else {
        str += V.value.charAt(i);
      }
    }
    V.value = str;
  }
  if (!xjsValidDateCheckFuture(V.value)) {
    alert("Ábending. Dagsetningin er ekki gild.\nDagsetnigu skal skrifa á eftirfarandi hátt: 'd.m.áááá', t.d. '17.7.1966'")
    V.value = ""
    V.focus()
    return false
  }
  else {
    return true
  }
}
// Aðgerð: Athugar hvort ártal sé á bilinu 1901 til núgildandi árs
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt ártal eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckAr(V) {
  if (V.value != "") {
    var ar = xjNowYear()
    if (xjsValidNumberCheck(V) && V.value <= ar && V.value >= 1901) {
      return true
    }
    else {
      alert("Ábending. Ártalið er ekki gilt.")
      V.value = ""
      V.focus()
      return false
    }
  }
  else {
    return true
  }
}
// Aðgerð: Athugar hvort ártal sé á bilinu frá núgildandi ári eða þar eftir
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt ártal eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckFramtidarAr(V) {
  if (V.value != "") {
    var ar = xjNowYear()
    if (xjsValidNumberCheck(V) && V.value >= ar) {
      return true
    }
    else {
      alert("Ábending. Ártalið er ekki gilt.")
      V.value = ""
      V.focus()
      return false
    }
  }
  else {
    return true
  }
}
// Aðgerð: Athugar hvort ártal sé núgildandi ár eða sjö þau næst frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt ártal eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckRangeAr(V) {
  if (V.value != "") {
    var ar = xjNowYear()
    if (xjsValidNumberCheck(V) && V.value <= (ar + 7) && V.value >= ar) {
      return true
    }
    else {
      alert("Ábending. Ártalið er ekki gilt.")
      V.value = ""
      V.focus()
      return false
    }
  }
  else {
    return true
  }
}
// Aðgerð: Athugar hvort kennitala sé gild persónukennitala frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gild persónukennitala eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckCPRPerson(V) {
  return xjfCPRcheck(V, "Ábending. Kennitalan er ekki gild eða ekki rétt skrifuð.\nAthugið að kennitölur þarf að skrifa án bandstriks.", 1)
}
// Aðgerð: Athugar hvort kennitala sé gild fyrirtækjakennitala frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gild fyrirtækjakennitala eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckCPRFelag(V) {
  return xjfCPRcheck(V, "Ábending. Kennitala félags er ekki gild eða ekki rétt skrifuð.\nAthugið að kennitölur þarf að skrifa án bandstriks.", 2)
}
// Aðgerð: Athugar hvort kennitala sé gild kennitala frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gild kennitala eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckCPRBoth(V) {
  return xjfCPRcheck(V, "Ábending. Kennitalan er ekki gild eða ekki rétt skrifuð.\nAthugið að kennitölur þarf að skrifa án bandstriks.", 3)
}
// Aðgerð: Athugar hvort tala sé gild  frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gild tala eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckNumber(V) {
  return xjfNumberCheck(V, "Ábending. Talan er ekki gild.")
}
function xjfCheckNegativeNumber(V) {
  V.value = xjsMaskOff(V.value);
  if (V.value !== "") {
    if (V.value.charAt(0) == "-") {
      V.value = V.value.substring(1, V.value.length);
      if ((!xjsValidNumberCheck(V.value)) || (V.value.length === 0)) {
        alert("Ábending. Talan er ekki gild.");
        V.value = "";
        V.focus();
        return false;
      }
      else {
        V.value = "-" + xjsMaskOn(parseInt(V.value, 10) - 0);
        return true;
      }
    }
    else {
      return xjfNumberCheck(V, "Ábending. Talan er ekki gild.");
    }
  }
  return true;
}
// Aðgerð: Athugar hvort kommutala sé gild frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gild kommutala eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckKommutala(V, Fjoldi) {
  return xjfKommutalaCheck(V, Fjoldi, "Ábending. Talan er ekki gild.")
}
// Aðgerð: Athugar hvort reikningsnúmer sé gilt frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt reikningsnúmer eða tómt, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckReikningsnumer(V) {
  return xjfBankaCheck(V, "Ábending. Reikningsnúmerið er ekki gilt.")
}
// Aðgerð: Athugar hvort númer veðskuldabréfs sé gilt frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt númer veðskuldabréfs eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckVedskuldabref(V) {
  return xjfBankaCheck(V, "Ábending. Númer veðskuldabréfsins er ekki gilt.")
}
// Aðgerð: Athugar hvort númer skuldabréfs sé gilt frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt númer skuldabréfs eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckSkuldabref(V) {
  return xjfBankaCheck(V, "Ábending. Númer skuldabréfsins er ekki gilt.")
}
// Aðgerð: Athugar hvort númer láns sé gilt frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gilt númer láns eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCheckLan(V) {
  return xjfBankaCheck(V, "Ábending. Númer láns er ekki gilt.")
}

//##### REIKNI aðgerðir #####
// Aðgerð: Breytir streng í tölu, ef strengur er tómur þá er töluni 0 skilað
// Inntak: Tekur inn form
// Úttak:  Skilar tölu
function xjfStr2Int(V) {
  if (V.value != "") {
    return parseInt(xjsMaskOff(V.value), 10)
  }
  else {
    return 0
  }
}
// Aðgerð: Breytir streng í tölu, ef strengur er tómur þá er töluni 0 skilað
// Inntak: Tekur inn streng
// Úttak:  Skilar tölu
function xjsStr2Int(str) {
  if (str != "") {
    return parseInt(xjsMaskOff(str), 10)
  }
  else {
    return 0
  }
}

// Aðgerð: Breytir streng í kommutölu, ef strengur er tómur þá er töluni 0 skilað
// Inntak: Tekur inn form
// Úttak:  Skilar kommutölu
function xjfStr2Real(V) {
  var A
  var B
  if (V.value != "") {
    A = V.value.indexOf(",")
    if (A != -1) {
      B = V.value.substring(0, A) + "." + V.value.substring(A + 1, V.value.length)
      return parseFloat(B)
    }
    else {
      return parseInt(V.value, 10)
    }
  }
  else {
    return 0
  }
}

function xjsStr2Real(str) {
  var A
  var B
  if (str != "") {
    A = str.indexOf(",")
    if (A != -1) {
      B = str.substring(0, A) + "." + str.substring(A + 1, str.length)
      return parseFloat(B)
    }
    else {
      return parseInt(str, 10)
    }
  }
  else {
    return 0
  }
}



//##### ALMENNAR aðgerðir #####

// Aðgerð: Opnar hjálparglugga
// Inntak: Tekur inn streng sem innheldur URL
// Úttak:  Opnar glugga með URL-inu
function xjOpenHelp(slod) {
  var popupHelp = window.open(slod, "Ibudalanasjodur", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=650,height=600");
  //popupHelp.opener = self;
  popupHelp.focus();
}
// Aðgerð: Opnar hjálparglugga
// Inntak: Tekur inn streng sem innheldur URL
// Úttak:  Opnar glugga með URL-inu
function xjOpenMiniHelp(slod) {
  var popupHelp = window.open(slod, "Hjalp", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=290,height=230");
  popupHelp.opener = self;
  popupHelp.focus();
}
// Aðgerð: Opnar hjálparglugga
// Inntak: Tekur inn streng sem innheldur URL
// Úttak:  Opnar glugga með URL-inu
function xjOpenReiknivel(slod) {
  var popupHelp = window.open(slod, "Reiknivel", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=737,height=600");
  popupHelp.opener = self;
  popupHelp.focus();
}

// Aðgerð: Skilar núgildandi ártali
// Inntak: EKKERT
// Úttak:  Skilar ártali á forminu YYYY
function xjNowYear() {
  today = new Date()
  ar = today.getYear()
  if (ar < 1900) {
    ar = ar + 1900
  }
  return ar
}

//##### GRUNN aðgerðir #####

// Aðgerð: Athugar hvort númer sé gilt frá formi
// Inntak: Tekur inn form og villustreng
// Úttak:  Skilar true ef formið er eingöngu samsettur úr tölum eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfNumberCheck(V, str) {
  V.value = xjsMaskOff(V.value)
  if (!xjsValidNumberCheck(V.value)) {
    alert(str)
    V.value = ""
    V.focus()
    return false
  }
  else {
    if (V.value != "") {
      V.value = xjsMaskOn(parseInt(V.value, 10) - 0); //xjsMaskOn(V.value)
    }
    return true
  }
}
// Aðgerð: Athugar hvort númer sé gilt frá streng
// Inntak: Tekur inn streng
// Úttak:  Skilar true ef strengurinn er eingöngu samsettur úr tölum eða tómur, annars false
function xjsValidNumberCheck(string) {
  if (string != "") {
    var generic = "0123456789"
    for (var i = 0; i < string.length; i++) {
      var character = string.charAt(i)
      if (!(generic.indexOf(character) >= 0)) {
        return false
      }
    }
  }
  return true
}
// Aðgerð: Athugar hvort kommutala sé gilt frá formi
// Inntak: Tekur inn form, fjölda leyfilegra talna fyrir aftan kommu og villustreng
// Úttak:  Skilar true ef formið er gild kommutala eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfKommutalaCheck(V, Fjoldi, str) {
  var A
  if (!xjsValidKommutalaCheck(V.value)) {
    alert(str)
    V.value = ""
    V.focus()
    return false
  }
  else {
    A = V.value.indexOf(",")
    if (((V.value.length - A - 1) > Fjoldi) && (A >= 0)) {
      alert("Ekki má skrifa fleiri en " + Fjoldi + " aukastaf(i) fyrir aftan kommu")
      V.value = ""
      V.focus()
      return false
    }
    else {
      return true
    }
  }
}
// Aðgerð: Athugar hvort kommutala sé gild frá formi
// Inntak: Tekur inn form
// Úttak:  Skilar true ef formið er gild kommutala eða tómur, annars false
function xjsValidKommutalaCheck(strengur) {
  if (strengur != "") {
    var A = strengur.indexOf(",")
    var B = strengur.lastIndexOf(",")
    var str1, str2
    if (A == B && A != 0 && A != strengur.length - 1) {
      str1 = xjsMaskOff(strengur.substring(0, A))
      if (!(xjsValidNumberCheck(str1))) {
        return false
      }
      str2 = strengur.substring(A + 1, strengur.length)
      if (!(xjsValidNumberCheck(str2))) {
        return false
      }
      return true
    }
    else {
      return false
    }
  }
  return true
}
// Aðgerð: Athugar hvort dagsetning sé gild frá formi
// Inntak: Tekur inn streng
// Úttak:  Skilar true ef formið er gild dagsetning eða tómur, annars false
function xjsValidDateCheckFuture(strengur) {
  if (strengur != "") {
    var A = strengur.indexOf(".")
    var B = strengur.lastIndexOf(".")
    if ((A == -1) && (B == -1)) {
      A = strengur.indexOf("/")
      B = strengur.lastIndexOf("/")
    }
    var ar = xjNowYear()
    if (A != B && A != 0 && B != strengur.length - 1) {
      if (!(xjsValidNumberCheck(strengur.substring(0, A)))) {
        return false
      }
      if (!(xjsValidNumberCheck(strengur.substring(A + 1, B)))) {
        return false
      }
      if (!(xjsValidNumberCheck(strengur.substring(B + 1, strengur.length)))) {
        return false
      }
      var d = parseInt(strengur.substring(0, A), 10)
      var m = parseInt(strengur.substring(A + 1, B), 10)
      var y = parseInt(strengur.substring(B + 1, strengur.length), 10)
      if (y >= (xjNowYear() - 1) && y <= (xjNowYear() + 10)) {
        if (m <= 12 && m >= 1) {
          if ((m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) && d <= 31) {
            return true
          }
          else {
            if ((m == 4 || m == 6 || m == 9 || m == 11) && d <= 30) {
              return true
            }
            else {
              if (y % 4 == 0) {
                if (m == 2 && d <= 29) {
                  return true
                }
                else {
                  return false
                }
              }
              else {
                if (m == 2 && d <= 28) {
                  return true
                }
                else {
                  return false
                }
              }
            }
          }
        }
        else {
          return false
        }
      }
      else {
        return false
      }
    }
    else {
      return false
    }
  }
  return true
}
// Aðgerð: Athugar hvort dagsetning sé gild frá formi
// Inntak: Tekur inn streng
// Úttak:  Skilar true ef formið er gild dagsetning eða tómur, annars false
function xjsValidDateCheck(strengur) {
  if (strengur != "") {
    var A = strengur.indexOf(".")
    var B = strengur.lastIndexOf(".")
    if ((A == -1) && (B == -1)) {
      A = strengur.indexOf("/")
      B = strengur.lastIndexOf("/")
    }
    var ar = xjNowYear()
    if (A != B && A != 0 && B != strengur.length - 1) {
      if (!(xjsValidNumberCheck(strengur.substring(0, A)))) {
        return false
      }
      if (!(xjsValidNumberCheck(strengur.substring(A + 1, B)))) {
        return false
      }
      if (!(xjsValidNumberCheck(strengur.substring(B + 1, strengur.length)))) {
        return false
      }
      var d = parseInt(strengur.substring(0, A), 10)
      var m = parseInt(strengur.substring(A + 1, B), 10)
      var y = parseInt(strengur.substring(B + 1, strengur.length), 10)
      if (y <= xjNowYear() && y >= 1901) {
        if (m <= 12 && m >= 1) {
          if ((m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) && d <= 31) {
            return true
          }
          else {
            if ((m == 4 || m == 6 || m == 9 || m == 11) && d <= 30) {
              return true
            }
            else {
              if (y % 4 == 0) {
                if (m == 2 && d <= 29) {
                  return true
                }
                else {
                  return false
                }
              }
              else {
                if (m == 2 && d <= 28) {
                  return true
                }
                else {
                  return false
                }
              }
            }
          }
        }
        else {
          return false
        }
      }
      else {
        return false
      }
    }
    else {
      return false
    }
  }
  return true
}
// Aðgerð: Athugar hvort kennitala sé gild frá formi
// Inntak: Tekur inn form, villustreng og tegund kennitölu
// Úttak:  Skilar true ef formið er gild kennitala eða tómur, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfCPRcheck(V, str, adferd) {
  if (V.value != "") {
    if (xjsValidNumberCheck(V.value) && V.value.length == 10) {
      if (adferd == 1) {
        if (!(parseInt(V.value.charAt(0), 10) <= 3)) {
          alert(str);
          V.value = "";
          V.focus();
          return false;
        }
      }
      if (adferd == 2) {
        if (!(parseInt(V.value.charAt(0), 10) >= 4 && parseInt(V.value.charAt(0), 10) <= 7)) {
          alert(str);
          V.value = "";
          V.focus();
          return false;
        }
      }
      if (adferd == 3) {
        if (!(parseInt(V.value.charAt(0), 10) <= 7)) {
          alert(str);
          V.value = "";
          V.focus();
          return false;
        }
      }
      if (xjsCPRChecksumCheck(V.value)) {
        return true;
      }
      else {
        alert(str);
        V.value = "";
        V.focus();
        return false;
      }
    }
    else {
      alert(str);
      V.value = "";
      V.focus();
      return false;
    }
  }
  else {
    return true;
  }
}
// Aðgerð: Athugar hvort vartala kennitölu sé gild
// Inntak: Tekur inn streng,
// Úttak:  Skilar true ef formið er gild vartala eða tómur, annars false
function xjsCPRChecksumCheck(strengur) {
  var sum = 0
  var factors = new Array(3, 2, 7, 6, 5, 4, 3, 2, 0, 0)
  var checksum
  var remainder
  for (var i = 0; i <= 9; i++) {
    sum = sum + parseInt(strengur.charAt(i), 10) * factors[i]
  }
  remainder = sum % 11
  if (remainder == 0) {
    checksum = 0
  }
  else {
    checksum = 11 - remainder
  }
  if (checksum == parseInt(strengur.charAt(8), 10)) {
    if ((parseInt(strengur.charAt(9), 10) === 8) || (parseInt(strengur.charAt(9), 10) === 9) || (parseInt(strengur.charAt(9), 10) === 0)) {
      return true;
    }
    else {
      return false;
    }
  }
  else {
    return false
  }
}
// Aðgerð: Athugar hvort reikningsnúmer sé gilt frá formi
// Inntak: Tekur inn form og villustreng
// Úttak:  Skilar true ef formið er gilt reikningsnúmer eða tómt, annars false
//         Ef fals þá er formið hreinsað og villustrengur birtur
function xjfBankaCheck(V, str) {
  V.value = xjsMaskOff(V.value)
  if (!xjsValidNumberCheck(V.value)) {
    alert(str)
    V.value = ""
    V.focus()
    return false
  }
  else {
    return true
  }
}

//##### MASK aðgerðir #####

// Aðgerð: Tekur inn streng og tekur mask af
// Inntak: Tekur inn streng,
// Úttak:  Skilar streng án mask
function xjsMaskOff(strengur) {
  number2 = "";
  for (i = 0; i < strengur.length; i++) {
    if (strengur.charAt(i) == ".") {
      number2 += "";
    }
    else {
      number2 += strengur.charAt(i);
    }
  }
  return number2;
}
// Aðgerð: Tekur inn streng eða númer og setur mask á
// Inntak: Tekur inn streng,
// Úttak:  Skilar streng með mask
function xjsMaskOn(strengur) {
  number = '' + xjsMaskOff(strengur + '');
  if (number.length > 3) {
    var mod = number.length % 3;
    var output = (mod > 0 ? (number.substring(0, mod)) : '');
    for (i = 0; i < Math.floor(number.length / 3); i++) {
      if ((mod == 0) && (i == 0)) {
        output += number.substring(0, 3);
      }
      else {
        if (output == "-") {
          output += number.substring(mod + 3 * i, mod + 3 * i + 3);
        }
        else {
          output += '.' + number.substring(mod + 3 * i, mod + 3 * i + 3);
        }
      }
    }
    return (output);
  }
  else
    return number;
}

function ShowHide(eId, eOnOff) {
  if (GetElement(eId)) {
    d = (eOnOff == 1) ? "block" : "none";
    e = GetElement(eId);
    e.style.display = d;
  }
}

function GetElement(nafn) {
  var obj;
  if (!nafn) {
    return false;
  }
  if (document.getElementById) {
    obj = document.getElementById(nafn);
  }
  else if (document.all) {
    obj = document.all(nafn);
  }
  else if (document.layers) {
    obj = document.layers[nafn];
  }
  if (obj)
    return obj;
  else
    return false;
}

function xjfNaestiReitur(objEvent, V, U) {
  if (objEvent.keyCode > 31) {
    if (GetElement(U)) {
      var intMaxNumber = V.maxLength
      if (V.value.length >= intMaxNumber) {
        GetElement(U).focus();
        return true;
      }
    }
  }
  return false;
}

function xjfHaetta() {
  window.close()
}
function xjsRandom(intInn) {
  var generic = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  var outRan = ""
  for (var i = 0; i < intInn; i++) {
    outRan += generic.charAt(Math.round(61 * Math.random()));
  }
  return outRan;
}
function CheckNotNumericKeyInfo(e) {
  e = e || window.event;
  ch = e.which || e.keyCode;
  if (ch != null) {
    if ((ch >= 48 && ch <= 57)
       || ch == 0 || ch == 8
       || ch == 13) return false;
  }
  return true;
} 

