From 924b4f702466fca84cd6381c0c30dae314e52d32 Mon Sep 17 00:00:00 2001
From: mamyt
Date: Mon, 14 Oct 2024 08:30:07 +0200
Subject: [PATCH] Updates to the code, adding troparia and kontakia, and
improving the creation of Prime
---
Ponomar/Bible.java | 157 ++++
Ponomar/Commemoration.java | 1 +
Ponomar/Commemoration1.java | 1 +
Ponomar/Day.java | 6 +-
Ponomar/Days.java | 3 +-
Ponomar/DivineLiturgy1.java | 24 +-
Ponomar/EditCommemoration.java | 791 ++++++++++++++++++
Ponomar/EditPrayers.java | 645 ++++++++++++++
Ponomar/FindReadingList.java | 413 +++++++++
Ponomar/GetID.java | 92 ++
Ponomar/HandlerXML.java | 217 +++++
Ponomar/Helpers.java | 2 +
Ponomar/IconDisplay.java | 4 +-
Ponomar/JDate2.java | 775 +++++++++++++++++
Ponomar/LanguagePack.java | 2 +
Ponomar/Main.java | 129 ++-
Ponomar/Matins.java | 50 +-
Ponomar/MenuFiles.java | 22 +-
Ponomar/NinthHour.java | 4 +-
Ponomar/Options.java | 113 ++-
Ponomar/Paschalion.java | 292 ++++++-
Ponomar/Primes.java | 300 ++++++-
Ponomar/RoyalHours.java | 6 +-
Ponomar/Search.java | 294 ++++++-
Ponomar/Service.java | 89 +-
Ponomar/ServiceInfo.java | 11 +-
Ponomar/SixthHour.java | 4 +-
Ponomar/Sunrise.java | 12 +-
Ponomar/ThirdHour.java | 4 +-
Ponomar/languages/cu/bible/elis/Amos.text | 2 +-
.../languages/cu/bible/elis/III_Esdra.text | 1 +
Ponomar/languages/cu/bible/elis/Jn.text | 2 +-
Ponomar/languages/cu/bible/elis/Psalm.text | 84 +-
.../cu/ru/xml/Commands/LanguagePacks.xml | 65 +-
.../cu/ru/xml/Services/Var/PKont1.xml | 2 +-
.../cu/ru/xml/Services/Var/PTrop1.xml | 5 +
.../cu/ru/xml/Services/Var/PTrop2.xml | 5 +
Ponomar/languages/cu/ru/xml/lives/0910702.xml | 7 +
Ponomar/languages/cu/ru/xml/lives/1238.xml | 4 +-
Ponomar/languages/cu/ru/xml/lives/123801.xml | 1 +
Ponomar/languages/cu/ru/xml/lives/123803.xml | 4 +
Ponomar/languages/cu/ru/xml/lives/123805.xml | 6 +
Ponomar/languages/cu/ru/xml/lives/1625.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/184301.xml | 8 +-
Ponomar/languages/cu/ru/xml/lives/4444.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/496.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/508.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/510.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/523.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/604.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/614.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/621.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/90401.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/90402.xml | 3 +
Ponomar/languages/cu/ru/xml/lives/90407.xml | 3 +
Ponomar/languages/cu/ru/xml/lives/9041.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/9042.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/9043.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/90431.xml | 3 +
Ponomar/languages/cu/ru/xml/lives/9044.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/9045.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/9046.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/9047.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/9048.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/9064.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/906401.xml | 3 +
Ponomar/languages/cu/ru/xml/lives/9217.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/9274.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/9281.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/9288.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/9295.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/9302.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/9309.xml | 2 +-
Ponomar/languages/cu/ru/xml/lives/9817.xml | 3 +-
Ponomar/languages/cu/ru/xml/lives/9819.xml | 3 +-
Ponomar/languages/cu/xml/01/29.xml | 1 +
Ponomar/languages/cu/xml/02/23.xml | 5 +-
Ponomar/languages/cu/xml/02/24.xml | 13 +-
Ponomar/languages/cu/xml/02/25.xml | 1 +
Ponomar/languages/cu/xml/02/26.xml | 1 +
Ponomar/languages/cu/xml/02/28.xml | 9 +-
Ponomar/languages/cu/xml/03/06.xml | 1 +
Ponomar/languages/cu/xml/03/07.xml | 4 +-
Ponomar/languages/cu/xml/03/08.xml | 3 +-
Ponomar/languages/cu/xml/03/09.xml | 9 +-
Ponomar/languages/cu/xml/03/10.xml | 7 +-
Ponomar/languages/cu/xml/03/11.xml | 6 +-
Ponomar/languages/cu/xml/03/12.xml | 6 +-
Ponomar/languages/cu/xml/03/13.xml | 4 +-
Ponomar/languages/cu/xml/05/11.xml | 1 +
Ponomar/languages/cu/xml/08/01.xml | 1 +
Ponomar/languages/cu/xml/11/15.xml | 1 +
.../cu/xml/Commands/LanguagePacks.xml | 57 +-
Ponomar/languages/cu/xml/Commands/Podobni.xml | 2 +-
Ponomar/languages/cu/xml/Commands/Times.xml | 14 +-
.../cu/xml/Services/Command/AfterEach.xml | 4 +-
.../languages/cu/xml/Services/Command/Bow.xml | 4 +-
.../languages/cu/xml/Services/Command/LT1.xml | 4 +-
.../cu/xml/Services/Command/Prostration.xml | 4 +-
.../languages/cu/xml/Services/Command/S1.xml | 4 +-
.../languages/cu/xml/Services/Command/S2.xml | 4 +-
.../cu/xml/Services/Command/Tone1.xml | 4 +-
.../cu/xml/Services/Command/Tone2.xml | 4 +-
.../cu/xml/Services/Command/Tone3.xml | 4 +-
.../cu/xml/Services/Command/Tone4.xml | 4 +-
.../cu/xml/Services/Command/Tone5.xml | 4 +-
.../cu/xml/Services/Command/Tone6.xml | 4 +-
.../cu/xml/Services/Command/Tone7.xml | 4 +-
.../cu/xml/Services/Command/Tone8.xml | 4 +-
.../Services/CommonPrayers/AllHolyTrinity.xml | 4 +-
.../xml/Services/CommonPrayers/Alleluia.xml | 4 +-
.../Services/CommonPrayers/AlleluiaGlory.xml | 4 +-
.../cu/xml/Services/CommonPrayers/Amen.xml | 4 +-
.../xml/Services/CommonPrayers/AndSpirit.xml | 4 +-
.../cu/xml/Services/CommonPrayers/BeatEnd.xml | 7 +-
.../Services/CommonPrayers/BeatLitIntro.xml | 7 +-
.../CommonPrayers/BlessedIsOurGod.xml | 4 +-
.../Services/CommonPrayers/BlessedName.xml | 7 +-
.../Services/CommonPrayers/BlessingPHours.xml | 6 +-
.../Services/CommonPrayers/BlessingPrime.xml | 6 +-
.../cu/xml/Services/CommonPrayers/BothNow.xml | 4 +-
.../cu/xml/Services/CommonPrayers/C.xml | 4 +-
.../Services/CommonPrayers/ChampionLeader.xml | 9 +-
.../Services/CommonPrayers/ChristIsRisenR.xml | 4 +-
.../xml/Services/CommonPrayers/CleanseMe.xml | 6 +-
.../Services/CommonPrayers/ComeWorship1.xml | 4 +-
.../Services/CommonPrayers/ComeWorship2.xml | 4 +-
.../Services/CommonPrayers/ComeWorship3.xml | 6 +-
.../cu/xml/Services/CommonPrayers/D.xml | 4 +-
.../xml/Services/CommonPrayers/Dostojnoje.xml | 6 +-
.../Services/CommonPrayers/EasterEnding.xml | 4 +-
.../Services/CommonPrayers/EasterHypakoe8.xml | 11 +-
.../CommonPrayers/EasterKontakion8.xml | 9 +-
.../Services/CommonPrayers/EasterTropar81.xml | 8 +-
.../Services/CommonPrayers/EasterTropar82.xml | 8 +-
.../Services/CommonPrayers/EasterTropar83.xml | 8 +-
.../cu/xml/Services/CommonPrayers/Ending.xml | 6 +-
.../Services/CommonPrayers/ForgiveReader.xml | 12 +-
.../xml/Services/CommonPrayers/ForgiveTyp.xml | 11 +-
.../Services/CommonPrayers/GloryPriest1.xml | 6 +-
.../Services/CommonPrayers/GloryToLord.xml | 4 +-
.../CommonPrayers/GloryToTheFather1.xml | 4 +-
.../CommonPrayers/GloryToTheFather2.xml | 4 +-
.../Services/CommonPrayers/GloryToThee.xml | 4 +-
.../Services/CommonPrayers/GospelIntro1.xml | 4 +-
.../Services/CommonPrayers/HavingBeheld.xml | 11 +-
.../Services/CommonPrayers/HeavenlyKing.xml | 4 +-
.../CommonPrayers/InvocationFather.xml | 4 +-
.../CommonPrayers/InvocationFather2.xml | 4 +-
.../CommonPrayers/InvocationMaster2.xml | 4 +-
.../Services/CommonPrayers/JesusPrayer.xml | 6 +-
.../Services/CommonPrayers/KONTAKION/FRI2.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/FRI3.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/FRI4.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/FRI5.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/FRI6.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/FRI7.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/FRI8.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/MON1.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/MON2.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/MON3.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/MON4.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/MON5.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/MON6.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/MON7.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/MON8.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/MTTL.xml | 9 +-
.../CommonPrayers/KONTAKION/MTTL6.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/SAT1.xml | 7 +-
.../Services/CommonPrayers/KONTAKION/SAT2.xml | 7 +-
.../Services/CommonPrayers/KONTAKION/SAT3.xml | 7 +-
.../Services/CommonPrayers/KONTAKION/SAT4.xml | 7 +-
.../Services/CommonPrayers/KONTAKION/SAT5.xml | 7 +-
.../Services/CommonPrayers/KONTAKION/SAT6.xml | 7 +-
.../Services/CommonPrayers/KONTAKION/SAT7.xml | 7 +-
.../Services/CommonPrayers/KONTAKION/SAT8.xml | 7 +-
.../Services/CommonPrayers/KONTAKION/SUN1.xml | 9 +-
.../Services/CommonPrayers/KONTAKION/SUN2.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/SUN3.xml | 8 +-
.../Services/CommonPrayers/KONTAKION/SUN4.xml | 2 +-
.../Services/CommonPrayers/KONTAKION/SUN5.xml | 9 +-
.../Services/CommonPrayers/KONTAKION/SUN6.xml | 9 +-
.../Services/CommonPrayers/KONTAKION/SUN7.xml | 9 +-
.../Services/CommonPrayers/KONTAKION/SUN8.xml | 9 +-
.../CommonPrayers/KONTAKION/THUR1.xml | 9 +-
.../CommonPrayers/KONTAKION/THUR2.xml | 9 +-
.../CommonPrayers/KONTAKION/THUR3.xml | 9 +-
.../CommonPrayers/KONTAKION/THUR4.xml | 9 +-
.../CommonPrayers/KONTAKION/THUR5.xml | 9 +-
.../CommonPrayers/KONTAKION/THUR6.xml | 9 +-
.../CommonPrayers/KONTAKION/THUR7.xml | 9 +-
.../CommonPrayers/KONTAKION/THUR8.xml | 9 +-
.../Services/CommonPrayers/KONTAKION/WED1.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/WED2.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/WED3.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/WED4.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/WED5.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/WED7.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/WED8.xml | 10 +-
.../Services/CommonPrayers/KONTAKION/WFL.xml | 7 +-
.../Services/CommonPrayers/KONTAKION/WFL6.xml | 11 +-
.../Services/CommonPrayers/LentenKontak31.xml | 9 +-
.../Services/CommonPrayers/LentenKontak32.xml | 14 +-
.../Services/CommonPrayers/LentenKontak33.xml | 10 +-
.../Services/CommonPrayers/LentenKontak61.xml | 9 +-
.../Services/CommonPrayers/LentenKontak62.xml | 12 +-
.../Services/CommonPrayers/LentenKontak91.xml | 10 +-
.../Services/CommonPrayers/LentenKontak92.xml | 10 +-
.../Services/CommonPrayers/LentenKontak93.xml | 10 +-
.../Services/CommonPrayers/LentenTropar1.xml | 4 +-
.../Services/CommonPrayers/LentenTropar2.xml | 4 +-
.../Services/CommonPrayers/LentenTropar3.xml | 4 +-
.../Services/CommonPrayers/LentenTropar31.xml | 9 +-
.../Services/CommonPrayers/LentenTropar32.xml | 7 +-
.../Services/CommonPrayers/LentenTropar33.xml | 7 +-
.../Services/CommonPrayers/LentenTropar4.xml | 4 +-
.../Services/CommonPrayers/LentenTropar61.xml | 9 +-
.../Services/CommonPrayers/LentenTropar62.xml | 7 +-
.../Services/CommonPrayers/LentenTropar63.xml | 7 +-
.../Services/CommonPrayers/LentenTropar91.xml | 8 +-
.../Services/CommonPrayers/LentenTropar92.xml | 7 +-
.../Services/CommonPrayers/LentenTropar93.xml | 7 +-
.../Services/CommonPrayers/LetAttentive.xml | 6 +-
.../Services/CommonPrayers/LordHaveMercy.xml | 6 +-
.../CommonPrayers/LordHaveMercyOnce.xml | 6 +-
.../CommonPrayers/LordHaveMercyThrice.xml | 4 +-
.../Services/CommonPrayers/MoreHonorable.xml | 4 +-
.../Services/CommonPrayers/NiceneCreed.xml | 29 +-
.../Services/CommonPrayers/OnlyBegotten.xml | 11 +-
.../xml/Services/CommonPrayers/OurFather.xml | 4 +-
.../CommonPrayers/OurFatherDoxology.xml | 4 +-
.../cu/xml/Services/CommonPrayers/P.xml | 4 +-
.../Services/CommonPrayers/PeaceWithAll.xml | 4 +-
.../Services/CommonPrayers/PeaceWithYou.xml | 4 +-
.../Services/CommonPrayers/PrayerEphraim1.xml | 4 +-
.../Services/CommonPrayers/PrayerEphraim2.xml | 4 +-
.../Services/CommonPrayers/PrayerEphraim3.xml | 4 +-
.../Services/CommonPrayers/PrayerFirst.xml | 10 +-
.../xml/Services/CommonPrayers/PrayerNone.xml | 30 +-
.../Services/CommonPrayers/PrayerNone1.xml | 10 +-
.../Services/CommonPrayers/PrayerOfHours.xml | 16 +-
.../xml/Services/CommonPrayers/PrayerSext.xml | 26 +-
.../Services/CommonPrayers/PrayerSext1.xml | 10 +-
.../Services/CommonPrayers/PrayerTerce.xml | 11 +-
.../Services/CommonPrayers/PrayerTerce1.xml | 8 +-
.../xml/Services/CommonPrayers/ProkTyp1.xml | 8 +-
.../xml/Services/CommonPrayers/ProkTyp2.xml | 10 +-
.../Services/CommonPrayers/ProkimenHT1.xml | 5 +
.../Services/CommonPrayers/ProkimenHT2.xml | 5 +
.../cu/xml/Services/CommonPrayers/R.xml | 4 +-
.../Services/CommonPrayers/RememberLord.xml | 7 +-
.../Services/CommonPrayers/RememberMaster.xml | 7 +-
.../Services/CommonPrayers/RememberSaint.xml | 7 +-
.../cu/xml/Services/CommonPrayers/SR.xml | 4 +-
.../Services/CommonPrayers/SmallEnding.xml | 4 +-
.../Services/CommonPrayers/SmallEndingWP.xml | 6 +-
.../xml/Services/CommonPrayers/StychHT1.xml | 6 +
.../xml/Services/CommonPrayers/StychHT2.xml | 5 +
.../Services/CommonPrayers/SufferingLord.xml | 4 +-
.../Services/CommonPrayers/TROPARION/FRI1.xml | 8 +-
.../Services/CommonPrayers/TROPARION/FRI2.xml | 8 +-
.../Services/CommonPrayers/TROPARION/FRI3.xml | 8 +-
.../Services/CommonPrayers/TROPARION/FRI4.xml | 8 +-
.../Services/CommonPrayers/TROPARION/FRI5.xml | 8 +-
.../Services/CommonPrayers/TROPARION/FRI6.xml | 8 +-
.../Services/CommonPrayers/TROPARION/FRI7.xml | 8 +-
.../Services/CommonPrayers/TROPARION/FRI8.xml | 8 +-
.../Services/CommonPrayers/TROPARION/MON1.xml | 10 +-
.../Services/CommonPrayers/TROPARION/MON2.xml | 10 +-
.../Services/CommonPrayers/TROPARION/MON3.xml | 10 +-
.../Services/CommonPrayers/TROPARION/MON4.xml | 10 +-
.../Services/CommonPrayers/TROPARION/MON5.xml | 10 +-
.../Services/CommonPrayers/TROPARION/MON6.xml | 10 +-
.../Services/CommonPrayers/TROPARION/MON7.xml | 10 +-
.../Services/CommonPrayers/TROPARION/MON8.xml | 10 +-
.../Services/CommonPrayers/TROPARION/SAT1.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SAT2.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SAT3.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SAT4.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SAT5.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SAT6.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SAT7.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SAT8.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SUN1.xml | 10 +-
.../Services/CommonPrayers/TROPARION/SUN2.xml | 9 +-
.../Services/CommonPrayers/TROPARION/SUN3.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SUN4.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SUN5.xml | 8 +-
.../Services/CommonPrayers/TROPARION/SUN6.xml | 9 +-
.../Services/CommonPrayers/TROPARION/SUN7.xml | 9 +-
.../Services/CommonPrayers/TROPARION/SUN8.xml | 8 +-
.../CommonPrayers/TROPARION/THUR1.xml | 7 +-
.../CommonPrayers/TROPARION/THUR2.xml | 7 +-
.../CommonPrayers/TROPARION/THUR3.xml | 7 +-
.../CommonPrayers/TROPARION/THUR4.xml | 7 +-
.../CommonPrayers/TROPARION/THUR5.xml | 7 +-
.../CommonPrayers/TROPARION/THUR6.xml | 7 +-
.../CommonPrayers/TROPARION/THUR7.xml | 7 +-
.../CommonPrayers/TROPARION/THUR8.xml | 7 +-
.../CommonPrayers/TROPARION/TUES1.xml | 11 +-
.../CommonPrayers/TROPARION/TUES2.xml | 11 +-
.../CommonPrayers/TROPARION/TUES3.xml | 11 +-
.../CommonPrayers/TROPARION/TUES4.xml | 11 +-
.../CommonPrayers/TROPARION/TUES5.xml | 11 +-
.../CommonPrayers/TROPARION/TUES6.xml | 11 +-
.../CommonPrayers/TROPARION/TUES7.xml | 11 +-
.../CommonPrayers/TROPARION/TUES8.xml | 11 +-
.../Services/CommonPrayers/TROPARION/WED1.xml | 8 +-
.../Services/CommonPrayers/TROPARION/WED2.xml | 8 +-
.../Services/CommonPrayers/TROPARION/WED3.xml | 8 +-
.../Services/CommonPrayers/TROPARION/WED4.xml | 8 +-
.../Services/CommonPrayers/TROPARION/WED5.xml | 8 +-
.../Services/CommonPrayers/TROPARION/WED6.xml | 8 +-
.../Services/CommonPrayers/TROPARION/WED7.xml | 8 +-
.../Services/CommonPrayers/TROPARION/WED8.xml | 8 +-
.../xml/Services/CommonPrayers/Template.xml | 4 +-
.../Services/CommonPrayers/TheotokionNone.xml | 11 +-
.../Services/CommonPrayers/TheotokionPr1.xml | 4 +-
.../Services/CommonPrayers/TheotokionPr2.xml | 7 +-
.../Services/CommonPrayers/TheotokionPr3.xml | 7 +-
.../Services/CommonPrayers/TheotokionPr4.xml | 7 +-
.../CommonPrayers/TheotokionPrimes.xml | 7 +-
.../CommonPrayers/TheotokionTerce.xml | 8 +-
.../xml/Services/CommonPrayers/ThriceHoly.xml | 4 +-
.../Services/CommonPrayers/ThroughPrayers.xml | 4 +-
.../Services/CommonPrayers/TroparProph3.xml | 6 +
.../cu/xml/Services/CommonPrayers/Wisdom.xml | 4 +-
.../CommonPrayers/WisdomAttentive.xml | 6 +-
.../languages/cu/xml/Services/Text/Ninth1.xml | 4 +-
.../cu/xml/Services/Text/NinthHour.xml | 4 +-
.../cu/xml/Services/Text/NinthSource.xml | 6 +-
.../xml/Services/Text/PaschalHoursComment.xml | 8 +-
.../cu/xml/Services/Text/PaschalHoursH.xml | 4 +-
.../xml/Services/Text/PaschalHoursSource.xml | 6 +-
.../cu/xml/Services/Text/PaschalHoursV.xml | 4 +-
.../cu/xml/Services/Text/PrimeSource.xml | 6 +-
.../cu/xml/Services/Text/Primes1.xml | 4 +-
.../cu/xml/Services/Text/PrimesV.xml | 4 +-
.../cu/xml/Services/Text/RoyalHours.xml | 4 +-
.../cu/xml/Services/Text/RoyalHours1.xml | 4 +-
.../languages/cu/xml/Services/Text/Sixth1.xml | 4 +-
.../cu/xml/Services/Text/SixthHour.xml | 4 +-
.../cu/xml/Services/Text/SixthSource.xml | 6 +-
.../languages/cu/xml/Services/Text/Third1.xml | 4 +-
.../cu/xml/Services/Text/ThirdHour.xml | 4 +-
.../cu/xml/Services/Text/ThirdSource.xml | 6 +-
.../languages/cu/xml/Services/Text/Typic.xml | 4 +-
.../languages/cu/xml/Services/Var/PKont1.xml | 2 +-
.../languages/cu/xml/Services/Var/PTrop1.xml | 14 +-
.../languages/cu/xml/Services/Var/PTrop2.xml | 2 +-
.../languages/cu/xml/Services/Var/PTrop31.xml | 5 +
Ponomar/languages/cu/xml/lives/010101.xml | 16 +-
Ponomar/languages/cu/xml/lives/010201.xml | 6 +-
Ponomar/languages/cu/xml/lives/011100.xml | 3 +
Ponomar/languages/cu/xml/lives/012910.xml | 4 +
Ponomar/languages/cu/xml/lives/020403.xml | 4 +-
Ponomar/languages/cu/xml/lives/032400.xml | 4 +-
Ponomar/languages/cu/xml/lives/051102.xml | 4 +
Ponomar/languages/cu/xml/lives/07050000.xml | 4 +-
Ponomar/languages/cu/xml/lives/07140100.xml | 4 +-
Ponomar/languages/cu/xml/lives/07310000.xml | 5 +-
Ponomar/languages/cu/xml/lives/08010299.xml | 4 +
Ponomar/languages/cu/xml/lives/08050000.xml | 4 +-
Ponomar/languages/cu/xml/lives/09001.xml | 10 +-
Ponomar/languages/cu/xml/lives/09006.xml | 4 +-
Ponomar/languages/cu/xml/lives/09010300.xml | 4 +-
Ponomar/languages/cu/xml/lives/09011.xml | 8 +-
Ponomar/languages/cu/xml/lives/09013.xml | 12 +-
Ponomar/languages/cu/xml/lives/09014.xml | 10 +-
Ponomar/languages/cu/xml/lives/09017.xml | 8 +-
Ponomar/languages/cu/xml/lives/090171.xml | 8 +-
Ponomar/languages/cu/xml/lives/09022.xml | 10 +-
Ponomar/languages/cu/xml/lives/09030.xml | 14 +-
Ponomar/languages/cu/xml/lives/09031.xml | 14 +-
Ponomar/languages/cu/xml/lives/09033.xml | 12 +-
Ponomar/languages/cu/xml/lives/09107.xml | 12 +-
Ponomar/languages/cu/xml/lives/0910702.xml | 4 +
Ponomar/languages/cu/xml/lives/09216.xml | 4 +-
Ponomar/languages/cu/xml/lives/09253.xml | 4 +-
Ponomar/languages/cu/xml/lives/09262.xml | 4 +-
Ponomar/languages/cu/xml/lives/09279.xml | 10 +-
Ponomar/languages/cu/xml/lives/09288.xml | 4 +-
Ponomar/languages/cu/xml/lives/09294.xml | 4 +-
Ponomar/languages/cu/xml/lives/09365.xml | 4 +-
Ponomar/languages/cu/xml/lives/09392.xml | 4 +-
Ponomar/languages/cu/xml/lives/09426.xml | 4 +-
Ponomar/languages/cu/xml/lives/09785.xml | 4 +-
Ponomar/languages/cu/xml/lives/09946.xml | 6 +-
Ponomar/languages/cu/xml/lives/09951.xml | 4 +-
Ponomar/languages/cu/xml/lives/1003.xml | 4 +-
Ponomar/languages/cu/xml/lives/1005.xml | 8 +-
Ponomar/languages/cu/xml/lives/1006.xml | 8 +-
Ponomar/languages/cu/xml/lives/1007.xml | 4 +-
Ponomar/languages/cu/xml/lives/100702.xml | 4 +-
Ponomar/languages/cu/xml/lives/100704.xml | 4 +-
Ponomar/languages/cu/xml/lives/101102.xml | 4 +-
Ponomar/languages/cu/xml/lives/1022.xml | 10 +-
Ponomar/languages/cu/xml/lives/10260000.xml | 4 +-
Ponomar/languages/cu/xml/lives/10270000.xml | 4 +-
Ponomar/languages/cu/xml/lives/10280000.xml | 4 +-
Ponomar/languages/cu/xml/lives/1029.xml | 8 +-
Ponomar/languages/cu/xml/lives/1035.xml | 8 +-
Ponomar/languages/cu/xml/lives/103701.xml | 8 +-
Ponomar/languages/cu/xml/lives/1039.xml | 4 +-
Ponomar/languages/cu/xml/lives/1043.xml | 4 +-
Ponomar/languages/cu/xml/lives/1047.xml | 4 +-
Ponomar/languages/cu/xml/lives/104701.xml | 4 +-
Ponomar/languages/cu/xml/lives/105.xml | 4 +-
Ponomar/languages/cu/xml/lives/1058.xml | 4 +-
Ponomar/languages/cu/xml/lives/1062.xml | 8 +-
Ponomar/languages/cu/xml/lives/1064.xml | 4 +-
Ponomar/languages/cu/xml/lives/1070.xml | 8 +-
Ponomar/languages/cu/xml/lives/1093.xml | 2 +-
Ponomar/languages/cu/xml/lives/1094.xml | 4 +-
Ponomar/languages/cu/xml/lives/1100.xml | 4 +-
Ponomar/languages/cu/xml/lives/1101.xml | 14 +-
Ponomar/languages/cu/xml/lives/110801.xml | 4 +-
Ponomar/languages/cu/xml/lives/1109.xml | 8 +-
Ponomar/languages/cu/xml/lives/11100000.xml | 4 +-
Ponomar/languages/cu/xml/lives/11150299.xml | 4 +
Ponomar/languages/cu/xml/lives/11270000.xml | 4 +-
Ponomar/languages/cu/xml/lives/1130.xml | 4 +-
Ponomar/languages/cu/xml/lives/1135.xml | 4 +-
Ponomar/languages/cu/xml/lives/1138.xml | 2 +-
Ponomar/languages/cu/xml/lives/1141.xml | 8 +-
Ponomar/languages/cu/xml/lives/1148.xml | 10 +-
Ponomar/languages/cu/xml/lives/1156.xml | 8 +-
Ponomar/languages/cu/xml/lives/1157.xml | 4 +-
Ponomar/languages/cu/xml/lives/1159.xml | 4 +-
Ponomar/languages/cu/xml/lives/1169.xml | 4 +-
Ponomar/languages/cu/xml/lives/1182.xml | 8 +-
Ponomar/languages/cu/xml/lives/12030000.xml | 4 +-
Ponomar/languages/cu/xml/lives/1208.xml | 8 +-
Ponomar/languages/cu/xml/lives/1211.xml | 8 +-
Ponomar/languages/cu/xml/lives/12130000.xml | 4 +-
Ponomar/languages/cu/xml/lives/1219.xml | 12 +-
Ponomar/languages/cu/xml/lives/1220.xml | 4 +-
Ponomar/languages/cu/xml/lives/1221.xml | 10 +-
Ponomar/languages/cu/xml/lives/1224.xml | 10 +-
Ponomar/languages/cu/xml/lives/123101.xml | 4 +-
Ponomar/languages/cu/xml/lives/1232.xml | 4 +-
Ponomar/languages/cu/xml/lives/1233.xml | 8 +-
Ponomar/languages/cu/xml/lives/1238.xml | 10 +-
Ponomar/languages/cu/xml/lives/123801.xml | 5 +-
Ponomar/languages/cu/xml/lives/123803.xml | 3 +
Ponomar/languages/cu/xml/lives/123805.xml | 6 +
Ponomar/languages/cu/xml/lives/1246.xml | 8 +-
Ponomar/languages/cu/xml/lives/1247.xml | 8 +-
Ponomar/languages/cu/xml/lives/1256.xml | 4 +-
Ponomar/languages/cu/xml/lives/1261.xml | 4 +-
Ponomar/languages/cu/xml/lives/1270.xml | 8 +-
Ponomar/languages/cu/xml/lives/1271.xml | 4 +-
Ponomar/languages/cu/xml/lives/1273.xml | 8 +-
Ponomar/languages/cu/xml/lives/1287.xml | 10 +-
Ponomar/languages/cu/xml/lives/1289.xml | 4 +-
Ponomar/languages/cu/xml/lives/1294.xml | 8 +-
Ponomar/languages/cu/xml/lives/1296.xml | 4 +-
Ponomar/languages/cu/xml/lives/1298.xml | 8 +-
Ponomar/languages/cu/xml/lives/1301.xml | 8 +-
Ponomar/languages/cu/xml/lives/1311.xml | 4 +-
Ponomar/languages/cu/xml/lives/1314.xml | 4 +-
Ponomar/languages/cu/xml/lives/1316.xml | 4 +-
Ponomar/languages/cu/xml/lives/1322.xml | 10 +-
Ponomar/languages/cu/xml/lives/1331.xml | 10 +-
Ponomar/languages/cu/xml/lives/1333.xml | 8 +-
Ponomar/languages/cu/xml/lives/1335.xml | 8 +-
Ponomar/languages/cu/xml/lives/134.xml | 4 +-
Ponomar/languages/cu/xml/lives/1346.xml | 10 +-
Ponomar/languages/cu/xml/lives/1347.xml | 4 +-
Ponomar/languages/cu/xml/lives/1353.xml | 8 +-
Ponomar/languages/cu/xml/lives/1366.xml | 8 +-
Ponomar/languages/cu/xml/lives/136801.xml | 4 +-
Ponomar/languages/cu/xml/lives/137.xml | 4 +-
Ponomar/languages/cu/xml/lives/1375.xml | 8 +-
Ponomar/languages/cu/xml/lives/1377.xml | 4 +-
Ponomar/languages/cu/xml/lives/1380.xml | 8 +-
Ponomar/languages/cu/xml/lives/1396.xml | 8 +-
Ponomar/languages/cu/xml/lives/1398.xml | 8 +-
Ponomar/languages/cu/xml/lives/1401.xml | 10 +-
Ponomar/languages/cu/xml/lives/14172.xml | 4 +-
Ponomar/languages/cu/xml/lives/1419.xml | 8 +-
Ponomar/languages/cu/xml/lives/142.xml | 4 +-
Ponomar/languages/cu/xml/lives/1426.xml | 8 +-
Ponomar/languages/cu/xml/lives/1428.xml | 4 +-
Ponomar/languages/cu/xml/lives/1429.xml | 4 +-
Ponomar/languages/cu/xml/lives/143.xml | 8 +-
Ponomar/languages/cu/xml/lives/1434.xml | 8 +-
Ponomar/languages/cu/xml/lives/1439.xml | 4 +-
Ponomar/languages/cu/xml/lives/144.xml | 8 +-
Ponomar/languages/cu/xml/lives/1446.xml | 4 +-
Ponomar/languages/cu/xml/lives/1449.xml | 4 +-
Ponomar/languages/cu/xml/lives/1450.xml | 4 +-
Ponomar/languages/cu/xml/lives/1453.xml | 9 +-
Ponomar/languages/cu/xml/lives/1459.xml | 10 +-
Ponomar/languages/cu/xml/lives/146.xml | 8 +-
Ponomar/languages/cu/xml/lives/1462.xml | 4 +-
Ponomar/languages/cu/xml/lives/1470.xml | 8 +-
Ponomar/languages/cu/xml/lives/1479.xml | 8 +-
Ponomar/languages/cu/xml/lives/147901.xml | 4 +-
Ponomar/languages/cu/xml/lives/147904.xml | 8 +-
Ponomar/languages/cu/xml/lives/147912.xml | 6 +-
Ponomar/languages/cu/xml/lives/148.xml | 8 +-
Ponomar/languages/cu/xml/lives/1484.xml | 4 +-
Ponomar/languages/cu/xml/lives/149.xml | 8 +-
Ponomar/languages/cu/xml/lives/1492.xml | 4 +-
Ponomar/languages/cu/xml/lives/1497.xml | 4 +-
Ponomar/languages/cu/xml/lives/1500.xml | 10 +-
Ponomar/languages/cu/xml/lives/1503.xml | 8 +-
Ponomar/languages/cu/xml/lives/150301.xml | 4 +-
Ponomar/languages/cu/xml/lives/1506.xml | 4 +-
Ponomar/languages/cu/xml/lives/1512.xml | 4 +-
Ponomar/languages/cu/xml/lives/1521.xml | 4 +-
Ponomar/languages/cu/xml/lives/1525.xml | 8 +-
Ponomar/languages/cu/xml/lives/152501.xml | 12 +-
Ponomar/languages/cu/xml/lives/1529.xml | 4 +-
Ponomar/languages/cu/xml/lives/152911.xml | 4 +-
Ponomar/languages/cu/xml/lives/152912.xml | 4 +-
Ponomar/languages/cu/xml/lives/152915.xml | 4 +-
Ponomar/languages/cu/xml/lives/153301.xml | 4 +-
Ponomar/languages/cu/xml/lives/154701.xml | 8 +-
Ponomar/languages/cu/xml/lives/155.xml | 4 +-
Ponomar/languages/cu/xml/lives/155001.xml | 4 +-
Ponomar/languages/cu/xml/lives/1553.xml | 4 +-
Ponomar/languages/cu/xml/lives/1555.xml | 9 +-
Ponomar/languages/cu/xml/lives/1559.xml | 4 +-
Ponomar/languages/cu/xml/lives/156.xml | 8 +-
Ponomar/languages/cu/xml/lives/1564.xml | 4 +-
Ponomar/languages/cu/xml/lives/156401.xml | 4 +-
Ponomar/languages/cu/xml/lives/1568.xml | 4 +-
Ponomar/languages/cu/xml/lives/1569.xml | 8 +-
Ponomar/languages/cu/xml/lives/156901.xml | 4 +-
Ponomar/languages/cu/xml/lives/158.xml | 8 +-
Ponomar/languages/cu/xml/lives/1581.xml | 4 +-
Ponomar/languages/cu/xml/lives/1594.xml | 4 +-
Ponomar/languages/cu/xml/lives/160601.xml | 4 +-
Ponomar/languages/cu/xml/lives/1611.xml | 4 +-
Ponomar/languages/cu/xml/lives/1619.xml | 4 +-
Ponomar/languages/cu/xml/lives/1621.xml | 10 +-
Ponomar/languages/cu/xml/lives/1625.xml | 7 +-
Ponomar/languages/cu/xml/lives/162501.xml | 8 +-
Ponomar/languages/cu/xml/lives/1626.xml | 4 +-
Ponomar/languages/cu/xml/lives/163.xml | 10 +-
Ponomar/languages/cu/xml/lives/1632.xml | 4 +-
Ponomar/languages/cu/xml/lives/1635.xml | 8 +-
Ponomar/languages/cu/xml/lives/163501.xml | 12 +-
Ponomar/languages/cu/xml/lives/1638.xml | 4 +-
Ponomar/languages/cu/xml/lives/1639.xml | 4 +-
Ponomar/languages/cu/xml/lives/165.xml | 4 +-
Ponomar/languages/cu/xml/lives/1651.xml | 4 +-
Ponomar/languages/cu/xml/lives/165201.xml | 4 +-
Ponomar/languages/cu/xml/lives/1657.xml | 4 +-
Ponomar/languages/cu/xml/lives/1664.xml | 4 +-
Ponomar/languages/cu/xml/lives/1667.xml | 4 +-
Ponomar/languages/cu/xml/lives/1668.xml | 4 +-
Ponomar/languages/cu/xml/lives/1673.xml | 4 +-
Ponomar/languages/cu/xml/lives/168501.xml | 4 +-
Ponomar/languages/cu/xml/lives/169.xml | 8 +-
Ponomar/languages/cu/xml/lives/1696.xml | 4 +-
Ponomar/languages/cu/xml/lives/170.xml | 8 +-
Ponomar/languages/cu/xml/lives/1702.xml | 4 +-
Ponomar/languages/cu/xml/lives/1715.xml | 8 +-
Ponomar/languages/cu/xml/lives/1716.xml | 8 +-
Ponomar/languages/cu/xml/lives/1725.xml | 10 +-
Ponomar/languages/cu/xml/lives/1727.xml | 10 +-
Ponomar/languages/cu/xml/lives/1729.xml | 8 +-
Ponomar/languages/cu/xml/lives/1737.xml | 8 +-
Ponomar/languages/cu/xml/lives/174.xml | 4 +-
Ponomar/languages/cu/xml/lives/1743.xml | 4 +-
Ponomar/languages/cu/xml/lives/1745.xml | 4 +-
Ponomar/languages/cu/xml/lives/1756.xml | 4 +-
Ponomar/languages/cu/xml/lives/1764.xml | 4 +-
Ponomar/languages/cu/xml/lives/176401.xml | 4 +-
Ponomar/languages/cu/xml/lives/1773.xml | 4 +-
Ponomar/languages/cu/xml/lives/1777.xml | 4 +-
Ponomar/languages/cu/xml/lives/178.xml | 8 +-
Ponomar/languages/cu/xml/lives/1785.xml | 10 +-
Ponomar/languages/cu/xml/lives/1790.xml | 9 +-
Ponomar/languages/cu/xml/lives/181.xml | 10 +-
Ponomar/languages/cu/xml/lives/182.xml | 4 +-
Ponomar/languages/cu/xml/lives/18201.xml | 4 +-
Ponomar/languages/cu/xml/lives/184.xml | 12 +-
Ponomar/languages/cu/xml/lives/1843.xml | 12 +-
Ponomar/languages/cu/xml/lives/184301.xml | 7 +-
Ponomar/languages/cu/xml/lives/186.xml | 4 +-
Ponomar/languages/cu/xml/lives/18601.xml | 4 +-
Ponomar/languages/cu/xml/lives/187.xml | 4 +-
Ponomar/languages/cu/xml/lives/1878.xml | 4 +-
Ponomar/languages/cu/xml/lives/1898.xml | 4 +-
Ponomar/languages/cu/xml/lives/19001.xml | 8 +-
Ponomar/languages/cu/xml/lives/1914.xml | 4 +-
Ponomar/languages/cu/xml/lives/1919.xml | 8 +-
Ponomar/languages/cu/xml/lives/1921.xml | 8 +-
Ponomar/languages/cu/xml/lives/194.xml | 4 +-
Ponomar/languages/cu/xml/lives/195.xml | 4 +-
Ponomar/languages/cu/xml/lives/1997.xml | 8 +-
Ponomar/languages/cu/xml/lives/1998.xml | 12 +-
Ponomar/languages/cu/xml/lives/2012.xml | 8 +-
Ponomar/languages/cu/xml/lives/2049.xml | 10 +-
Ponomar/languages/cu/xml/lives/2051.xml | 4 +-
Ponomar/languages/cu/xml/lives/205102.xml | 8 +-
Ponomar/languages/cu/xml/lives/209.xml | 8 +-
Ponomar/languages/cu/xml/lives/21001.xml | 6 +-
Ponomar/languages/cu/xml/lives/2124.xml | 4 +-
Ponomar/languages/cu/xml/lives/218.xml | 8 +-
Ponomar/languages/cu/xml/lives/21801.xml | 4 +-
Ponomar/languages/cu/xml/lives/2192.xml | 4 +-
Ponomar/languages/cu/xml/lives/2200.xml | 8 +-
Ponomar/languages/cu/xml/lives/2201.xml | 8 +-
Ponomar/languages/cu/xml/lives/220101.xml | 4 +-
Ponomar/languages/cu/xml/lives/220201.xml | 8 +-
Ponomar/languages/cu/xml/lives/2203.xml | 6 +-
Ponomar/languages/cu/xml/lives/2206.xml | 9 +-
Ponomar/languages/cu/xml/lives/221.xml | 8 +-
Ponomar/languages/cu/xml/lives/2210.xml | 8 +-
Ponomar/languages/cu/xml/lives/2211.xml | 4 +-
Ponomar/languages/cu/xml/lives/2216.xml | 2 +-
Ponomar/languages/cu/xml/lives/2256.xml | 4 +-
Ponomar/languages/cu/xml/lives/2288.xml | 4 +-
Ponomar/languages/cu/xml/lives/2292.xml | 4 +-
Ponomar/languages/cu/xml/lives/2315.xml | 12 +-
Ponomar/languages/cu/xml/lives/2321.xml | 8 +-
Ponomar/languages/cu/xml/lives/232101.xml | 8 +-
Ponomar/languages/cu/xml/lives/2323.xml | 4 +-
Ponomar/languages/cu/xml/lives/2325.xml | 10 +-
Ponomar/languages/cu/xml/lives/2367.xml | 4 +-
Ponomar/languages/cu/xml/lives/2369.xml | 8 +-
Ponomar/languages/cu/xml/lives/237201.xml | 4 +-
Ponomar/languages/cu/xml/lives/2382.xml | 4 +-
Ponomar/languages/cu/xml/lives/2384.xml | 12 +-
Ponomar/languages/cu/xml/lives/2389.xml | 12 +-
Ponomar/languages/cu/xml/lives/2394.xml | 8 +-
Ponomar/languages/cu/xml/lives/239401.xml | 4 +-
Ponomar/languages/cu/xml/lives/2396.xml | 4 +-
Ponomar/languages/cu/xml/lives/24.xml | 8 +-
Ponomar/languages/cu/xml/lives/2405.xml | 4 +-
Ponomar/languages/cu/xml/lives/2431.xml | 4 +-
Ponomar/languages/cu/xml/lives/2434.xml | 4 +-
Ponomar/languages/cu/xml/lives/2445.xml | 4 +-
Ponomar/languages/cu/xml/lives/2466.xml | 8 +-
Ponomar/languages/cu/xml/lives/2468.xml | 4 +-
Ponomar/languages/cu/xml/lives/2474.xml | 8 +-
Ponomar/languages/cu/xml/lives/2478.xml | 8 +-
Ponomar/languages/cu/xml/lives/2479.xml | 4 +-
Ponomar/languages/cu/xml/lives/2482.xml | 8 +-
Ponomar/languages/cu/xml/lives/2483.xml | 15 +-
Ponomar/languages/cu/xml/lives/248801.xml | 8 +-
Ponomar/languages/cu/xml/lives/2491.xml | 8 +-
Ponomar/languages/cu/xml/lives/249101.xml | 4 +-
Ponomar/languages/cu/xml/lives/2496.xml | 8 +-
Ponomar/languages/cu/xml/lives/249901.xml | 8 +-
Ponomar/languages/cu/xml/lives/2503.xml | 8 +-
Ponomar/languages/cu/xml/lives/2505.xml | 15 +-
Ponomar/languages/cu/xml/lives/2509.xml | 16 +-
Ponomar/languages/cu/xml/lives/2514.xml | 4 +-
Ponomar/languages/cu/xml/lives/2520.xml | 8 +-
Ponomar/languages/cu/xml/lives/2521.xml | 15 +-
Ponomar/languages/cu/xml/lives/2522.xml | 15 +-
Ponomar/languages/cu/xml/lives/2523.xml | 8 +-
Ponomar/languages/cu/xml/lives/252601.xml | 8 +-
Ponomar/languages/cu/xml/lives/2527.xml | 8 +-
Ponomar/languages/cu/xml/lives/253.xml | 8 +-
Ponomar/languages/cu/xml/lives/2535.xml | 10 +-
Ponomar/languages/cu/xml/lives/2555.xml | 4 +-
Ponomar/languages/cu/xml/lives/2556.xml | 4 +-
Ponomar/languages/cu/xml/lives/2559.xml | 4 +-
Ponomar/languages/cu/xml/lives/2560.xml | 4 +-
Ponomar/languages/cu/xml/lives/2561.xml | 4 +-
Ponomar/languages/cu/xml/lives/2569.xml | 4 +-
Ponomar/languages/cu/xml/lives/2575.xml | 4 +-
Ponomar/languages/cu/xml/lives/257510.xml | 4 +-
Ponomar/languages/cu/xml/lives/257511.xml | 4 +-
Ponomar/languages/cu/xml/lives/257512.xml | 4 +-
Ponomar/languages/cu/xml/lives/2581.xml | 4 +-
Ponomar/languages/cu/xml/lives/2587.xml | 8 +-
Ponomar/languages/cu/xml/lives/2593.xml | 8 +-
Ponomar/languages/cu/xml/lives/2598.xml | 12 +-
Ponomar/languages/cu/xml/lives/260.xml | 8 +-
Ponomar/languages/cu/xml/lives/2630.xml | 12 +-
Ponomar/languages/cu/xml/lives/2634.xml | 4 +-
Ponomar/languages/cu/xml/lives/2637.xml | 8 +-
Ponomar/languages/cu/xml/lives/2640.xml | 4 +-
Ponomar/languages/cu/xml/lives/2641.xml | 4 +-
Ponomar/languages/cu/xml/lives/2643.xml | 8 +-
Ponomar/languages/cu/xml/lives/2666.xml | 4 +-
Ponomar/languages/cu/xml/lives/267.xml | 10 +-
Ponomar/languages/cu/xml/lives/26701.xml | 4 +-
Ponomar/languages/cu/xml/lives/2686.xml | 4 +-
Ponomar/languages/cu/xml/lives/2688.xml | 10 +-
Ponomar/languages/cu/xml/lives/269.xml | 9 +-
Ponomar/languages/cu/xml/lives/270.xml | 8 +-
Ponomar/languages/cu/xml/lives/2714.xml | 8 +-
Ponomar/languages/cu/xml/lives/279.xml | 8 +-
Ponomar/languages/cu/xml/lives/284.xml | 8 +-
Ponomar/languages/cu/xml/lives/293.xml | 8 +-
Ponomar/languages/cu/xml/lives/294.xml | 8 +-
Ponomar/languages/cu/xml/lives/295.xml | 16 +-
Ponomar/languages/cu/xml/lives/29501.xml | 4 +-
Ponomar/languages/cu/xml/lives/302.xml | 4 +-
Ponomar/languages/cu/xml/lives/3047.xml | 4 +-
Ponomar/languages/cu/xml/lives/3048.xml | 4 +-
Ponomar/languages/cu/xml/lives/3050.xml | 8 +-
Ponomar/languages/cu/xml/lives/305001.xml | 4 +-
Ponomar/languages/cu/xml/lives/3057.xml | 4 +-
Ponomar/languages/cu/xml/lives/3061.xml | 4 +-
Ponomar/languages/cu/xml/lives/3062.xml | 4 +-
Ponomar/languages/cu/xml/lives/3083.xml | 4 +-
Ponomar/languages/cu/xml/lives/3093.xml | 4 +-
Ponomar/languages/cu/xml/lives/3095.xml | 4 +-
Ponomar/languages/cu/xml/lives/3111.xml | 10 +-
Ponomar/languages/cu/xml/lives/3116.xml | 8 +-
Ponomar/languages/cu/xml/lives/3117.xml | 8 +-
Ponomar/languages/cu/xml/lives/312.xml | 13 +-
Ponomar/languages/cu/xml/lives/3121.xml | 8 +-
Ponomar/languages/cu/xml/lives/3122.xml | 8 +-
Ponomar/languages/cu/xml/lives/3130.xml | 9 +-
Ponomar/languages/cu/xml/lives/3136.xml | 8 +-
Ponomar/languages/cu/xml/lives/3139.xml | 8 +-
Ponomar/languages/cu/xml/lives/3159.xml | 8 +-
Ponomar/languages/cu/xml/lives/3167.xml | 10 +-
Ponomar/languages/cu/xml/lives/3172.xml | 10 +-
Ponomar/languages/cu/xml/lives/3174.xml | 8 +-
Ponomar/languages/cu/xml/lives/3177.xml | 12 +-
Ponomar/languages/cu/xml/lives/3181.xml | 8 +-
Ponomar/languages/cu/xml/lives/3186.xml | 8 +-
Ponomar/languages/cu/xml/lives/3187.xml | 4 +-
Ponomar/languages/cu/xml/lives/3189.xml | 8 +-
Ponomar/languages/cu/xml/lives/3193.xml | 10 +-
Ponomar/languages/cu/xml/lives/3194.xml | 8 +-
Ponomar/languages/cu/xml/lives/3199.xml | 4 +-
Ponomar/languages/cu/xml/lives/3209.xml | 4 +-
Ponomar/languages/cu/xml/lives/3211.xml | 4 +-
Ponomar/languages/cu/xml/lives/3217.xml | 4 +-
Ponomar/languages/cu/xml/lives/3234.xml | 4 +-
Ponomar/languages/cu/xml/lives/324.xml | 14 +-
Ponomar/languages/cu/xml/lives/32401.xml | 4 +-
Ponomar/languages/cu/xml/lives/3241.xml | 4 +-
Ponomar/languages/cu/xml/lives/3242.xml | 4 +-
Ponomar/languages/cu/xml/lives/3246.xml | 4 +-
Ponomar/languages/cu/xml/lives/3247.xml | 4 +-
Ponomar/languages/cu/xml/lives/324801.xml | 6 +-
Ponomar/languages/cu/xml/lives/333.xml | 4 +-
Ponomar/languages/cu/xml/lives/339.xml | 4 +-
Ponomar/languages/cu/xml/lives/346.xml | 8 +-
Ponomar/languages/cu/xml/lives/357.xml | 2 +-
Ponomar/languages/cu/xml/lives/365.xml | 11 +-
Ponomar/languages/cu/xml/lives/369.xml | 4 +-
Ponomar/languages/cu/xml/lives/36903.xml | 4 +-
Ponomar/languages/cu/xml/lives/373.xml | 4 +-
Ponomar/languages/cu/xml/lives/37302.xml | 6 +-
Ponomar/languages/cu/xml/lives/37303.xml | 4 +-
Ponomar/languages/cu/xml/lives/382.xml | 8 +-
Ponomar/languages/cu/xml/lives/391.xml | 8 +-
Ponomar/languages/cu/xml/lives/398.xml | 8 +-
Ponomar/languages/cu/xml/lives/409.xml | 8 +-
Ponomar/languages/cu/xml/lives/410.xml | 10 +-
Ponomar/languages/cu/xml/lives/4138.xml | 4 +-
Ponomar/languages/cu/xml/lives/414.xml | 10 +-
Ponomar/languages/cu/xml/lives/4140.xml | 4 +-
Ponomar/languages/cu/xml/lives/4142.xml | 8 +-
Ponomar/languages/cu/xml/lives/4150.xml | 4 +-
Ponomar/languages/cu/xml/lives/4154.xml | 10 +-
Ponomar/languages/cu/xml/lives/4163.xml | 4 +-
Ponomar/languages/cu/xml/lives/4167.xml | 4 +-
Ponomar/languages/cu/xml/lives/4177.xml | 4 +-
Ponomar/languages/cu/xml/lives/4181.xml | 4 +-
Ponomar/languages/cu/xml/lives/4202.xml | 4 +-
Ponomar/languages/cu/xml/lives/4207.xml | 10 +-
Ponomar/languages/cu/xml/lives/421.xml | 8 +-
Ponomar/languages/cu/xml/lives/4220.xml | 8 +-
Ponomar/languages/cu/xml/lives/4224.xml | 4 +-
Ponomar/languages/cu/xml/lives/4229.xml | 8 +-
Ponomar/languages/cu/xml/lives/4241.xml | 4 +-
Ponomar/languages/cu/xml/lives/4243.xml | 8 +-
Ponomar/languages/cu/xml/lives/4255.xml | 8 +-
Ponomar/languages/cu/xml/lives/4256.xml | 4 +-
Ponomar/languages/cu/xml/lives/4264.xml | 10 +-
Ponomar/languages/cu/xml/lives/4265.xml | 8 +-
Ponomar/languages/cu/xml/lives/4281.xml | 12 +-
Ponomar/languages/cu/xml/lives/4282.xml | 8 +-
Ponomar/languages/cu/xml/lives/4292.xml | 8 +-
Ponomar/languages/cu/xml/lives/4293.xml | 4 +-
Ponomar/languages/cu/xml/lives/4296.xml | 10 +-
Ponomar/languages/cu/xml/lives/4301.xml | 4 +-
Ponomar/languages/cu/xml/lives/4308.xml | 8 +-
Ponomar/languages/cu/xml/lives/43101.xml | 4 +-
Ponomar/languages/cu/xml/lives/4316.xml | 4 +-
Ponomar/languages/cu/xml/lives/4320.xml | 8 +-
Ponomar/languages/cu/xml/lives/4341.xml | 8 +-
Ponomar/languages/cu/xml/lives/4349.xml | 10 +-
Ponomar/languages/cu/xml/lives/435.xml | 10 +-
Ponomar/languages/cu/xml/lives/43501.xml | 16 +-
Ponomar/languages/cu/xml/lives/4356.xml | 8 +-
Ponomar/languages/cu/xml/lives/4357.xml | 4 +-
Ponomar/languages/cu/xml/lives/4360.xml | 12 +-
Ponomar/languages/cu/xml/lives/4368.xml | 4 +-
Ponomar/languages/cu/xml/lives/437.xml | 8 +-
Ponomar/languages/cu/xml/lives/4370.xml | 8 +-
Ponomar/languages/cu/xml/lives/4375.xml | 14 +-
Ponomar/languages/cu/xml/lives/4380.xml | 12 +-
Ponomar/languages/cu/xml/lives/4386.xml | 6 +-
Ponomar/languages/cu/xml/lives/438611.xml | 4 +-
Ponomar/languages/cu/xml/lives/4387.xml | 8 +-
Ponomar/languages/cu/xml/lives/439.xml | 8 +-
Ponomar/languages/cu/xml/lives/4397.xml | 8 +-
Ponomar/languages/cu/xml/lives/4401.xml | 4 +-
Ponomar/languages/cu/xml/lives/4414.xml | 8 +-
Ponomar/languages/cu/xml/lives/4417.xml | 8 +-
Ponomar/languages/cu/xml/lives/4425.xml | 10 +-
Ponomar/languages/cu/xml/lives/4437.xml | 4 +-
Ponomar/languages/cu/xml/lives/444.xml | 8 +-
Ponomar/languages/cu/xml/lives/4444.xml | 4 +-
Ponomar/languages/cu/xml/lives/444411.xml | 4 +-
Ponomar/languages/cu/xml/lives/444412.xml | 4 +-
Ponomar/languages/cu/xml/lives/444414.xml | 4 +-
Ponomar/languages/cu/xml/lives/4447.xml | 8 +-
Ponomar/languages/cu/xml/lives/4448.xml | 4 +-
Ponomar/languages/cu/xml/lives/4455.xml | 8 +-
Ponomar/languages/cu/xml/lives/446.xml | 14 +-
Ponomar/languages/cu/xml/lives/4479.xml | 4 +-
Ponomar/languages/cu/xml/lives/4488.xml | 8 +-
Ponomar/languages/cu/xml/lives/4489.xml | 4 +-
Ponomar/languages/cu/xml/lives/4493.xml | 2 +-
Ponomar/languages/cu/xml/lives/450.xml | 4 +-
Ponomar/languages/cu/xml/lives/4500.xml | 4 +-
Ponomar/languages/cu/xml/lives/4501.xml | 4 +-
Ponomar/languages/cu/xml/lives/4503.xml | 4 +-
Ponomar/languages/cu/xml/lives/4519.xml | 4 +-
Ponomar/languages/cu/xml/lives/453.xml | 8 +-
Ponomar/languages/cu/xml/lives/4546.xml | 12 +-
Ponomar/languages/cu/xml/lives/4557.xml | 2 +-
Ponomar/languages/cu/xml/lives/4561.xml | 4 +-
Ponomar/languages/cu/xml/lives/4571.xml | 4 +-
Ponomar/languages/cu/xml/lives/4579.xml | 4 +-
Ponomar/languages/cu/xml/lives/4582.xml | 4 +-
Ponomar/languages/cu/xml/lives/4589.xml | 4 +-
Ponomar/languages/cu/xml/lives/459.xml | 4 +-
Ponomar/languages/cu/xml/lives/4606.xml | 4 +-
Ponomar/languages/cu/xml/lives/4612.xml | 4 +-
Ponomar/languages/cu/xml/lives/4614.xml | 4 +-
Ponomar/languages/cu/xml/lives/4615.xml | 4 +-
Ponomar/languages/cu/xml/lives/4619.xml | 8 +-
Ponomar/languages/cu/xml/lives/462001.xml | 4 +-
Ponomar/languages/cu/xml/lives/4622.xml | 4 +-
Ponomar/languages/cu/xml/lives/4627.xml | 8 +-
Ponomar/languages/cu/xml/lives/46801.xml | 4 +-
Ponomar/languages/cu/xml/lives/468312.xml | 4 +-
Ponomar/languages/cu/xml/lives/471.xml | 4 +-
Ponomar/languages/cu/xml/lives/478.xml | 8 +-
Ponomar/languages/cu/xml/lives/482.xml | 4 +-
Ponomar/languages/cu/xml/lives/484.xml | 4 +-
Ponomar/languages/cu/xml/lives/485.xml | 4 +-
Ponomar/languages/cu/xml/lives/491.xml | 4 +-
Ponomar/languages/cu/xml/lives/496.xml | 7 +-
Ponomar/languages/cu/xml/lives/497.xml | 8 +-
Ponomar/languages/cu/xml/lives/49702.xml | 4 +-
Ponomar/languages/cu/xml/lives/504.xml | 8 +-
Ponomar/languages/cu/xml/lives/508.xml | 7 +-
Ponomar/languages/cu/xml/lives/510.xml | 15 +-
Ponomar/languages/cu/xml/lives/523.xml | 11 +-
Ponomar/languages/cu/xml/lives/528.xml | 4 +-
Ponomar/languages/cu/xml/lives/530.xml | 4 +-
Ponomar/languages/cu/xml/lives/535.xml | 8 +-
Ponomar/languages/cu/xml/lives/536.xml | 4 +-
Ponomar/languages/cu/xml/lives/53901.xml | 4 +-
Ponomar/languages/cu/xml/lives/544.xml | 8 +-
Ponomar/languages/cu/xml/lives/551.xml | 8 +-
Ponomar/languages/cu/xml/lives/552.xml | 8 +-
Ponomar/languages/cu/xml/lives/555.xml | 10 +-
Ponomar/languages/cu/xml/lives/564.xml | 4 +-
Ponomar/languages/cu/xml/lives/567.xml | 4 +-
Ponomar/languages/cu/xml/lives/570.xml | 4 +-
Ponomar/languages/cu/xml/lives/57901.xml | 4 +-
Ponomar/languages/cu/xml/lives/585.xml | 4 +-
Ponomar/languages/cu/xml/lives/588.xml | 8 +-
Ponomar/languages/cu/xml/lives/594.xml | 4 +-
Ponomar/languages/cu/xml/lives/604.xml | 7 +-
Ponomar/languages/cu/xml/lives/60401.xml | 4 +-
Ponomar/languages/cu/xml/lives/614.xml | 9 +-
Ponomar/languages/cu/xml/lives/621.xml | 11 +-
Ponomar/languages/cu/xml/lives/634.xml | 17 +-
Ponomar/languages/cu/xml/lives/638.xml | 4 +-
Ponomar/languages/cu/xml/lives/646.xml | 4 +-
Ponomar/languages/cu/xml/lives/653.xml | 4 +-
Ponomar/languages/cu/xml/lives/65301.xml | 4 +-
Ponomar/languages/cu/xml/lives/655.xml | 4 +-
Ponomar/languages/cu/xml/lives/656.xml | 4 +-
Ponomar/languages/cu/xml/lives/6661.xml | 4 +-
Ponomar/languages/cu/xml/lives/6673.xml | 4 +-
Ponomar/languages/cu/xml/lives/673.xml | 4 +-
Ponomar/languages/cu/xml/lives/678.xml | 4 +-
Ponomar/languages/cu/xml/lives/680.xml | 4 +-
Ponomar/languages/cu/xml/lives/681.xml | 4 +-
Ponomar/languages/cu/xml/lives/687.xml | 4 +-
Ponomar/languages/cu/xml/lives/689.xml | 4 +-
Ponomar/languages/cu/xml/lives/694.xml | 4 +-
Ponomar/languages/cu/xml/lives/6969.xml | 4 +-
Ponomar/languages/cu/xml/lives/700.xml | 4 +-
Ponomar/languages/cu/xml/lives/707.xml | 4 +-
Ponomar/languages/cu/xml/lives/716.xml | 4 +-
Ponomar/languages/cu/xml/lives/722.xml | 4 +-
Ponomar/languages/cu/xml/lives/723.xml | 4 +-
Ponomar/languages/cu/xml/lives/726.xml | 4 +-
Ponomar/languages/cu/xml/lives/729.xml | 4 +-
Ponomar/languages/cu/xml/lives/74.xml | 10 +-
Ponomar/languages/cu/xml/lives/745.xml | 10 +-
Ponomar/languages/cu/xml/lives/75.xml | 4 +-
Ponomar/languages/cu/xml/lives/762.xml | 4 +-
Ponomar/languages/cu/xml/lives/763.xml | 4 +-
Ponomar/languages/cu/xml/lives/76401.xml | 8 +-
Ponomar/languages/cu/xml/lives/767.xml | 4 +-
Ponomar/languages/cu/xml/lives/772425.xml | 4 +-
Ponomar/languages/cu/xml/lives/772426.xml | 4 +-
Ponomar/languages/cu/xml/lives/772455.xml | 6 +-
Ponomar/languages/cu/xml/lives/775.xml | 4 +-
Ponomar/languages/cu/xml/lives/776.xml | 4 +-
Ponomar/languages/cu/xml/lives/787.xml | 4 +-
Ponomar/languages/cu/xml/lives/791.xml | 4 +-
Ponomar/languages/cu/xml/lives/79101.xml | 4 +-
Ponomar/languages/cu/xml/lives/79202.xml | 4 +-
Ponomar/languages/cu/xml/lives/795.xml | 4 +-
Ponomar/languages/cu/xml/lives/799.xml | 8 +-
Ponomar/languages/cu/xml/lives/805.xml | 4 +-
Ponomar/languages/cu/xml/lives/811.xml | 4 +-
Ponomar/languages/cu/xml/lives/812.xml | 4 +-
Ponomar/languages/cu/xml/lives/817.xml | 12 +-
Ponomar/languages/cu/xml/lives/818.xml | 4 +-
Ponomar/languages/cu/xml/lives/82201.xml | 6 +-
Ponomar/languages/cu/xml/lives/829.xml | 10 +-
Ponomar/languages/cu/xml/lives/834.xml | 4 +-
Ponomar/languages/cu/xml/lives/837.xml | 8 +-
Ponomar/languages/cu/xml/lives/849.xml | 8 +-
Ponomar/languages/cu/xml/lives/85.xml | 4 +-
Ponomar/languages/cu/xml/lives/853.xml | 10 +-
Ponomar/languages/cu/xml/lives/862.xml | 4 +-
Ponomar/languages/cu/xml/lives/86701.xml | 4 +-
Ponomar/languages/cu/xml/lives/869.xml | 4 +-
Ponomar/languages/cu/xml/lives/872.xml | 10 +-
Ponomar/languages/cu/xml/lives/873.xml | 8 +-
Ponomar/languages/cu/xml/lives/874.xml | 8 +-
Ponomar/languages/cu/xml/lives/878.xml | 4 +-
Ponomar/languages/cu/xml/lives/880.xml | 8 +-
Ponomar/languages/cu/xml/lives/882.xml | 4 +-
Ponomar/languages/cu/xml/lives/887.xml | 8 +-
Ponomar/languages/cu/xml/lives/891.xml | 4 +-
Ponomar/languages/cu/xml/lives/896.xml | 8 +-
Ponomar/languages/cu/xml/lives/897.xml | 8 +-
Ponomar/languages/cu/xml/lives/900.xml | 4 +-
Ponomar/languages/cu/xml/lives/9001.xml | 42 +-
Ponomar/languages/cu/xml/lives/9008.xml | 4 +-
Ponomar/languages/cu/xml/lives/9015.xml | 4 +-
Ponomar/languages/cu/xml/lives/9022.xml | 4 +-
Ponomar/languages/cu/xml/lives/9025.xml | 12 +-
Ponomar/languages/cu/xml/lives/9029.xml | 4 +-
Ponomar/languages/cu/xml/lives/903.xml | 4 +-
Ponomar/languages/cu/xml/lives/9036.xml | 4 +-
Ponomar/languages/cu/xml/lives/9039.xml | 4 +-
Ponomar/languages/cu/xml/lives/9040.xml | 6 +-
Ponomar/languages/cu/xml/lives/90401.xml | 5 +-
Ponomar/languages/cu/xml/lives/90402.xml | 3 +
Ponomar/languages/cu/xml/lives/90407.xml | 4 +
Ponomar/languages/cu/xml/lives/9043.xml | 6 +-
Ponomar/languages/cu/xml/lives/90431.xml | 3 +
Ponomar/languages/cu/xml/lives/9050.xml | 4 +-
Ponomar/languages/cu/xml/lives/9051.xml | 4 +-
Ponomar/languages/cu/xml/lives/9057.xml | 4 +-
Ponomar/languages/cu/xml/lives/9064.xml | 2 +-
Ponomar/languages/cu/xml/lives/906401.xml | 3 +
Ponomar/languages/cu/xml/lives/908.xml | 8 +-
Ponomar/languages/cu/xml/lives/909.xml | 15 +-
Ponomar/languages/cu/xml/lives/91005.xml | 8 +-
Ponomar/languages/cu/xml/lives/91007.xml | 10 +-
Ponomar/languages/cu/xml/lives/91547.xml | 8 +-
Ponomar/languages/cu/xml/lives/916.xml | 4 +-
Ponomar/languages/cu/xml/lives/922.xml | 10 +-
Ponomar/languages/cu/xml/lives/92401.xml | 4 +-
Ponomar/languages/cu/xml/lives/9274.xml | 3 +-
Ponomar/languages/cu/xml/lives/9281.xml | 3 +-
Ponomar/languages/cu/xml/lives/9288.xml | 3 +-
Ponomar/languages/cu/xml/lives/9295.xml | 3 +-
Ponomar/languages/cu/xml/lives/9302.xml | 3 +-
Ponomar/languages/cu/xml/lives/9309.xml | 3 +-
Ponomar/languages/cu/xml/lives/936.xml | 8 +-
Ponomar/languages/cu/xml/lives/946.xml | 8 +-
Ponomar/languages/cu/xml/lives/947.xml | 8 +-
Ponomar/languages/cu/xml/lives/9479.xml | 4 +-
Ponomar/languages/cu/xml/lives/95201.xml | 4 +-
Ponomar/languages/cu/xml/lives/955.xml | 4 +-
Ponomar/languages/cu/xml/lives/96.xml | 8 +-
Ponomar/languages/cu/xml/lives/960.xml | 4 +-
Ponomar/languages/cu/xml/lives/962.xml | 12 +-
Ponomar/languages/cu/xml/lives/96201.xml | 4 +
Ponomar/languages/cu/xml/lives/963.xml | 8 +-
Ponomar/languages/cu/xml/lives/96901.xml | 4 +-
Ponomar/languages/cu/xml/lives/9700.xml | 5 +
Ponomar/languages/cu/xml/lives/9701.xml | 5 +
Ponomar/languages/cu/xml/lives/9702.xml | 5 +
Ponomar/languages/cu/xml/lives/9703.xml | 5 +
Ponomar/languages/cu/xml/lives/9704.xml | 5 +
Ponomar/languages/cu/xml/lives/9705.xml | 5 +
Ponomar/languages/cu/xml/lives/9706.xml | 5 +
Ponomar/languages/cu/xml/lives/9707.xml | 6 +
Ponomar/languages/cu/xml/lives/9711.xml | 5 +
Ponomar/languages/cu/xml/lives/9712.xml | 5 +
Ponomar/languages/cu/xml/lives/9713.xml | 5 +
Ponomar/languages/cu/xml/lives/9714.xml | 5 +
Ponomar/languages/cu/xml/lives/9715.xml | 5 +
Ponomar/languages/cu/xml/lives/9716.xml | 5 +
Ponomar/languages/cu/xml/lives/97801.xml | 2 +-
Ponomar/languages/cu/xml/lives/97802.xml | 8 +-
Ponomar/languages/cu/xml/lives/980.xml | 4 +-
Ponomar/languages/cu/xml/lives/9802.xml | 50 +-
Ponomar/languages/cu/xml/lives/9803.xml | 24 +
Ponomar/languages/cu/xml/lives/9807.xml | 8 +-
Ponomar/languages/cu/xml/lives/9808.xml | 4 +-
Ponomar/languages/cu/xml/lives/981501.xml | 6 +-
Ponomar/languages/cu/xml/lives/9817.xml | 3 +-
Ponomar/languages/cu/xml/lives/9819.xml | 3 +-
Ponomar/languages/cu/xml/lives/9828.xml | 4 +-
Ponomar/languages/cu/xml/lives/9835.xml | 4 +-
Ponomar/languages/cu/xml/lives/9842.xml | 4 +-
Ponomar/languages/cu/xml/lives/9849.xml | 4 +-
Ponomar/languages/cu/xml/lives/985.xml | 8 +-
Ponomar/languages/cu/xml/lives/9856.xml | 4 +-
Ponomar/languages/cu/xml/lives/986.xml | 4 +-
Ponomar/languages/cu/xml/lives/9863.xml | 4 +-
Ponomar/languages/cu/xml/lives/9870.xml | 4 +-
Ponomar/languages/cu/xml/lives/9900.xml | 8 +-
Ponomar/languages/cu/xml/lives/9901.xml | 8 +-
Ponomar/languages/cu/xml/lives/9904.xml | 12 +-
Ponomar/languages/cu/xml/lives/9906.xml | 10 +-
Ponomar/languages/cu/xml/lives/9908.xml | 4 +-
Ponomar/languages/cu/xml/lives/9913.xml | 14 +-
Ponomar/languages/cu/xml/lives/9914.xml | 4 +-
Ponomar/languages/cu/xml/lives/9969.xml | 8 +-
.../el/mono/xml/Commands/LanguagePacks.xml | 28 +-
.../languages/el/mono/xml/lives/0910701.xml | 9 +-
.../languages/el/mono/xml/lives/0910702.xml | 3 +
Ponomar/languages/el/mono/xml/lives/1238.xml | 3 +-
.../languages/el/mono/xml/lives/123801.xml | 4 +-
.../languages/el/mono/xml/lives/123803.xml | 3 +
.../languages/el/mono/xml/lives/123805.xml | 6 +
Ponomar/languages/el/mono/xml/lives/1625.xml | 3 +-
Ponomar/languages/el/mono/xml/lives/1843.xml | 4 +-
.../languages/el/mono/xml/lives/184301.xml | 8 +-
Ponomar/languages/el/mono/xml/lives/496.xml | 4 +-
Ponomar/languages/el/mono/xml/lives/508.xml | 4 +-
Ponomar/languages/el/mono/xml/lives/510.xml | 4 +-
Ponomar/languages/el/mono/xml/lives/523.xml | 4 +-
Ponomar/languages/el/mono/xml/lives/604.xml | 3 +-
Ponomar/languages/el/mono/xml/lives/614.xml | 3 +-
Ponomar/languages/el/mono/xml/lives/621.xml | 3 +-
Ponomar/languages/el/mono/xml/lives/90401.xml | 3 +
Ponomar/languages/el/mono/xml/lives/90402.xml | 3 +
Ponomar/languages/el/mono/xml/lives/9041.xml | 2 +-
Ponomar/languages/el/mono/xml/lives/9042.xml | 2 +-
Ponomar/languages/el/mono/xml/lives/9043.xml | 12 +-
Ponomar/languages/el/mono/xml/lives/90431.xml | 10 +
Ponomar/languages/el/mono/xml/lives/9044.xml | 2 +-
Ponomar/languages/el/mono/xml/lives/9045.xml | 2 +-
Ponomar/languages/el/mono/xml/lives/9046.xml | 2 +-
Ponomar/languages/el/mono/xml/lives/9047.xml | 2 +-
Ponomar/languages/el/mono/xml/lives/9048.xml | 2 +-
Ponomar/languages/el/mono/xml/lives/9050.xml | 16 +-
.../languages/el/mono/xml/lives/906401.xml | 3 +
Ponomar/languages/el/xml/02/22.xml | 2 +
Ponomar/languages/el/xml/02/23.xml | 6 +-
Ponomar/languages/el/xml/02/24.xml | 17 +-
Ponomar/languages/el/xml/02/25.xml | 7 +-
Ponomar/languages/el/xml/02/26.xml | 7 +-
Ponomar/languages/el/xml/02/27.xml | 4 +-
Ponomar/languages/el/xml/02/28.xml | 6 +-
Ponomar/languages/el/xml/02/29.xml | 2 +-
Ponomar/languages/el/xml/03/06.xml | 1 +
Ponomar/languages/el/xml/03/07.xml | 4 +-
Ponomar/languages/el/xml/03/08.xml | 4 +-
Ponomar/languages/el/xml/03/09.xml | 9 +-
Ponomar/languages/el/xml/03/10.xml | 6 +-
Ponomar/languages/el/xml/03/11.xml | 5 +-
Ponomar/languages/el/xml/03/12.xml | 5 +-
Ponomar/languages/el/xml/03/13.xml | 4 +-
.../el/xml/Commands/LanguagePacks.xml | 28 +-
Ponomar/languages/el/xml/lives/0910701.xml | 9 +-
Ponomar/languages/el/xml/lives/0910702.xml | 3 +
Ponomar/languages/el/xml/lives/1238.xml | 3 +-
Ponomar/languages/el/xml/lives/123801.xml | 4 +-
Ponomar/languages/el/xml/lives/123803.xml | 3 +
Ponomar/languages/el/xml/lives/123805.xml | 6 +
Ponomar/languages/el/xml/lives/1625.xml | 3 +-
Ponomar/languages/el/xml/lives/1843.xml | 3 +-
Ponomar/languages/el/xml/lives/184301.xml | 8 +-
Ponomar/languages/el/xml/lives/496.xml | 3 +-
Ponomar/languages/el/xml/lives/508.xml | 3 +-
Ponomar/languages/el/xml/lives/510.xml | 3 +-
Ponomar/languages/el/xml/lives/523.xml | 3 +-
Ponomar/languages/el/xml/lives/604.xml | 5 +-
Ponomar/languages/el/xml/lives/614.xml | 5 +-
Ponomar/languages/el/xml/lives/621.xml | 3 +-
Ponomar/languages/el/xml/lives/90401.xml | 3 +
Ponomar/languages/el/xml/lives/90402.xml | 3 +
Ponomar/languages/el/xml/lives/9041.xml | 2 +-
Ponomar/languages/el/xml/lives/9042.xml | 2 +-
Ponomar/languages/el/xml/lives/9043.xml | 2 +-
Ponomar/languages/el/xml/lives/90431.xml | 3 +
Ponomar/languages/el/xml/lives/9044.xml | 2 +-
Ponomar/languages/el/xml/lives/9045.xml | 2 +-
Ponomar/languages/el/xml/lives/9046.xml | 2 +-
Ponomar/languages/el/xml/lives/9047.xml | 2 +-
Ponomar/languages/el/xml/lives/9048.xml | 2 +-
Ponomar/languages/el/xml/lives/906401.xml | 3 +
.../languages/el/xml/pentecostarion/43.xml | 6 +-
.../languages/el/xml/pentecostarion/46.xml | 1 +
Ponomar/languages/en/xml/01/29.xml | 1 +
Ponomar/languages/en/xml/02/23.xml | 3 +-
Ponomar/languages/en/xml/02/24.xml | 3 +-
Ponomar/languages/en/xml/02/25.xml | 1 +
Ponomar/languages/en/xml/02/26.xml | 1 +
Ponomar/languages/en/xml/02/28.xml | 5 +-
Ponomar/languages/en/xml/03/09.xml | 4 +-
Ponomar/languages/en/xml/03/10.xml | 1 +
Ponomar/languages/en/xml/03/11.xml | 1 +
Ponomar/languages/en/xml/03/12.xml | 1 +
Ponomar/languages/en/xml/03/13.xml | 1 +
.../en/xml/Commands/LanguagePacks.xml | 57 +-
.../Services/CommonPrayers/SmallEndingWP.xml | 2 +-
.../languages/en/xml/Services/Var/PKath3.xml | 2 +-
.../languages/en/xml/Services/Var/PKont1.xml | 2 +-
.../languages/en/xml/Services/Var/PKont3.xml | 2 +-
.../languages/en/xml/Services/Var/PKont9.xml | 2 +-
.../languages/en/xml/Services/Var/PTrop2.xml | 2 +-
.../languages/en/xml/Services/Var/PTrop32.xml | 2 +-
Ponomar/languages/en/xml/lives/011100.xml | 2 +-
Ponomar/languages/en/xml/lives/012910.xml | 3 +
Ponomar/languages/en/xml/lives/0910701.xml | 10 +-
Ponomar/languages/en/xml/lives/0910702.xml | 2 +-
Ponomar/languages/en/xml/lives/1238.xml | 12 +-
Ponomar/languages/en/xml/lives/123801.xml | 6 +-
Ponomar/languages/en/xml/lives/123805.xml | 6 +
Ponomar/languages/en/xml/lives/1294.xml | 2 +-
Ponomar/languages/en/xml/lives/1592.xml | 2 +-
Ponomar/languages/en/xml/lives/1625.xml | 3 +-
Ponomar/languages/en/xml/lives/1843.xml | 3 +-
Ponomar/languages/en/xml/lives/184301.xml | 6 +-
Ponomar/languages/en/xml/lives/496.xml | 3 +-
Ponomar/languages/en/xml/lives/508.xml | 3 +-
Ponomar/languages/en/xml/lives/510.xml | 4 +-
Ponomar/languages/en/xml/lives/523.xml | 4 +-
Ponomar/languages/en/xml/lives/604.xml | 4 +-
Ponomar/languages/en/xml/lives/614.xml | 4 +-
Ponomar/languages/en/xml/lives/621.xml | 4 +-
Ponomar/languages/en/xml/lives/9001.xml | 38 +
Ponomar/languages/en/xml/lives/90401.xml | 2 +-
Ponomar/languages/en/xml/lives/90402.xml | 3 +
Ponomar/languages/en/xml/lives/90407.xml | 3 +
Ponomar/languages/en/xml/lives/9041.xml | 2 +-
Ponomar/languages/en/xml/lives/9042.xml | 2 +-
Ponomar/languages/en/xml/lives/9043.xml | 2 +-
Ponomar/languages/en/xml/lives/90431.xml | 3 +
Ponomar/languages/en/xml/lives/9044.xml | 2 +-
Ponomar/languages/en/xml/lives/9045.xml | 2 +-
Ponomar/languages/en/xml/lives/9046.xml | 2 +-
Ponomar/languages/en/xml/lives/9047.xml | 2 +-
Ponomar/languages/en/xml/lives/9048.xml | 2 +-
Ponomar/languages/en/xml/lives/9064.xml | 2 +-
Ponomar/languages/en/xml/lives/906401.xml | 3 +
Ponomar/languages/en/xml/lives/9274.xml | 5 +-
Ponomar/languages/en/xml/lives/9281.xml | 3 +-
Ponomar/languages/en/xml/lives/9288.xml | 3 +-
Ponomar/languages/en/xml/lives/9295.xml | 3 +-
Ponomar/languages/en/xml/lives/9302.xml | 3 +-
Ponomar/languages/en/xml/lives/9309.xml | 2 +-
Ponomar/languages/en/xml/lives/9700.xml | 5 +
Ponomar/languages/en/xml/lives/9701.xml | 5 +
Ponomar/languages/en/xml/lives/9702.xml | 5 +
Ponomar/languages/en/xml/lives/9703.xml | 5 +
Ponomar/languages/en/xml/lives/9704.xml | 5 +
Ponomar/languages/en/xml/lives/9705.xml | 5 +
Ponomar/languages/en/xml/lives/9706.xml | 5 +
Ponomar/languages/en/xml/lives/9707.xml | 5 +
Ponomar/languages/en/xml/lives/9711.xml | 5 +
Ponomar/languages/en/xml/lives/9712.xml | 5 +
Ponomar/languages/en/xml/lives/9713.xml | 5 +
Ponomar/languages/en/xml/lives/9714.xml | 5 +
Ponomar/languages/en/xml/lives/9715.xml | 5 +
Ponomar/languages/en/xml/lives/9716.xml | 5 +
Ponomar/languages/en/xml/lives/9803.xml | 24 +
Ponomar/languages/en/xml/lives/9817.xml | 3 +-
Ponomar/languages/en/xml/lives/9819.xml | 3 +-
Ponomar/languages/fr/xml/02/22.xml | 2 +
Ponomar/languages/fr/xml/02/23.xml | 5 +-
Ponomar/languages/fr/xml/02/24.xml | 14 +
Ponomar/languages/fr/xml/02/25.xml | 9 +-
Ponomar/languages/fr/xml/02/26.xml | 9 +-
Ponomar/languages/fr/xml/02/27.xml | 2 +
Ponomar/languages/fr/xml/02/28.xml | 8 +-
Ponomar/languages/fr/xml/03/06.xml | 1 +
Ponomar/languages/fr/xml/03/07.xml | 3 +-
Ponomar/languages/fr/xml/03/08.xml | 3 +-
Ponomar/languages/fr/xml/03/09.xml | 9 +-
Ponomar/languages/fr/xml/03/10.xml | 6 +-
Ponomar/languages/fr/xml/03/11.xml | 5 +-
Ponomar/languages/fr/xml/03/12.xml | 5 +-
Ponomar/languages/fr/xml/03/13.xml | 4 +-
.../fr/xml/Commands/LanguagePacks.xml | 56 +-
Ponomar/languages/fr/xml/lives/0910702.xml | 3 +
Ponomar/languages/fr/xml/lives/1238.xml | 7 +-
Ponomar/languages/fr/xml/lives/123801.xml | 1 +
Ponomar/languages/fr/xml/lives/123803.xml | 3 +
Ponomar/languages/fr/xml/lives/123805.xml | 7 +
Ponomar/languages/fr/xml/lives/1625.xml | 3 +-
Ponomar/languages/fr/xml/lives/1843.xml | 2 +-
Ponomar/languages/fr/xml/lives/184301.xml | 7 +-
Ponomar/languages/fr/xml/lives/496.xml | 3 +-
Ponomar/languages/fr/xml/lives/508.xml | 3 +-
Ponomar/languages/fr/xml/lives/510.xml | 3 +-
Ponomar/languages/fr/xml/lives/523.xml | 3 +-
Ponomar/languages/fr/xml/lives/604.xml | 3 +-
Ponomar/languages/fr/xml/lives/614.xml | 3 +-
Ponomar/languages/fr/xml/lives/621.xml | 3 +-
Ponomar/languages/fr/xml/lives/90401.xml | 3 +
Ponomar/languages/fr/xml/lives/90402.xml | 3 +
Ponomar/languages/fr/xml/lives/9041.xml | 2 +-
Ponomar/languages/fr/xml/lives/9042.xml | 2 +-
Ponomar/languages/fr/xml/lives/9043.xml | 2 +-
Ponomar/languages/fr/xml/lives/90431.xml | 3 +
Ponomar/languages/fr/xml/lives/9044.xml | 2 +-
Ponomar/languages/fr/xml/lives/9045.xml | 2 +-
Ponomar/languages/fr/xml/lives/9046.xml | 2 +-
Ponomar/languages/fr/xml/lives/9047.xml | 2 +-
Ponomar/languages/fr/xml/lives/9048.xml | 2 +-
Ponomar/languages/fr/xml/lives/9064.xml | 2 +-
Ponomar/languages/fr/xml/lives/906401.xml | 3 +
Ponomar/languages/fr/xml/lives/9274.xml | 3 +-
Ponomar/languages/fr/xml/lives/9281.xml | 3 +-
Ponomar/languages/fr/xml/lives/9288.xml | 3 +-
Ponomar/languages/fr/xml/lives/9295.xml | 3 +-
Ponomar/languages/fr/xml/lives/9302.xml | 3 +-
Ponomar/languages/fr/xml/lives/9309.xml | 3 +-
Ponomar/languages/fr/xml/lives/9700.xml | 5 +
Ponomar/languages/fr/xml/lives/9701.xml | 5 +
Ponomar/languages/fr/xml/lives/9702.xml | 5 +
Ponomar/languages/fr/xml/lives/9703.xml | 5 +
Ponomar/languages/fr/xml/lives/9704.xml | 5 +
Ponomar/languages/fr/xml/lives/9705.xml | 5 +
Ponomar/languages/fr/xml/lives/9706.xml | 5 +
Ponomar/languages/fr/xml/lives/9707.xml | 5 +
Ponomar/languages/fr/xml/lives/9711.xml | 5 +
Ponomar/languages/fr/xml/lives/9712.xml | 5 +
Ponomar/languages/fr/xml/lives/9713.xml | 5 +
Ponomar/languages/fr/xml/lives/9714.xml | 5 +
Ponomar/languages/fr/xml/lives/9715.xml | 5 +
Ponomar/languages/fr/xml/lives/9716.xml | 5 +
Ponomar/languages/fr/xml/lives/9817.xml | 3 +-
Ponomar/languages/fr/xml/lives/9819.xml | 3 +-
.../languages/fr/xml/pentecostarion/43.xml | 7 +-
Ponomar/languages/xml/01/01.xml | 13 +-
Ponomar/languages/xml/01/02.xml | 10 +-
Ponomar/languages/xml/01/03.xml | 6 +
Ponomar/languages/xml/01/04.xml | 8 +
Ponomar/languages/xml/01/05.xml | 11 +
Ponomar/languages/xml/01/06.xml | 3 +
Ponomar/languages/xml/01/07.xml | 4 +
Ponomar/languages/xml/01/08.xml | 12 +
Ponomar/languages/xml/01/09.xml | 8 +
Ponomar/languages/xml/01/10.xml | 7 +
Ponomar/languages/xml/01/11.xml | 8 +
Ponomar/languages/xml/01/12.xml | 9 +
Ponomar/languages/xml/01/13.xml | 6 +
Ponomar/languages/xml/01/14.xml | 8 +
Ponomar/languages/xml/01/15.xml | 6 +
Ponomar/languages/xml/01/16.xml | 5 +
Ponomar/languages/xml/01/17.xml | 3 +
Ponomar/languages/xml/01/18.xml | 4 +
Ponomar/languages/xml/01/19.xml | 10 +
Ponomar/languages/xml/01/20.xml | 8 +
Ponomar/languages/xml/01/21.xml | 9 +
Ponomar/languages/xml/01/22.xml | 6 +
Ponomar/languages/xml/01/23.xml | 8 +
Ponomar/languages/xml/01/24.xml | 6 +
Ponomar/languages/xml/01/25.xml | 6 +
Ponomar/languages/xml/01/26.xml | 8 +
Ponomar/languages/xml/01/27.xml | 3 +
Ponomar/languages/xml/01/28.xml | 5 +
Ponomar/languages/xml/01/29.xml | 6 +
Ponomar/languages/xml/01/30.xml | 10 +-
Ponomar/languages/xml/01/31.xml | 5 +
Ponomar/languages/xml/02/01.xml | 8 +
Ponomar/languages/xml/02/02.xml | 5 +
Ponomar/languages/xml/02/03.xml | 10 +
Ponomar/languages/xml/02/04.xml | 8 +
Ponomar/languages/xml/02/05.xml | 6 +
Ponomar/languages/xml/02/06.xml | 11 +
Ponomar/languages/xml/02/07.xml | 7 +
Ponomar/languages/xml/02/08.xml | 7 +
Ponomar/languages/xml/02/09.xml | 7 +
Ponomar/languages/xml/02/10.xml | 6 +
Ponomar/languages/xml/02/11.xml | 3 +
Ponomar/languages/xml/02/12.xml | 6 +
Ponomar/languages/xml/02/13.xml | 5 +
Ponomar/languages/xml/02/14.xml | 8 +
Ponomar/languages/xml/02/15.xml | 6 +
Ponomar/languages/xml/02/16.xml | 5 +
Ponomar/languages/xml/02/17.xml | 7 +
Ponomar/languages/xml/02/18.xml | 5 +
Ponomar/languages/xml/02/19.xml | 7 +
Ponomar/languages/xml/02/20.xml | 7 +
Ponomar/languages/xml/02/21.xml | 5 +
Ponomar/languages/xml/02/22.xml | 7 +
Ponomar/languages/xml/02/23.xml | 9 +
Ponomar/languages/xml/02/24.xml | 17 +
Ponomar/languages/xml/02/25.xml | 6 +
Ponomar/languages/xml/02/26.xml | 7 +
Ponomar/languages/xml/02/27.xml | 9 +
Ponomar/languages/xml/02/28.xml | 12 +
Ponomar/languages/xml/02/29.xml | 6 +
Ponomar/languages/xml/03/01.xml | 7 +
Ponomar/languages/xml/03/02.xml | 7 +
Ponomar/languages/xml/03/03.xml | 5 +
Ponomar/languages/xml/03/04.xml | 6 +
Ponomar/languages/xml/03/05.xml | 11 +
Ponomar/languages/xml/03/06.xml | 7 +
Ponomar/languages/xml/03/07.xml | 7 +
Ponomar/languages/xml/03/08.xml | 8 +
Ponomar/languages/xml/03/09.xml | 12 +
Ponomar/languages/xml/03/10.xml | 9 +
Ponomar/languages/xml/03/11.xml | 9 +
Ponomar/languages/xml/03/12.xml | 9 +
Ponomar/languages/xml/03/13.xml | 10 +
Ponomar/languages/xml/03/14.xml | 5 +
Ponomar/languages/xml/03/15.xml | 5 +
Ponomar/languages/xml/03/16.xml | 7 +
Ponomar/languages/xml/03/17.xml | 4 +
Ponomar/languages/xml/03/18.xml | 5 +
Ponomar/languages/xml/03/19.xml | 4 +
Ponomar/languages/xml/03/20.xml | 6 +
Ponomar/languages/xml/03/21.xml | 5 +
Ponomar/languages/xml/03/22.xml | 4 +
Ponomar/languages/xml/03/23.xml | 6 +
Ponomar/languages/xml/03/24.xml | 7 +
Ponomar/languages/xml/03/25.xml | 4 +
Ponomar/languages/xml/03/26.xml | 8 +
Ponomar/languages/xml/03/27.xml | 5 +
Ponomar/languages/xml/03/28.xml | 6 +
Ponomar/languages/xml/03/29.xml | 5 +
Ponomar/languages/xml/03/30.xml | 8 +
Ponomar/languages/xml/03/31.xml | 6 +
Ponomar/languages/xml/04/01.xml | 7 +
Ponomar/languages/xml/04/02.xml | 5 +
Ponomar/languages/xml/04/03.xml | 6 +
Ponomar/languages/xml/04/04.xml | 6 +
Ponomar/languages/xml/04/05.xml | 8 +
Ponomar/languages/xml/04/06.xml | 7 +
Ponomar/languages/xml/04/07.xml | 6 +
Ponomar/languages/xml/04/08.xml | 6 +
Ponomar/languages/xml/04/09.xml | 5 +
Ponomar/languages/xml/04/10.xml | 5 +
Ponomar/languages/xml/04/11.xml | 6 +
Ponomar/languages/xml/04/12.xml | 8 +
Ponomar/languages/xml/04/13.xml | 5 +
Ponomar/languages/xml/04/14.xml | 5 +
Ponomar/languages/xml/04/15.xml | 5 +
Ponomar/languages/xml/04/16.xml | 4 +
Ponomar/languages/xml/04/17.xml | 6 +
Ponomar/languages/xml/04/18.xml | 5 +
Ponomar/languages/xml/04/19.xml | 7 +
Ponomar/languages/xml/04/20.xml | 7 +
Ponomar/languages/xml/04/21.xml | 6 +
Ponomar/languages/xml/04/22.xml | 5 +
Ponomar/languages/xml/04/23.xml | 6 +
Ponomar/languages/xml/04/24.xml | 10 +
Ponomar/languages/xml/04/25.xml | 4 +
Ponomar/languages/xml/04/26.xml | 5 +
Ponomar/languages/xml/04/27.xml | 5 +
Ponomar/languages/xml/04/28.xml | 5 +
Ponomar/languages/xml/04/29.xml | 5 +
Ponomar/languages/xml/04/30.xml | 6 +
Ponomar/languages/xml/05/01.xml | 6 +
Ponomar/languages/xml/05/02.xml | 4 +
Ponomar/languages/xml/05/03.xml | 6 +
Ponomar/languages/xml/05/04.xml | 6 +
Ponomar/languages/xml/05/05.xml | 3 +
Ponomar/languages/xml/05/06.xml | 6 +
Ponomar/languages/xml/05/07.xml | 5 +
Ponomar/languages/xml/05/08.xml | 5 +
Ponomar/languages/xml/05/09.xml | 6 +
Ponomar/languages/xml/05/10.xml | 8 +
Ponomar/languages/xml/05/11.xml | 7 +
Ponomar/languages/xml/05/12.xml | 7 +
Ponomar/languages/xml/05/13.xml | 6 +
Ponomar/languages/xml/05/14.xml | 6 +
Ponomar/languages/xml/05/15.xml | 5 +
Ponomar/languages/xml/05/16.xml | 7 +
Ponomar/languages/xml/05/17.xml | 5 +
Ponomar/languages/xml/05/18.xml | 7 +
Ponomar/languages/xml/05/19.xml | 5 +
Ponomar/languages/xml/05/20.xml | 5 +
Ponomar/languages/xml/05/21.xml | 3 +
Ponomar/languages/xml/05/22.xml | 4 +
Ponomar/languages/xml/05/23.xml | 5 +
Ponomar/languages/xml/05/24.xml | 4 +
Ponomar/languages/xml/05/25.xml | 4 +
Ponomar/languages/xml/05/26.xml | 5 +
Ponomar/languages/xml/05/27.xml | 4 +
Ponomar/languages/xml/05/28.xml | 7 +
Ponomar/languages/xml/05/29.xml | 6 +
Ponomar/languages/xml/05/30.xml | 3 +
Ponomar/languages/xml/05/31.xml | 5 +
Ponomar/languages/xml/06/01.xml | 4 +
Ponomar/languages/xml/06/02.xml | 4 +
Ponomar/languages/xml/06/03.xml | 4 +
Ponomar/languages/xml/06/04.xml | 7 +
Ponomar/languages/xml/06/05.xml | 8 +
Ponomar/languages/xml/06/06.xml | 6 +
Ponomar/languages/xml/06/07.xml | 5 +
Ponomar/languages/xml/06/08.xml | 5 +
Ponomar/languages/xml/06/09.xml | 4 +
Ponomar/languages/xml/06/10.xml | 7 +
Ponomar/languages/xml/06/11.xml | 4 +
Ponomar/languages/xml/06/12.xml | 5 +
Ponomar/languages/xml/06/13.xml | 6 +
Ponomar/languages/xml/06/14.xml | 4 +
Ponomar/languages/xml/06/15.xml | 9 +
Ponomar/languages/xml/06/16.xml | 4 +
Ponomar/languages/xml/06/17.xml | 3 +
Ponomar/languages/xml/06/18.xml | 4 +
Ponomar/languages/xml/06/19.xml | 6 +
Ponomar/languages/xml/06/20.xml | 7 +
Ponomar/languages/xml/06/21.xml | 5 +
Ponomar/languages/xml/06/22.xml | 5 +
Ponomar/languages/xml/06/23.xml | 5 +
Ponomar/languages/xml/06/24.xml | 4 +
Ponomar/languages/xml/06/25.xml | 3 +
Ponomar/languages/xml/06/26.xml | 4 +
Ponomar/languages/xml/06/27.xml | 6 +
Ponomar/languages/xml/06/28.xml | 4 +
Ponomar/languages/xml/06/29.xml | 3 +
Ponomar/languages/xml/06/30.xml | 3 +
Ponomar/languages/xml/07/01.xml | 5 +
Ponomar/languages/xml/07/02.xml | 4 +
Ponomar/languages/xml/07/03.xml | 8 +
Ponomar/languages/xml/07/04.xml | 9 +
Ponomar/languages/xml/07/05.xml | 6 +
Ponomar/languages/xml/07/06.xml | 8 +
Ponomar/languages/xml/07/07.xml | 7 +
Ponomar/languages/xml/07/08.xml | 3 +
Ponomar/languages/xml/07/09.xml | 7 +
Ponomar/languages/xml/07/10.xml | 9 +
Ponomar/languages/xml/07/11.xml | 5 +
Ponomar/languages/xml/07/12.xml | 8 +
Ponomar/languages/xml/07/13.xml | 8 +
Ponomar/languages/xml/07/14.xml | 7 +
Ponomar/languages/xml/07/15.xml | 6 +
Ponomar/languages/xml/07/16.xml | 7 +
Ponomar/languages/xml/07/17.xml | 5 +
Ponomar/languages/xml/07/18.xml | 8 +
Ponomar/languages/xml/07/19.xml | 6 +
Ponomar/languages/xml/07/20.xml | 3 +
Ponomar/languages/xml/07/21.xml | 5 +
Ponomar/languages/xml/07/22.xml | 4 +
Ponomar/languages/xml/07/23.xml | 5 +
Ponomar/languages/xml/07/24.xml | 5 +
Ponomar/languages/xml/07/25.xml | 5 +
Ponomar/languages/xml/07/26.xml | 5 +
Ponomar/languages/xml/07/27.xml | 5 +
Ponomar/languages/xml/07/28.xml | 7 +
Ponomar/languages/xml/07/29.xml | 7 +
Ponomar/languages/xml/07/30.xml | 6 +
Ponomar/languages/xml/07/31.xml | 4 +
Ponomar/languages/xml/08/01.xml | 4 +
Ponomar/languages/xml/08/02.xml | 4 +
Ponomar/languages/xml/08/03.xml | 5 +
Ponomar/languages/xml/08/04.xml | 5 +
Ponomar/languages/xml/08/05.xml | 8 +
Ponomar/languages/xml/08/06.xml | 3 +
Ponomar/languages/xml/08/07.xml | 9 +
Ponomar/languages/xml/08/08.xml | 8 +
Ponomar/languages/xml/08/09.xml | 7 +
Ponomar/languages/xml/08/10.xml | 4 +
Ponomar/languages/xml/08/11.xml | 6 +
Ponomar/languages/xml/08/12.xml | 6 +
Ponomar/languages/xml/08/13.xml | 5 +
Ponomar/languages/xml/08/14.xml | 6 +
Ponomar/languages/xml/08/15.xml | 3 +
Ponomar/languages/xml/08/16.xml | 7 +
Ponomar/languages/xml/08/17.xml | 9 +
Ponomar/languages/xml/08/18.xml | 10 +
Ponomar/languages/xml/08/19.xml | 5 +
Ponomar/languages/xml/08/20.xml | 6 +
Ponomar/languages/xml/08/21.xml | 6 +
Ponomar/languages/xml/08/22.xml | 6 +
Ponomar/languages/xml/08/23.xml | 7 +
Ponomar/languages/xml/08/24.xml | 6 +
Ponomar/languages/xml/08/25.xml | 6 +
Ponomar/languages/xml/08/26.xml | 3 +
Ponomar/languages/xml/08/27.xml | 8 +
Ponomar/languages/xml/08/28.xml | 5 +
Ponomar/languages/xml/08/29.xml | 3 +
Ponomar/languages/xml/08/30.xml | 5 +
Ponomar/languages/xml/08/31.xml | 5 +
Ponomar/languages/xml/09/01.xml | 9 +
Ponomar/languages/xml/09/02.xml | 6 +
Ponomar/languages/xml/09/03.xml | 8 +
Ponomar/languages/xml/09/04.xml | 8 +
Ponomar/languages/xml/09/05.xml | 10 +
Ponomar/languages/xml/09/06.xml | 9 +
Ponomar/languages/xml/09/07.xml | 7 +
Ponomar/languages/xml/09/08.xml | 5 +
Ponomar/languages/xml/09/09.xml | 9 +
Ponomar/languages/xml/09/10.xml | 9 +
Ponomar/languages/xml/09/11.xml | 8 +
Ponomar/languages/xml/09/12.xml | 7 +
Ponomar/languages/xml/09/13.xml | 9 +
Ponomar/languages/xml/09/14.xml | 4 +
Ponomar/languages/xml/09/15.xml | 11 +
Ponomar/languages/xml/09/16.xml | 10 +
Ponomar/languages/xml/09/17.xml | 7 +
Ponomar/languages/xml/09/18.xml | 7 +
Ponomar/languages/xml/09/19.xml | 5 +
Ponomar/languages/xml/09/20.xml | 5 +
Ponomar/languages/xml/09/21.xml | 8 +
Ponomar/languages/xml/09/22.xml | 7 +
Ponomar/languages/xml/09/23.xml | 7 +
Ponomar/languages/xml/09/24.xml | 5 +
Ponomar/languages/xml/09/25.xml | 4 +
Ponomar/languages/xml/09/26.xml | 3 +
Ponomar/languages/xml/09/27.xml | 6 +
Ponomar/languages/xml/09/28.xml | 7 +
Ponomar/languages/xml/09/29.xml | 5 +
Ponomar/languages/xml/09/30.xml | 5 +
Ponomar/languages/xml/10/01.xml | 7 +
Ponomar/languages/xml/10/02.xml | 4 +
Ponomar/languages/xml/10/03.xml | 7 +
Ponomar/languages/xml/10/04.xml | 12 +
Ponomar/languages/xml/10/05.xml | 7 +
Ponomar/languages/xml/10/06.xml | 3 +
Ponomar/languages/xml/10/07.xml | 7 +
Ponomar/languages/xml/10/08.xml | 6 +
Ponomar/languages/xml/10/09.xml | 10 +
Ponomar/languages/xml/10/10.xml | 8 +
Ponomar/languages/xml/10/11.xml | 7 +
Ponomar/languages/xml/10/12.xml | 8 +
Ponomar/languages/xml/10/13.xml | 8 +
Ponomar/languages/xml/10/14.xml | 5 +
Ponomar/languages/xml/10/15.xml | 8 +
Ponomar/languages/xml/10/16.xml | 5 +
Ponomar/languages/xml/10/17.xml | 5 +
Ponomar/languages/xml/10/18.xml | 5 +
Ponomar/languages/xml/10/19.xml | 8 +
Ponomar/languages/xml/10/20.xml | 4 +
Ponomar/languages/xml/10/21.xml | 6 +
Ponomar/languages/xml/10/22.xml | 5 +
Ponomar/languages/xml/10/23.xml | 4 +
Ponomar/languages/xml/10/24.xml | 8 +
Ponomar/languages/xml/10/25.xml | 7 +
Ponomar/languages/xml/10/26.xml | 6 +
Ponomar/languages/xml/10/27.xml | 7 +
Ponomar/languages/xml/10/28.xml | 10 +
Ponomar/languages/xml/10/29.xml | 5 +
Ponomar/languages/xml/10/30.xml | 7 +
Ponomar/languages/xml/10/31.xml | 6 +
Ponomar/languages/xml/11/01.xml | 6 +
Ponomar/languages/xml/11/02.xml | 4 +
Ponomar/languages/xml/11/03.xml | 7 +
Ponomar/languages/xml/11/04.xml | 5 +
Ponomar/languages/xml/11/05.xml | 5 +
Ponomar/languages/xml/11/06.xml | 9 +
Ponomar/languages/xml/11/07.xml | 8 +
Ponomar/languages/xml/11/08.xml | 3 +
Ponomar/languages/xml/11/09.xml | 11 +
Ponomar/languages/xml/11/10.xml | 7 +
Ponomar/languages/xml/11/11.xml | 6 +
Ponomar/languages/xml/11/12.xml | 6 +
Ponomar/languages/xml/11/13.xml | 5 +
Ponomar/languages/xml/11/14.xml | 5 +
Ponomar/languages/xml/11/15.xml | 5 +
Ponomar/languages/xml/11/16.xml | 4 +
Ponomar/languages/xml/11/17.xml | 5 +
Ponomar/languages/xml/11/18.xml | 5 +
Ponomar/languages/xml/11/19.xml | 8 +
Ponomar/languages/xml/11/20.xml | 8 +
Ponomar/languages/xml/11/21.xml | 3 +
Ponomar/languages/xml/11/22.xml | 9 +
Ponomar/languages/xml/11/23.xml | 6 +
Ponomar/languages/xml/11/24.xml | 8 +
Ponomar/languages/xml/11/25.xml | 5 +
Ponomar/languages/xml/11/26.xml | 5 +
Ponomar/languages/xml/11/27.xml | 5 +
Ponomar/languages/xml/11/28.xml | 5 +
Ponomar/languages/xml/11/29.xml | 7 +
Ponomar/languages/xml/11/30.xml | 4 +
Ponomar/languages/xml/12/01.xml | 5 +
Ponomar/languages/xml/12/02.xml | 6 +
Ponomar/languages/xml/12/03.xml | 6 +
Ponomar/languages/xml/12/04.xml | 6 +
Ponomar/languages/xml/12/05.xml | 5 +
Ponomar/languages/xml/12/06.xml | 3 +
Ponomar/languages/xml/12/07.xml | 6 +
Ponomar/languages/xml/12/08.xml | 6 +
Ponomar/languages/xml/12/09.xml | 6 +
Ponomar/languages/xml/12/10.xml | 5 +
Ponomar/languages/xml/12/11.xml | 7 +
Ponomar/languages/xml/12/12.xml | 5 +
Ponomar/languages/xml/12/13.xml | 6 +
Ponomar/languages/xml/12/14.xml | 4 +
Ponomar/languages/xml/12/15.xml | 6 +
Ponomar/languages/xml/12/16.xml | 5 +
Ponomar/languages/xml/12/17.xml | 4 +
Ponomar/languages/xml/12/18.xml | 5 +
Ponomar/languages/xml/12/19.xml | 8 +
Ponomar/languages/xml/12/20.xml | 5 +
Ponomar/languages/xml/12/21.xml | 5 +
Ponomar/languages/xml/12/22.xml | 5 +
Ponomar/languages/xml/12/23.xml | 7 +
Ponomar/languages/xml/12/24.xml | 6 +
Ponomar/languages/xml/12/25.xml | 3 +
Ponomar/languages/xml/12/26.xml | 7 +
Ponomar/languages/xml/12/27.xml | 5 +
Ponomar/languages/xml/12/28.xml | 5 +
Ponomar/languages/xml/12/29.xml | 7 +
Ponomar/languages/xml/12/30.xml | 13 +-
Ponomar/languages/xml/12/31.xml | 10 +-
.../languages/xml/Commands/DivineLiturgy.xml | 12 +-
.../languages/xml/Commands/ServiceRules.xml | 186 ++--
Ponomar/languages/xml/Services/NinthHour.xml | 2 +-
.../languages/xml/Services/PaschalHours.xml | 17 +-
Ponomar/languages/xml/Services/Prime.xml | 19 +-
Ponomar/languages/xml/Services/RoyalHours.xml | 4 +-
Ponomar/languages/xml/Services/SixthHour.xml | 3 +-
Ponomar/languages/xml/Services/ThirdHour.xml | 3 +-
.../languages/xml/Services/UsualBeginning.xml | 2 +-
Ponomar/languages/xml/bible.xml | 16 +-
Ponomar/languages/xml/lives/010101.xml | 2 +-
Ponomar/languages/xml/lives/09006.xml | 19 +-
Ponomar/languages/xml/lives/09013.xml | 26 +-
Ponomar/languages/xml/lives/0910702.xml | 1 +
Ponomar/languages/xml/lives/10260000.xml | 2 +-
Ponomar/languages/xml/lives/123803.xml | 18 +-
Ponomar/languages/xml/lives/163.xml | 17 +
Ponomar/languages/xml/lives/2569.xml | 4 -
Ponomar/languages/xml/lives/2575.xml | 2 +-
Ponomar/languages/xml/lives/3174.xml | 14 +
Ponomar/languages/xml/lives/373.xml | 1 +
Ponomar/languages/xml/lives/4386.xml | 2 +-
Ponomar/languages/xml/lives/4444.xml | 2 +-
Ponomar/languages/xml/lives/53901.xml | 4 +-
Ponomar/languages/xml/lives/90402.xml | 4 +
Ponomar/languages/xml/lives/9048.xml | 2 +-
Ponomar/languages/xml/lives/9064.xml | 2 -
Ponomar/languages/xml/lives/906401.xml | 8 +
Ponomar/languages/xml/lives/907801.xml | 8 +
Ponomar/languages/xml/lives/9135.xml | 10 +-
Ponomar/languages/xml/lives/9136.xml | 10 +-
Ponomar/languages/xml/lives/9137.xml | 10 +-
Ponomar/languages/xml/lives/9138.xml | 10 +-
Ponomar/languages/xml/lives/9139.xml | 10 +-
Ponomar/languages/xml/lives/9140.xml | 10 +-
Ponomar/languages/xml/lives/9141.xml | 10 +-
Ponomar/languages/xml/lives/9142.xml | 10 +-
Ponomar/languages/xml/lives/9143.xml | 10 +-
Ponomar/languages/xml/lives/9144.xml | 10 +-
Ponomar/languages/xml/lives/9145.xml | 10 +-
Ponomar/languages/xml/lives/9146.xml | 10 +-
Ponomar/languages/xml/lives/9147.xml | 10 +-
Ponomar/languages/xml/lives/9148.xml | 10 +-
Ponomar/languages/xml/lives/9149.xml | 14 +-
Ponomar/languages/xml/lives/9150.xml | 14 +-
Ponomar/languages/xml/lives/9151.xml | 14 +-
Ponomar/languages/xml/lives/9152.xml | 14 +-
Ponomar/languages/xml/lives/9153.xml | 14 +-
Ponomar/languages/xml/lives/9154.xml | 14 +-
Ponomar/languages/xml/lives/9155.xml | 14 +-
Ponomar/languages/xml/lives/9156.xml | 16 +-
Ponomar/languages/xml/lives/9157.xml | 16 +-
Ponomar/languages/xml/lives/9158.xml | 16 +-
Ponomar/languages/xml/lives/9159.xml | 16 +-
Ponomar/languages/xml/lives/9160.xml | 16 +-
Ponomar/languages/xml/lives/9161.xml | 16 +-
Ponomar/languages/xml/lives/9162.xml | 16 +-
Ponomar/languages/xml/lives/9163.xml | 24 +-
Ponomar/languages/xml/lives/9164.xml | 25 +-
Ponomar/languages/xml/lives/9165.xml | 25 +-
Ponomar/languages/xml/lives/9166.xml | 25 +-
Ponomar/languages/xml/lives/9167.xml | 25 +-
Ponomar/languages/xml/lives/9168.xml | 23 +-
Ponomar/languages/xml/lives/9169.xml | 21 +-
Ponomar/languages/xml/lives/9170.xml | 25 +-
Ponomar/languages/xml/lives/9171.xml | 25 +-
Ponomar/languages/xml/lives/9172.xml | 25 +-
Ponomar/languages/xml/lives/9173.xml | 25 +-
Ponomar/languages/xml/lives/9174.xml | 25 +-
Ponomar/languages/xml/lives/9175.xml | 20 +-
Ponomar/languages/xml/lives/9176.xml | 42 +-
Ponomar/languages/xml/lives/9177.xml | 25 +-
Ponomar/languages/xml/lives/9178.xml | 25 +-
Ponomar/languages/xml/lives/9179.xml | 25 +-
Ponomar/languages/xml/lives/9180.xml | 25 +-
Ponomar/languages/xml/lives/9181.xml | 25 +-
Ponomar/languages/xml/lives/9182.xml | 23 +-
Ponomar/languages/xml/lives/9183.xml | 23 +-
Ponomar/languages/xml/lives/9184.xml | 25 +-
Ponomar/languages/xml/lives/9185.xml | 25 +-
Ponomar/languages/xml/lives/9186.xml | 25 +-
Ponomar/languages/xml/lives/9187.xml | 25 +-
Ponomar/languages/xml/lives/9188.xml | 25 +-
Ponomar/languages/xml/lives/9189.xml | 25 +-
Ponomar/languages/xml/lives/9190.xml | 25 +-
Ponomar/languages/xml/lives/9191.xml | 25 +-
Ponomar/languages/xml/lives/9192.xml | 25 +-
Ponomar/languages/xml/lives/9193.xml | 25 +-
Ponomar/languages/xml/lives/9194.xml | 25 +-
Ponomar/languages/xml/lives/9195.xml | 25 +-
Ponomar/languages/xml/lives/9196.xml | 25 +-
Ponomar/languages/xml/lives/9197.xml | 25 +-
Ponomar/languages/xml/lives/9198.xml | 25 +-
Ponomar/languages/xml/lives/9199.xml | 25 +-
Ponomar/languages/xml/lives/9200.xml | 25 +-
Ponomar/languages/xml/lives/9201.xml | 25 +-
Ponomar/languages/xml/lives/9202.xml | 25 +-
Ponomar/languages/xml/lives/9203.xml | 25 +-
Ponomar/languages/xml/lives/9204.xml | 25 +-
Ponomar/languages/xml/lives/9205.xml | 25 +-
Ponomar/languages/xml/lives/9206.xml | 25 +-
Ponomar/languages/xml/lives/9207.xml | 25 +-
Ponomar/languages/xml/lives/9208.xml | 25 +-
Ponomar/languages/xml/lives/9209.xml | 25 +-
Ponomar/languages/xml/lives/9210.xml | 25 +-
Ponomar/languages/xml/lives/9211.xml | 25 +-
Ponomar/languages/xml/lives/9212.xml | 25 +-
Ponomar/languages/xml/lives/9213.xml | 25 +-
Ponomar/languages/xml/lives/9214.xml | 25 +-
Ponomar/languages/xml/lives/9215.xml | 25 +-
Ponomar/languages/xml/lives/9216.xml | 25 +-
Ponomar/languages/xml/lives/9217.xml | 25 +-
Ponomar/languages/xml/lives/9218.xml | 25 +-
Ponomar/languages/xml/lives/9219.xml | 25 +-
Ponomar/languages/xml/lives/9220.xml | 25 +-
Ponomar/languages/xml/lives/9221.xml | 25 +-
Ponomar/languages/xml/lives/9222.xml | 25 +-
Ponomar/languages/xml/lives/9223.xml | 25 +-
Ponomar/languages/xml/lives/9224.xml | 25 +-
Ponomar/languages/xml/lives/9225.xml | 27 +-
Ponomar/languages/xml/lives/9226.xml | 25 +-
Ponomar/languages/xml/lives/9227.xml | 26 +-
Ponomar/languages/xml/lives/9228.xml | 25 +-
Ponomar/languages/xml/lives/9229.xml | 25 +-
Ponomar/languages/xml/lives/9230.xml | 25 +-
Ponomar/languages/xml/lives/9231.xml | 43 +-
Ponomar/languages/xml/lives/9232.xml | 33 +-
Ponomar/languages/xml/lives/9233.xml | 25 +-
Ponomar/languages/xml/lives/9234.xml | 25 +-
Ponomar/languages/xml/lives/9235.xml | 25 +-
Ponomar/languages/xml/lives/9236.xml | 25 +-
Ponomar/languages/xml/lives/9237.xml | 25 +-
Ponomar/languages/xml/lives/9238.xml | 32 +-
Ponomar/languages/xml/lives/9239.xml | 35 +-
Ponomar/languages/xml/lives/9240.xml | 22 +-
Ponomar/languages/xml/lives/9241.xml | 22 +-
Ponomar/languages/xml/lives/9242.xml | 22 +-
Ponomar/languages/xml/lives/9243.xml | 22 +-
Ponomar/languages/xml/lives/9244.xml | 22 +-
Ponomar/languages/xml/lives/9245.xml | 31 +-
Ponomar/languages/xml/lives/9246.xml | 34 +-
Ponomar/languages/xml/lives/9247.xml | 19 +-
Ponomar/languages/xml/lives/9248.xml | 19 +-
Ponomar/languages/xml/lives/9249.xml | 19 +-
Ponomar/languages/xml/lives/9250.xml | 19 +-
Ponomar/languages/xml/lives/9251.xml | 19 +-
Ponomar/languages/xml/lives/9252.xml | 40 +-
Ponomar/languages/xml/lives/9253.xml | 50 +-
Ponomar/languages/xml/lives/9254.xml | 24 +-
Ponomar/languages/xml/lives/9255.xml | 24 +-
Ponomar/languages/xml/lives/9256.xml | 24 +-
Ponomar/languages/xml/lives/9257.xml | 24 +-
Ponomar/languages/xml/lives/9258.xml | 24 +-
Ponomar/languages/xml/lives/9259.xml | 53 +-
Ponomar/languages/xml/lives/9260.xml | 49 +-
Ponomar/languages/xml/lives/9261.xml | 28 +-
Ponomar/languages/xml/lives/9262.xml | 26 +-
Ponomar/languages/xml/lives/9263.xml | 26 +-
Ponomar/languages/xml/lives/9264.xml | 25 +-
Ponomar/languages/xml/lives/9265.xml | 25 +-
Ponomar/languages/xml/lives/9266.xml | 47 +-
Ponomar/languages/xml/lives/9267.xml | 43 +-
Ponomar/languages/xml/lives/9268.xml | 24 +-
Ponomar/languages/xml/lives/9269.xml | 24 +-
Ponomar/languages/xml/lives/9270.xml | 21 +-
Ponomar/languages/xml/lives/9271.xml | 26 +-
Ponomar/languages/xml/lives/9272.xml | 26 +-
Ponomar/languages/xml/lives/9273.xml | 39 +-
Ponomar/languages/xml/lives/9274.xml | 25 +-
Ponomar/languages/xml/lives/9275.xml | 35 +-
Ponomar/languages/xml/lives/9276.xml | 35 +-
Ponomar/languages/xml/lives/9277.xml | 30 +-
Ponomar/languages/xml/lives/9278.xml | 33 +-
Ponomar/languages/xml/lives/9279.xml | 33 +-
Ponomar/languages/xml/lives/9280.xml | 12 +-
Ponomar/languages/xml/lives/9281.xml | 14 +-
Ponomar/languages/xml/lives/9282.xml | 29 +-
Ponomar/languages/xml/lives/9283.xml | 29 +-
Ponomar/languages/xml/lives/9284.xml | 27 +-
Ponomar/languages/xml/lives/9285.xml | 26 +-
Ponomar/languages/xml/lives/9286.xml | 23 +-
Ponomar/languages/xml/lives/9287.xml | 23 +-
Ponomar/languages/xml/lives/9288.xml | 24 +-
Ponomar/languages/xml/lives/9289.xml | 17 +-
Ponomar/languages/xml/lives/9290.xml | 17 +-
Ponomar/languages/xml/lives/9291.xml | 17 +-
Ponomar/languages/xml/lives/9292.xml | 17 +-
Ponomar/languages/xml/lives/9293.xml | 17 +-
Ponomar/languages/xml/lives/9294.xml | 23 +-
Ponomar/languages/xml/lives/9295.xml | 33 +-
Ponomar/languages/xml/lives/9296.xml | 14 +-
Ponomar/languages/xml/lives/9297.xml | 12 +-
Ponomar/languages/xml/lives/9298.xml | 12 +-
Ponomar/languages/xml/lives/9299.xml | 12 +-
Ponomar/languages/xml/lives/9300.xml | 12 +-
Ponomar/languages/xml/lives/9301.xml | 18 +-
Ponomar/languages/xml/lives/9302.xml | 18 +-
Ponomar/languages/xml/lives/9303.xml | 12 +-
Ponomar/languages/xml/lives/9304.xml | 12 +-
Ponomar/languages/xml/lives/9305.xml | 12 +-
Ponomar/languages/xml/lives/9306.xml | 12 +-
Ponomar/languages/xml/lives/9307.xml | 12 +-
Ponomar/languages/xml/lives/9308.xml | 14 +-
Ponomar/languages/xml/lives/9309.xml | 4 +-
Ponomar/languages/xml/lives/9310.xml | 4 +-
Ponomar/languages/xml/lives/9311.xml | 4 +-
Ponomar/languages/xml/lives/9312.xml | 4 +-
Ponomar/languages/xml/lives/9313.xml | 4 +-
Ponomar/languages/xml/lives/9314.xml | 4 +-
Ponomar/languages/xml/lives/9315.xml | 4 +-
Ponomar/languages/xml/lives/9908.xml | 4 +-
Ponomar/languages/xml/pentecostarion/253.xml | 9 +-
Ponomar/languages/xml/pentecostarion/40.xml | 8 +-
Ponomar/languages/xml/pentecostarion/41.xml | 1 +
Ponomar/languages/xml/pentecostarion/42.xml | 1 +
Ponomar/languages/xml/pentecostarion/43.xml | 3 +
Ponomar/languages/xml/pentecostarion/44.xml | 1 +
Ponomar/languages/xml/pentecostarion/45.xml | 1 +
Ponomar/languages/xml/pentecostarion/46.xml | 1 +
Ponomar/languages/xml/pentecostarion/47.xml | 1 +
Ponomar/languages/xml/pentecostarion/48.xml | 1 +
Ponomar/languages/xml/pentecostarion/64.xml | 3 +-
Ponomar/languages/xml/ponomar.config | 2 +-
.../zh/Hans/xml/Commands/LanguagePacks.xml | 43 +-
.../languages/zh/Hans/xml/lives/0910702.xml | 4 +
Ponomar/languages/zh/Hans/xml/lives/1238.xml | 4 +-
.../languages/zh/Hans/xml/lives/123801.xml | 1 +
.../languages/zh/Hans/xml/lives/123803.xml | 4 +
.../languages/zh/Hans/xml/lives/123805.xml | 6 +
Ponomar/languages/zh/Hans/xml/lives/1625.xml | 3 +-
.../languages/zh/Hans/xml/lives/184301.xml | 8 +-
Ponomar/languages/zh/Hans/xml/lives/496.xml | 3 +-
Ponomar/languages/zh/Hans/xml/lives/508.xml | 3 +-
Ponomar/languages/zh/Hans/xml/lives/510.xml | 3 +-
Ponomar/languages/zh/Hans/xml/lives/523.xml | 3 +-
Ponomar/languages/zh/Hans/xml/lives/604.xml | 3 +-
Ponomar/languages/zh/Hans/xml/lives/614.xml | 5 +-
Ponomar/languages/zh/Hans/xml/lives/621.xml | 5 +-
Ponomar/languages/zh/Hans/xml/lives/90401.xml | 2 +-
Ponomar/languages/zh/Hans/xml/lives/90402.xml | 3 +
Ponomar/languages/zh/Hans/xml/lives/90407.xml | 3 +
Ponomar/languages/zh/Hans/xml/lives/9041.xml | 2 +-
Ponomar/languages/zh/Hans/xml/lives/9042.xml | 2 +-
Ponomar/languages/zh/Hans/xml/lives/9043.xml | 2 +-
Ponomar/languages/zh/Hans/xml/lives/90431.xml | 3 +
Ponomar/languages/zh/Hans/xml/lives/9044.xml | 2 +-
Ponomar/languages/zh/Hans/xml/lives/9045.xml | 2 +-
Ponomar/languages/zh/Hans/xml/lives/9046.xml | 2 +-
Ponomar/languages/zh/Hans/xml/lives/9047.xml | 2 +-
Ponomar/languages/zh/Hans/xml/lives/9048.xml | 2 +-
Ponomar/languages/zh/Hans/xml/lives/9064.xml | 6 +-
.../languages/zh/Hans/xml/lives/906401.xml | 4 +
Ponomar/languages/zh/Hans/xml/lives/9274.xml | 3 +-
Ponomar/languages/zh/Hans/xml/lives/9281.xml | 3 +-
Ponomar/languages/zh/Hans/xml/lives/9288.xml | 3 +-
Ponomar/languages/zh/Hans/xml/lives/9295.xml | 3 +-
Ponomar/languages/zh/Hans/xml/lives/9302.xml | 3 +-
.../zh/Hant/xml/Commands/LanguagePacks.xml | 42 +-
.../languages/zh/Hant/xml/lives/0910702.xml | 4 +
Ponomar/languages/zh/Hant/xml/lives/1238.xml | 4 +-
.../languages/zh/Hant/xml/lives/123801.xml | 1 +
.../languages/zh/Hant/xml/lives/123803.xml | 4 +
.../languages/zh/Hant/xml/lives/123805.xml | 6 +
Ponomar/languages/zh/Hant/xml/lives/1625.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/1843.xml | 2 +-
.../languages/zh/Hant/xml/lives/184301.xml | 8 +-
Ponomar/languages/zh/Hant/xml/lives/496.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/508.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/510.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/523.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/604.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/614.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/621.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/90401.xml | 2 +-
Ponomar/languages/zh/Hant/xml/lives/90402.xml | 3 +
Ponomar/languages/zh/Hant/xml/lives/90407.xml | 3 +
Ponomar/languages/zh/Hant/xml/lives/9041.xml | 2 +-
Ponomar/languages/zh/Hant/xml/lives/9042.xml | 2 +-
Ponomar/languages/zh/Hant/xml/lives/9043.xml | 2 +-
Ponomar/languages/zh/Hant/xml/lives/90431.xml | 3 +
Ponomar/languages/zh/Hant/xml/lives/9044.xml | 2 +-
Ponomar/languages/zh/Hant/xml/lives/9045.xml | 2 +-
Ponomar/languages/zh/Hant/xml/lives/9046.xml | 2 +-
Ponomar/languages/zh/Hant/xml/lives/9047.xml | 2 +-
Ponomar/languages/zh/Hant/xml/lives/9048.xml | 2 +-
Ponomar/languages/zh/Hant/xml/lives/9064.xml | 6 +-
.../languages/zh/Hant/xml/lives/906401.xml | 4 +
Ponomar/languages/zh/Hant/xml/lives/9274.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/9281.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/9288.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/9295.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/9302.xml | 3 +-
Ponomar/languages/zh/Hant/xml/lives/9309.xml | 1 +
Ponomar/languages/zh/xml/02/22.xml | 2 +
Ponomar/languages/zh/xml/02/23.xml | 6 +-
Ponomar/languages/zh/xml/02/24.xml | 12 +
Ponomar/languages/zh/xml/02/25.xml | 7 +-
Ponomar/languages/zh/xml/02/26.xml | 7 +-
Ponomar/languages/zh/xml/02/27.xml | 2 +
Ponomar/languages/zh/xml/02/28.xml | 14 +-
Ponomar/languages/zh/xml/03/06.xml | 1 +
Ponomar/languages/zh/xml/03/07.xml | 4 +-
Ponomar/languages/zh/xml/03/08.xml | 3 +-
Ponomar/languages/zh/xml/03/09.xml | 9 +-
Ponomar/languages/zh/xml/03/10.xml | 7 +-
Ponomar/languages/zh/xml/03/11.xml | 6 +-
Ponomar/languages/zh/xml/03/12.xml | 6 +-
Ponomar/languages/zh/xml/03/13.xml | 5 +-
1928 files changed, 12644 insertions(+), 6631 deletions(-)
create mode 100644 Ponomar/EditCommemoration.java
create mode 100644 Ponomar/EditPrayers.java
create mode 100644 Ponomar/FindReadingList.java
create mode 100644 Ponomar/GetID.java
create mode 100644 Ponomar/HandlerXML.java
create mode 100644 Ponomar/JDate2.java
create mode 100644 Ponomar/languages/cu/ru/xml/Services/Var/PTrop1.xml
create mode 100644 Ponomar/languages/cu/ru/xml/Services/Var/PTrop2.xml
create mode 100644 Ponomar/languages/cu/ru/xml/lives/0910702.xml
create mode 100644 Ponomar/languages/cu/ru/xml/lives/123803.xml
create mode 100644 Ponomar/languages/cu/ru/xml/lives/123805.xml
create mode 100644 Ponomar/languages/cu/ru/xml/lives/90402.xml
create mode 100644 Ponomar/languages/cu/ru/xml/lives/90407.xml
create mode 100644 Ponomar/languages/cu/ru/xml/lives/90431.xml
create mode 100644 Ponomar/languages/cu/ru/xml/lives/906401.xml
create mode 100644 Ponomar/languages/cu/xml/Services/CommonPrayers/ProkimenHT1.xml
create mode 100644 Ponomar/languages/cu/xml/Services/CommonPrayers/ProkimenHT2.xml
create mode 100644 Ponomar/languages/cu/xml/Services/CommonPrayers/StychHT1.xml
create mode 100644 Ponomar/languages/cu/xml/Services/CommonPrayers/StychHT2.xml
create mode 100644 Ponomar/languages/cu/xml/Services/CommonPrayers/TroparProph3.xml
create mode 100644 Ponomar/languages/cu/xml/Services/Var/PTrop31.xml
create mode 100644 Ponomar/languages/cu/xml/lives/011100.xml
create mode 100644 Ponomar/languages/cu/xml/lives/012910.xml
create mode 100644 Ponomar/languages/cu/xml/lives/051102.xml
create mode 100644 Ponomar/languages/cu/xml/lives/08010299.xml
create mode 100644 Ponomar/languages/cu/xml/lives/0910702.xml
create mode 100644 Ponomar/languages/cu/xml/lives/11150299.xml
create mode 100644 Ponomar/languages/cu/xml/lives/123803.xml
create mode 100644 Ponomar/languages/cu/xml/lives/123805.xml
create mode 100644 Ponomar/languages/cu/xml/lives/90402.xml
create mode 100644 Ponomar/languages/cu/xml/lives/90407.xml
create mode 100644 Ponomar/languages/cu/xml/lives/90431.xml
create mode 100644 Ponomar/languages/cu/xml/lives/906401.xml
create mode 100644 Ponomar/languages/cu/xml/lives/96201.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9700.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9701.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9702.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9703.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9704.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9705.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9706.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9707.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9711.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9712.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9713.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9714.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9715.xml
create mode 100644 Ponomar/languages/cu/xml/lives/9716.xml
create mode 100644 Ponomar/languages/el/mono/xml/lives/0910702.xml
create mode 100644 Ponomar/languages/el/mono/xml/lives/123803.xml
create mode 100644 Ponomar/languages/el/mono/xml/lives/123805.xml
create mode 100644 Ponomar/languages/el/mono/xml/lives/90401.xml
create mode 100644 Ponomar/languages/el/mono/xml/lives/90402.xml
create mode 100644 Ponomar/languages/el/mono/xml/lives/90431.xml
create mode 100644 Ponomar/languages/el/mono/xml/lives/906401.xml
create mode 100644 Ponomar/languages/el/xml/lives/0910702.xml
create mode 100644 Ponomar/languages/el/xml/lives/123803.xml
create mode 100644 Ponomar/languages/el/xml/lives/123805.xml
create mode 100644 Ponomar/languages/el/xml/lives/90401.xml
create mode 100644 Ponomar/languages/el/xml/lives/90402.xml
create mode 100644 Ponomar/languages/el/xml/lives/90431.xml
create mode 100644 Ponomar/languages/el/xml/lives/906401.xml
create mode 100644 Ponomar/languages/en/xml/lives/012910.xml
create mode 100644 Ponomar/languages/en/xml/lives/123805.xml
create mode 100644 Ponomar/languages/en/xml/lives/90402.xml
create mode 100644 Ponomar/languages/en/xml/lives/90407.xml
create mode 100644 Ponomar/languages/en/xml/lives/90431.xml
create mode 100644 Ponomar/languages/en/xml/lives/906401.xml
create mode 100644 Ponomar/languages/en/xml/lives/9700.xml
create mode 100644 Ponomar/languages/en/xml/lives/9701.xml
create mode 100644 Ponomar/languages/en/xml/lives/9702.xml
create mode 100644 Ponomar/languages/en/xml/lives/9703.xml
create mode 100644 Ponomar/languages/en/xml/lives/9704.xml
create mode 100644 Ponomar/languages/en/xml/lives/9705.xml
create mode 100644 Ponomar/languages/en/xml/lives/9706.xml
create mode 100644 Ponomar/languages/en/xml/lives/9707.xml
create mode 100644 Ponomar/languages/en/xml/lives/9711.xml
create mode 100644 Ponomar/languages/en/xml/lives/9712.xml
create mode 100644 Ponomar/languages/en/xml/lives/9713.xml
create mode 100644 Ponomar/languages/en/xml/lives/9714.xml
create mode 100644 Ponomar/languages/en/xml/lives/9715.xml
create mode 100644 Ponomar/languages/en/xml/lives/9716.xml
create mode 100644 Ponomar/languages/fr/xml/lives/0910702.xml
create mode 100644 Ponomar/languages/fr/xml/lives/123803.xml
create mode 100644 Ponomar/languages/fr/xml/lives/123805.xml
create mode 100644 Ponomar/languages/fr/xml/lives/90401.xml
create mode 100644 Ponomar/languages/fr/xml/lives/90402.xml
create mode 100644 Ponomar/languages/fr/xml/lives/90431.xml
create mode 100644 Ponomar/languages/fr/xml/lives/906401.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9700.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9701.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9702.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9703.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9704.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9705.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9706.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9707.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9711.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9712.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9713.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9714.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9715.xml
create mode 100644 Ponomar/languages/fr/xml/lives/9716.xml
create mode 100644 Ponomar/languages/xml/01/03.xml
create mode 100644 Ponomar/languages/xml/01/04.xml
create mode 100644 Ponomar/languages/xml/01/05.xml
create mode 100644 Ponomar/languages/xml/01/06.xml
create mode 100644 Ponomar/languages/xml/01/07.xml
create mode 100644 Ponomar/languages/xml/01/08.xml
create mode 100644 Ponomar/languages/xml/01/09.xml
create mode 100644 Ponomar/languages/xml/01/10.xml
create mode 100644 Ponomar/languages/xml/01/11.xml
create mode 100644 Ponomar/languages/xml/01/12.xml
create mode 100644 Ponomar/languages/xml/01/13.xml
create mode 100644 Ponomar/languages/xml/01/14.xml
create mode 100644 Ponomar/languages/xml/01/15.xml
create mode 100644 Ponomar/languages/xml/01/16.xml
create mode 100644 Ponomar/languages/xml/01/17.xml
create mode 100644 Ponomar/languages/xml/01/18.xml
create mode 100644 Ponomar/languages/xml/01/19.xml
create mode 100644 Ponomar/languages/xml/01/20.xml
create mode 100644 Ponomar/languages/xml/01/21.xml
create mode 100644 Ponomar/languages/xml/01/22.xml
create mode 100644 Ponomar/languages/xml/01/23.xml
create mode 100644 Ponomar/languages/xml/01/24.xml
create mode 100644 Ponomar/languages/xml/01/25.xml
create mode 100644 Ponomar/languages/xml/01/26.xml
create mode 100644 Ponomar/languages/xml/01/27.xml
create mode 100644 Ponomar/languages/xml/01/28.xml
create mode 100644 Ponomar/languages/xml/01/29.xml
create mode 100644 Ponomar/languages/xml/01/31.xml
create mode 100644 Ponomar/languages/xml/02/01.xml
create mode 100644 Ponomar/languages/xml/02/02.xml
create mode 100644 Ponomar/languages/xml/02/03.xml
create mode 100644 Ponomar/languages/xml/02/04.xml
create mode 100644 Ponomar/languages/xml/02/05.xml
create mode 100644 Ponomar/languages/xml/02/06.xml
create mode 100644 Ponomar/languages/xml/02/07.xml
create mode 100644 Ponomar/languages/xml/02/08.xml
create mode 100644 Ponomar/languages/xml/02/09.xml
create mode 100644 Ponomar/languages/xml/02/10.xml
create mode 100644 Ponomar/languages/xml/02/11.xml
create mode 100644 Ponomar/languages/xml/02/12.xml
create mode 100644 Ponomar/languages/xml/02/13.xml
create mode 100644 Ponomar/languages/xml/02/14.xml
create mode 100644 Ponomar/languages/xml/02/15.xml
create mode 100644 Ponomar/languages/xml/02/16.xml
create mode 100644 Ponomar/languages/xml/02/17.xml
create mode 100644 Ponomar/languages/xml/02/18.xml
create mode 100644 Ponomar/languages/xml/02/19.xml
create mode 100644 Ponomar/languages/xml/02/20.xml
create mode 100644 Ponomar/languages/xml/02/21.xml
create mode 100644 Ponomar/languages/xml/02/22.xml
create mode 100644 Ponomar/languages/xml/02/23.xml
create mode 100644 Ponomar/languages/xml/02/24.xml
create mode 100644 Ponomar/languages/xml/02/25.xml
create mode 100644 Ponomar/languages/xml/02/26.xml
create mode 100644 Ponomar/languages/xml/02/27.xml
create mode 100644 Ponomar/languages/xml/02/28.xml
create mode 100644 Ponomar/languages/xml/02/29.xml
create mode 100644 Ponomar/languages/xml/03/01.xml
create mode 100644 Ponomar/languages/xml/03/02.xml
create mode 100644 Ponomar/languages/xml/03/03.xml
create mode 100644 Ponomar/languages/xml/03/04.xml
create mode 100644 Ponomar/languages/xml/03/05.xml
create mode 100644 Ponomar/languages/xml/03/06.xml
create mode 100644 Ponomar/languages/xml/03/07.xml
create mode 100644 Ponomar/languages/xml/03/08.xml
create mode 100644 Ponomar/languages/xml/03/09.xml
create mode 100644 Ponomar/languages/xml/03/10.xml
create mode 100644 Ponomar/languages/xml/03/11.xml
create mode 100644 Ponomar/languages/xml/03/12.xml
create mode 100644 Ponomar/languages/xml/03/13.xml
create mode 100644 Ponomar/languages/xml/03/14.xml
create mode 100644 Ponomar/languages/xml/03/15.xml
create mode 100644 Ponomar/languages/xml/03/16.xml
create mode 100644 Ponomar/languages/xml/03/17.xml
create mode 100644 Ponomar/languages/xml/03/18.xml
create mode 100644 Ponomar/languages/xml/03/19.xml
create mode 100644 Ponomar/languages/xml/03/20.xml
create mode 100644 Ponomar/languages/xml/03/21.xml
create mode 100644 Ponomar/languages/xml/03/22.xml
create mode 100644 Ponomar/languages/xml/03/23.xml
create mode 100644 Ponomar/languages/xml/03/24.xml
create mode 100644 Ponomar/languages/xml/03/25.xml
create mode 100644 Ponomar/languages/xml/03/26.xml
create mode 100644 Ponomar/languages/xml/03/27.xml
create mode 100644 Ponomar/languages/xml/03/28.xml
create mode 100644 Ponomar/languages/xml/03/29.xml
create mode 100644 Ponomar/languages/xml/03/30.xml
create mode 100644 Ponomar/languages/xml/03/31.xml
create mode 100644 Ponomar/languages/xml/04/01.xml
create mode 100644 Ponomar/languages/xml/04/02.xml
create mode 100644 Ponomar/languages/xml/04/03.xml
create mode 100644 Ponomar/languages/xml/04/04.xml
create mode 100644 Ponomar/languages/xml/04/05.xml
create mode 100644 Ponomar/languages/xml/04/06.xml
create mode 100644 Ponomar/languages/xml/04/07.xml
create mode 100644 Ponomar/languages/xml/04/08.xml
create mode 100644 Ponomar/languages/xml/04/09.xml
create mode 100644 Ponomar/languages/xml/04/10.xml
create mode 100644 Ponomar/languages/xml/04/11.xml
create mode 100644 Ponomar/languages/xml/04/12.xml
create mode 100644 Ponomar/languages/xml/04/13.xml
create mode 100644 Ponomar/languages/xml/04/14.xml
create mode 100644 Ponomar/languages/xml/04/15.xml
create mode 100644 Ponomar/languages/xml/04/16.xml
create mode 100644 Ponomar/languages/xml/04/17.xml
create mode 100644 Ponomar/languages/xml/04/18.xml
create mode 100644 Ponomar/languages/xml/04/19.xml
create mode 100644 Ponomar/languages/xml/04/20.xml
create mode 100644 Ponomar/languages/xml/04/21.xml
create mode 100644 Ponomar/languages/xml/04/22.xml
create mode 100644 Ponomar/languages/xml/04/23.xml
create mode 100644 Ponomar/languages/xml/04/24.xml
create mode 100644 Ponomar/languages/xml/04/25.xml
create mode 100644 Ponomar/languages/xml/04/26.xml
create mode 100644 Ponomar/languages/xml/04/27.xml
create mode 100644 Ponomar/languages/xml/04/28.xml
create mode 100644 Ponomar/languages/xml/04/29.xml
create mode 100644 Ponomar/languages/xml/04/30.xml
create mode 100644 Ponomar/languages/xml/05/01.xml
create mode 100644 Ponomar/languages/xml/05/02.xml
create mode 100644 Ponomar/languages/xml/05/03.xml
create mode 100644 Ponomar/languages/xml/05/04.xml
create mode 100644 Ponomar/languages/xml/05/05.xml
create mode 100644 Ponomar/languages/xml/05/06.xml
create mode 100644 Ponomar/languages/xml/05/07.xml
create mode 100644 Ponomar/languages/xml/05/08.xml
create mode 100644 Ponomar/languages/xml/05/09.xml
create mode 100644 Ponomar/languages/xml/05/10.xml
create mode 100644 Ponomar/languages/xml/05/11.xml
create mode 100644 Ponomar/languages/xml/05/12.xml
create mode 100644 Ponomar/languages/xml/05/13.xml
create mode 100644 Ponomar/languages/xml/05/14.xml
create mode 100644 Ponomar/languages/xml/05/15.xml
create mode 100644 Ponomar/languages/xml/05/16.xml
create mode 100644 Ponomar/languages/xml/05/17.xml
create mode 100644 Ponomar/languages/xml/05/18.xml
create mode 100644 Ponomar/languages/xml/05/19.xml
create mode 100644 Ponomar/languages/xml/05/20.xml
create mode 100644 Ponomar/languages/xml/05/21.xml
create mode 100644 Ponomar/languages/xml/05/22.xml
create mode 100644 Ponomar/languages/xml/05/23.xml
create mode 100644 Ponomar/languages/xml/05/24.xml
create mode 100644 Ponomar/languages/xml/05/25.xml
create mode 100644 Ponomar/languages/xml/05/26.xml
create mode 100644 Ponomar/languages/xml/05/27.xml
create mode 100644 Ponomar/languages/xml/05/28.xml
create mode 100644 Ponomar/languages/xml/05/29.xml
create mode 100644 Ponomar/languages/xml/05/30.xml
create mode 100644 Ponomar/languages/xml/05/31.xml
create mode 100644 Ponomar/languages/xml/06/01.xml
create mode 100644 Ponomar/languages/xml/06/02.xml
create mode 100644 Ponomar/languages/xml/06/03.xml
create mode 100644 Ponomar/languages/xml/06/04.xml
create mode 100644 Ponomar/languages/xml/06/05.xml
create mode 100644 Ponomar/languages/xml/06/06.xml
create mode 100644 Ponomar/languages/xml/06/07.xml
create mode 100644 Ponomar/languages/xml/06/08.xml
create mode 100644 Ponomar/languages/xml/06/09.xml
create mode 100644 Ponomar/languages/xml/06/10.xml
create mode 100644 Ponomar/languages/xml/06/11.xml
create mode 100644 Ponomar/languages/xml/06/12.xml
create mode 100644 Ponomar/languages/xml/06/13.xml
create mode 100644 Ponomar/languages/xml/06/14.xml
create mode 100644 Ponomar/languages/xml/06/15.xml
create mode 100644 Ponomar/languages/xml/06/16.xml
create mode 100644 Ponomar/languages/xml/06/17.xml
create mode 100644 Ponomar/languages/xml/06/18.xml
create mode 100644 Ponomar/languages/xml/06/19.xml
create mode 100644 Ponomar/languages/xml/06/20.xml
create mode 100644 Ponomar/languages/xml/06/21.xml
create mode 100644 Ponomar/languages/xml/06/22.xml
create mode 100644 Ponomar/languages/xml/06/23.xml
create mode 100644 Ponomar/languages/xml/06/24.xml
create mode 100644 Ponomar/languages/xml/06/25.xml
create mode 100644 Ponomar/languages/xml/06/26.xml
create mode 100644 Ponomar/languages/xml/06/27.xml
create mode 100644 Ponomar/languages/xml/06/28.xml
create mode 100644 Ponomar/languages/xml/06/29.xml
create mode 100644 Ponomar/languages/xml/06/30.xml
create mode 100644 Ponomar/languages/xml/07/01.xml
create mode 100644 Ponomar/languages/xml/07/02.xml
create mode 100644 Ponomar/languages/xml/07/03.xml
create mode 100644 Ponomar/languages/xml/07/04.xml
create mode 100644 Ponomar/languages/xml/07/05.xml
create mode 100644 Ponomar/languages/xml/07/06.xml
create mode 100644 Ponomar/languages/xml/07/07.xml
create mode 100644 Ponomar/languages/xml/07/08.xml
create mode 100644 Ponomar/languages/xml/07/09.xml
create mode 100644 Ponomar/languages/xml/07/10.xml
create mode 100644 Ponomar/languages/xml/07/11.xml
create mode 100644 Ponomar/languages/xml/07/12.xml
create mode 100644 Ponomar/languages/xml/07/13.xml
create mode 100644 Ponomar/languages/xml/07/14.xml
create mode 100644 Ponomar/languages/xml/07/15.xml
create mode 100644 Ponomar/languages/xml/07/16.xml
create mode 100644 Ponomar/languages/xml/07/17.xml
create mode 100644 Ponomar/languages/xml/07/18.xml
create mode 100644 Ponomar/languages/xml/07/19.xml
create mode 100644 Ponomar/languages/xml/07/20.xml
create mode 100644 Ponomar/languages/xml/07/21.xml
create mode 100644 Ponomar/languages/xml/07/22.xml
create mode 100644 Ponomar/languages/xml/07/23.xml
create mode 100644 Ponomar/languages/xml/07/24.xml
create mode 100644 Ponomar/languages/xml/07/25.xml
create mode 100644 Ponomar/languages/xml/07/26.xml
create mode 100644 Ponomar/languages/xml/07/27.xml
create mode 100644 Ponomar/languages/xml/07/28.xml
create mode 100644 Ponomar/languages/xml/07/29.xml
create mode 100644 Ponomar/languages/xml/07/30.xml
create mode 100644 Ponomar/languages/xml/07/31.xml
create mode 100644 Ponomar/languages/xml/08/01.xml
create mode 100644 Ponomar/languages/xml/08/02.xml
create mode 100644 Ponomar/languages/xml/08/03.xml
create mode 100644 Ponomar/languages/xml/08/04.xml
create mode 100644 Ponomar/languages/xml/08/05.xml
create mode 100644 Ponomar/languages/xml/08/06.xml
create mode 100644 Ponomar/languages/xml/08/07.xml
create mode 100644 Ponomar/languages/xml/08/08.xml
create mode 100644 Ponomar/languages/xml/08/09.xml
create mode 100644 Ponomar/languages/xml/08/10.xml
create mode 100644 Ponomar/languages/xml/08/11.xml
create mode 100644 Ponomar/languages/xml/08/12.xml
create mode 100644 Ponomar/languages/xml/08/13.xml
create mode 100644 Ponomar/languages/xml/08/14.xml
create mode 100644 Ponomar/languages/xml/08/15.xml
create mode 100644 Ponomar/languages/xml/08/16.xml
create mode 100644 Ponomar/languages/xml/08/17.xml
create mode 100644 Ponomar/languages/xml/08/18.xml
create mode 100644 Ponomar/languages/xml/08/19.xml
create mode 100644 Ponomar/languages/xml/08/20.xml
create mode 100644 Ponomar/languages/xml/08/21.xml
create mode 100644 Ponomar/languages/xml/08/22.xml
create mode 100644 Ponomar/languages/xml/08/23.xml
create mode 100644 Ponomar/languages/xml/08/24.xml
create mode 100644 Ponomar/languages/xml/08/25.xml
create mode 100644 Ponomar/languages/xml/08/26.xml
create mode 100644 Ponomar/languages/xml/08/27.xml
create mode 100644 Ponomar/languages/xml/08/28.xml
create mode 100644 Ponomar/languages/xml/08/29.xml
create mode 100644 Ponomar/languages/xml/08/30.xml
create mode 100644 Ponomar/languages/xml/08/31.xml
create mode 100644 Ponomar/languages/xml/09/01.xml
create mode 100644 Ponomar/languages/xml/09/02.xml
create mode 100644 Ponomar/languages/xml/09/03.xml
create mode 100644 Ponomar/languages/xml/09/04.xml
create mode 100644 Ponomar/languages/xml/09/05.xml
create mode 100644 Ponomar/languages/xml/09/06.xml
create mode 100644 Ponomar/languages/xml/09/07.xml
create mode 100644 Ponomar/languages/xml/09/08.xml
create mode 100644 Ponomar/languages/xml/09/09.xml
create mode 100644 Ponomar/languages/xml/09/10.xml
create mode 100644 Ponomar/languages/xml/09/11.xml
create mode 100644 Ponomar/languages/xml/09/12.xml
create mode 100644 Ponomar/languages/xml/09/13.xml
create mode 100644 Ponomar/languages/xml/09/14.xml
create mode 100644 Ponomar/languages/xml/09/15.xml
create mode 100644 Ponomar/languages/xml/09/16.xml
create mode 100644 Ponomar/languages/xml/09/17.xml
create mode 100644 Ponomar/languages/xml/09/18.xml
create mode 100644 Ponomar/languages/xml/09/19.xml
create mode 100644 Ponomar/languages/xml/09/20.xml
create mode 100644 Ponomar/languages/xml/09/21.xml
create mode 100644 Ponomar/languages/xml/09/22.xml
create mode 100644 Ponomar/languages/xml/09/23.xml
create mode 100644 Ponomar/languages/xml/09/24.xml
create mode 100644 Ponomar/languages/xml/09/25.xml
create mode 100644 Ponomar/languages/xml/09/26.xml
create mode 100644 Ponomar/languages/xml/09/27.xml
create mode 100644 Ponomar/languages/xml/09/28.xml
create mode 100644 Ponomar/languages/xml/09/29.xml
create mode 100644 Ponomar/languages/xml/09/30.xml
create mode 100644 Ponomar/languages/xml/10/01.xml
create mode 100644 Ponomar/languages/xml/10/02.xml
create mode 100644 Ponomar/languages/xml/10/03.xml
create mode 100644 Ponomar/languages/xml/10/04.xml
create mode 100644 Ponomar/languages/xml/10/05.xml
create mode 100644 Ponomar/languages/xml/10/06.xml
create mode 100644 Ponomar/languages/xml/10/07.xml
create mode 100644 Ponomar/languages/xml/10/08.xml
create mode 100644 Ponomar/languages/xml/10/09.xml
create mode 100644 Ponomar/languages/xml/10/10.xml
create mode 100644 Ponomar/languages/xml/10/11.xml
create mode 100644 Ponomar/languages/xml/10/12.xml
create mode 100644 Ponomar/languages/xml/10/13.xml
create mode 100644 Ponomar/languages/xml/10/14.xml
create mode 100644 Ponomar/languages/xml/10/15.xml
create mode 100644 Ponomar/languages/xml/10/16.xml
create mode 100644 Ponomar/languages/xml/10/17.xml
create mode 100644 Ponomar/languages/xml/10/18.xml
create mode 100644 Ponomar/languages/xml/10/19.xml
create mode 100644 Ponomar/languages/xml/10/20.xml
create mode 100644 Ponomar/languages/xml/10/21.xml
create mode 100644 Ponomar/languages/xml/10/22.xml
create mode 100644 Ponomar/languages/xml/10/23.xml
create mode 100644 Ponomar/languages/xml/10/24.xml
create mode 100644 Ponomar/languages/xml/10/25.xml
create mode 100644 Ponomar/languages/xml/10/26.xml
create mode 100644 Ponomar/languages/xml/10/27.xml
create mode 100644 Ponomar/languages/xml/10/28.xml
create mode 100644 Ponomar/languages/xml/10/29.xml
create mode 100644 Ponomar/languages/xml/10/30.xml
create mode 100644 Ponomar/languages/xml/10/31.xml
create mode 100644 Ponomar/languages/xml/11/01.xml
create mode 100644 Ponomar/languages/xml/11/02.xml
create mode 100644 Ponomar/languages/xml/11/03.xml
create mode 100644 Ponomar/languages/xml/11/04.xml
create mode 100644 Ponomar/languages/xml/11/05.xml
create mode 100644 Ponomar/languages/xml/11/06.xml
create mode 100644 Ponomar/languages/xml/11/07.xml
create mode 100644 Ponomar/languages/xml/11/08.xml
create mode 100644 Ponomar/languages/xml/11/09.xml
create mode 100644 Ponomar/languages/xml/11/10.xml
create mode 100644 Ponomar/languages/xml/11/11.xml
create mode 100644 Ponomar/languages/xml/11/12.xml
create mode 100644 Ponomar/languages/xml/11/13.xml
create mode 100644 Ponomar/languages/xml/11/14.xml
create mode 100644 Ponomar/languages/xml/11/15.xml
create mode 100644 Ponomar/languages/xml/11/16.xml
create mode 100644 Ponomar/languages/xml/11/17.xml
create mode 100644 Ponomar/languages/xml/11/18.xml
create mode 100644 Ponomar/languages/xml/11/19.xml
create mode 100644 Ponomar/languages/xml/11/20.xml
create mode 100644 Ponomar/languages/xml/11/21.xml
create mode 100644 Ponomar/languages/xml/11/22.xml
create mode 100644 Ponomar/languages/xml/11/23.xml
create mode 100644 Ponomar/languages/xml/11/24.xml
create mode 100644 Ponomar/languages/xml/11/25.xml
create mode 100644 Ponomar/languages/xml/11/26.xml
create mode 100644 Ponomar/languages/xml/11/27.xml
create mode 100644 Ponomar/languages/xml/11/28.xml
create mode 100644 Ponomar/languages/xml/11/29.xml
create mode 100644 Ponomar/languages/xml/11/30.xml
create mode 100644 Ponomar/languages/xml/12/01.xml
create mode 100644 Ponomar/languages/xml/12/02.xml
create mode 100644 Ponomar/languages/xml/12/03.xml
create mode 100644 Ponomar/languages/xml/12/04.xml
create mode 100644 Ponomar/languages/xml/12/05.xml
create mode 100644 Ponomar/languages/xml/12/06.xml
create mode 100644 Ponomar/languages/xml/12/07.xml
create mode 100644 Ponomar/languages/xml/12/08.xml
create mode 100644 Ponomar/languages/xml/12/09.xml
create mode 100644 Ponomar/languages/xml/12/10.xml
create mode 100644 Ponomar/languages/xml/12/11.xml
create mode 100644 Ponomar/languages/xml/12/12.xml
create mode 100644 Ponomar/languages/xml/12/13.xml
create mode 100644 Ponomar/languages/xml/12/14.xml
create mode 100644 Ponomar/languages/xml/12/15.xml
create mode 100644 Ponomar/languages/xml/12/16.xml
create mode 100644 Ponomar/languages/xml/12/17.xml
create mode 100644 Ponomar/languages/xml/12/18.xml
create mode 100644 Ponomar/languages/xml/12/19.xml
create mode 100644 Ponomar/languages/xml/12/20.xml
create mode 100644 Ponomar/languages/xml/12/21.xml
create mode 100644 Ponomar/languages/xml/12/22.xml
create mode 100644 Ponomar/languages/xml/12/23.xml
create mode 100644 Ponomar/languages/xml/12/24.xml
create mode 100644 Ponomar/languages/xml/12/25.xml
create mode 100644 Ponomar/languages/xml/12/26.xml
create mode 100644 Ponomar/languages/xml/12/27.xml
create mode 100644 Ponomar/languages/xml/12/28.xml
create mode 100644 Ponomar/languages/xml/12/29.xml
create mode 100644 Ponomar/languages/xml/lives/90402.xml
create mode 100644 Ponomar/languages/xml/lives/906401.xml
create mode 100644 Ponomar/languages/xml/lives/907801.xml
create mode 100644 Ponomar/languages/zh/Hans/xml/lives/0910702.xml
create mode 100644 Ponomar/languages/zh/Hans/xml/lives/123803.xml
create mode 100644 Ponomar/languages/zh/Hans/xml/lives/123805.xml
create mode 100644 Ponomar/languages/zh/Hans/xml/lives/90402.xml
create mode 100644 Ponomar/languages/zh/Hans/xml/lives/90407.xml
create mode 100644 Ponomar/languages/zh/Hans/xml/lives/90431.xml
create mode 100644 Ponomar/languages/zh/Hans/xml/lives/906401.xml
create mode 100644 Ponomar/languages/zh/Hant/xml/lives/0910702.xml
create mode 100644 Ponomar/languages/zh/Hant/xml/lives/123803.xml
create mode 100644 Ponomar/languages/zh/Hant/xml/lives/123805.xml
create mode 100644 Ponomar/languages/zh/Hant/xml/lives/90402.xml
create mode 100644 Ponomar/languages/zh/Hant/xml/lives/90407.xml
create mode 100644 Ponomar/languages/zh/Hant/xml/lives/90431.xml
create mode 100644 Ponomar/languages/zh/Hant/xml/lives/906401.xml
diff --git a/Ponomar/Bible.java b/Ponomar/Bible.java
index e1ac71ca1..ec6f27827 100755
--- a/Ponomar/Bible.java
+++ b/Ponomar/Bible.java
@@ -760,6 +760,25 @@ public String getAbbrev(String Id) {
return (String) abbrev.get(Id);
}
+ public String getAbbrevLoc(String Id) {
+ //Id = Id.replace(' ', '_'); //THIS CAN BE AVOIDED IF THE DEFINITIONS ARE CHANGED
+
+ //INITIALISE TO THE DEFAULT BIBLE FOR THE GIVEN LANGUAGE
+ //ADDED Y.S. TO ALLOW FOR MULTILINGUAL AND ALL BIBLE READING
+
+ LanguagePack getLang = new LanguagePack(Analyse.dayInfo);
+ //curversion = getLang.Phrases.get("BibleV").toString();
+ //System.out.println("Bible: " + curversion);
+ String abbLink=getLang.Phrases.get("BibleBooks").toString();
+ String[] splitkey = abbLink.split("/,");
+ OrderedHashtable abbrevs=new OrderedHashtable();
+ for (int k = 0; k < splitkey.length; k++)
+ {
+ String[] splitsy=splitkey[k].split("=");
+ abbrevs.put(splitsy[0].replace("_"," "),splitsy[1]);
+ }
+ return (String) abbrevs.get(Id);
+ }
private String formatPassage(String newPassage) {
//System.out.println("Hello there, passage: "+newPassage);
@@ -829,6 +848,85 @@ private String formatPassage(String newPassage) {
}
return newPassage;
}
+ private String formatPassageLoc(String newPassage) {
+ //System.out.println("Hello there, passage: "+newPassage);
+ //We first need to specify all the parameters for the readings
+ LanguagePack getLang = new LanguagePack(Analyse.dayInfo);
+ String ChapterNameILoc = getLang.Phrases.get("ChapterNI").toString();
+ String ChapterNL= getLang.Phrases.get("ChapterNo").toString();
+ String[] ChapterNumberLoc=ChapterNL.split(",");
+ String VerseNL= getLang.Phrases.get("VerseNo").toString();
+ String[] VerseNumberLoc=VerseNL.split(",");
+ String CVSepLoc= getLang.Phrases.get("CVSep").toString();
+ String DurationLoc=getLang.Phrases.get("Duration").toString();
+ String SelectionSeparatorLoc=getLang.Phrases.get("SelectionSeparator").toString();
+
+ if (newPassage.indexOf(":") == -1) {
+ // just a chapter specification, e.g. Gen_1
+ int d = (int) Integer.parseInt(newPassage);
+ String ChapterNameF = ChapterNameILoc.replace("^NN", ChapterNumberLoc[d]);
+ newPassage = ChapterNameF;
+ return newPassage;
+ } else {
+ // e.g. 2:11-3:2, 5, 13-14, 17-4:1
+ String[] parts = newPassage.split(",");
+
+ for (int j = 0; j < parts.length; j++) {
+
+ //e.g. 2:11-3:2 or 13-14 or 5 or 4:5
+ if (parts[j].indexOf("-") == -1) {
+ // the example of 5 or 4:5; replicate
+ if (parts[j].indexOf(":") == -1) {
+ //System.out.println("Testing the parsing function: Integer: "+Integer.toString(obtainNumber(parts[j]))+" Fraction: "+obtainPart(parts[j]));
+ parts[j] = VerseNumberLoc[obtainNumber(parts[j])]+obtainPartLoc(parts[j]);
+ } else {
+
+ //System.out.println("Testing the parsing function: Integer: "+Integer.toString(obtainNumber(parts[j]))+" Fraction: "+obtainPart(parts[j]));
+ int verse = (int) +obtainNumber(parts[j].split(":")[1]);
+ int chapter = (int) Integer.parseInt(parts[j].split(":")[0]);
+ parts[j] = ChapterNumberLoc[chapter] + CVSepLoc + VerseNumberLoc[verse]+obtainPartLoc(parts[j].split(":")[1]);
+ }
+ } else {
+ String[] sections = parts[j].split("-");
+
+
+ for (int k = 0; k < sections.length; k++) {
+
+ if (sections[k].indexOf(":") == -1) {
+
+ // E.g. 13 or 5
+ //System.out.println("Testing the parsing function: Integer: "+Integer.toString(obtainNumber(sections[k]))+" Fraction: "+obtainPart(sections[k]));
+ sections[k] = VerseNumberLoc[obtainNumber(sections[k])]+obtainPartLoc(sections[k]);
+
+ } else {
+ //System.out.println("Hello midpoint + " + sections[k] + " "+sections[k]);
+ //System.out.println(sections[k].split(":")[1]);
+ int verse = (int) +obtainNumber(sections[k].split(":")[1]);
+ //System.out.println(verse);
+ int chapter = (int) Integer.parseInt(sections[k].split(":")[0]);
+ //System.out.println(chapter);
+ sections[k] = ChapterNumberLoc[chapter] + CVSepLoc + VerseNumberLoc[verse]+obtainPartLoc(sections[k].split(":")[1]);
+ }
+ //System.out.println(sections[k] + "testing parts: "+parts[j]);
+ if (k == 0) {
+ parts[j] = sections[k];
+ } else {
+ parts[j] = parts[j] + DurationLoc + sections[k];
+ }
+
+ }
+ }
+ //RECONSTRUCT THE GIVEN READING PART
+ if (j == 0) {
+ newPassage = parts[j];
+ } else {
+ newPassage = newPassage + SelectionSeparatorLoc + parts[j];
+ }
+ }
+ //System.out.println("Hello end");
+ }
+ return newPassage;
+ }
public String getHyperlink(String reading) {
//THIS FUNCTION CREATES THE HYPERLINK FOR BIBLE READINGS
@@ -857,6 +955,38 @@ public String getHyperlink(String reading) {
output += headerA + "";
return output;
}
+
+ public String getHyperlinkLoc(String reading) {
+ //THIS FUNCTION CREATES THE HYPERLINK FOR BIBLE READINGS
+ //CREATED Y.S. 2008/12/11 n.s.
+ if (reading.length()<1)
+ {
+ return "";
+ }
+
+ LanguagePack getLang = new LanguagePack(Analyse.dayInfo);
+ curversion = getLang.Phrases.get("BibleV").toString();
+ // System.out.println(getLang.Phrases);
+
+ try {
+ BufferedReader frf = new BufferedReader(new InputStreamReader(new FileInputStream(bmlfile), "UTF8"));
+ QDParser.parse(this, frf);
+ } catch (Exception e) {
+ System.out.println(captions[8] + e.toString());
+ }
+
+ String[] parts = reading.split("_");
+ //TODO: get rid of these string operations. They are bad, and take up too much CPU time
+ String passage = parts[1].replaceAll(" ", "");
+ String output = "";
+ String abbreviation=getLang.Phrases.get("AbbrevFormat").toString();
+ //System.out.println("Abbreviation sought: "+parts[0]);
+ String headerA = abbreviation.replace("^NAME", getAbbrevLoc(parts[0]));
+ headerA = headerA.replace("^CNN", formatPassageLoc(passage));
+
+ output += headerA + "";
+ return output;
+ }
public String[] parseReadings(String newBook, String newPassage, boolean RedStuff) {
//RedStuff IS A BOOLEAN THAT DETERMINES WHETHER OR NOT ANY OF THE READ COMMENTS IN THE BIBLE READINGS ARE RETAINED!
@@ -1081,6 +1211,33 @@ private String obtainPart(String verse)
return verse.substring(size-1);
}
}
+
+ private String obtainPartLoc(String verse)
+ {
+ //Allows us to separate the part after the number from the number in the case that
+ //we are dealing with part of a verse, for example 29a or 30b, where the verse is 29 and the part is a.
+ LanguagePack getLang = new LanguagePack(Analyse.dayInfo);
+ String[] halfVerseLoc=getLang.Phrases.get("Parts").toString().split(",");
+
+ int size=verse.length();
+ //System.out.println("Testing obtainpart: "+verse.substring(size-1));
+ if (Character.isDigit(verse.charAt(size-1)))
+ {
+ return "";
+ }else
+ {
+ String part=verse.substring(size-1);
+ if (part.equals("a")){
+ return halfVerseLoc[0];
+ }else if (part.equals("b")){
+ return halfVerseLoc[1];
+ }else if (part.equals("c")){
+ return halfVerseLoc[2];
+ }
+
+ return verse.substring(size-1);
+ }
+ }
public static void main(String[] argz) {
//DEBUG MODE
diff --git a/Ponomar/Commemoration.java b/Ponomar/Commemoration.java
index 0057b6034..ff39f3826 100755
--- a/Ponomar/Commemoration.java
+++ b/Ponomar/Commemoration.java
@@ -329,6 +329,7 @@ public void endElement(String elem)
public void text(String text)
{
textR=text;
+ //System.out.println(textR);
}
public String getGrammar(String value)
{
diff --git a/Ponomar/Commemoration1.java b/Ponomar/Commemoration1.java
index df1b2c448..eab3c1d0e 100644
--- a/Ponomar/Commemoration1.java
+++ b/Ponomar/Commemoration1.java
@@ -292,6 +292,7 @@ public void endElement(String elem) {
}*/
//System.out.println("In endElement, I saw the following elements: "+elem);
if (textR != null) {
+ textR = textR.replace("\n", "").replace("\r", "");
value.put("text", textR);
}
if (ServiceInfo.containsKey(Location1)) {
diff --git a/Ponomar/Day.java b/Ponomar/Day.java
index 546a4fa4f..a10455c12 100644
--- a/Ponomar/Day.java
+++ b/Ponomar/Day.java
@@ -207,6 +207,7 @@ public String getCommsHyper() {
String NameF = CCom.getName();
if (output.length()>0 && NameF.length()>0){
+ //System.out.println(output);
output+=CSep;
}
@@ -260,7 +261,7 @@ public String getCommsHyper() {
output+=Rank0Format.replace("^NF",NameF);
//Note: \u00A0 is a nonbreaking space.
}
- if (CCom.checkLife()){
+ if (CCom.checkLife() || CCom.checkPropers()){
output += "";
}
if (Tone != -1){
@@ -427,6 +428,9 @@ public OrderedHashtable getRH(String Node, String Type) {
}
+ public Vector getCommemorations(){
+ return OrderedCommemorations;
+ }
public static void main(String[] argz) {
ParameterValues.dayInfo = new OrderedHashtable();
diff --git a/Ponomar/Days.java b/Ponomar/Days.java
index 8cec748c5..1da6de5a3 100755
--- a/Ponomar/Days.java
+++ b/Ponomar/Days.java
@@ -74,7 +74,8 @@ public void readDay(String FileName) //throws IOException
catch (Exception e)
{
e.printStackTrace();
- }
+ }
+ System.out.println(Location+FileName);
}
public void startDocument()
diff --git a/Ponomar/DivineLiturgy1.java b/Ponomar/DivineLiturgy1.java
index c0d1bafcf..706f53ec0 100644
--- a/Ponomar/DivineLiturgy1.java
+++ b/Ponomar/DivineLiturgy1.java
@@ -119,7 +119,7 @@ public void endElement(String elem) {
public void text(String text) {
}
- public String Readings(OrderedHashtable readingsIn, String ReadingType, JDate today) {
+ public String Readings(OrderedHashtable readingsIn, String ReadingType, JDate2 today) {
/********************************************************
SINCE I HAVE CORRECTED THE SCRIPTURE READINGS IN THE MAIN FILE, I CAN NOW PRECEDE WITH A BETTER VERSION OF THIS PROGRAMME!
********************************************************/
@@ -188,10 +188,10 @@ public String Readings(OrderedHashtable readingsIn, String ReadingType, JDate to
Information3.dayInfo.put("doy", today.getDoy());
Information3.dayInfo.put("dRank","0");
//System.out.println("Case II: Testing the StringOp files: In StringOp, doy = "+StringOp.dayInfo.get("doy").toString()+" In Information3, doy = "+Information3.dayInfo.get("doy").toString()+" In Transfers, doy = "+Transfers.dayInfo.get("doy"));
- nday = (int) JDate.difference(today, Paschalion.getPascha(today.getYear()));
- int ndayP = (int) JDate.difference(today, Paschalion.getPascha(today.getYear() - 1));
+ nday = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear(),today.getCalendar2()));
+ int ndayP = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear() - 1,today.getCalendar2()));
//REQUIRED FOR LUCAN JUMP CALCULATIONS! ADDED 2008/05/17 n.s.
- int ndayF = (int) JDate.difference(today, Paschalion.getPascha(today.getYear() + 1));
+ int ndayF = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear() + 1,today.getCalendar2()));
Information3.dayInfo.put("nday", nday);
Information3.dayInfo.put("ndayP", ndayP);
Information3.dayInfo.put("ndayF", ndayF);
@@ -235,10 +235,10 @@ public String Readings(OrderedHashtable readingsIn, String ReadingType, JDate to
Information3.dayInfo.put("dow", today.getDayOfWeek());
Information3.dayInfo.put("doy", today.getDoy());
Information3.dayInfo.put("dRank","0");
- nday = (int) JDate.difference(today, Paschalion.getPascha(today.getYear()));
- int ndayP = (int) JDate.difference(today, Paschalion.getPascha(today.getYear() - 1));
+ nday = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear(),today.getCalendar2()));
+ int ndayP = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear() - 1,today.getCalendar2()));
//REQUIRED FOR LUCAN JUMP CALCULATIONS! ADDED 2008/05/17 n.s.
- int ndayF = (int) JDate.difference(today, Paschalion.getPascha(today.getYear() + 1));
+ int ndayF = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear() + 1,today.getCalendar2()));
Information3.dayInfo.put("nday", nday);
Information3.dayInfo.put("ndayP", ndayP);
Information3.dayInfo.put("ndayF", ndayF);
@@ -328,11 +328,11 @@ public String Readings(OrderedHashtable readingsIn, String ReadingType, JDate to
return format(dailyVf, dailyRf, dailyTf);
}
- private OrderedHashtable getReadings(JDate today, String readingType) {
+ private OrderedHashtable getReadings(JDate2 today, String readingType) {
String filename = "";
int lineNumber = 0;
- int nday = (int) JDate.difference(today, Paschalion.getPascha(today.getYear()));
+ int nday = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear(),today.getCalendar2()));
//I COPIED THIS FROM THE Main.java FILE BY ALEKS WITH MY MODIFICATIONS (Y.S.)
//FROM HERE UNTIL
@@ -342,8 +342,8 @@ private OrderedHashtable getReadings(JDate today, String readingType) {
} else if (nday < -70) {
// WE HAVE NOT YET REACHED THE LENTEN TRIODION
filename = pentecostarionFileName;
- JDate lastPascha = Paschalion.getPascha(today.getYear() - 1);
- lineNumber = (int) JDate.difference(today, lastPascha) + 1;
+ JDate2 lastPascha = Paschalion.getPascha(today.getYear() - 1,today.getCalendar2());
+ lineNumber = (int) JDate2.difference(today, lastPascha) + 1;
} else {
// WE ARE AFTER PASCHA AND BEFORE THE END OF THE YEAR
filename = pentecostarionFileName;
@@ -547,7 +547,7 @@ public String format(Vector vectV, Vector vectR, Vector vectT) {
Enumeration e3 = vectV.elements();
for (int k = 0; k < vectV.size(); k++) {
String reading = (String) vectV.get(k);
- output += ShortForm.getHyperlink(reading);
+ output += ShortForm.getHyperlinkLoc(reading);
if ((Integer) vectR.get(k) == -2 ) {
if (vectV.size()>1){
diff --git a/Ponomar/EditCommemoration.java b/Ponomar/EditCommemoration.java
new file mode 100644
index 000000000..7b3d494e8
--- /dev/null
+++ b/Ponomar/EditCommemoration.java
@@ -0,0 +1,791 @@
+package Ponomar;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import javax.xml.XMLConstants;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import java.nio.charset.StandardCharsets;
+
+import javax.swing.*;
+import java.beans.*;
+import java.awt.*;
+import java.util.*;
+import java.io.*;
+import javax.swing.event.*;
+import java.awt.event.*;
+import java.beans.*;
+
+
+/***********************************************************************
+THIS MODULE CREATES THE TEXT FOR THE SEARCHING FOR COMMEMORATIONS ACCROSS LANGUAGES/JURISDICTIONS
+
+(C) 2022 YURI SHARDT. ALL RIGHTS RESERVED.
+
+
+ PERMISSION IS HEREBY GRANTED TO USE, MODIFY, AND/OR REDISTRIBUTE THIS SOURCE CODE
+ PROVIDED THAT THIS NOTICE REMAINS IN ALL VERSION AND / OR DERIVATIVES THEREOF.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+***********************************************************************/
+public class EditCommemoration extends JFrame implements ActionListener
+{
+ //SOME QUICK NOTES FOR FURTHER IMPLEMENTATION:
+
+ public String UsualBeginning1;
+ private StringOp Analyse=new StringOp();
+ private JTextField searchTerm = new JTextField("");
+ private JButton okay;
+ private JButton save;
+ private JTextPane results;
+ private LanguagePack Text;
+ private String[] captions;
+ private boolean built=false;
+ private OrderedHashtable[] database;
+ private JRadioButton exact;
+ private JCheckBox noCase;
+ private JCheckBox noMarks;
+ private JCheckBox normalise;
+ private boolean exact_status;
+ private JTextPane fullform;
+ private JTextPane nominative;
+ private JTextPane genitive;
+ private JPanel troparionUKP;
+ private JTextPane tropToneUKvalue;
+ private JTextPane tropPropUKvalue;
+ private JTextPane tropTextUKvalue;
+ private JPanel troparionCUP;
+ private JTextPane tropToneCUvalue;
+ private JTextPane tropPropCUvalue;
+ private JTextPane tropTextCUvalue;
+ private JPanel contacionUKP;
+ private JTextPane contToneUKvalue;
+ private JTextPane contPropUKvalue;
+ private JTextPane contTextUKvalue;
+ private JPanel contacionCUP;
+ private JTextPane contToneCUvalue;
+ private JTextPane contPropCUvalue;
+ private JTextPane contTextCUvalue;
+ private JPanel life;
+ private JTextPane lifeSource;
+ private JTextPane lifeCopyright;
+ private JTextPane lifeText;
+ private HandlerXML saintCU;
+ private HandlerXML saintUK;
+ private HandlerXML saintUKUK;
+ private Document saintCUdoc;
+ private Document saintUKdoc;
+ private Document saintUKUKdoc;
+ private String filepathCUa="Ponomar\\languages\\cu\\xml\\lives\\";
+ private String filepathUKa="Ponomar\\languages\\cu\\uk\\xml\\lives\\";
+ private String filepathUKUKa="Ponomar\\languages\\cu\\uk\\uk\\xml\\lives\\";
+ private OrderedHashtable corrections;
+ private int countCorr;
+
+
+ public EditCommemoration(OrderedHashtable dayInfo)
+ {
+ //We will only worry ourself about a special case here as a general version is not feasible, as there are just too many variables:
+ //I will assume I want to edit the Ukrainian life, the troparia and contacia, as well as the last two in Church Slavonic.
+ Analyse.dayInfo = dayInfo;
+ Text = new LanguagePack(dayInfo);
+ captions = new String[]{"Edit Commemoration","CCId", "Enter CCId Value.","LOAD","Full Form (Genitive):","Short Form (Nominative)", "Short From (Genitive)","Tone","Proper","Text","Source for Life","Copyright for Life","Text of Life","Troparion","Contacion","Ukrainian","Church Slavonic","SAVE"};//Text.obtainValues((String) Text.Phrases.get("Search"));
+ setTitle(captions[0]);
+
+//Create the Interface:
+
+
+ JPanel top = new JPanel();
+ top.setLayout(new GridLayout(4,3));
+ JLabel text =new JLabel(captions[1],SwingConstants.RIGHT);
+ top.add(text);
+ searchTerm.setEditable(true);
+ searchTerm.setText(captions[2]);
+ top.add(searchTerm);
+ okay=new JButton(captions[3]);
+ okay.addActionListener(this);
+ //okay.setFont(CurrentFont); NEEDS TO BE IMPLEMENTED IN THE FINAL VERSION
+ top.add(okay);
+ JLabel textab =new JLabel(captions[4],SwingConstants.RIGHT);
+ top.add(textab);
+ fullform=new JTextPane();
+ fullform.setContentType("text/html; charset=UTF-8");
+ fullform.setText(captions[4]);
+ fullform.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll = new JScrollPane(fullform);
+ scroll.setPreferredSize( new Dimension( 50, 50 ) );
+ top.add(scroll);
+ top.add(new JLabel("",SwingConstants.RIGHT));
+ JLabel textac =new JLabel(captions[5],SwingConstants.RIGHT);
+ top.add(textac);
+ nominative=new JTextPane();
+ nominative.setContentType("text/html; charset=UTF-8");
+ nominative.setText(captions[5]);
+ nominative.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll1 = new JScrollPane(nominative);
+ scroll1.setPreferredSize( new Dimension( 50, 50 ) );
+ top.add(scroll1);
+ top.add(new JLabel("",SwingConstants.RIGHT));
+
+ JLabel textae =new JLabel(captions[6],SwingConstants.RIGHT);
+ top.add(textae);
+ genitive=new JTextPane();
+ genitive.setContentType("text/html; charset=UTF-8");
+ genitive.setText(captions[6]);
+ genitive.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll2 = new JScrollPane(genitive);
+ scroll2.setPreferredSize( new Dimension( 50, 50 ) );
+ top.add(scroll2);
+ top.add(new JLabel("",SwingConstants.RIGHT));
+
+ troparionUKP = new JPanel();
+ troparionUKP.setLayout(new GridLayout(3,2));
+ JLabel tropToneUK=new JLabel(captions[7]+" for the " +captions[13] + " in "+captions[15]);
+ troparionUKP.add(tropToneUK);
+ tropToneUKvalue = new JTextPane();
+ tropToneUKvalue.setText("Tone of the Troparion in Ukrainian Goes Here.");
+ tropToneUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll3 = new JScrollPane(tropToneUKvalue);
+ scroll3.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionUKP.add(scroll3);
+
+ JLabel tropPropUK=new JLabel(captions[8]+" for the " +captions[13] + " in "+captions[15]);
+ troparionUKP.add(tropPropUK);
+ tropPropUKvalue = new JTextPane();
+ tropPropUKvalue.setText("Proper of the Troparion in Ukrainian Goes Here.");
+ tropPropUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll4 = new JScrollPane(tropPropUKvalue);
+ scroll4.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionUKP.add(scroll4);
+
+ JLabel tropTextUK=new JLabel(captions[9]+" for the " +captions[13] + " in "+captions[15]);
+ troparionUKP.add(tropTextUK);
+ tropTextUKvalue = new JTextPane();
+ tropTextUKvalue.setText("Text of the Troparion in Ukrainian Goes Here.");
+ tropTextUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll5 = new JScrollPane(tropTextUKvalue);
+ scroll5.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionUKP.add(scroll5);
+
+//Repeat for the Troparion in Church Slavonic
+troparionCUP = new JPanel();
+ troparionCUP.setLayout(new GridLayout(3,2));
+ JLabel tropToneCU=new JLabel(captions[7]+" for the " +captions[13] + " in "+captions[16]);
+ troparionCUP.add(tropToneCU);
+ tropToneCUvalue = new JTextPane();
+ tropToneCUvalue.setText("Tone of the Troparion in Church Slavonic Goes Here.");
+ tropToneCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll6 = new JScrollPane(tropToneCUvalue);
+ scroll6.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionCUP.add(scroll6);
+
+ JLabel tropPropCU=new JLabel(captions[8]+" for the " +captions[13] + " in "+captions[16]);
+ troparionCUP.add(tropPropCU);
+ tropPropCUvalue = new JTextPane();
+ tropPropCUvalue.setText("Proper of the Troparion in Church Slavonic Goes Here.");
+ tropPropCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll7 = new JScrollPane(tropPropCUvalue);
+ scroll7.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionCUP.add(scroll7);
+
+ JLabel tropTextCU=new JLabel(captions[9]+" for the " +captions[13] + " in "+captions[16]);
+ troparionCUP.add(tropTextCU);
+ tropTextCUvalue = new JTextPane();
+ tropTextCUvalue.setText("Text of the Troparion in Church Slavonic Goes Here.");
+ tropTextCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll8 = new JScrollPane(tropTextCUvalue);
+ scroll8.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionCUP.add(scroll8);
+
+//Contacion
+contacionUKP = new JPanel();
+ contacionUKP.setLayout(new GridLayout(3,2));
+ JLabel contToneUK=new JLabel(captions[7]+" for the " +captions[14] + " in "+captions[15]);
+ contacionUKP.add(contToneUK);
+ contToneUKvalue = new JTextPane();
+ contToneUKvalue.setText("Tone of the Contacion in Ukrainian Goes Here.");
+ contToneUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll23 = new JScrollPane(contToneUKvalue);
+ scroll23.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionUKP.add(scroll23);
+
+ JLabel contPropUK=new JLabel(captions[8]+" for the " +captions[14] + " in "+captions[15]);
+ contacionUKP.add(contPropUK);
+ contPropUKvalue = new JTextPane();
+ contPropUKvalue.setText("Proper of the Contacion in Ukrainian Goes Here.");
+ contPropUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll24 = new JScrollPane(contPropUKvalue);
+ scroll24.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionUKP.add(scroll24);
+
+ JLabel contTextUK=new JLabel(captions[9]+" for the " +captions[14] + " in "+captions[15]);
+ contacionUKP.add(contTextUK);
+ contTextUKvalue = new JTextPane();
+ contTextUKvalue.setText("Text of the Contacion in Ukrainian Goes Here.");
+ contTextUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll25 = new JScrollPane(contTextUKvalue);
+ scroll25.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionUKP.add(scroll25);
+
+//Repeat for the Contacion in Church Slavonic
+contacionCUP = new JPanel();
+ contacionCUP.setLayout(new GridLayout(3,2));
+ JLabel contToneCU=new JLabel(captions[7]+" for the " +captions[14] + " in "+captions[16]);
+ contacionCUP.add(contToneCU);
+ contToneCUvalue = new JTextPane();
+ contToneCUvalue.setText("Tone of the Contacion in Church Slavonic Goes Here.");
+ contToneCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll26 = new JScrollPane(contToneCUvalue);
+ scroll26.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionCUP.add(scroll26);
+
+ JLabel contPropCU=new JLabel(captions[8]+" for the " +captions[14] + " in "+captions[16]);
+ contacionCUP.add(contPropCU);
+ contPropCUvalue = new JTextPane();
+ contPropCUvalue.setText("Proper of the Contacion in Church Slavonic Goes Here.");
+ contPropCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll27 = new JScrollPane(contPropCUvalue);
+ scroll27.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionCUP.add(scroll27);
+
+ JLabel contTextCU=new JLabel(captions[9]+" for the " +captions[14] + " in "+captions[16]);
+ contacionCUP.add(contTextCU);
+ contTextCUvalue = new JTextPane();
+ contTextCUvalue.setText("Text of the Contacion in Church Slavonic Goes Here.");
+ contTextCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll28 = new JScrollPane(contTextCUvalue);
+ scroll28.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionCUP.add(scroll28);
+//The life itself
+ life = new JPanel();
+ life.setLayout(new GridLayout(3,2));
+ JLabel lifeSource1=new JLabel(captions[10]);
+ life.add(lifeSource1);
+ lifeSource = new JTextPane();
+ lifeSource.setText("Source of Life goes here.");
+ lifeSource.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll36 = new JScrollPane(lifeSource);
+ scroll36.setPreferredSize( new Dimension( 50, 50 ) );
+ life.add(scroll36);
+
+ JLabel lifeCopyright2=new JLabel(captions[11]);
+ life.add(lifeCopyright2);
+ lifeCopyright = new JTextPane();
+ lifeCopyright.setText("Copyright Information goes here");
+ lifeCopyright.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll37 = new JScrollPane(lifeCopyright);
+ scroll37.setPreferredSize( new Dimension( 50, 50 ) );
+ life.add(scroll37);
+
+ JLabel lifeText1=new JLabel(captions[12]);
+ life.add(lifeText1);
+ lifeText = new JTextPane();
+ lifeText.setText("Text of the Life Goes Here.");
+ lifeText.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll38 = new JScrollPane(lifeText);
+ scroll38.setPreferredSize( new Dimension( 50, 50 ) );
+ life.add(scroll38);
+
+ save=new JButton(captions[17]);
+ save.addActionListener(this);
+
+
+
+
+
+ JPanel bottom = new JPanel();
+ bottom.setLayout(new GridLayout(3,2));
+ bottom.add(troparionUKP);
+ bottom.add(troparionCUP);
+ bottom.add(contacionUKP);
+ bottom.add(contacionCUP);
+ bottom.add(life);
+ bottom.add(save);
+
+ JSplitPane splitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+ splitter.setTopComponent(top);
+ splitter.setBottomComponent(bottom);
+
+ add(splitter);
+
+ //Adding a Menu Bar
+ /* MenuFiles demo = new MenuFiles(Analyse.dayInfo.clone());
+ JMenuBar MenuBar = new JMenuBar();
+ MenuBar.add(demo.createFileMenu(this));
+ MenuBar.add(demo.createHelpMenu(this));
+ MenuBar.setFont(CurrentFont);
+ setJMenuBar(MenuBar);
+*/
+
+ pack();
+ setSize(900, 800);
+ setVisible(true);
+
+ //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Remove in the final version
+
+
+
+ }
+ public String getUsualBeginning()
+ {
+ return UsualBeginning1;
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ //JMenuItem source = (JMenuItem)(e.getSource());
+ //String name = source.getText();
+
+ //Helpers helper = new Helpers(Analyse.dayInfo);
+ String name = e.getActionCommand();
+ //ALLOWS A MULTILINGUAL PROPER VERSION
+ //System.out.println(name);
+ if (name.equals(captions[3])){
+ //We will need three languages: cu, cu/uk, and cu/uk/uk.
+ String CId=searchTerm.getText();
+//C:\\Users\\yuris\\Documents\\Ponomar\\ponomar-combo\\
+ String filepathCU=filepathCUa+CId+".xml";
+ String filepathUK=filepathUKa+CId+".xml";
+ String filepathUKUK=filepathUKUKa+CId+".xml";
+ saintCU=new HandlerXML(filepathCU);
+ saintCUdoc=saintCU.readXML();
+ NodeList list=saintCUdoc.getElementsByTagName("NAME");
+
+ saintUK=new HandlerXML(filepathUK);
+ saintUKdoc=saintUK.readXML();
+ NodeList listUK=saintUKdoc.getElementsByTagName("NAME");
+
+ saintUKUK=new HandlerXML(filepathUKUK);
+ saintUKUKdoc=saintUKUK.readXML();
+ NodeList listUKUK=saintUKUKdoc.getElementsByTagName("NAME");
+ //Set default values in case nothing is to be found
+ tropPropUKvalue.setText("");
+ tropToneUKvalue.setText("");
+ tropTextUKvalue.setText("");
+ tropPropCUvalue.setText("");
+ tropToneCUvalue.setText("");
+ tropTextCUvalue.setText("");
+ contPropUKvalue.setText("");
+ contToneUKvalue.setText("");
+ contTextUKvalue.setText("");
+ contPropCUvalue.setText("");
+ contToneCUvalue.setText("");
+ contTextCUvalue.setText("");
+ lifeSource.setText("Луцик, 2013");
+ lifeCopyright.setText("І. Я. Луцик, Â«Ð–Ð¸Ñ‚Ñ–Ñ ÑвÑтих, пам'Ñть Ñких УкраїнÑька Греко-Католицька Церква кожного Ð´Ð½Ñ Ð²Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ року поминає». Львів, Видавництво «Свічадо», 2013");
+ lifeText.setText("");
+
+
+ if (listUK.item(0).getAttributes().getNamedItem("Nominative")!=null)
+ {
+ fullform.setText(listUK.item(0).getAttributes().getNamedItem("Nominative").getTextContent()); //Change after testing.
+ }else
+ {
+ fullform.setText(listUK.item(1).getAttributes().getNamedItem("Nominative").getTextContent());
+ }
+ nominative.setText(listUK.item(0).getAttributes().getNamedItem("Short").getTextContent());
+ genitive.setText(listUK.item(0).getAttributes().getNamedItem("Genitive").getTextContent());
+
+ //Ukrainian Troparion
+ NodeList listT=saintUKUKdoc.getElementsByTagName("TROPARION");
+ if (listT.getLength()>0)
+ {
+ tropToneUKvalue.setText(listT.item(0).getAttributes().getNamedItem("Tone").getTextContent());
+ if (listT.item(0).getAttributes().getNamedItem("Podoben")!=null)
+ {
+ tropPropUKvalue.setText(listT.item(0).getAttributes().getNamedItem("Podoben").getTextContent());
+ }else
+ {
+ tropPropUKvalue.setText("");
+ }
+ tropTextUKvalue.setText(listT.item(0).getTextContent());
+ }
+
+ //Church Slavonic Troparion
+ listT=saintCUdoc.getElementsByTagName("TROPARION");
+ if (listT.getLength()>0)
+ {
+ tropToneCUvalue.setText(listT.item(0).getAttributes().getNamedItem("Tone").getTextContent());
+ if (listT.item(0).getAttributes().getNamedItem("Podoben")!=null)
+ {
+ tropPropCUvalue.setText(listT.item(0).getAttributes().getNamedItem("Podoben").getTextContent());
+ }else
+ {
+ tropPropCUvalue.setText("");
+ }
+ tropTextCUvalue.setText(listT.item(0).getTextContent());
+ }
+
+ //Ukrainian Contacion
+ listT=saintUKUKdoc.getElementsByTagName("KONTAKION");
+ if (listT.getLength()>0)
+ {
+ contToneUKvalue.setText(listT.item(0).getAttributes().getNamedItem("Tone").getTextContent());
+ if (listT.item(0).getAttributes().getNamedItem("Podoben")!=null)
+ {
+ contPropUKvalue.setText(listT.item(0).getAttributes().getNamedItem("Podoben").getTextContent());
+ }else
+ {
+ contPropUKvalue.setText("");
+ }
+ contTextUKvalue.setText(listT.item(0).getTextContent());
+ }
+
+ //Church Slavonic Contacion
+ listT=saintCUdoc.getElementsByTagName("KONTAKION");
+ if (listT.getLength()>0)
+ {
+ contToneCUvalue.setText(listT.item(0).getAttributes().getNamedItem("Tone").getTextContent());
+ if (listT.item(0).getAttributes().getNamedItem("Podoben")!=null)
+ {
+ contPropCUvalue.setText(listT.item(0).getAttributes().getNamedItem("Podoben").getTextContent());
+ }else
+ {
+ contPropCUvalue.setText("");
+ }
+ contTextCUvalue.setText(listT.item(0).getTextContent());
+ }
+
+ //LIFE
+ NodeList listL=saintUKdoc.getElementsByTagName("LIFE");
+ if (listL.getLength()>0)
+ {
+ lifeSource.setText(listL.item(0).getAttributes().getNamedItem("Id").getTextContent());
+ lifeCopyright.setText(listL.item(0).getAttributes().getNamedItem("Copyright").getTextContent());
+ lifeText.setText(listL.item(0).getTextContent());
+ }
+
+
+
+//09497
+ return;
+ }
+ if (name.equals(captions[17])){
+ //We will now need to save the information as necessary.
+ //Check if life data exists
+ String CId=searchTerm.getText();
+//C:\\Users\\yuris\\Documents\\Ponomar\\ponomar-combo\\
+ String filepathCU=filepathCUa+CId+".xml";
+ String filepathUK=filepathUKa+CId+".xml";
+ String filepathUKUK=filepathUKUKa+CId+".xml";
+
+ //Update Correction File
+ try{
+ readCorrections(new FileInputStream(new File("Ponomar\\languages\\xml\\Commands\\Changes.txt")));
+ //System.out.println(corrections.get(5));
+ //System.out.println(countCorr);
+ }catch (IOException ed)
+ {
+ ed.printStackTrace();
+ }
+
+
+ String lifetext=correctText(lifeText.getText());
+ //We need to make further corrections in the text:
+ if (lifetext.contains("\n\n")){
+ lifetext=""+lifetext.replaceAll("\n\n", "
")+"
";
+ }
+ //saintUKUKdoc
+ //saintCUdoc
+ if (!lifetext.isEmpty())
+ {
+ //Update Life
+ NodeList listL=saintUKdoc.getElementsByTagName("LIFE");
+ if (listL.getLength()>0)
+ {
+ listL.item(0).getAttributes().getNamedItem("Id").setTextContent(lifeSource.getText());
+ listL.item(0).getAttributes().getNamedItem("Copyright").setTextContent(lifeCopyright.getText());
+ listL.item(0).setTextContent(lifetext);
+
+ }else
+ {
+ //We need to create the LIFE node
+ Element newLife=saintUKdoc.createElement("LIFE");
+ newLife.setAttribute("Id", lifeSource.getText());
+ newLife.setAttribute("Copyright", lifeCopyright.getText());
+ newLife.setTextContent(lifetext);
+ saintUKdoc.getDocumentElement().appendChild(newLife);
+ }
+ //Save updated File
+ try (FileOutputStream output= new FileOutputStream(filepathUK)){
+ HandlerXML.writeXml(saintUKdoc,output);
+ } catch (IOException | TransformerException e3){
+ e3.printStackTrace();
+ }
+
+ }
+
+
+ //System.out.println("I will save the files");
+ //return;
+
+ if (!tropTextUKvalue.getText().isEmpty() || !contTextUKvalue.getText().isEmpty()){
+ //Update Troparion and Contacion for Ukrainian
+ NodeList listT=saintUKUKdoc.getElementsByTagName("TROPARION");
+ if (listT.getLength()>0)
+ {
+ listT.item(0).getAttributes().getNamedItem("Tone").setTextContent(tropToneUKvalue.getText());
+ if (!tropPropUKvalue.getText().isEmpty())
+ {
+ //listT.item(0).getAttributes().getNamedItem("Podoben").setTextContent(tropPropUKvalue.getText());
+ Element el=(Element)listT.item(0);//.getAttributes().getNamedItem("Podoben").getNodeValue();
+ el.setAttribute("Podoben", tropPropUKvalue.getText());
+ }else
+ {
+
+ //listT.item(0).getAttributes().getNamedItem("Podoben").setTextContent(tropPropUKvalue.getText());
+ }
+ listT.item(0).setTextContent(correctText(tropTextUKvalue.getText()));
+ }else
+ {
+ //Create our new Elements
+ Element newTroparion = saintUKUKdoc.createElement("TROPARION");
+ newTroparion.setAttribute("Tone",tropToneUKvalue.getText());
+ if (!tropPropUKvalue.getText().isEmpty())
+ {
+ newTroparion.setAttribute("Podoben",tropPropUKvalue.getText());
+ }
+ newTroparion.setAttribute("Type","1");
+ newTroparion.setTextContent(correctText(tropTextUKvalue.getText()));
+
+// Element newContacion = saintUKUKdoc.createElement("KONTAKION");
+// newContacion.setAttribute("Tone",contToneUKvalue.getText());
+// if (contPropUKvalue.getText()!="")
+// {
+// newContacion.setAttribute("Podoben",contPropUKvalue.getText());
+// }
+// newContacion.setTextContent(contTextUKvalue.getText());
+
+ NodeList listS=saintUKUKdoc.getElementsByTagName("LITURGY");
+ if (listS.getLength()>0){
+ //We just need to add the troparion/contacion
+ listS.item(0).appendChild(newTroparion);
+ //listS.item(0).appendChild(newContacion);
+ }else
+ {
+ Element newService=saintUKUKdoc.createElement("SERVICE");
+ Element newLiturgy=saintUKUKdoc.createElement("LITURGY");
+ newLiturgy.appendChild(newTroparion);
+ newService.appendChild(newLiturgy);
+ // newService.appendChild(newContacion);
+ saintUKUKdoc.getDocumentElement().appendChild(newService);
+ }
+ }
+
+ NodeList listC=saintUKUKdoc.getElementsByTagName("KONTAKION");
+ if (listC.getLength()>0)
+ {
+ listC.item(0).getAttributes().getNamedItem("Tone").setTextContent(contToneUKvalue.getText());
+ if (contPropUKvalue.getText().isEmpty())
+ {
+ //listT.item(0).getAttributes().getNamedItem("Podoben").setTextContent(contPropUKvalue.getText());
+ }else
+ {
+ //listC.item(0).getAttributes().getNamedItem("Podoben").setTextContent(contPropUKvalue.getText());
+ Element el=(Element)listC.item(0);//.getAttributes().getNamedItem("Podoben").getNodeValue();
+ el.setAttribute("Podoben", contPropUKvalue.getText());
+ }
+ listC.item(0).setTextContent(correctText(contTextUKvalue.getText()));
+ }else
+ {
+ //Create our new Elements
+ Element newContacion = saintUKUKdoc.createElement("KONTAKION");
+ newContacion.setAttribute("Tone",contToneUKvalue.getText());
+ if (!contPropUKvalue.getText().isEmpty())
+ {
+ newContacion.setAttribute("Podoben",contPropUKvalue.getText());
+
+ }
+ newContacion.setAttribute("Type","1");
+ newContacion.setTextContent(correctText(contTextUKvalue.getText()));
+
+ NodeList listS=saintUKUKdoc.getElementsByTagName("LITURGY");
+ if (listS.getLength()>0){
+ //We just need to add the troparion/contacion
+ // listS.item(0).appendChild(newTroparion);
+ listS.item(0).appendChild(newContacion);
+ }else
+ {
+ Element newService=saintUKUKdoc.createElement("SERVICE");
+ Element newLiturgy=saintUKUKdoc.createElement("LITURGY");
+ // newService.appendChild(newTroparion);
+ newLiturgy.appendChild(newContacion);
+ newService.appendChild(newLiturgy);
+ saintUKUKdoc.getDocumentElement().appendChild(newService);
+ }
+ }
+
+ }
+ try (FileOutputStream output= new FileOutputStream(filepathUKUK)){
+ HandlerXML.writeXml(saintUKUKdoc,output);
+ } catch (IOException | TransformerException e3){
+ e3.printStackTrace();
+ }
+ //And now for Church Slavonic
+ if (!tropTextCUvalue.getText().isEmpty() || !contTextCUvalue.getText().isEmpty()){
+ //Update Troparion and Contacion for Church Slavonic
+ NodeList listT=saintCUdoc.getElementsByTagName("TROPARION");
+ if (listT.getLength()>0)
+ {
+ listT.item(0).getAttributes().getNamedItem("Tone").setTextContent(tropToneCUvalue.getText());
+ if (!tropPropCUvalue.getText().isEmpty())
+ {
+ //listT.item(0).getAttributes().getNamedItem("Podoben").setTextContent(tropPropCUvalue.getText());
+ Element el=(Element)listT.item(0);//.getAttributes().getNamedItem("Podoben").getNodeValue();
+ el.setAttribute("Podoben", tropPropCUvalue.getText());
+ }else
+ {
+ //listT.item(0).getAttributes().getNamedItem("Podoben").setTextContent(tropPropCUvalue.getText());
+ }
+ listT.item(0).setTextContent(tropTextCUvalue.getText());
+ }else
+ {
+ //Create our new Elements
+ Element newTroparion = saintCUdoc.createElement("TROPARION");
+ newTroparion.setAttribute("Tone",tropToneCUvalue.getText());
+ if (!tropPropCUvalue.getText().isEmpty())
+ {
+ newTroparion.setAttribute("Podoben",tropPropCUvalue.getText());
+ }
+ newTroparion.setAttribute("Type","1");
+ newTroparion.setTextContent(tropTextCUvalue.getText());
+
+// Element newContacion = saintCUdoc.createElement("KONTAKION");
+// newContacion.setAttribute("Tone",contToneCUvalue.getText());
+// if (contPropCUvalue.getText()!="")
+// {
+// newContacion.setAttribute("Podoben",contPropCUvalue.getText());
+// }
+// newContacion.setTextContent(contTextCUvalue.getText());
+
+ NodeList listS=saintCUdoc.getElementsByTagName("LITURGY");
+ if (listS.getLength()>0){
+ //We just need to add the troparion/contacion
+ listS.item(0).appendChild(newTroparion);
+ //listS.item(0).appendChild(newContacion);
+ }else
+ {
+ Element newService=saintCUdoc.createElement("SERVICE");
+ Element newLiturgy=saintCUdoc.createElement("LITURGY");
+ newLiturgy.appendChild(newTroparion);
+ newService.appendChild(newLiturgy);
+ // newService.appendChild(newContacion);
+ saintCUdoc.getDocumentElement().appendChild(newService);
+ }
+ }
+
+ NodeList listC=saintCUdoc.getElementsByTagName("KONTAKION");
+ if (listC.getLength()>0)
+ {
+ listC.item(0).getAttributes().getNamedItem("Tone").setTextContent(contToneCUvalue.getText());
+ if (!contPropCUvalue.getText().isEmpty())
+ {
+ /* if (listC.item(0).getAttributes().getNamedItem("Podoben")!=null){
+ listC.item(0).getAttributes().getNamedItem("Podoben").setTextContent(contPropCUvalue.getText());
+ }else{
+ */ Element el=(Element)listC.item(0);//.getAttributes().getNamedItem("Podoben").getNodeValue();
+ el.setAttribute("Podoben", contPropCUvalue.getText());
+ //}
+ }else
+ {
+ //listT.item(0).getAttributes().getNamedItem("Podoben").setTextContent(contPropCUvalue.getText());
+ }
+ listC.item(0).setTextContent(contTextCUvalue.getText());
+ }else
+ {
+ //Create our new Elements
+ Element newContacion = saintCUdoc.createElement("KONTAKION");
+ newContacion.setAttribute("Tone",contToneCUvalue.getText());
+ newContacion.setAttribute("Type","1");
+ if (!contPropCUvalue.getText().isEmpty())
+ {
+ newContacion.setAttribute("Podoben",contPropCUvalue.getText());
+ }
+ newContacion.setTextContent(contTextCUvalue.getText());
+
+ NodeList listS=saintCUdoc.getElementsByTagName("LITURGY");
+ if (listS.getLength()>0){
+ //We just need to add the troparion/contacion
+ // listS.item(0).appendChild(newTroparion);
+ listS.item(0).appendChild(newContacion);
+ }else
+ {
+ Element newService=saintCUdoc.createElement("SERVICE");
+ Element newLiturgy=saintCUdoc.createElement("LITURGY");
+ newLiturgy.appendChild(newContacion);
+ newService.appendChild(newLiturgy);
+ // newService.appendChild(newTroparion);
+ // newLiturgy.appendChild(newContacion);
+ saintCUdoc.getDocumentElement().appendChild(newService);
+ }
+ }
+
+ }
+ try (FileOutputStream output= new FileOutputStream(filepathCU)){
+ HandlerXML.writeXml(saintCUdoc,output);
+ } catch (IOException | TransformerException e3){
+ e3.printStackTrace();
+ }
+ System.out.println("Finished saving files associated with CId="+CId);
+ }
+
+
+
+
+
+ }
+ private void readCorrections(InputStream inputStream)
+ throws IOException {
+ corrections=new OrderedHashtable();
+ countCorr=0;
+ try (BufferedReader br
+ = new BufferedReader(new InputStreamReader(inputStream,StandardCharsets.UTF_8))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ //String[] parts=line.split(";");
+ corrections.put(countCorr,line);
+ countCorr=countCorr+1;
+ //resultStringBuilder.append(line).append("\n");
+ }
+ }
+ countCorr=countCorr-1;
+}
+ private String correctText(String text){
+ String correctedText=text;
+ for(int i=0;i<=countCorr;i++){
+ String texts=(String)corrections.get(i);
+ String[] replacement=texts.split(";");
+ correctedText=correctedText.replaceAll(replacement[0], replacement[1]);
+ //System.out.println(replacement[0]+" "+replacement[1]);
+ }
+
+ return correctedText;
+ }
+
+ public static void main(String[] argz)
+ {
+ OrderedHashtable dayinfo=new OrderedHashtable();
+ dayinfo.put("LS","fr/");
+ Search testing = new Search(dayinfo);
+
+
+ }
+}
+
diff --git a/Ponomar/EditPrayers.java b/Ponomar/EditPrayers.java
new file mode 100644
index 000000000..124326ece
--- /dev/null
+++ b/Ponomar/EditPrayers.java
@@ -0,0 +1,645 @@
+package Ponomar;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import javax.xml.XMLConstants;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import java.nio.charset.StandardCharsets;
+
+import javax.swing.*;
+import java.beans.*;
+import java.awt.*;
+import java.util.*;
+import java.io.*;
+import javax.swing.event.*;
+import java.awt.event.*;
+import java.beans.*;
+
+
+/***********************************************************************
+THIS MODULE CREATES THE TEXT FOR THE SEARCHING FOR COMMEMORATIONS ACCROSS LANGUAGES/JURISDICTIONS
+
+(C) 2024 YURI SHARDT. ALL RIGHTS RESERVED.
+
+
+ PERMISSION IS HEREBY GRANTED TO USE, MODIFY, AND/OR REDISTRIBUTE THIS SOURCE CODE
+ PROVIDED THAT THIS NOTICE REMAINS IN ALL VERSION AND / OR DERIVATIVES THEREOF.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+***********************************************************************/
+public class EditPrayers extends JFrame implements ActionListener
+{
+ //SOME QUICK NOTES FOR FURTHER IMPLEMENTATION:
+
+ public String UsualBeginning1;
+ private StringOp Analyse=new StringOp();
+ private JTextField searchTerm = new JTextField("");
+ private JButton okay;
+ private JButton save;
+ private JTextPane results;
+ private LanguagePack Text;
+ private String[] captions;
+ private boolean built=false;
+ private OrderedHashtable[] database;
+ private JRadioButton exact;
+ private JCheckBox noCase;
+ private JCheckBox noMarks;
+ private JCheckBox normalise;
+ private boolean exact_status;
+ private JTextPane fullform;
+ private JTextPane nominative;
+ private JTextPane genitive;
+ private JPanel troparionUKP;
+ private JTextPane tropToneUKvalue;
+ private JTextPane tropPropUKvalue;
+ private JTextPane tropTextUKvalue;
+ private JPanel troparionCUP;
+ private JTextPane tropToneCUvalue;
+ private JTextPane tropPropCUvalue;
+ private JTextPane tropTextCUvalue;
+ private JPanel contacionUKP;
+ private JTextPane contToneUKvalue;
+ private JTextPane contPropUKvalue;
+ private JTextPane contTextUKvalue;
+ private JPanel contacionCUP;
+ private JTextPane contToneCUvalue;
+ private JTextPane contPropCUvalue;
+ private JTextPane contTextCUvalue;
+ private JPanel life;
+ private JTextPane lifeSource;
+ private JTextPane lifeCopyright;
+ private JTextPane lifeText;
+ private HandlerXML saintCU;
+ private HandlerXML saintUK;
+ private HandlerXML saintUKUK;
+ private Document saintCUdoc;
+ private Document saintUKdoc;
+ private Document saintUKUKdoc;
+ private String filepathCUa="Ponomar\\languages\\cu\\xml\\Services\\Command";
+ private String filepathCUb="Ponomar\\languages\\cu\\xml\\Services\\CommonPrayers";
+ private String filepathCUc="Ponomar\\languages\\cu\\xml\\Services\\Text";
+ private String filepathUKa="Ponomar\\languages\\cu\\uk\\uk\\xml\\Services\\Command";
+ private String filepathUKb="Ponomar\\languages\\cu\\uk\\uk\\xml\\Services\\CommonPrayers";
+ private String filepathUKc="Ponomar\\languages\\cu\\uk\\uk\\xml\\Services\\Text";
+
+ private String filepathCUd="Ponomar\\languages\\cu\\xml\\Services\\CommonPrayers\\TROPARION";
+ private String filepathUKd="Ponomar\\languages\\cu\\uk\\uk\\xml\\Services\\CommonPrayers\\TROPARION";
+ private String filepathCUe="Ponomar\\languages\\cu\\xml\\Services\\CommonPrayers\\KONTAKION";
+ private String filepathUKe="Ponomar\\languages\\cu\\uk\\uk\\xml\\Services\\CommonPrayers\\KONTAKION";
+ //private String filepathUKUKa="Ponomar\\languages\\cu\\uk\\uk\\xml\\lives\\";
+ private OrderedHashtable corrections;
+ private OrderedHashtable fileName;
+ private OrderedHashtable filePath;
+ private OrderedHashtable filePathCU;
+ private JComboBox combobox;
+ private int countCorr;
+
+ private String filepathUKUKa="";
+
+//Allows the prayers to be quickly edited and made correct. As with the saints, it is limited to only Ukrainian and Church Slavonic, as the Church Slavonic needs correction from place to place. It is to be made equivalent to the Rusyn version.
+
+ public EditPrayers(OrderedHashtable dayInfo)
+ {
+ //We will only worry ourself about a special case here as a general version is not feasible, as there are just too many variables:
+ //I will assume I want to edit the Ukrainian life, the troparia and contacia, as well as the last two in Church Slavonic.
+ Analyse.dayInfo = dayInfo;
+ Text = new LanguagePack(dayInfo);
+// captions = new String[]{"Edit Commemoration","CCId", "Enter CCId Value.","LOAD","Full Form (Genitive):","Short Form (Nominative)", "Short From (Genitive)","Tone","Proper","Text","Source for Life","Copyright for Life","Text of Life","Troparion","Contacion","Ukrainian","Church Slavonic","SAVE"};//Text.obtainValues((String) Text.Phrases.get("Search"));
+ captions=new String[]{"Edit Prayers","Load","Header for the Prayer","Text of the Prayer","Ukrainian","Church Slavonic","Save"};
+ setTitle(captions[0]);
+
+//Create the Interface:
+
+//Read all files in Ukrainian that exist (these are to be updated, as they are currently in Church Slavonic). There are three paths to consider
+ File folder= new File(filepathUKa);
+ //System.out.println(filepathUKa);
+ fileName=new OrderedHashtable();
+ filePath=new OrderedHashtable();
+ filePathCU=new OrderedHashtable();
+ int count = 1;
+ fileName.put(0,"");
+ filePath.put(0,"");
+ filePathCU.put(0,"");
+
+ for (File fileEntry : folder.listFiles()) {
+ if (fileEntry.isDirectory()) {
+ //do nothing
+ } else {
+ //System.out.println(fileEntry.getName());
+ fileName.put(count,fileEntry.getName());
+ filePath.put(count,fileEntry.getPath());
+ filePathCU.put(count,filepathCUa+"\\"+fileEntry.getName());
+ count=count+1;
+ }
+ }
+
+ folder= new File(filepathUKb);
+ for (File fileEntry : folder.listFiles()) {
+ if (fileEntry.isDirectory()) {
+ //do nothing
+ } else {
+ //System.out.println(fileEntry.getName());
+ fileName.put(count,fileEntry.getName());
+ filePath.put(count,fileEntry.getPath());
+ filePathCU.put(count,filepathCUb+"\\"+fileEntry.getName());
+ count=count+1;
+ }
+ }
+ folder= new File(filepathUKc);
+ for (File fileEntry : folder.listFiles()) {
+ if (fileEntry.isDirectory()) {
+ //do nothing
+ } else {
+ //System.out.println(fileEntry.getName());
+ fileName.put(count,fileEntry.getName());
+ filePath.put(count,fileEntry.getPath());
+ filePathCU.put(count,filepathCUc+"\\"+fileEntry.getName());
+ count=count+1;
+ }
+ }
+
+ /*folder= new File(filepathUKd);
+ for (File fileEntry : folder.listFiles()) {
+ if (fileEntry.isDirectory()) {
+ //do nothing
+ } else {
+ //System.out.println(fileEntry.getName());
+ fileName.put(count,fileEntry.getName());
+ filePath.put(count,fileEntry.getPath());
+ filePathCU.put(count,filepathCUd+"\\"+fileEntry.getName());
+ count=count+1;
+ }
+ }*/
+ folder= new File(filepathUKe);
+ for (File fileEntry : folder.listFiles()) {
+ if (fileEntry.isDirectory()) {
+ //do nothing
+ } else {
+ //System.out.println(fileEntry.getName());
+ fileName.put(count,fileEntry.getName());
+ filePath.put(count,fileEntry.getPath());
+ filePathCU.put(count,filepathCUe+"\\"+fileEntry.getName());
+ count=count+1;
+ }
+ }
+ count=count-1;
+
+ //All required files have been read!
+ //Create interface
+
+ JPanel top = new JPanel();
+ top.setLayout(new GridLayout(1,2));
+ /* JLabel text =new JLabel(captions[1],SwingConstants.RIGHT);
+ top.add(text);
+ searchTerm.setEditable(true);
+
+ searchTerm.setText(captions[2]);
+ top.add(searchTerm);
+ */
+ //Add the required combobox to select which file I wish to modify.
+ //System.out.println(count);
+ //System.out.println(fileName.get(0));
+ String[] choices= new String[count+1]; //{fileName.get(0).toString()};
+ choices[0]="";
+ for (int i=1;i<=count;i++){
+ //System.out.println("Testing: " + i +" out of "+ count);
+ //System.out.println(fileName.size());
+ choices[i]=fileName.get(i).toString();
+ }
+ combobox=new JComboBox(choices);
+ top.add(combobox);
+
+ okay=new JButton(captions[1]);
+ okay.addActionListener(this);
+ //okay.setFont(CurrentFont); NEEDS TO BE IMPLEMENTED IN THE FINAL VERSION
+ top.add(okay);
+ /*JLabel textab =new JLabel(captions[4],SwingConstants.RIGHT);
+ top.add(textab);
+
+ fullform=new JTextPane();
+ fullform.setContentType("text/html; charset=UTF-8");
+ fullform.setText(captions[4]);
+ fullform.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll = new JScrollPane(fullform);
+ scroll.setPreferredSize( new Dimension( 50, 50 ) );
+ top.add(scroll);
+ top.add(new JLabel("",SwingConstants.RIGHT));
+ JLabel textac =new JLabel(captions[5],SwingConstants.RIGHT);
+ top.add(textac);
+ nominative=new JTextPane();
+ nominative.setContentType("text/html; charset=UTF-8");
+ nominative.setText(captions[5]);
+ nominative.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll1 = new JScrollPane(nominative);
+ scroll1.setPreferredSize( new Dimension( 50, 50 ) );
+ top.add(scroll1);
+ top.add(new JLabel("",SwingConstants.RIGHT));
+
+ JLabel textae =new JLabel(captions[6],SwingConstants.RIGHT);
+ top.add(textae);
+ genitive=new JTextPane();
+ genitive.setContentType("text/html; charset=UTF-8");
+ genitive.setText(captions[6]);
+ genitive.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll2 = new JScrollPane(genitive);
+ scroll2.setPreferredSize( new Dimension( 50, 50 ) );
+ top.add(scroll2);
+ top.add(new JLabel("",SwingConstants.RIGHT));
+ */
+ //The Ukrainian prayer and header
+ troparionUKP = new JPanel();
+ troparionUKP.setLayout(new GridLayout(2,2));
+ JLabel tropToneUK=new JLabel(captions[2]+" in "+captions[4]);
+ troparionUKP.add(tropToneUK);
+ tropToneUKvalue = new JTextPane();
+ tropToneUKvalue.setText(captions[2]+" in "+captions[4]+" goes here.");
+ tropToneUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll3 = new JScrollPane(tropToneUKvalue);
+ scroll3.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionUKP.add(scroll3);
+
+/* JLabel tropPropUK=new JLabel(captions[8]+" for the " +captions[13] + " in "+captions[15]);
+ troparionUKP.add(tropPropUK);
+ tropPropUKvalue = new JTextPane();
+ tropPropUKvalue.setText("Proper of the Troparion in Ukrainian Goes Here.");
+ tropPropUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll4 = new JScrollPane(tropPropUKvalue);
+ scroll4.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionUKP.add(scroll4);
+*/
+ JLabel tropTextUK=new JLabel(captions[3]+" in "+captions[4]);
+ troparionUKP.add(tropTextUK);
+ tropTextUKvalue = new JTextPane();
+ tropTextUKvalue.setText(captions[3]+" in "+captions[4]+" goes here.");
+ tropTextUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll5 = new JScrollPane(tropTextUKvalue);
+ scroll5.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionUKP.add(scroll5);
+
+//Repeat for the Troparion in Church Slavonic
+troparionCUP = new JPanel();
+ troparionCUP.setLayout(new GridLayout(3,2));
+ JLabel tropToneCU=new JLabel(captions[2]+" in "+captions[5]);
+ troparionCUP.add(tropToneCU);
+ tropToneCUvalue = new JTextPane();
+ tropToneCUvalue.setText(captions[2]+" in "+captions[5]+" goes here.");
+ tropToneCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll6 = new JScrollPane(tropToneCUvalue);
+ scroll6.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionCUP.add(scroll6);
+/*
+ JLabel tropPropCU=new JLabel(captions[8]+" for the " +captions[13] + " in "+captions[16]);
+ troparionCUP.add(tropPropCU);
+ tropPropCUvalue = new JTextPane();
+ tropPropCUvalue.setText("Proper of the Troparion in Church Slavonic Goes Here.");
+ tropPropCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll7 = new JScrollPane(tropPropCUvalue);
+ scroll7.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionCUP.add(scroll7);
+*/
+ JLabel tropTextCU=new JLabel(captions[3]+" in "+captions[5]);
+ troparionCUP.add(tropTextCU);
+ tropTextCUvalue = new JTextPane();
+ tropTextCUvalue.setText(captions[3]+" in "+captions[5]+" goes here.");
+ tropTextCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll8 = new JScrollPane(tropTextCUvalue);
+ scroll8.setPreferredSize( new Dimension( 50, 50 ) );
+ troparionCUP.add(scroll8);
+
+//Contacion
+/*contacionUKP = new JPanel();
+ contacionUKP.setLayout(new GridLayout(3,2));
+ JLabel contToneUK=new JLabel(captions[7]+" for the " +captions[14] + " in "+captions[15]);
+ contacionUKP.add(contToneUK);
+ contToneUKvalue = new JTextPane();
+ contToneUKvalue.setText("Tone of the Contacion in Ukrainian Goes Here.");
+ contToneUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll23 = new JScrollPane(contToneUKvalue);
+ scroll23.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionUKP.add(scroll23);
+
+ JLabel contPropUK=new JLabel(captions[8]+" for the " +captions[14] + " in "+captions[15]);
+ contacionUKP.add(contPropUK);
+ contPropUKvalue = new JTextPane();
+ contPropUKvalue.setText("Proper of the Contacion in Ukrainian Goes Here.");
+ contPropUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll24 = new JScrollPane(contPropUKvalue);
+ scroll24.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionUKP.add(scroll24);
+
+ JLabel contTextUK=new JLabel(captions[9]+" for the " +captions[14] + " in "+captions[15]);
+ contacionUKP.add(contTextUK);
+ contTextUKvalue = new JTextPane();
+ contTextUKvalue.setText("Text of the Contacion in Ukrainian Goes Here.");
+ contTextUKvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll25 = new JScrollPane(contTextUKvalue);
+ scroll25.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionUKP.add(scroll25);
+
+//Repeat for the Contacion in Church Slavonic
+contacionCUP = new JPanel();
+ contacionCUP.setLayout(new GridLayout(3,2));
+ JLabel contToneCU=new JLabel(captions[7]+" for the " +captions[14] + " in "+captions[16]);
+ contacionCUP.add(contToneCU);
+ contToneCUvalue = new JTextPane();
+ contToneCUvalue.setText("Tone of the Contacion in Church Slavonic Goes Here.");
+ contToneCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll26 = new JScrollPane(contToneCUvalue);
+ scroll26.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionCUP.add(scroll26);
+
+ JLabel contPropCU=new JLabel(captions[8]+" for the " +captions[14] + " in "+captions[16]);
+ contacionCUP.add(contPropCU);
+ contPropCUvalue = new JTextPane();
+ contPropCUvalue.setText("Proper of the Contacion in Church Slavonic Goes Here.");
+ contPropCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll27 = new JScrollPane(contPropCUvalue);
+ scroll27.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionCUP.add(scroll27);
+
+ JLabel contTextCU=new JLabel(captions[9]+" for the " +captions[14] + " in "+captions[16]);
+ contacionCUP.add(contTextCU);
+ contTextCUvalue = new JTextPane();
+ contTextCUvalue.setText("Text of the Contacion in Church Slavonic Goes Here.");
+ contTextCUvalue.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll28 = new JScrollPane(contTextCUvalue);
+ scroll28.setPreferredSize( new Dimension( 50, 50 ) );
+ contacionCUP.add(scroll28);
+//The life itself
+ life = new JPanel();
+ life.setLayout(new GridLayout(3,2));
+ JLabel lifeSource1=new JLabel(captions[10]);
+ life.add(lifeSource1);
+ lifeSource = new JTextPane();
+ lifeSource.setText("Source of Life goes here.");
+ lifeSource.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll36 = new JScrollPane(lifeSource);
+ scroll36.setPreferredSize( new Dimension( 50, 50 ) );
+ life.add(scroll36);
+
+ JLabel lifeCopyright2=new JLabel(captions[11]);
+ life.add(lifeCopyright2);
+ lifeCopyright = new JTextPane();
+ lifeCopyright.setText("Copyright Information goes here");
+ lifeCopyright.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll37 = new JScrollPane(lifeCopyright);
+ scroll37.setPreferredSize( new Dimension( 50, 50 ) );
+ life.add(scroll37);
+
+ JLabel lifeText1=new JLabel(captions[12]);
+ life.add(lifeText1);
+ lifeText = new JTextPane();
+ lifeText.setText("Text of the Life Goes Here.");
+ lifeText.setBounds( 0, 0, 50, 50 );
+ JScrollPane scroll38 = new JScrollPane(lifeText);
+ scroll38.setPreferredSize( new Dimension( 50, 50 ) );
+ life.add(scroll38);
+*/
+ save=new JButton(captions[6]);
+ save.addActionListener(this);
+
+
+
+
+
+ JPanel bottom = new JPanel();
+ bottom.setLayout(new GridLayout(2,2));
+ bottom.add(troparionUKP);
+ bottom.add(troparionCUP);
+ //bottom.add(contacionUKP);
+ //bottom.add(contacionCUP);
+ //bottom.add(life);
+ //bottom.add("");
+ bottom.add(save);
+
+ JSplitPane splitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+ splitter.setTopComponent(top);
+ splitter.setBottomComponent(bottom);
+
+ add(splitter);
+
+ //Adding a Menu Bar
+ /* MenuFiles demo = new MenuFiles(Analyse.dayInfo.clone());
+ JMenuBar MenuBar = new JMenuBar();
+ MenuBar.add(demo.createFileMenu(this));
+ MenuBar.add(demo.createHelpMenu(this));
+ MenuBar.setFont(CurrentFont);
+ setJMenuBar(MenuBar);
+*/
+
+ pack();
+ setSize(900, 800);
+ setVisible(true);
+
+ //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Remove in the final version
+
+
+
+ }
+ public String getUsualBeginning()
+ {
+ return UsualBeginning1;
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ //JMenuItem source = (JMenuItem)(e.getSource());
+ //String name = source.getText();
+
+ //Helpers helper = new Helpers(Analyse.dayInfo);
+ String name = e.getActionCommand();
+ //ALLOWS A MULTILINGUAL PROPER VERSION
+ //System.out.println(name);
+ if (name.equals(captions[1])){
+ //We will need two languages: cu and cu/uk/uk. We will worry about any changes at the cu/uk level later (there will be a few).
+ int CId=combobox.getSelectedIndex();
+ String path=filePath.get(CId).toString();
+//C:\\Users\\yuris\\Documents\\Ponomar\\ponomar-combo\\
+ String pathCU=filePathCU.get(CId).toString();
+ saintCU=new HandlerXML(pathCU);
+ saintCUdoc=saintCU.readXML();
+ //NodeList list=saintCUdoc.getElementsByTagName("NAME");
+
+ /*saintUK=new HandlerXML(filepathUK);
+ saintUKdoc=saintUK.readXML();
+ //NodeList listUK=saintUKdoc.getElementsByTagName("NAME");
+*/
+ saintUKUK=new HandlerXML(path);
+ saintUKUKdoc=saintUKUK.readXML();
+ // NodeList listUKUK=saintUKUKdoc.getElementsByTagName("NAME");
+ //Set default values in case nothing is to be found
+ // tropPropUKvalue.setText("");
+ tropToneUKvalue.setText("");
+ tropTextUKvalue.setText("");
+ // tropPropCUvalue.setText("");
+ tropToneCUvalue.setText("");
+ tropTextCUvalue.setText("");
+ /* contPropUKvalue.setText("");
+ contToneUKvalue.setText("");
+ contTextUKvalue.setText("");
+ contPropCUvalue.setText("");
+ contToneCUvalue.setText("");
+ contTextCUvalue.setText("");
+ lifeSource.setText("Луцик, 2013");
+ lifeCopyright.setText("І. Я. Луцик, Â«Ð–Ð¸Ñ‚Ñ–Ñ ÑвÑтих, пам'Ñть Ñких УкраїнÑька Греко-Католицька Церква кожного Ð´Ð½Ñ Ð²Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ року поминає». Львів, Видавництво «Свічадо», 2013");
+ lifeText.setText("");
+*/
+
+ //Ukrainian Troparion
+ NodeList listT=saintUKUKdoc.getElementsByTagName("HEADER");
+ if (listT.getLength()>0)
+ {
+ tropToneUKvalue.setText(listT.item(0).getAttributes().getNamedItem("Value").getTextContent());
+
+ }
+ listT=saintUKUKdoc.getElementsByTagName("TEXT");
+ tropTextUKvalue.setText(listT.item(0).getAttributes().getNamedItem("Value").getTextContent());
+
+ //Church Slavonic Troparion
+ listT=saintCUdoc.getElementsByTagName("HEADER");
+ if (listT.getLength()>0)
+ {
+ tropToneCUvalue.setText(listT.item(0).getAttributes().getNamedItem("Value").getTextContent());
+
+ }
+ listT=saintCUdoc.getElementsByTagName("TEXT");
+ tropTextCUvalue.setText(listT.item(0).getAttributes().getNamedItem("Value").getTextContent());
+
+ return;
+ }
+ if (name.equals(captions[6])){
+ //We will now need to save the information as necessary.
+ //Check if life data exists
+
+ int CId=combobox.getSelectedIndex();
+ if (CId==0){
+ return;
+ }
+ String path=filePath.get(CId).toString();
+ String pathCU=filePathCU.get(CId).toString();
+
+ //Update Correction File
+ try{
+ readCorrections(new FileInputStream(new File("Ponomar\\languages\\xml\\Commands\\Changes.txt")));
+ //System.out.println(corrections.get(5));
+ //System.out.println(countCorr);
+ }catch (IOException ed)
+ {
+ ed.printStackTrace();
+ }
+
+
+
+
+
+
+
+ if (!tropTextUKvalue.getText().isEmpty()){
+ //Update Prayer for Ukrainian
+ NodeList listT=saintUKUKdoc.getElementsByTagName("HEADER");
+ if (listT.getLength()>0)
+ {
+ listT.item(0).getAttributes().getNamedItem("Value").setTextContent(tropToneUKvalue.getText());
+ }else
+ {
+ Element newTroparion = saintUKUKdoc.createElement("HEADER");
+ newTroparion.setAttribute("Value",tropToneUKvalue.getText());
+ saintUKUKdoc.getDocumentElement().appendChild(newTroparion);
+ }
+ listT=saintUKUKdoc.getElementsByTagName("TEXT");
+ listT.item(0).getAttributes().getNamedItem("Value").setTextContent(correctText(tropTextUKvalue.getText()));
+
+ }
+
+ try (FileOutputStream output= new FileOutputStream(path)){
+ HandlerXML.writeXml(saintUKUKdoc,output);
+ } catch (IOException | TransformerException e3){
+ e3.printStackTrace();
+ }
+ //And now for Church Slavonic
+ if (!tropTextUKvalue.getText().isEmpty()){
+ //Update Prayer for Church Slavonic
+ NodeList listT=saintCUdoc.getElementsByTagName("HEADER");
+ if (listT.getLength()>0)
+ {
+ listT.item(0).getAttributes().getNamedItem("Value").setTextContent(tropToneCUvalue.getText());
+ }else
+ {
+ Element newTroparion = saintCUdoc.createElement("HEADER");
+ newTroparion.setAttribute("Value",tropToneCUvalue.getText());
+ saintCUdoc.getDocumentElement().appendChild(newTroparion);
+ }
+ listT=saintCUdoc.getElementsByTagName("TEXT");
+ listT.item(0).getAttributes().getNamedItem("Value").setTextContent(correctText(tropTextCUvalue.getText()));
+
+ }
+
+ try (FileOutputStream output= new FileOutputStream(pathCU)){
+ HandlerXML.writeXml(saintCUdoc,output);
+ } catch (IOException | TransformerException e3){
+ e3.printStackTrace();
+ }
+ System.out.println("Finished saving files associated with name of "+fileName.get(CId).toString());
+ }
+
+
+
+
+
+ }
+ private void readCorrections(InputStream inputStream)
+ throws IOException {
+ corrections=new OrderedHashtable();
+ countCorr=0;
+ try (BufferedReader br
+ = new BufferedReader(new InputStreamReader(inputStream,StandardCharsets.UTF_8))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ //String[] parts=line.split(";");
+ corrections.put(countCorr,line);
+ countCorr=countCorr+1;
+ //resultStringBuilder.append(line).append("\n");
+ }
+ }
+ countCorr=countCorr-1;
+}
+ private String correctText(String text){
+ String correctedText=text;
+ for(int i=0;i<=countCorr;i++){
+ String texts=(String)corrections.get(i);
+ String[] replacement=texts.split(";");
+ correctedText=correctedText.replaceAll(replacement[0], replacement[1]);
+ //System.out.println(replacement[0]+" "+replacement[1]);
+ }
+
+ return correctedText;
+ }
+
+ public static void main(String[] argz)
+ {
+ OrderedHashtable dayinfo=new OrderedHashtable();
+ dayinfo.put("LS","fr/");
+ Search testing = new Search(dayinfo);
+
+
+ }
+}
+
diff --git a/Ponomar/FindReadingList.java b/Ponomar/FindReadingList.java
new file mode 100644
index 000000000..937b01f65
--- /dev/null
+++ b/Ponomar/FindReadingList.java
@@ -0,0 +1,413 @@
+package Ponomar;
+
+import javax.swing.*;
+import javax.swing.event.*;
+import java.beans.*;
+import java.awt.*;
+import java.awt.event.*;
+import java.util.*;
+import java.io.*;
+import java.lang.Math;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.StyledDocument;
+import javax.swing.text.MutableAttributeSet;
+
+/***********************************************************************
+Main.java :: MAIN MODULE FOR THE PONOMAR PROGRAM.
+THIS MODULE CONSTITUTES THE PRIMARY PONOMAR GUI AND CENTRE OF THE PROGRAM.
+TO START THE PROGRAM, INVOKE main(String[]) OF THIS CLASS.
+OUTPUTS RELEVANT INFORMATION FOR EACH DAY, WITH LINKS TO DETAILED INFO.
+
+Main.java is part of the Ponomar program.
+Copyright 2006, 2007, 2008, 2009, 2010, 2012 Aleksandr Andreev and Yuri Shardt.
+Corresponding e-mail aleksandr.andreev@gmail.com
+
+Ponomar is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 3
+of the License, or (at your option) any later version.
+
+While Ponomar is distributed in the hope that it will be useful,
+it comes with ABSOLUTELY NO WARRANTY, without even the implied warranties of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for details.
+ ***********************************************************************/
+public class FindReadingList {
+ // First, some relevant constants
+
+ private final static String configFileName = "ponomar.config"; // CONFIGURATIONS FILE
+ //private final static String generalFileName="Ponomar/xml/";
+ private final static String triodionFileName = "xml/triodion/"; // TRIODION FILE
+ private final static String pentecostarionFileName = "xml/pentecostarion/"; // PENTECOSTARION FILE
+ private static String newline = "\n";
+ // Elements of the interface
+ JDate2 today; // "TODAY" (I.E. THE DATE WE'RE WORKING WITH
+ private JDate2 pascha; // THIS YEAR'S PASCHA
+ private JDate2 pentecost; // THIS YEAR'S PENTECOST
+ private Stack fastInfo; // CONTAINS A VECTOR OF THE FASTING INFORMATION FOR TODAY, WHICH IS LATER PASSED TO CONVOLVE()
+ private OrderedHashtable readings; // CONTAINS TODAY'S SCRIPTURE READING
+ private String output; // TODAY'S CALENDAR OUTPUT
+ private Boolean inited = false; // PREVENTS MULTIPLE READING OF XML FILES ON LAUNCH
+ private GospelSelector GospelLocation; //THE GOSPEL SELECTOR OBJECT
+ private String GLocation; //STORES THE PATH (FOLDER) TO THE APPROPRIATE GOSPEL READING LOCATION FILES
+ private LanguageSelector LanguageLocation;
+ //private String LLocation;
+ //MY ATTEMPT AT SORTING THE READINGS FOR THE LITURGY 2008/05/19 n.s. YURI SHARDT
+ private OrderedHashtable PentecostarionS; //CONTAINS THE PENTECOSTARION READINGS (SEQUENTIAL (rjadovoje) READINGS!)
+ private OrderedHashtable MenalogionS; //CONTAINS THE MENALOGION READINGS, EXCLUDING ANY FLOATERS
+ private OrderedHashtable FloaterS; //CONTAINS THE FLOATER READINGS.
+ private OrderedHashtable[] ReadScriptures;
+ private LanguagePack Phrases;
+ private static boolean read = false; //DETERMINES WHICH LANGUAGE WILL BE READ
+ private String RSep = new String();
+ private String CSep = new String();
+ private String Colon = new String();
+ private String Ideographic = new String();
+ private StringOp Analyse = new StringOp();
+ private int ReligiousCal=0;
+ //private GospelSelector Selector;
+ Helpers findLanguage;
+
+ // CONSTRUCTOR
+ public FindReadingList(int year, int GS) {
+ //super("Ponomar");
+
+ ConfigurationFiles.Defaults = new OrderedHashtable();
+ ConfigurationFiles.ReadFile();
+ //DisplayCal=Integer.parseInt(ConfigurationFiles.Defaults.get("DisplayCalendar").toString());
+ ReligiousCal=GS;//Integer.parseInt(ConfigurationFiles.Defaults.get("ReligiousCalendar").toString());
+ LanguageLocation = new LanguageSelector(Analyse.dayInfo);
+
+ Analyse.dayInfo.put("LS", LanguageLocation.getLValue());
+ Phrases = new LanguagePack(Analyse.dayInfo);
+ //Changing language storage format
+ findLanguage = new Helpers(Analyse.dayInfo);
+
+
+ RSep = " ";
+ CSep = (String) Phrases.Phrases.get("CommSep");
+ Colon = (String) Phrases.Phrases.get("Colon");
+ Analyse.dayInfo.put("ReadSep", RSep);
+ Analyse.dayInfo.put("Colon", Colon);
+ Ideographic = (String) Phrases.Phrases.get("Ideographic");
+ Analyse.dayInfo.put("Ideographic", Ideographic);
+ //GospelLocation = new GospelSelector(Analyse.dayInfo);
+
+ pascha = Paschalion.getPascha(year,ReligiousCal);
+ pascha.addDays(134);
+ JDate2 start=pascha;
+
+ today = new JDate2(start.getMonth(), start.getDay(), start.getYear(),ReligiousCal);
+ int nday = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear(),ReligiousCal));
+ int ndayP = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear() - 1,ReligiousCal));
+ String outputE="Year: "+today.getYear();
+ outputE+="\n";
+ String outputG=outputE;
+
+ while (nday >= 134 || nday < -70)
+ {
+ outputE+=nday+" M"+today.getMonth()+"."+today.getDay()+" ";
+ outputG+=nday+" M"+today.getMonth()+"."+today.getDay()+" ";
+ int dow = today.getDayOfWeek();
+ int doy = today.getDoy();
+ nday = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear(),ReligiousCal));
+ ndayP = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear() - 1,ReligiousCal));
+ //REQUIRED FOR LUCAN JUMP CALCULATIONS! ADDED 2008/05/17 n.s.
+ int ndayF = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear() + 1,ReligiousCal));
+
+ Analyse.dayInfo.put("dow", dow); // THE DAY'S DAY OF WEEK
+ Analyse.dayInfo.put("doy", doy); // THE DAY'S DOY (see JDate.java for specification)
+ Analyse.dayInfo.put("nday", nday); // THE NUMBER OF DAYS BEFORE (-) OR AFTER (+) THIS YEAR'S PASCHA
+ Analyse.dayInfo.put("ndayP", ndayP); // THE NUMBER OF DAYS AFTER LAST YEAR'S PASCHA
+ Analyse.dayInfo.put("ndayF", ndayF); // THE NUMBER OF DAYS TO NEXT YEAR'S PASCHA (CAN BE +ve or -ve).
+ Analyse.dayInfo.put("GS", 1);
+
+ //INTERFACE LANGUAGE
+ Analyse.dayInfo.put("LS", LanguageLocation.getLValue());
+ Analyse.dayInfo.put("Year", today.getYear());
+ Analyse.dayInfo.put("dRank", 0); //The default rank for a day is 0. Y.S. 2010/02/01 n.s.
+ Analyse.dayInfo.put("Ideographic", Ideographic);
+ Analyse.dayInfo.put("isLeapYear",today.isLeapYear(today.getYear()) ? 1 : 0);
+
+ readings = new OrderedHashtable();
+ //MY ATTEMPT AT SORTING THE READINGS FOR THE LITURGY 2008/05/24 n.s. YURI SHARDT
+ /*ReadScriptures = new OrderedHashtable[3]; //CONTAINS A SORTED ARRAY OF ALL THE READINGS
+ ReadScriptures[0] = new OrderedHashtable(); //STORES THE PENTECOSTARION READINGS (SEQUENTIAL (rjadovoje) READINGS!)
+ ReadScriptures[1] = new OrderedHashtable(); //CONTAINS THE MENALOGION READINGS, EXCLUDING ANY FLOATERS
+ ReadScriptures[2] = new OrderedHashtable(); //CONTAINS THE FLOATER READINGS.
+ */
+ //TESTING THE LANGUAGE PACKS
+ String rough = (String) Phrases.Phrases.get("1");
+ String[] final1 = rough.split(",");
+ //System.out.println(output);
+ String filename = "";
+ int lineNumber = 0;
+
+
+
+ if (nday >= -70 && nday < 0) {
+ filename = triodionFileName;
+ lineNumber = Math.abs(nday);
+ } else if (nday < -70) {
+ // WE HAVE NOT YET REACHED THE LENTEN TRIODION
+ filename = pentecostarionFileName;
+ JDate2 lastPascha = Paschalion.getPascha(today.getYear() - 1,ReligiousCal);
+ lineNumber = (int) JDate2.difference(today, lastPascha) + 1;
+ } else {
+ // WE ARE AFTER PASCHA AND BEFORE THE END OF THE YEAR
+ filename = pentecostarionFileName;
+ lineNumber = nday + 1;
+ }
+
+ filename += lineNumber >= 10 ? lineNumber : "0" + lineNumber; // CLEANED UP
+ //System.out.println("++++++++++++++++++++++\n"+filename+"\n+++++++++++++++++++\n");
+ //System.out.println("File name in Main: " + Analyse.dayInfo.get("LS").toString());
+ Day PaschalCycle = new Day(filename, Analyse.dayInfo);
+
+ // READ THE PENTECOSTARION / TRIODION INFORMATION
+
+ /*
+ for (Enumeration e = readings.enumerateKeys(); e.hasMoreElements(); )
+ {
+ String type = (String)e.nextElement();
+ Vector vect = (Vector)readings.get(type);
+
+ ReadScriptures[0].put(type, vect);
+ }
+
+
+ readings.clear();*/
+
+ // GET THE MENAION DATA, THESE MAY BE INDEPENDENT OF THE GOSPEL READING IMPLEMENTATION, BUT WILL NOT BE SO IMPLEMENTED
+ int m = today.getMonth();
+ int d = today.getDay();
+
+ filename = "xml/";
+ filename += m < 10 ? "0" + m : "" + m; // CLEANED UP
+ filename += d < 10 ? "/0" + d : "/" + d; // CLEANED UP
+ //filename += ".xml";
+ Day SolarCycle = new Day(filename, Analyse.dayInfo);
+ Analyse.dayInfo.put("dRank", Math.max(SolarCycle.getDayRank(), PaschalCycle.getDayRank()));
+ output="";
+
+
+
+ OrderedHashtable[] PaschalReadings = PaschalCycle.getReadings();
+ //System.out.println("Length of Ordinary Readings="+PaschalReadings.length);
+
+ OrderedHashtable[] MenaionReadings = SolarCycle.getReadings();
+ Bible ShortForm = new Bible(Analyse.dayInfo);
+ //System.out.println("First Paschal Reading is :"+PaschalReadings[0].get("Readings"));
+ //System.out.println("First Menologion Reading is :"+MenaionReadings[0].get("Readings"));
+ OrderedHashtable CombinedReadings = new OrderedHashtable();
+ //for(int j=0;j<7;j++){
+ for (int k = 0; k < MenaionReadings.length; k++) {
+ OrderedHashtable Reading = (OrderedHashtable) MenaionReadings[k].get("Readings");
+ OrderedHashtable Readings = (OrderedHashtable) Reading.get("Readings");
+ for (Enumeration e = Readings.enumerateKeys(); e.hasMoreElements();) {
+ String element1 = e.nextElement().toString();
+ if (CombinedReadings.get(element1) != null) {
+ //Type of Reading already exists combine them
+ OrderedHashtable temp = (OrderedHashtable) CombinedReadings.get(element1);
+ Vector Readings2 = (Vector) temp.get("Readings");
+ Vector Rank = (Vector) temp.get("Rank");
+ Vector Tag = (Vector) temp.get("Tag");
+ Readings2.add(Readings.get(element1));
+ Rank.add(Reading.get("Rank"));
+ Tag.add(Reading.get("Name"));
+ temp.put("Readings", Readings2);
+ temp.put("Rank", Rank);
+ temp.put("Tag", Tag);
+ CombinedReadings.put(element1, temp);
+ } else {
+ //Reading does not exist
+ Vector Readings2 = new Vector();
+ Vector Rank = new Vector();
+ Vector Tag = new Vector();
+ Readings2.add(Readings.get(element1));
+ Rank.add(Reading.get("Rank"));
+ Tag.add(Reading.get("Name"));
+ OrderedHashtable temp = new OrderedHashtable();
+ temp.put("Readings", Readings2);
+ temp.put("Rank", Rank);
+ temp.put("Tag", Tag);
+ CombinedReadings.put(element1, temp);
+ }
+ }
+ }
+ for (int k = 0; k < PaschalReadings.length; k++) {
+ OrderedHashtable Reading = (OrderedHashtable) PaschalReadings[k].get("Readings");
+ OrderedHashtable Readings = (OrderedHashtable) Reading.get("Readings");
+ for (Enumeration e = Readings.enumerateKeys(); e.hasMoreElements();) {
+ String element1 = e.nextElement().toString();
+ if (CombinedReadings.get(element1) != null) {
+ //Type of Reading already exists combine them
+ OrderedHashtable temp = (OrderedHashtable) CombinedReadings.get(element1);
+ Vector Readings2 = (Vector) temp.get("Readings");
+ Vector Rank = (Vector) temp.get("Rank");
+ Vector Tag = (Vector) temp.get("Tag");
+ Readings2.add(Readings.get(element1));
+ Rank.add(Reading.get("Rank"));
+ Tag.add(Reading.get("Name"));
+ temp.put("Readings", Readings2);
+ temp.put("Rank", Rank);
+ temp.put("Tag", Tag);
+ CombinedReadings.put(element1, temp);
+ } else {
+ //Reading does not exist
+ Vector Readings2 = new Vector();
+ Vector Rank = new Vector();
+ Vector Tag = new Vector();
+ Readings2.add(Readings.get(element1));
+ Rank.add(Reading.get("Rank"));
+
+ Tag.add(Reading.get("Name"));
+ OrderedHashtable temp = new OrderedHashtable();
+ temp.put("Readings", Readings2);
+ temp.put("Rank", Rank);
+ temp.put("Tag", Tag);
+ CombinedReadings.put(element1, temp);
+ }
+ }
+ }
+ //}
+ boolean firstTime = true;
+ for (Enumeration e = CombinedReadings.enumerateKeys(); e.hasMoreElements();) {
+ //Temperary solution
+ String element1 = e.nextElement().toString();
+ OrderedHashtable temp = (OrderedHashtable) CombinedReadings.get(element1);
+ Vector Readings = (Vector) temp.get("Readings");
+ Vector Rank = (Vector) temp.get("Rank");
+ Vector Tag = (Vector) temp.get("Tag");
+ if (element1.equals("LITURGY")) {
+ if (firstTime) {
+ firstTime = false;
+ } else {
+ output += RSep;
+ }
+ //Special case and consider it differently
+ Vector epistle = new Vector();
+
+ Vector gospel = new Vector();
+
+
+ for (int j = 0; j < Readings.size(); j++) {
+ OrderedHashtable liturgy = (OrderedHashtable) Readings.get(j);
+ OrderedHashtable stepE = (OrderedHashtable) liturgy.get("apostol");
+ OrderedHashtable stepG = (OrderedHashtable) liturgy.get("gospel");
+
+ if (stepE != null) {
+ epistle.add(stepE.get("Reading").toString());
+ } else {
+ epistle.add("");
+ }
+ if (stepG != null) {
+ gospel.add(stepG.get("Reading").toString());
+ } else {
+ gospel.add("");
+ }
+
+
+ }
+ OrderedHashtable readingsA = new OrderedHashtable();
+
+ if (!epistle.get(0).equals("")) {
+ readingsA.put("Readings", epistle);
+ readingsA.put("Rank", Rank);
+ readingsA.put("Tag", Tag);
+ //System.out.println(Tag);
+ //System.out.println("Hello World");
+ DivineLiturgy1 trial1 = new DivineLiturgy1(Analyse.dayInfo);
+ String type1 = (String) Phrases.Phrases.get("apostol");
+ outputE += trial1.Readings(readingsA, "apostol", today);
+ outputE += " \n";
+ }
+ if (!gospel.get(0).equals("")) {
+ readingsA.put("Readings", gospel);
+ readingsA.put("Rank", Rank);
+ readingsA.put("Tag", Tag);
+ String type1 = (String) Phrases.Phrases.get("gospel");
+ DivineLiturgy1 trial1 = new DivineLiturgy1(Analyse.dayInfo);
+ outputG += trial1.Readings(readingsA, "gospel", today)+" \n";
+ }
+
+
+ /*for (int j=0; j1){
+ output+= Tag.get(j).toString();
+ }
+ }*/
+
+
+ /*for (int j=0; j1){
+ output+= Tag.get(j).toString();
+ }
+ }*/
+ continue;
+
+ }
+
+
+ }//output += RSep;
+ today.addDays(1);
+ }
+
+
+//Closed the while loop above
+ String epistle="Epistle."+year+"."+ReligiousCal+".csv";
+ String gospel="Gospel."+year+"."+ReligiousCal+".csv";
+
+ try
+ {
+ BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/Regression/"+epistle),"UTF8"));
+ out.write(outputE);
+ out.close();
+ out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/Regression/"+gospel),"UTF8"));
+ out.write(outputG);
+ out.close();
+ }
+ catch(IOException e)
+ {
+ //CANNOT BE MULTILINGUAL
+ System.out.println("There was a problem:" + e);
+ }
+
+
+
+ }
+
+
+ public static void main(String[] argz) {
+ int yearsJulian[]=new int[]{2487, 2288, 2209,2053,2211,2128,2056,2214,2131,2132,2486,2134,2135,2136,2149,2139,2152,2153,2507,2157,2063,2150,2151,2154,2155,2509,2253,2159,2160,2077,2078,2527,2176,
+ 2177, 2083, 2254, 2087, 2525, 2100, 2174, 2175, 2004, 2179, 2001, 2192, 2193, 2099, 2196, 2197, 2103, 2094, 2117, 2023, 2205, 2279, 2282, 2021, 2202, 2203, 2025, 2122, 2123, 2118, 2383,
+ 2222, 2060, 2084, 2535, 2091, 2456, 2095, 2457, 2024, 2027, 2028, 2031, 2035, 2064, 2085, 2104, 2105, 2351, 2142, 2143, 2230, 2407, 2162, 2250, 2294, 2223, 2242, 2243, 2247, 2347, 2021,
+ 2453, 2199, 2302, 2303, 2322, 2271, 2283, 2287, 2291, 2488, 2267, 2275, 2307, 2338, 2295, 2315, 2331, 2335, 2439, 2423, 2443, 2467, 2427, 2447, 2491, 2511, 2515, 2163, 2089, 2065, 2119, 2095};
+ int yearsGregorian[] = new int[]{1999, 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2014,2015,2017,2018,2019,2021,2022,2023,2026,2027,2030,2031,2032,2034,2035,2036,2037,2038,2039,2041,2042,2043,2046,2047,2048,2049,2050,2051,2054,2055,2056,2057,2058,2059,2061,2062,2063,2065,2066,2067,2070,2071,2074,2075,2076,2078,2079,2080,2082,2083,2089,2091,2092,2095,2098,2099,2112,2115,2119,2120,2123,2132,2136,2139,2140,2143,2147,2244,2265,2284,2285,2319,2390,2391,2478,2487,2494,2498,2599,2691,2699,2863,2867,2883,2887,2890,2894,2971,2982,2990,2991,2999,3134,3263,3275,3279,3283,3290,3783,3791,3891,4074,4183,4271,4287,4291,4463,4819,4839,4863,5279,5671,5783,6395,6483,7504,7599,8587,8739,16567,22267,23255,30095,31083,35795,35947};
+
+ // for (int j=0;j1){
+ HTML+="Times=\""+Times+"\" ";
+ }
+ HTML+="NewLine=\""+NewLine+"\" Header=\""+Header+"\" ToneA=\"" +ToneA+"\"/>";
+ return HTML;
+ }
+ public String GetFullID()
+ {
+ //Id=CId;
+ //What=path;
+ String[] splitPath=What.split("/");
+
+ //System.out.println("The ID is "+Id+" and the desired item is "+What);
+ //System.out.println("Testing: "+Id+"_"+splitPath[splitPath.length-1]);
+ return Id+"_"+splitPath[splitPath.length-1];
+ }
+
+
+ public static void main(String[] args) {
+ GetID GetIDx=new GetID("9863","soemthing/somewhere/test");
+ GetIDx.NewLine="1";
+ GetIDx.Who="C";
+ GetIDx.RedFirst="0";
+ GetIDx.Times="1";
+ GetIDx.NewLine="0";
+ GetIDx.Header="Nothing to Show";
+ System.out.println(GetIDx.getHTML());
+ //output.append(s + newline);
+ //output.setCaretPosition(output.getDocument().getLength());
+ }
+
+
+
+
+}
+
diff --git a/Ponomar/HandlerXML.java b/Ponomar/HandlerXML.java
new file mode 100644
index 000000000..be2863891
--- /dev/null
+++ b/Ponomar/HandlerXML.java
@@ -0,0 +1,217 @@
+package Ponomar;
+
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.swing.*;
+import java.beans.*;
+import java.awt.*;
+import java.util.*;
+import java.io.*;
+import javax.swing.event.*;
+import java.awt.event.*;
+import java.beans.*;
+import javax.xml.XMLConstants;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+
+/***********************************************************************
+THIS MODULE CREATES THE TEXT FOR THE SEARCHING FOR COMMEMORATIONS ACCROSS LANGUAGES/JURISDICTIONS
+
+(C) 2022 YURI SHARDT. ALL RIGHTS RESERVED.
+
+
+ PERMISSION IS HEREBY GRANTED TO USE, MODIFY, AND/OR REDISTRIBUTE THIS SOURCE CODE
+ PROVIDED THAT THIS NOTICE REMAINS IN ALL VERSION AND / OR DERIVATIVES THEREOF.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
+ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ *
+ * Based on https://mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/
+***********************************************************************/
+public class HandlerXML
+{
+ //SOME QUICK NOTES FOR FURTHER IMPLEMENTATION:
+ private String filelocation;
+ private Document readfile;
+
+
+
+ public HandlerXML(String filepath)
+ {
+ //This simply creates the handler
+ filelocation=filepath;
+ }
+
+ public Document readXML()
+ {
+ //Reads the file and returns the processed file model
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ try {
+
+ // optional, but recommended
+ // process XML securely, avoid attacks like XML External Entities (XXE)
+ dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
+
+ // parse XML file
+ DocumentBuilder db = dbf.newDocumentBuilder();
+
+ Document doc = db.parse(new File(filelocation));
+
+ // optional, but recommended
+ // http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
+ doc.getDocumentElement().normalize();
+ return doc;
+ } catch (ParserConfigurationException | SAXException | IOException e)
+ {
+ e.printStackTrace();
+ return null;
+ }
+ }
+ public void writeXML(Document doc, OutputStream output)
+ {
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ try{
+ Transformer transformer = transformerFactory.newTransformer();
+
+ // pretty print
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+
+ DOMSource source = new DOMSource(doc);
+ StreamResult result = new StreamResult(output);
+
+ transformer.transform(source, result);
+ } catch(TransformerException e){
+ e.printStackTrace();
+ }
+
+ }
+ public static void writeXml(Document doc, OutputStream output) throws TransformerException {
+
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ DOMSource source = new DOMSource(doc);
+ StreamResult result = new StreamResult(output);
+
+ transformer.transform(source, result);
+
+ }
+
+
+//Create the Interface:
+
+
+
+ public String getUsualBeginning()
+ {
+ return "";
+ }
+
+
+ public static void main(String[] argz)
+ {
+
+ String filepath="C:\\Users\\yuris\\Documents\\Ponomar\\ponomar-combo\\Ponomar\\languages\\cu\\uk\\xml\\lives\\09497.xml";
+ OutputStream out;
+ HandlerXML saintUK=new HandlerXML(filepath);
+ Document saintUKdoc=saintUK.readXML();
+ System.out.println("Root Element :" + saintUKdoc.getDocumentElement().getNodeName());
+ System.out.println("------");
+ /* if (saintUKdoc.hasChildNodes()) {
+ printNote(saintUKdoc.getChildNodes());
+ }*/
+ NodeList list=saintUKdoc.getElementsByTagName("NAME");
+ System.out.println(list.item(0).getAttributes().getNamedItem("Short").getTextContent());
+ System.out.println(list.item(1).getAttributes().getNamedItem("Nominative").getTextContent());
+ System.out.println(list.item(0).getAttributes().getNamedItem("Genitive").getTextContent());
+
+ NodeList listL=saintUKdoc.getElementsByTagName("LIFE");
+ System.out.println(listL.item(0).getAttributes().getNamedItem("Id").getTextContent());
+ System.out.println(listL.item(0).getAttributes().getNamedItem("Copyright").getTextContent());
+ System.out.println(listL.item(0).getTextContent());
+
+ NodeList listS=saintUKdoc.getElementsByTagName("SERVICE");
+ NodeList listT=saintUKdoc.getElementsByTagName("TROPARION");
+ System.out.println(listT.item(0).getAttributes().getNamedItem("Tone").getTextContent());
+ //System.out.println(listT.item(0).getAttributes().getNamedItem("Podoben").getTextContent());
+ System.out.println(listT.item(0).getTextContent());
+
+
+ NodeList listK=saintUKdoc.getElementsByTagName("KONTAKION");
+ System.out.println(listK.item(0).getAttributes().getNamedItem("Tone").getTextContent());
+ System.out.println(listK.item(0).getAttributes().getNamedItem("Podoben").getTextContent());
+ System.out.println(listK.item(0).getTextContent());
+
+ //Read of the desired elements works as well as can be desired.
+ //Now see if we can write the file correctly.
+ listK.item(0).setTextContent("Hippocampus testing the files and trying to see what is going on and making sure that I can in fact write everything as desired!!!");
+ try {
+ out =new FileOutputStream("C:\\Users\\yuris\\Documents\\Ponomar\\ponomar-combo\\Ponomar\\languages\\cu\\uk\\xml\\lives\\testing.xml");
+ saintUK.writeXML(saintUKdoc, out);
+ } catch (FileNotFoundException e){
+ System.out.println(e);
+ }
+
+
+ }
+
+ private static void printNote(NodeList nodeList) {
+
+ for (int count = 0; count < nodeList.getLength(); count++) {
+
+ Node tempNode = nodeList.item(count);
+
+ // make sure it's element node.
+ if (tempNode.getNodeType() == Node.ELEMENT_NODE) {
+
+ // get node name and value
+ System.out.println("\nNode Name =" + tempNode.getNodeName() + " [OPEN]");
+ System.out.println("Node Value =" + tempNode.getTextContent());
+
+ if (tempNode.hasAttributes()) {
+
+ // get attributes names and values
+ NamedNodeMap nodeMap = tempNode.getAttributes();
+ for (int i = 0; i < nodeMap.getLength(); i++) {
+ Node node = nodeMap.item(i);
+ System.out.println("attr name : " + node.getNodeName());
+ System.out.println("attr value : " + node.getNodeValue());
+ }
+
+ }
+
+ if (tempNode.hasChildNodes()) {
+ // loop again if has child nodes
+ printNote(tempNode.getChildNodes());
+ }
+
+ System.out.println("Node Name =" + tempNode.getNodeName() + " [CLOSE]");
+
+ }
+
+ }
+
+ }
+}
+
diff --git a/Ponomar/Helpers.java b/Ponomar/Helpers.java
index 179fb7033..21e90f9e3 100755
--- a/Ponomar/Helpers.java
+++ b/Ponomar/Helpers.java
@@ -178,6 +178,7 @@ public String langFileFind(String LanguagePath, String BasePath)
/*if(LanguagePath==null){
return "ERROR";
}*/
+ //System.out.println("Current Path (initial): "+currentPath);
File testFile=new File(addon+LanguagePath+BasePath);
//System.out.println(currentPath);
@@ -197,6 +198,7 @@ public String langFileFind(String LanguagePath, String BasePath)
break;
}
currentPath=currentPath.substring(0,location)+"/";
+ //System.out.println("Current Path (shortened): "+currentPath);
testFile=new File(addon+currentPath+BasePath);
//System.out.println(currentPath);
}
diff --git a/Ponomar/IconDisplay.java b/Ponomar/IconDisplay.java
index 6fa829721..112ff034b 100644
--- a/Ponomar/IconDisplay.java
+++ b/Ponomar/IconDisplay.java
@@ -283,7 +283,9 @@ private void updateImages() {
label.setIcon(new ImageIcon(scaledImage));
label.setHorizontalAlignment(JLabel.CENTER);
iconImage.add(label);
- text.setText(""+ Names[Number]+"");
+ String Name=Names[Number];
+ Name=Name.substring(0,1).toUpperCase()+Name.substring(1);
+ text.setText(""+ Name+"");
//frame.pack();
//System.out.Println(getAncestorOfClass(new JFrame(),iconImage));
//repaint();
diff --git a/Ponomar/JDate2.java b/Ponomar/JDate2.java
new file mode 100644
index 000000000..7f284eaae
--- /dev/null
+++ b/Ponomar/JDate2.java
@@ -0,0 +1,775 @@
+package Ponomar;
+
+import java.util.*;
+
+/***********************************************************
+ JDate : a class for performing operations with dates on the Julian calendar
+
+ PURPOSE: the purpose of this class is to provide an easy interface to manipulate Julian dates
+ METHODOLOGY: A JDate object is created by specifying the month, day, year.
+ Internally, the mm/dd/yyyy is converted to a Julian date (a long).
+ Operations can be performed easily with this Julian date.
+ In the end, an mm/dd/yyyy can be obtained back from the JDate object
+
+ JDate.java is part of the Ponomar program.
+ Copyright 2006, 2007 Aleksandr Andreev.
+ aleksandr.andreev@gmail.com
+
+ Ponomar is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 3
+ of the License, or (at your option) any later version.
+
+ While Ponomar is distributed in the hope that it will be useful,
+ it comes with ABSOLUTELY NO WARRANTY, without even the implied warranties of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for details.
+************************************************************/
+
+class JDate2 implements Comparable, Cloneable
+{
+ private long mn_jday;
+
+ private final static int daysInMonth[] = new int[]
+ {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+
+ private final static int daysInMonthLeap[] = new int[]
+ {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+
+ private static LanguagePack Phrases;//=new LanguagePack();
+ private static String[] monthNames;//=Phrases.obtainValues((String)Phrases.Phrases.get("3"));
+
+ //private final static String monthNames[] = new String[]
+ //{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
+
+ private static String[] dayNames;// = Phrases.obtainValues((String)Phrases.Phrases.get("2"));
+ private static String[] civilMonthNames;//=Phrases.obtainValues((String)Phrases.Phrases.get("4"));
+
+
+ //private final static String monthNames[] = new String[]
+ //{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
+
+ private static String[] civilDayNames;// = Phrases.obtainValues((String)Phrases.Phrases.get("5"));
+ //new String[]
+ //{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
+ private static String[] Errors;//=Phrases.obtainValues((String)Phrases.Phrases.get("Errors"));
+ private static String Format;
+ private static StringOp Analyse=new StringOp();
+ private static final int GREGORIAN=1;
+ private static final int JULIAN=0;
+ private static int calendar; //TO CHANGE ONCE HARMONISED.
+
+
+ // Two "overloaded" modulo methods to replace the existing % operator
+ // Because Java doesn't handle direct operator overloading
+ private int mod(int divisor, int modulo)
+ {
+ int temp = divisor % modulo;
+
+ if (temp == 0)
+ {
+ temp = modulo;
+ }
+
+ return temp;
+ }
+
+ private int mod(long divisor, int modulo)
+ {
+ int temp = (int)(divisor % modulo);
+
+ if (temp == 0)
+ {
+ temp = modulo;
+ }
+
+ return temp;
+ }
+
+ // CONSTRUCTOR: creates a JDate2 object
+ // PARAMETERS: month - the month (Jan = 1 - Dec = 12) !
+ // day - the day (from 1 to daysInMonth[month - 1]
+ // year - the year (AD)
+ // RETURNS: none
+ // THROWS: IllegalArgumentException if argument is invalid
+ // FOR MORE INFORMATION READ:
+ // http://en.wikipedia.org/wiki/Julian_date
+ protected JDate2(int month, int day, int year, int calendar2) throws IllegalArgumentException
+ {
+ if (month < 1 || month > 12)
+ {
+ throw (new IllegalArgumentException(Errors[7]) );
+ }
+
+ if (day < 0)
+ {
+ throw (new IllegalArgumentException(Errors[8]+" " + day) );
+ }
+
+ if (year % 4 == 0)
+ {
+ // leap year
+ if (day > daysInMonthLeap[month - 1])
+ {
+ throw (new IllegalArgumentException(Errors[8]+" " + day + " "+Errors[9]+" " + month));
+ }
+ }
+ else
+ {
+ if (day > daysInMonth[month - 1])
+ {
+ throw (new IllegalArgumentException(Errors[8]+" " + day + " "+Errors[9]+" " + month));
+ }
+ }
+ if (calendar2 < 0 || calendar2 > 1)
+ {
+ throw (new IllegalArgumentException("Nonexistent calendar specified: please use either 0 for Julian or 1 for Gregorian."));
+ }
+
+ // construct instruments
+ /*int a = (int)Math.floor((14 - month) / 12);
+ int y = year + 4800 - a;
+ int m = month + 12 * a - 3;
+
+ // construct a julian day
+ mn_jday = (long)(day + Math.floor((153 * m + 2) / 5) + 365 * y + Math.floor(y / 4)) - 32083;
+ */
+ if (month < 3)
+ {
+ month=month+12;
+ year=year-1;
+ }
+ int A = (int)Math.floor(year/100);
+ int B = 0;
+ if (((year > 1582 || (year == 1582 && month>10) || (year == 1582 && month == 10 && day>=15))) && calendar2==GREGORIAN)
+ {
+ B = 2-A+(int)Math.floor(A/4);
+ }
+ calendar=calendar2;
+ mn_jday = (long)(Math.floor(365.25*(year+4716))+Math.floor(30.6001*(month+1))+day+B-1524);//-1524.5
+ }
+
+ // CONSTRUCTOR: CREATES A JDATE OBJECT
+ // PARAMETERS: A long WITH A JULIAN DATE
+ // RETURNS: NONE
+ // THROWS: IllegalArgumentException if the JULIAN DATE < 0
+ protected JDate2(long jday, int calendar2) throws IllegalArgumentException
+ {
+ if (jday < 0)
+ {
+ throw (new IllegalArgumentException(Errors[9]) );
+ }
+ if (calendar2 < 0 || calendar2 > 1)
+ {
+ throw (new IllegalArgumentException("Nonexistent calendar specified: please use either 0 for Julian or 1 for Gregorian."));
+ }
+ calendar=calendar2;
+ mn_jday = jday;
+ }
+
+ // CONSTRUCTOR: CREATES A JDATE OBJECT INTIALIZED TO THE DAY WHEN THE CONSTRUCTOR WAS CALLED
+ // PARAMETERS: NONE
+ // RETURNS: NONE
+ protected JDate2()
+ {
+ Date now = new Date();
+ long mils = now.getTime(); // number of miliseconds since Greg. Jan 1 1970, 00:00:00 GMT
+
+ // convert the number of miliseconds to the number of days since Jan 1 1970 Greg
+ long days = (long)Math.floor(mils / 86400000);
+ // the Julian Day for Jan 1 1970 Gregorian is 2 440 588
+ mn_jday = (long)(days + 2440588);//2440588; or 2440587.5
+ calendar=GREGORIAN;
+ }
+
+ // A METHOD FOR OBTAINING THE YEAR BACK FROM A JDATE OBJECT
+ // PARAMETERS: none
+ // RETURNS: an integer with the year of the JDate object
+ protected int getYear()
+ {
+ /* long jbar = mn_jday + 32083;
+ // Compute the number of four-year Julian cycles that have elapsed since mn_jday
+ // There are 1461 days in each cycle
+ // Multiply this number by four (years/cycle)
+ int n1 = (int)(jbar / 1461) * 4;
+ // Compute the number of days since the last four-year cycle
+ // Divide by 365 days in a year
+ int n2 = (int)(jbar % 1461) / 365;
+ int da = (int)(jbar % 1461);
+ // Add one if we are after December 31, since JDate starts March 1
+ int adj = (da % 365) > 306 ? 1 : 0;
+ */
+ long A = mn_jday;
+
+ if (mn_jday >= 2299160 && calendar==GREGORIAN)
+ {
+ int alpha = (int)(Math.floor((A-1867216.25)/36524.25));
+ A = A + 1+alpha-(int)(Math.floor(alpha/4));
+ }
+ long B = A +1524;
+ int C = (int)(Math.floor((B-122.1)/365.25));
+ int D = (int)(Math.floor(365.25*C));
+ int E = (int)(Math.floor((B-D)/30.6001));
+ int m = E-1;
+ if (m > 12)
+ {
+ m=m-12;
+ }
+ int y = C -4715;
+ if (m > 2)
+ {
+ y=y-1;
+ }
+ //System.out.println("Year: " + y);
+ return y;
+ }
+
+ // A METHOD TO OBTAIN THE MONTH FROM A JDATE OBJECT
+ // PARAMETERS: NONE
+ // RETURNS: an integer with the month of the JDate object
+ protected int getMonth()
+ {
+ /*
+ long jbar = mn_jday + 32083;
+ // Take jbar modulo 1461 to get the number of days since the last four-year cycle
+ int da = (int)(jbar % 1461);
+ // Take da modulo 365 to get the number of days since the last 1 March
+ int m = mod(da, 365);
+ // now, subtract off days for each of the months
+ int j = 2;
+ while (m > daysInMonthLeap[j])
+ {
+ m -= daysInMonthLeap[j];
+ j++;
+ if (j == 12)
+ {
+ j = 0;
+ }
+ }
+
+ return j + 1;
+ */
+ long A = mn_jday;
+ long Z = A;
+ if (mn_jday > 2299160 && calendar==GREGORIAN)
+ {
+ int alpha = (int)(Math.floor((Z-1867216.25)/36524.25));
+ A = Z + 1+alpha-(int)(Math.floor(alpha/4));
+ }
+ long B = A +1524;
+ int C = (int)(Math.floor((B-122.1)/365.25));
+ int D = (int)(Math.floor(365.25*C));
+ int E = (int)(Math.floor((B-D)/30.6001));
+ int m = E-1;
+ if (m > 12)
+ {
+ m=E-13;
+ }
+ //System.out.println("Month: " + m);
+ return m;
+ }
+
+ // A METHOD FOR OBTAINING THE DAY FROM A JDATE OBJECT
+ // PARAMETERS: NONE
+ // RETURNS: AN INTEGER WITH THE DAY OF THE JDATE OBJECT
+ protected int getDay()
+ {
+ /* long jbar = mn_jday + 32083;
+ // repeat above steps until m
+ int da = mod(jbar, 1461);
+ int m;
+ if (da == 1461)
+ {
+ m = 29; // FEBRUARY 29
+ }
+ else
+ {
+ m = mod(da, 365);
+ // this number is the number of days since the last March 1
+ // now, take off days for each month
+ int k = 2;
+ while (m > daysInMonth[k])
+ {
+ m -= daysInMonth[k];
+ k++;
+ if (k == 12)
+ {
+ k = 0;
+ }
+ }
+ }
+ return m; // the number of days that will remain at the end
+*/
+ long A = mn_jday;
+ long Z = A;
+
+ if (mn_jday > 2299160 && calendar==GREGORIAN)
+ {
+ int alpha = (int)(Math.floor((Z-1867216.25)/36524.25));
+ A = Z + 1+alpha-(int)(Math.floor(alpha/4));
+ }
+ long B = A +1524;
+ int C = (int)(Math.floor((B-122.1)/365.25));
+ int D = (int)(Math.floor(365.25*C));
+ int E = (int)(Math.floor((B-D)/30.6001));
+ double W = (int)B-(int)D-(int)(Math.floor(30.6001*E));
+ //System.out.println("Julian Day: " +mn_jday);
+ //System.out.println("Day: " + W);
+ return (int)W; //+F is we have a fraction
+ }
+
+ // A METHOD TO OBTAIN THE JULIAN DATE FROM A JDATE OBJECT
+ // PARAMETERS: NONE
+ // RETURNS: A long WITH THE JULIAN DATE
+ protected long getJulianDay()
+ {
+ return mn_jday;
+ }
+
+ // A METHOD TO OBTAIN THE GREGORIAN DATE FROM A JDATE OBJECT
+ // PARAMETERS: NONE
+ // RETURNS: A java.util.Date OBJECT WITH THE DATE ON THE GREGORIAN CALENDAR
+ // IF YEAR < 1583, RETURNS THE DATE ON THE PROLEPTIC GREGORIAN CALENDAR
+ protected Date getGregorianDate()
+ {
+ double j1;
+
+ if (mn_jday >= 2299160)
+ {
+ double tmp = Math.floor(((mn_jday - 1867216.0) - 0.25) / 36524.25);
+ j1 = mn_jday + 1 + tmp - Math.floor(0.25 * tmp);
+ }
+ else
+ {
+ j1 = (double)mn_jday;
+ }
+
+ double j2 = j1 + 1524.0;
+ double j3 = Math.floor(6680.0 + ((j2 - 2439870.0) - 122.1) / 365.25);
+ double j4 = Math.floor(j3 * 365.25);
+ double j5 = Math.floor((j2 - j4) / 30.6001);
+
+ int d = (int)Math.floor(j2 - j4 - Math.floor(j5 * 30.6001));
+ int m = (int)Math.floor(j5 - 1.0);
+ if (m > 12)
+ {
+ m -= 12;
+ }
+ int y = (int)Math.floor(j3 - 4715.0);
+
+ if (m > 2)
+ {
+ --y;
+ }
+ if (y <= 0)
+ {
+ --y;
+ }
+
+ return new Date(y - 1900, m - 1, d); // return the date object
+ }
+ protected String getGregorianDateS(OrderedHashtable dayInfo)
+ {
+ Analyse.dayInfo=dayInfo;
+ Phrases=new LanguagePack(dayInfo);
+ dayNames = Phrases.obtainValues((String)Phrases.Phrases.get("2"));
+ civilMonthNames=Phrases.obtainValues((String)Phrases.Phrases.get("4"));
+ monthNames=Phrases.obtainValues((String)Phrases.Phrases.get("3"));
+ civilDayNames = Phrases.obtainValues((String)Phrases.Phrases.get("5"));
+ Errors=Phrases.obtainValues((String)Phrases.Phrases.get("Errors"));
+ //GIVES THE STRING IN THE LOCAL FORMAT.
+ double j1;
+
+ if (mn_jday >= 2299160)
+ {
+ double tmp = Math.floor(((mn_jday - 1867216.0) - 0.25) / 36524.25);
+ j1 = mn_jday + 1 + tmp - Math.floor(0.25 * tmp);
+ }
+ else
+ {
+ j1 = (double)mn_jday;
+ }
+
+ double j2 = j1 + 1524.0;
+ double j3 = Math.floor(6680.0 + ((j2 - 2439870.0) - 122.1) / 365.25);
+ double j4 = Math.floor(j3 * 365.25);
+ double j5 = Math.floor((j2 - j4) / 30.6001);
+
+ int d = (int)Math.floor(j2 - j4 - Math.floor(j5 * 30.6001));
+ int m = (int)Math.floor(j5 - 1.0);
+ if (m > 12)
+ {
+ m -= 12;
+ }
+ int y = (int)Math.floor(j3 - 4715.0);
+
+ if (m > 2)
+ {
+ --y;
+ }
+ if (y <= 0)
+ {
+ --y;
+ }
+ Format=(String)Phrases.Phrases.get("DateFormat");
+ int dow =getDayOfWeek();
+ int year = y;
+ int month = m;
+ int day = d;
+ if(Analyse.dayInfo.get("Ideographic")==null)
+ {
+ Format=Format.replace("WW",civilDayNames[dow]);
+ Format=Format.replace("DD",String.valueOf(day));
+ Format=Format.replace("MM",civilMonthNames[month-1]);
+ Format=Format.replace("YY",String.valueOf(year));
+ Format=Character.toUpperCase(Format.charAt(0))+Format.substring(1);
+ }
+ else
+ {
+ if (Analyse.dayInfo.get("Ideographic").equals("1"))
+ {
+ RuleBasedNumber convertN=new RuleBasedNumber(Analyse.dayInfo);
+ Format=Format.replace("WW",civilDayNames[dow]);
+ Format=Format.replace("DD",convertN.getFormattedNumber(Long.parseLong(String.valueOf(day))));
+ Format=Format.replace("MM",civilMonthNames[month-1]);
+ Format=Format.replace("YY",convertN.getFormattedNumber(Long.parseLong(String.valueOf(year))));
+ Format=Character.toUpperCase(Format.charAt(0))+Format.substring(1);
+
+ }
+ else
+ {
+ Format=Format.replace("WW",civilDayNames[dow]);
+ Format=Format.replace("DD",String.valueOf(day));
+ Format=Format.replace("MM",civilMonthNames[month-1]);
+ Format=Format.replace("YY",String.valueOf(year));
+ Format=Character.toUpperCase(Format.charAt(0))+Format.substring(1);
+ }
+ }
+ return Format;
+
+ //return new Date(y - 1900, m - 1, d); // return the date object
+ }
+ // A METHOD TO OBTAIN THE DAY OF WEEK FROM A JDATE OBJECT
+ // PARAMETERS: NONE
+ // RETURNS: AN INTEGER WITH THE DAY OF WEEK, WHERE SUNDAY = 0, MONDAY = 1, ETC.
+ protected int getDayOfWeek()
+ {
+ int temp = (int)(mn_jday % 7)+1;
+ if (temp == 7)
+ {
+ temp = 0;
+ }
+
+ return temp;
+ }
+
+ protected int getDoy()
+ {
+ /* long jbar = mn_jday + 32083;
+ // repeat above steps until m
+ int da = mod(jbar, 1461);
+
+ // this is up to 1461 days since the start of a Julian cycle on March 1, leap year
+ // if da is 1461, we are at February 29 (doy 366)
+ // otherwise, we mod by 365 to figure out where we are in the year, remembering to add 59 to get to Jan 1
+ return da == 1461 ? 366 : mod(da + 59, 365) - 1; // Jan 1 is doy 0
+ */
+ int y =getYear();
+ int K=2;
+ if (y % 400 == 0)
+ {
+ K =1;
+ }else if (y % 4 == 0 && y % 100 != 0 && calendar == GREGORIAN)
+ {
+ K=1;
+ }else if (y % 4 == 0 && calendar == JULIAN)
+ {
+ K=1;
+ }
+ //System.out.println("Doy: K: " + K);
+ int N= (int)Math.floor(275*getMonth()/9)-K*(int)Math.floor((getMonth()+9)/12)+(int)getDay()-31;
+ if (y == 1582 && (getMonth() > 10 || (getMonth() == 10 && getDay() > 4)) && calendar == GREGORIAN)
+ {
+ N=N-10; //This corrects some of the problems, but introduces a few others. There is no way to solve all without manually coding everything for October to December 1582.
+ }
+ if (K==1 && N == 59)
+ {
+ N=366;
+ }else if (K==1 && N > 59)
+ {
+ N=N-1;
+ }
+ //System.out.println("Doy: " + N);
+ return N;
+ }
+
+ // A METHOD TO CHECK IF ONE JDATE IS EQUAL TO ANOTHER JDATE
+ // PARAMETERS: A JDATE OBJECT m
+ // RETURNS: FOR n.equals(m), true iff n.getJulianDay() == m.getJulianDay()
+ // false otherwise
+ public boolean equals(JDate2 m)
+ {
+ return (mn_jday == m.getJulianDay());
+ }
+
+ // A METHOD TO COMPARE TWO JDATE OBJECTS
+ // PARAMETERS: A JDATE OBJECT m
+ // RETURNS: FOR n.compareTo(m), 0 iff n == m
+ // a number less than 0 iff n < m
+ // a number greater than 0 iff m > n
+ // THROWS: ClassCastException iff m is not a JDate object
+ public int compareTo(Object m) throws ClassCastException
+ {
+ int temp;
+ try
+ {
+ temp = (int)(mn_jday - ((JDate2)m).getJulianDay());
+ }
+ catch (ClassCastException cce)
+ {
+ throw (new ClassCastException(cce.toString()));
+ }
+ return temp;
+ }
+
+ // A METHOD TO OBTAIN A STRING FROM A JDATE OBJECT
+ // PARAMETERS: NONE
+ // RETURNS: A STRING WITH THE STRING VALUE OF A DATE
+ public String toString(OrderedHashtable dayInfo)
+ {
+ Analyse.dayInfo=dayInfo;
+ Phrases=new LanguagePack(dayInfo);
+ dayNames = Phrases.obtainValues((String)Phrases.Phrases.get("2"));
+ civilMonthNames=Phrases.obtainValues((String)Phrases.Phrases.get("4"));
+ monthNames=Phrases.obtainValues((String)Phrases.Phrases.get("3"));
+ Format=(String)Phrases.Phrases.get("DateFormat");
+ int dow = getDayOfWeek();
+ int year = getYear();
+ int month = getMonth();
+ int day = getDay();
+
+ if(Analyse.dayInfo.get("Ideographic")==null)
+ {
+ Format=Format.replace("WW",dayNames[dow]);
+ Format=Format.replace("DD",String.valueOf(day));
+ Format=Format.replace("MM",monthNames[month-1]);
+ Format=Format.replace("YY",String.valueOf(year));
+ Format=Character.toUpperCase(Format.charAt(0))+Format.substring(1);
+ }
+ else
+ {
+ if (Analyse.dayInfo.get("Ideographic").equals("1"))
+ {
+ RuleBasedNumber convertN=new RuleBasedNumber(dayInfo);
+ Format=Format.replace("WW",dayNames[dow]);
+ Format=Format.replace("DD",convertN.getFormattedNumber(Long.parseLong(String.valueOf(day))));
+ Format=Format.replace("MM",monthNames[month-1]);
+ Format=Format.replace("YY",convertN.getFormattedNumber(Long.parseLong(String.valueOf(year))));
+ Format=Character.toUpperCase(Format.charAt(0))+Format.substring(1);
+
+ }
+ else
+ {
+ Format=Format.replace("WW",dayNames[dow]);
+ Format=Format.replace("DD",String.valueOf(day));
+ Format=Format.replace("MM",monthNames[month-1]);
+ Format=Format.replace("YY",String.valueOf(year));
+ Format=Character.toUpperCase(Format.charAt(0))+Format.substring(1);
+ }
+ }
+
+
+ return Format;
+ }
+
+ // A CLONING METHOD
+ // PARAMETERS: NONE
+ // RETURNS: A CLONE
+ public Object clone()
+ {
+ return new JDate2(mn_jday,calendar);
+ }
+
+ // ADDS A SPECIFIED NUMBER OF DAYS TO A JDATE OBJECT
+ // PARAMTERS: AN int WITH THE NUMBER OF DAYS TO BE ADDED
+ // RETURNS: NONE
+ protected synchronized void addDays(int n)
+ {
+ mn_jday += n;
+ }
+
+ // SUBTRACTS A SPECIFIED NUMBER OF DAYS FROM A JDATE OBJECT
+ // PARAMETERS: AN int WITH THE NUMBER OF DAYS TO BE SUBTRACTED
+ // RETURNS: NONE
+ protected synchronized void subtractDays(int n)
+ {
+ mn_jday -= n;
+ }
+
+ // ADDS A SEPCIFIED NUMBER OF MONTHS TO A JDATE OBJECT
+ // PARAMETERS: AN int WITH THE NUMBER OF MONTHS TO BE ADDED
+ // RETURNS: NONE
+ protected synchronized void addMonths()
+ {
+ //create a new version
+ boolean leapYear=this.isLeapYear();
+// int y =this.getYear();
+// if (y % 400 == 0)
+// {
+// leapYear =true;
+// }else if (y % 4 == 0 && y % 100 != 0 && calendar==GREGORIAN)
+// {
+// leapYear =true;
+// }else if (y % 4 == 0)
+// {
+// leapYear=true;
+// }
+
+ mn_jday += (leapYear) ? daysInMonthLeap[this.getMonth() - 1] : daysInMonth[this.getMonth() - 1];
+ }
+
+ // SUBTRACTS A SPECIFIED NUMBER OF MONTHS FROM A JDATE OBJECT
+ // PARAMETERS: AN int WITH THE NUMBER OF MONTHS TO BE SUBTRACTED
+ // RETURNS: NONE
+ protected synchronized void subtactMonths()
+ {
+ int month = this.getMonth() - 1; // ADJUSTED TO BE THE ARRAY INDEX (STARTS WITH 0)
+ month--; // PREVIOUS MONTH
+
+ if (month < 0)
+ {
+ month += 11;
+ }
+ //create a new version
+ boolean leapYear=this.isLeapYear();
+ int y =getYear();
+// if (y % 400 == 0)
+// {
+// leapYear =true;
+// }else if (y % 4 == 0 && y % 100 != 0 && calendar==GREGORIAN)
+// {
+// leapYear =true;
+// }else if (y % 4 == 0)
+// {
+// leapYear=true;
+// }
+
+ mn_jday -= (leapYear) ? daysInMonthLeap[month] : daysInMonth[month];
+ }
+
+ // FINDS THE DIFFERENCE BETWEEN TWO DATES
+ // PARAMETERS: TWO JDATE OBJECTS
+ // RETURNS: A LONG WITH THE NUMBER OF DAYS BETWEEN THE TWO OBJECTS, NON-first-INCLUSIVE
+ // i.e. saturday - sunday = 6
+ protected static long difference(JDate2 former, JDate2 latter)
+ {
+ return former.getJulianDay() - latter.getJulianDay();
+ }
+
+ // RETURNS THE MAXIMUM NUMBER OF DAYS IN A MONTH
+ // PARAMETER: AN int WITH THE MONTH AND AN int WITH THE YEAR
+ // RETURNS: THE MAXIMUM NUMBER OF DAYS IN THAT MONTH, GIVEN THAT YEAR
+ protected int getMaxDaysInMonth(int month, int year) throws IllegalArgumentException
+ {
+ if (month < 1 || month > 12)
+ {
+ throw (new IllegalArgumentException(Errors[7]));
+ }
+ //create a new version
+ boolean leapYear=isLeapYear(year);
+ //System.out.println("Year: "+year+" Leap Year: "+leapYear+" on the calendar: "+this.getCalendar());
+ //int y =year;
+// System.out.println("Calendar:" +(calendar==GREGORIAN));
+// System.out.println();
+// if (y % 400 == 0)
+// {
+// leapYear =true;
+// }else if ((y % 4 == 0) && (y % 100 != 0) && calendar==GREGORIAN)
+// {
+// //System.out.println("Hello Gregorian");
+// leapYear =true;
+// }else if (y % 4 == 0 && calendar==JULIAN)
+// {
+// leapYear=true;
+// }
+// System.out.println("Year: "+y+"; Corrected: "+leapYear+" Boolean evaluates to: "+((y % 4 == 0) && (y % 100 != 0)));
+ return (leapYear) ? daysInMonthLeap[month - 1] : daysInMonth[month - 1];
+ }
+ protected static void setCalendar(int calNew)
+ {
+ if (calNew < 0 || calNew > 1)
+ {
+ System.out.print("No such calendar exists: 0 == Julian and 1 == Gregorian");
+ }else
+ {
+ calendar=calNew;
+ }
+ }
+ protected JDate toJDate()
+ {
+ System.out.println("Warning: coverting JDate2 to JDate. Perhaps correct this later?");
+ return new JDate(this.mn_jday);
+ }
+ protected boolean isLeapYear()
+ {
+ boolean leapYear=false;
+ int y =this.getYear();
+ if (y % 400 == 0)
+ {
+ leapYear =true;
+ }else if (y % 4 == 0 && y % 100 != 0 && calendar==GREGORIAN)
+ {
+ leapYear =true;
+ }else if (y % 4 == 0 && calendar==JULIAN)
+ {
+ leapYear=true;
+ }
+ return leapYear;
+ }
+ protected boolean isLeapYear(int year)
+ {
+ boolean leapYear=false;
+ int y =year;
+ if (y % 400 == 0)
+ {
+ leapYear =true;
+ }else if (y % 4 == 0 && y % 100 != 0 && calendar==GREGORIAN)
+ {
+ leapYear =true;
+ }else if (y % 4 == 0 && calendar==JULIAN)
+ {
+ leapYear=true;
+ }
+ return leapYear;
+ }
+ protected String getCalendar()
+ {
+ if (calendar==JULIAN)
+ {
+ return "Julian";
+ }else
+ {
+ return "Gregorian";
+ }
+
+ }
+ protected int getCalendar2()
+ {
+ return calendar;
+
+ }
+ protected int getAM(){
+ //returns the corresponding anno mundi given the date.
+ double difference=0;
+ int y=this.getYear();
+ int m=this.getMonth();
+ int d=this.getMonth();
+ int AM=5782+(y-2022);
+
+ if (m>8){
+ AM=AM+1;
+ }
+
+ return (int)AM;
+ }
+}
diff --git a/Ponomar/LanguagePack.java b/Ponomar/LanguagePack.java
index eca22deea..e413d474b 100755
--- a/Ponomar/LanguagePack.java
+++ b/Ponomar/LanguagePack.java
@@ -36,6 +36,7 @@ public LanguagePack(OrderedHashtable dayInfo)
{
Phrases =new OrderedHashtable();
Analyse.dayInfo=dayInfo;
+
ReadPhrases();
}
@@ -54,6 +55,7 @@ private void ReadPhrases()
private void ReadPhrases(String langPath)
{
String filename=langPath;
+ //System.out.println("Language Path: "+langPath);
try
{
//ALLOWS MULTILINGUAL SUPPORT, WHICH IS A MUST IN OUR CASE.
diff --git a/Ponomar/Main.java b/Ponomar/Main.java
index 31d66742c..d8218c90b 100644
--- a/Ponomar/Main.java
+++ b/Ponomar/Main.java
@@ -41,11 +41,11 @@ public class Main extends JFrame implements PropertyChangeListener, HyperlinkLis
private final static String pentecostarionFileName = "xml/pentecostarion/"; // PENTECOSTARION FILE
private static String newline = "\n";
// Elements of the interface
- JDate today; // "TODAY" (I.E. THE DATE WE'RE WORKING WITH
+ JDate2 today; // "TODAY" (I.E. THE DATE WE'RE WORKING WITH
private JCalendar calendar; // THE CALENDAR OBJECT
private PrintableTextPane text; // MAIN TEXT AREA FOR OUTPUT
- private JDate pascha; // THIS YEAR'S PASCHA
- private JDate pentecost; // THIS YEAR'S PENTECOST
+ private JDate2 pascha; // THIS YEAR'S PASCHA
+ private JDate2 pentecost; // THIS YEAR'S PENTECOST
private Stack fastInfo; // CONTAINS A VECTOR OF THE FASTING INFORMATION FOR TODAY, WHICH IS LATER PASSED TO CONVOLVE()
private OrderedHashtable readings; // CONTAINS TODAY'S SCRIPTURE READING
private String output; // TODAY'S CALENDAR OUTPUT
@@ -73,6 +73,8 @@ public class Main extends JFrame implements PropertyChangeListener, HyperlinkLis
private String[] ServiceNames;
private String[] BibleName;
private String[] HelpNames;
+ //private String[] EditComm;
+ //private String[] EditPrayers;
//Get the Correct Fonts
private String DisplayFont = new String(); //ALLOWS A CUSTOM FONT AND SIZE TO BE SPECIFIED FOR A GIVEN BIBLE READING: REQUIRED FOR OLD CHURCH SLAVONIC AT PRESENT
private String DisplaySize = "12"; //UNTIL A COMPLETE UNICODE FONT IS AVAILIBLE.
@@ -88,6 +90,8 @@ public class Main extends JFrame implements PropertyChangeListener, HyperlinkLis
private Vector IconNames;
private String OrderBox;
private StringOp Analyse = new StringOp();
+ private int DisplayCal=0;
+ private int ReligiousCal=0;
//private GospelSelector Selector;
Helpers findLanguage;
@@ -103,8 +107,10 @@ public Main() {
//DETERMINE THE DEFAULTS
ConfigurationFiles.Defaults = new OrderedHashtable();
ConfigurationFiles.ReadFile();
+ DisplayCal=Integer.parseInt(ConfigurationFiles.Defaults.get("DisplayCalendar").toString());
+ ReligiousCal=Integer.parseInt(ConfigurationFiles.Defaults.get("ReligiousCalendar").toString());
LanguageLocation = new LanguageSelector(Analyse.dayInfo);
-
+ //System.out.println("Language Selected: "+LanguageLocation.getLValue().toString());
Analyse.dayInfo.put("LS", LanguageLocation.getLValue());
Phrases = new LanguagePack(Analyse.dayInfo);
//Changing language storage format
@@ -117,6 +123,8 @@ public Main() {
ServiceNames = Phrases.obtainValues((String) Phrases.Phrases.get("Services"));
BibleName = Phrases.obtainValues((String) Phrases.Phrases.get("Bible"));
HelpNames = Phrases.obtainValues((String) Phrases.Phrases.get("Help"));
+ //EditComm = Phrases.obtainValues((String) Phrases.Phrases.get("EditComm"));
+ //EditPrayers=Phrases.obtainValues((String) Phrases.Phrases.get("EditPrayers")); //to change to Prayers!
Errors = Phrases.obtainValues((String) Phrases.Phrases.get("Errors"));
MainNames = Phrases.obtainValues((String) Phrases.Phrases.get("Main"));
@@ -219,7 +227,7 @@ public Main() {
splitter.setLeftComponent(left);
splitter.setRightComponent(right);
- today = new JDate(calendar.getMonth(), calendar.getDay(), calendar.getYear());
+ today = new JDate2(calendar.getMonth(), calendar.getDay(), calendar.getYear(),DisplayCal);
setContentPane(splitter);
@@ -233,9 +241,11 @@ public Main() {
pack();
setSize(700, 500);
setVisible(true);
+
+ //System.out.println("Testing the year: "+today.getYear());
- pascha = Paschalion.getPascha(today.getYear());
- pentecost = Paschalion.getPentecost(today.getYear());
+ pascha = Paschalion.getPascha(today.getYear(),ReligiousCal);
+ pentecost = Paschalion.getPentecost(today.getYear(),ReligiousCal);
inited = true;
@@ -262,10 +272,12 @@ public void propertyChange(PropertyChangeEvent e) {
if (inited == true) {
// FIND OUT THE OLD YEAR
int year = today.getYear();
- today = new JDate(calendar.getMonth(), calendar.getDay(), calendar.getYear());
+ today = new JDate2(calendar.getMonth(), calendar.getDay(), calendar.getYear(),DisplayCal);
+ today.setCalendar(ReligiousCal);
+ //System.out.println("year is: "+year+" and religious year is: " +today.getYear());
if (year != today.getYear()) {
- pascha = Paschalion.getPascha(today.getYear());
- pentecost = Paschalion.getPentecost(today.getYear());
+ pascha = Paschalion.getPascha(today.getYear(),ReligiousCal);
+ pentecost = Paschalion.getPentecost(today.getYear(),ReligiousCal);
/*StringOp.dayInfo.clear();
StringOp.dayInfo.put("FontFaceM",DisplayFont);
StringOp.dayInfo.put("FontSizeM",DisplaySize);
@@ -341,6 +353,10 @@ public void actionPerformed(ActionEvent e) {
if (name.equals(ServiceNames[12])) {
//TYPICA
}
+ if (name.equals(SaintNames[2])) {
+ //System.out.print("Hellow");
+ new Search(Analyse.dayInfo);
+ }
if (name.equals(BibleName[0])) {
//Launch the Bible Reader
Helpers orient = new Helpers(Analyse.dayInfo);
@@ -349,6 +365,13 @@ public void actionPerformed(ActionEvent e) {
if (name.equals(FileNames[6])) {
helper.sendHTMLToPrinter(text);
}
+ /*if (name.equals(EditComm[0])) {
+ new EditCommemoration(Analyse.dayInfo);
+ }
+ if (name.equals(EditPrayers[0])) {
+ //new EditPrayers(Analyse.dayInfo);
+ }*/
+
if (name.equals( Phrases.Phrases.get("OptionMenu"))){
Options optionsN=new Options(Analyse.dayInfo);
optionsN.addPropertyChangeListener("CalendarChange",this); //nifty way of only listening to what I want to hear!
@@ -406,23 +429,26 @@ private void write() {
output = "";
-
+ today.setCalendar(DisplayCal);
String AMC = (String) Phrases.Phrases.get("AMC");
String AML = (String) Phrases.Phrases.get("AML");
+ String CEnd=(String) Phrases.Phrases.get("CEnd"); //"."; //Later make it come from the configuration files for a given language.
String Format = "";
if (AMC.equals("1")) {
- PCalendar checking = new PCalendar(today, PCalendar.julian, Analyse.dayInfo);
+ //PCalendar checking = new PCalendar(today, PCalendar.julian, Analyse.dayInfo);
+ today.setCalendar(ReligiousCal);
+
Format = (String) Phrases.Phrases.get("AM");
if (Analyse.dayInfo.get("Ideographic").equals("1"))
{
RuleBasedNumber convertN=new RuleBasedNumber(Analyse.dayInfo);
- Format = Format.replace("^YYAM", convertN.getFormattedNumber(Long.parseLong(Integer.toString((int) checking.getAM()))));
+ Format = Format.replace("^YYAM", convertN.getFormattedNumber(Long.parseLong(Integer.toString((int) today.getAM()))));
}
else
{
- Format = Format.replace("^YYAM", Integer.toString((int) checking.getAM()));
+ Format = Format.replace("^YYAM", Integer.toString((int) today.getAM()));
}
}
//System.out.println("AML = " + AML.equals("B"));
@@ -431,17 +457,44 @@ private void write() {
} else {
output += "" + today.toString(Analyse.dayInfo) + Format + "
";
}
-
- output += MainNames[0] + Colon + (String) today.getGregorianDateS(Analyse.dayInfo) + "
";
+ if (ReligiousCal!=DisplayCal)
+ {
+ today.setCalendar(DisplayCal);
+ if (DisplayCal==0)
+ {
+
+ output += MainNames[7];
+
+ }
+ else
+ {
+ output += MainNames[0];
+ }
+ output += Colon + (String) today.toString(Analyse.dayInfo) + "
";
+ today.setCalendar(ReligiousCal);
+ }
+ else
+ {
+ if (DisplayCal==0)
+ {
+ output += MainNames[8]+ "
";
+ }
+ else
+ {
+ output += MainNames[9]+ "
";
+ }
+ }
+ //output += MainNames[0] + Colon + (String) today.getGregorianDateS(Analyse.dayInfo) + "
";
String filename = "";
int lineNumber = 0;
+ today.setCalendar(ReligiousCal);
int dow = today.getDayOfWeek();
int doy = today.getDoy();
- int nday = (int) JDate.difference(today, this.pascha);
- int ndayP = (int) JDate.difference(today, Paschalion.getPascha(today.getYear() - 1));
+ int nday = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear(),ReligiousCal));
+ int ndayP = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear() - 1,ReligiousCal));
//REQUIRED FOR LUCAN JUMP CALCULATIONS! ADDED 2008/05/17 n.s.
- int ndayF = (int) JDate.difference(today, Paschalion.getPascha(today.getYear() + 1));
-
+ int ndayF = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear() + 1,ReligiousCal));
+ //System.out.println("Checking the nday: "+nday+" ndayP: "+ndayP+" today’s religious year is: "+today.getYear());
//Clearing the holders for the icons and names
IconImages = new Vector();
IconNames = new Vector();
@@ -461,7 +514,9 @@ private void write() {
Analyse.dayInfo.put("LS", LanguageLocation.getLValue());
Analyse.dayInfo.put("Year", today.getYear());
Analyse.dayInfo.put("dRank", 0); //The default rank for a day is 0. Y.S. 2010/02/01 n.s.
+ Analyse.dayInfo.put("dRankM",0);
Analyse.dayInfo.put("Ideographic", Ideographic);
+ Analyse.dayInfo.put("isLeapYear",today.isLeapYear(today.getYear()) ? 1 : 0);
readings = new OrderedHashtable();
fastInfo = new Stack();
@@ -497,8 +552,8 @@ private void write() {
} else if (nday < -70) {
// WE HAVE NOT YET REACHED THE LENTEN TRIODION
filename = pentecostarionFileName;
- JDate lastPascha = Paschalion.getPascha(today.getYear() - 1);
- lineNumber = (int) JDate.difference(today, lastPascha) + 1;
+ JDate2 lastPascha = Paschalion.getPascha(today.getYear() - 1,ReligiousCal);
+ lineNumber = (int) JDate2.difference(today, lastPascha) + 1;
} else {
// WE ARE AFTER PASCHA AND BEFORE THE END OF THE YEAR
filename = pentecostarionFileName;
@@ -534,9 +589,14 @@ private void write() {
//filename += ".xml";
Day SolarCycle = new Day(filename, Analyse.dayInfo);
Analyse.dayInfo.put("dRank", Math.max(SolarCycle.getDayRank(), PaschalCycle.getDayRank()));
+ Analyse.dayInfo.put("dRankM",SolarCycle.getDayRank());
output += PaschalCycle.getCommsHyper() + CSep;
- output += SolarCycle.getCommsHyper();
+ output += SolarCycle.getCommsHyper()+CEnd;
Analyse.dayInfo.put("Tone", PaschalCycle.getTone());
+ Analyse.dayInfo.put("SolarPath",filename);
+ //System.out.println("The Solar Path is "+filename);
+ //Analyse.dayInfo.put("SolarCycle",SolarCycle.getCommemorations());
+ //Analyse.dayInfo.put("PaschalCycle",PaschalCycle);
String collection = "";
@@ -722,10 +782,20 @@ private void write() {
for (int j = 0; j < Readings.size(); j++) {
OrderedHashtable matins = (OrderedHashtable) Readings.get(j);
- //System.out.println("In Main1, we have "+Readings.get(j));
+ //System.out.println("In Main1, we have "+matins+"\n matings.get(\"matins\")");
OrderedHashtable stepE = (OrderedHashtable) matins.get("matins");
if (stepE == null) {
- stepE = (OrderedHashtable) matins.get("1");
+ //stepE = (OrderedHashtable) matins.get("1");
+ OrderedHashtable testing3=(OrderedHashtable) matins.get("1");
+ // System.out.println("kl: 0; readings: "+testing3);
+ matins2.add(testing3.get("Reading").toString());
+
+ for (int kl=1;kl<=matins.size()-1;kl++){
+ testing3=(OrderedHashtable) matins.get(Integer.toString(kl+1));
+ //System.out.println("kl: "+kl+"; readings: "+testing3);
+ matins2.add(testing3.get("Reading").toString());
+ }
+
}
//OrderedHashtable stepE=(OrderedHashtable)matins.get("matins");
//System.out.println("In Main1, we have "+matins2);
@@ -734,7 +804,7 @@ private void write() {
if (stepE != null) {
matins2.add(stepE.get("Reading").toString());
} else {
- matins2.add("");
+ //matins2.add("");
}
}
@@ -742,7 +812,8 @@ private void write() {
-
+ //System.out.println("In Main1, we have matins: "+Readings.size()+" readings and values of "+Readings+"\nTesting matins2: "+matins2);
+ //System.out.println("Rank: "+Rank);
readingsA.put("Readings", matins2);
readingsA.put("Rank", Rank);
@@ -750,7 +821,7 @@ private void write() {
Matins trial1 = new Matins(Analyse.dayInfo);
String type1 = (String) Phrases.Phrases.get("matins");
output += "" + type1 + "" + Colon;
- //System.out.println(readingsA);
+ //System.out.println("Matins: "+ readingsA);
output += trial1.Readings(readingsA, today);
//output+=RSep;
@@ -784,7 +855,7 @@ private void write() {
String element2 = e2.nextElement().toString();
OrderedHashtable stuff = (OrderedHashtable) Reading.get(element2);
String BibleText = stuff.get("Reading").toString();
- output += ShortForm.getHyperlink(BibleText);
+ output += ShortForm.getHyperlinkLoc(BibleText);
}
if (Readings.size() > 1) {
output += Tag.get(i).toString();
diff --git a/Ponomar/Matins.java b/Ponomar/Matins.java
index 00f45ff0d..bd88fdda2 100644
--- a/Ponomar/Matins.java
+++ b/Ponomar/Matins.java
@@ -113,7 +113,7 @@ public void endElement(String elem) {
public void text(String text) {
}
- public String Readings(OrderedHashtable readingsIn, JDate today) {
+ public String Readings(OrderedHashtable readingsIn, JDate2 today) {
/********************************************************
SINCE I HAVE CORRECTED THE SCRIPTURE READINGS IN THE MAIN FILE, I CAN NOW PRECEDE WITH A BETTER VERSION OF THIS PROGRAMME!
********************************************************/
@@ -139,7 +139,7 @@ public String Readings(OrderedHashtable readingsIn, JDate today) {
} catch (Exception e) {
e.printStackTrace();
}*/
- //For the time being I will hard code the rules, as it is simple one. Suppress Sequential readings on Sunday if dRank > 6; otherwise suppress the menaion readings.
+ //For the time being I will hard code the rules, as it is a simple one. Suppress Sequential readings on Sunday if dRank > 6; otherwise suppress the menaion readings.
@@ -153,20 +153,26 @@ public String Readings(OrderedHashtable readingsIn, JDate today) {
dailyTf.add(dow);
}
+ int rankD=-2;
for (int i=0;i rankD)
+ {
+ dailyVf.add(orderedReadings.menaionV.get(i));
dailyRf.add(orderedReadings.menaionR.get(i));
dailyTf.add(orderedReadings.menaionT.get(i));
+ rankD=rankCur;
+ }
}
-
+ //System.out.println("VF: "+dailyVf+" Rf: " + dailyRf +" Tf: " +dailyTf);
return format(dailyVf, dailyRf, dailyTf);
}
- private OrderedHashtable getReadings(JDate today, String readingType) {
+ private OrderedHashtable getReadings(JDate2 today, String readingType) {
String filename = "";
int lineNumber = 0;
- int nday = (int) JDate.difference(today, Paschalion.getPascha(today.getYear()));
+ int nday = (int) JDate2.difference(today, Paschalion.getPascha(today.getYear(),today.getCalendar2()));
//I COPIED THIS FROM THE Main.java FILE BY ALEKS WITH MY MODIFICATIONS (Y.S.)
//FROM HERE UNTIL
@@ -176,8 +182,8 @@ private OrderedHashtable getReadings(JDate today, String readingType) {
} else if (nday < -70) {
// WE HAVE NOT YET REACHED THE LENTEN TRIODION
filename = pentecostarionFileName;
- JDate lastPascha = Paschalion.getPascha(today.getYear() - 1);
- lineNumber = (int) JDate.difference(today, lastPascha) + 1;
+ JDate2 lastPascha = Paschalion.getPascha(today.getYear() - 1,today.getCalendar2());
+ lineNumber = (int) JDate2.difference(today, lastPascha) + 1;
} else {
// WE ARE AFTER PASCHA AND BEFORE THE END OF THE YEAR
filename = pentecostarionFileName;
@@ -316,9 +322,7 @@ private OrderedHashtable getReadings(JDate today, String readingType) {
Final2.put("Rank", Rank);
Final2.put("Tag", Tag);
-
-
- return Final2;
+ return Final2;
}
protected String Display(String a, String b, String c) {
@@ -353,14 +357,17 @@ public String format(Vector vectV, Vector vectR, Vector vectT) {
Enumeration e3 = vectV.elements();
for (int k = 0; k < vectV.size(); k++) {
String reading = (String) vectV.get(k);
- output += ShortForm.getHyperlink(reading);
+ output += ShortForm.getHyperlinkLoc(reading);
if ((Integer) vectR.get(k) == -2 ) {
if (vectV.size()>1){
int tag = (Integer) vectT.get(k);
output += " (" + Week(vectT.get(k).toString()) + ")";
}
- } else {
+ } else if ((Integer) vectR.get(k) == -99 ) {
+
+ }
+ else {
output += vectT.get(k);
}
@@ -424,7 +431,7 @@ public classifyReadings(OrderedHashtable readingsInA, StringOp ParameterValues)
private void classify(OrderedHashtable readingsIn)
{
//Initialise Information.
- Information2=new OrderedHashtable();
+ Information2=new OrderedHashtable();
/*try {
FileReader frf = new FileReader(findLanguage.langFileFind(ParameterValues.dayInfo.get("LS").toString(), "xml/Commands/Matins.xml"));
//System.out.println(findLanguage.langFileFind(ParameterValues.dayInfo.get("LS").toString(), "xml/Commands/DivineLiturgy.xml"));
@@ -449,12 +456,17 @@ private void classify(OrderedHashtable readingsIn)
for (int k = 0; k < paschalV.size(); k++) {
-
- if ((Integer) paschalR.get(k) == -2) {
+ // System.out.println("Matins/k="+k+"\nRank is now: "+paschalR.get(0));
+ if ((Integer) paschalR.get(0) == -2) {
//THIS IS A DAILY READING THAT CAN BE SKIPPED, EXCEPT MAYBE ON SUNDAYS.
dailyV.add(paschalV.get(k));
- dailyR.add(paschalR.get(k));
- dailyT.add(paschalT.get(k));
+ if (k==paschalV.size()-1){
+ dailyR.add(paschalR.get(0));
+ dailyT.add(paschalT.get(0));
+ }else {
+ dailyR.add(-99);
+ dailyT.add(-99);
+ }
} else {
menaionV.add(paschalV.get(k));
menaionR.add(paschalR.get(k));
@@ -464,7 +476,7 @@ private void classify(OrderedHashtable readingsIn)
}
- Suppress();
+ Suppress();
//LeapReadings();
diff --git a/Ponomar/MenuFiles.java b/Ponomar/MenuFiles.java
index 1fcd0fe16..b66690a80 100755
--- a/Ponomar/MenuFiles.java
+++ b/Ponomar/MenuFiles.java
@@ -45,6 +45,8 @@ class MenuFiles extends JMenu implements ItemListener, PropertyChangeListener
private String[] ServiceNames;//=Text.obtainValues((String)Text.Phrases.get("Services"));
private String[] BibleName;//=Text.obtainValues((String)Text.Phrases.get("Bible"));
private String[] HelpNames;//=Text.obtainValues((String)Text.Phrases.get("Help"));
+ private String[] EditComm;
+ private String[] EditPrayers;
private StringOp Analyse=new StringOp();
private Font CurrentFont;//=new Font((String)Analyse.dayInfo.get("FontFaceM"),Font.PLAIN,Integer.parseInt((String)Analyse.dayInfo.get("FontSizeM")));
@@ -59,6 +61,8 @@ public MenuFiles(OrderedHashtable dayInfo)
ServiceNames=Text.obtainValues((String)Text.Phrases.get("Services"));
BibleName=Text.obtainValues((String)Text.Phrases.get("Bible"));
HelpNames=Text.obtainValues((String)Text.Phrases.get("Help"));
+ EditComm=Text.obtainValues((String)Text.Phrases.get("EditComm"));
+ EditPrayers=Text.obtainValues((String)Text.Phrases.get("EditPrayers"));
CurrentFont=new Font((String)Analyse.dayInfo.get("FontFaceM"),Font.PLAIN,Integer.parseInt((String)Analyse.dayInfo.get("FontSizeM")));
}
public JMenu createOptionsMenu(PropertyChangeListener pl, ActionListener al)
@@ -126,7 +130,23 @@ public JMenu createSaintsMenu(ActionListener al)
menuItem=new JMenuItem(SaintNames[2],KeyEvent.VK_S);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK));
menuItem.getAccessibleContext().setAccessibleDescription(SaintNames[3]);
- menuItem.setEnabled(false);
+ menuItem.setEnabled(true);
+ menuItem.addActionListener(al);
+ //menuItem.setFont(CurrentFont);
+ menu.add(menuItem);
+
+ menuItem=new JMenuItem(EditComm[0],KeyEvent.VK_E);
+ menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K, ActionEvent.CTRL_MASK));
+ menuItem.getAccessibleContext().setAccessibleDescription(EditComm[1]);
+ menuItem.setEnabled(true);
+ menuItem.addActionListener(al);
+ //menuItem.setFont(CurrentFont);
+ menu.add(menuItem);
+
+ menuItem=new JMenuItem(EditPrayers[0],KeyEvent.VK_P);
+ menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_J, ActionEvent.CTRL_MASK));
+ menuItem.getAccessibleContext().setAccessibleDescription(EditPrayers[1]);
+ menuItem.setEnabled(true);
menuItem.addActionListener(al);
//menuItem.setFont(CurrentFont);
menu.add(menuItem);
diff --git a/Ponomar/NinthHour.java b/Ponomar/NinthHour.java
index e5605fb87..df5c014c0 100644
--- a/Ponomar/NinthHour.java
+++ b/Ponomar/NinthHour.java
@@ -60,7 +60,7 @@ public class NinthHour implements DocHandler, ActionListener, ItemListener, Prop
private String[] HelpNames;//=Text.obtainValues((String)Text.Phrases.get("Help"));
String newline = "\n";
private String strOut;
- private JDate today;
+ private JDate2 today;
private Helpers helper;
private PrimeSelector SelectorP;//=new PrimeSelector();
private PrintableTextPane output;
@@ -72,7 +72,7 @@ public class NinthHour implements DocHandler, ActionListener, ItemListener, Prop
//private Helpers findLanguage;
- public NinthHour(JDate date, OrderedHashtable dayInfo)
+ public NinthHour(JDate2 date, OrderedHashtable dayInfo)
{
Analyse.dayInfo=dayInfo;
Text=new LanguagePack(dayInfo);
diff --git a/Ponomar/Options.java b/Ponomar/Options.java
index 474474481..b7e5064c8 100644
--- a/Ponomar/Options.java
+++ b/Ponomar/Options.java
@@ -38,11 +38,14 @@ public class Options extends JFrame implements ActionListener, ItemListener, Pro
private JTextField longitude;
private JComboBox TimeZone2;
private ButtonGroup calendar;
+ private ButtonGroup calendar2;
private JButton okay;
private JButton cancel;
private String[] Zone={"-12","-11","-10","-9","-8","-7","-6","-5","-4","-3","-2","-1","0","+1","+2","+3","+4","+5","+6","+7","+8","+9","+10","+11","+12",};
private JRadioButton jRadioButton2;
private JRadioButton jRadioButton1;
+ private JRadioButton jRadioButton22;
+ private JRadioButton jRadioButton12;
private Font CurrentFont;
private boolean ignore=true;
@@ -139,23 +142,23 @@ public void createDefaultWindow()
JPanel centre=new JPanel();
centre.setLayout(new GridLayout(2,3));
- JLabel blanka=new JLabel();
- blanka.setFont(CurrentFont);
- centre.add(blanka);
- JLabel blank5=new JLabel(Options[8],SwingConstants.CENTER);
- blank5.setFont(CurrentFont);
- centre.add(blank5);
- JLabel blank4=new JLabel();
- blank4.setFont(CurrentFont);
- centre.add(blank4);
- centre.setPreferredSize(new Dimension(100,150));
+ //JLabel blanka=new JLabel();
+ //blanka.setFont(CurrentFont);
+ //centre.add(blanka);
+ //JLabel blank5=new JLabel(Options[8],SwingConstants.CENTER);
+ //blank5.setFont(CurrentFont);
+ //centre.add(blank5);
+ //JLabel blank4=new JLabel();
+ //blank4.setFont(CurrentFont);
+ //centre.add(blank4);
+ //centre.setPreferredSize(new Dimension(100,150));
JLabel name=new JLabel(Options[9],SwingConstants.LEFT);
name.setFont(CurrentFont);
name.setPreferredSize(new Dimension(50,50));
centre.add(name);
- String DefaultCalendar = ConfigurationFiles.Defaults.get("Calendar").toString();
+ String DefaultCalendar = ConfigurationFiles.Defaults.get("DisplayCalendar").toString();
jRadioButton1 = new JRadioButton();
jRadioButton1.setText(Options[10]);
@@ -163,7 +166,7 @@ public void createDefaultWindow()
- if (!(DefaultCalendar.equals("Gregorian"))){
+ if (!(DefaultCalendar.equals("1"))){
jRadioButton1.setSelected(true);
}
@@ -172,7 +175,7 @@ public void createDefaultWindow()
jRadioButton2.setText(Options[11]);
jRadioButton2.setFont(CurrentFont);
- if ((DefaultCalendar.equals("Gregorian"))){
+ if ((DefaultCalendar.equals("1"))){
jRadioButton2.setSelected(true);
}
@@ -187,6 +190,59 @@ public void createDefaultWindow()
centre.add(jRadioButton2);
centre.setBorder(BorderFactory.createBevelBorder(0));
+
+ //Adding the ability to change the religious calendar
+
+// JLabel blanka2=new JLabel();
+// blanka2.setFont(CurrentFont);
+// centre.add(blanka2);
+// //JLabel blank52=new JLabel(Options[8],SwingConstants.CENTER);
+// // blank52.setFont(CurrentFont);
+// //centre.add(blank52);
+// JLabel blank42=new JLabel();
+// blank42.setFont(CurrentFont);
+// centre.add(blank42);
+// centre.setPreferredSize(new Dimension(100,150));
+
+ JLabel name2=new JLabel(Options[14],SwingConstants.LEFT);
+ name2.setFont(CurrentFont);
+ name2.setPreferredSize(new Dimension(50,50));
+ centre.add(name2);
+
+ String ReligiousCalendar = ConfigurationFiles.Defaults.get("ReligiousCalendar").toString();
+
+ jRadioButton12 = new JRadioButton();
+ jRadioButton12.setText(Options[10]);
+ jRadioButton12.setFont(CurrentFont);
+
+
+
+ if (!(ReligiousCalendar.equals("1"))){
+ jRadioButton12.setSelected(true);
+ }
+
+
+ jRadioButton22 = new JRadioButton();
+
+ jRadioButton22.setText(Options[11]);
+ jRadioButton22.setFont(CurrentFont);
+ if ((ReligiousCalendar.equals("1"))){
+ jRadioButton22.setSelected(true);
+ }
+
+ calendar2 = new ButtonGroup( );
+ calendar2.add(jRadioButton12);
+ calendar2.add(jRadioButton22);
+
+
+
+
+ centre.add(jRadioButton12);
+ centre.add(jRadioButton22);
+
+ centre.setBorder(BorderFactory.createBevelBorder(0));
+
+ //End of such changes
JPanel bottom=new JPanel();
bottom.setLayout(new GridLayout(2,2));
@@ -287,21 +343,38 @@ public void actionPerformed(ActionEvent e)
}
ConfigurationFiles.Defaults.put("TimeZone",TimeZone2.getSelectedItem().toString());
- String previous=ConfigurationFiles.Defaults.get("Calendar").toString();
+ String previous=ConfigurationFiles.Defaults.get("DisplayCalendar").toString();
if (jRadioButton1.getSelectedObjects()!=null){
- ConfigurationFiles.Defaults.put("Calendar","Julian");
- if (!(previous.equals("Julian")) && !ignore){
- firePropertyChange("CalendarChange", 1,0);
+ ConfigurationFiles.Defaults.put("DisplayCalendar","0");
+ if (!(previous.equals("0")) && !ignore){
+ firePropertyChange("DisplayCalendarChange", 1,0);
+ }
+ }
+ else
+ {
+
+ ConfigurationFiles.Defaults.put("DisplayCalendar","1");
+ if (!(previous.equals("1")) && !ignore){
+ firePropertyChange("DisplayCalendarChange", 0,1);
+ }
+ }
+
+ String previous2=ConfigurationFiles.Defaults.get("ReligiousCalendar").toString();
+ if (jRadioButton12.getSelectedObjects()!=null){
+ ConfigurationFiles.Defaults.put("ReligiousCalendar","0");
+ if (!(previous2.equals("0")) && !ignore){
+ firePropertyChange("ReligiousCalendarChange", 1,0);
}
}
else
{
- ConfigurationFiles.Defaults.put("Calendar","Gregorian");
- if (!(previous.equals("Gregorian")) && !ignore){
- firePropertyChange("CalendarChange", 0,1);
+ ConfigurationFiles.Defaults.put("ReligiousCalendar","1");
+ if (!(previous2.equals("1")) && !ignore){
+ firePropertyChange("ReligiousCalendarChange", 0,1);
}
}
+
ConfigurationFiles.WriteFile();
dispose();
diff --git a/Ponomar/Paschalion.java b/Ponomar/Paschalion.java
index 49d1fa684..871e4ef35 100755
--- a/Ponomar/Paschalion.java
+++ b/Ponomar/Paschalion.java
@@ -1,7 +1,6 @@
package Ponomar;
import java.util.*;
-
/***************************************************************************
Paschalion.java - A CLASS FOR WORKING WITH THE PASCHALION OF THE ORTHODOX CHURCH
PURPOSE: The purpose of this class is to provide an interface for various
@@ -27,6 +26,7 @@ final class Paschalion
// THE LENGTH OF A LUNAR MONTH
private final static double lunarMonth = 29.52916667;
private final static double lengthOfRem = 0.016932411; // SEE COMMENTS IN getLunarPhaseString()
+ private static int calendar=1; //Set 1 for Gregorian, and 0 for Julian
// THE FOUNDATION IS THE "AGE OF THE MOON" (NUMBER OF DAYS SINCE NEW MOON)
// ON 1 MARCH, JULIAN CALENDAR, FOR A PARTICULAR LUNAR YEAR
@@ -71,16 +71,38 @@ protected static JDate getPascha(int year) throws IllegalArgumentException
{
throw (new IllegalArgumentException("Invalid year"));
}
+ if (year > 1582 && calendar == 1)
+ {
+ int a = year % 19;
+ int b = (int)Math.floor(year/100);
+ int c = year % 100;
+ int d = (int)Math.floor(b/4);
+ int e = b % 4;
+ int f = (int)Math.floor((b+8)/25);
+ int g = (int)Math.floor((b-f+1)/3);
+ int h = (19*a+b-d-g+15) % 30;
+ int i = (int)Math.floor(c/4);
+ int k = c % 4;
+ int l = (32+2*e+2*i-h-k) % 7;
+ int m = (int)Math.floor((a+11*h+22*l)/451);
+ int n = (int)Math.floor((h+l-7*m+114)/31);
+ int p = (h+l-7*m+114)%31;
+ return new JDate(n, p+1, year);
+ }
+ else
+ {
+ int a = year % 4;
+ int b = year % 7;
+ int c = year % 19;
+ int d = (19 * c + 15) % 30;
+ int e = (2 * a + 4 * b - d + 34) % 7;
+ int f = (int)Math.floor((d + e + 114) / 31); //Month of pascha e.g. march=3
+ int g = ((d + e + 114) % 31) + 1; //Day of pascha in the month
+ //System.out.println("Easter on the Julian calendar is: "+year+"/"+f+"/"+g);
+ // Create a JDate object
+ return new JDate(f, g, year);
+ }
- int a = year % 4;
- int b = year % 7;
- int c = year % 19;
- int d = (19 * c + 15) % 30;
- int e = (2 * a + 4 * b - d + 34) % 7;
- int f = (int)Math.floor((d + e + 114) / 31); //Month of pascha e.g. march=3
- int g = ((d + e + 114) % 31) + 1; //Day of pascha in the month
- // Create a JDate object
- return new JDate(f, g, year);
}
// A METHOD TO OBTAIN THE DATE OF JULIAN PENTECOST
@@ -582,4 +604,254 @@ protected static Hashtable getFeasts(int year, OrderedHashtable dayInfo) throws
return feasts;
}
+ protected static int[] getFasts(int year,int calendar) throws IllegalArgumentException
+ {
+ if (year < 33)
+ {
+ throw( new IllegalArgumentException("Invalid year"));
+ }
+
+ // A HASHTABLE WITH MANDATORY FAST DAYS IN THE YEAR
+ Hashtable mustFast = new Hashtable();
+
+ mustFast.put(new JDate2(1, 5, year,calendar).getJulianDay(), "Eve of Theophany");
+ mustFast.put(new JDate2(8, 29, year,calendar).getJulianDay(), "Beheading");
+ mustFast.put(new JDate2(9, 14, year,calendar).getJulianDay(), "Exaltation");
+
+ // A HASHTABLE WITH MANDATORY FAST-FREE DAYS
+ Hashtable cantFast = new Hashtable();
+
+ cantFast.put(new JDate2(1, 6, year,calendar).getJulianDay(), "Theophany");
+
+ // PASCHA
+ JDate2 pascha = getPascha(year,calendar);
+
+ // OTHER FASTING REGULATIONS
+ JDate2 SVIATKI_START = new JDate2(12, 25, year,calendar);
+ JDate2 SVIATKI_END = new JDate2(1, 4, year,calendar);
+ JDate2 PUB_PHAR_START = new JDate2(pascha.getJulianDay() - 70,calendar);
+ JDate2 PUB_PHAR_END = new JDate2(pascha.getJulianDay() - 63,calendar);
+ JDate2 CHEESE_START = new JDate2(pascha.getJulianDay() - 55,calendar);
+ JDate2 CHEESE_END = new JDate2(pascha.getJulianDay() - 49,calendar);
+ JDate2 LENT_START = new JDate2(pascha.getJulianDay() - 48,calendar);
+ JDate2 LENT_END = new JDate2(pascha.getJulianDay() - 1,calendar);
+ JDate2 BRIGHT_START = new JDate2(pascha.getJulianDay(),calendar);
+ JDate2 BRIGHT_END = new JDate2(pascha.getJulianDay() + 6,calendar);
+ JDate2 PENT_START = new JDate2(pascha.getJulianDay() + 49,calendar);
+ JDate2 PENT_END = new JDate2(pascha.getJulianDay() + 56,calendar);
+ JDate2 APOSTLES_START = new JDate2(pascha.getJulianDay() + 57,calendar);
+ JDate2 APOSTLES_END = new JDate2(6, 28, year,calendar);
+ JDate2 DORM_START = new JDate2(8, 1, year,calendar);
+ JDate2 DORM_END = new JDate2(8, 14, year,calendar);
+ JDate2 ADVENT_START = new JDate2(11, 15, year,calendar);
+ JDate2 ADVENT_END = new JDate2(12, 24, year,calendar);
+
+ JDate2 dummy = new JDate2(1, 1, year,calendar);
+
+ boolean leapYear=false;
+ int y =year;
+ if (y % 400 == 0)
+ {
+ leapYear =true;
+ }else if (y % 4 == 0 && y % 100 != 0 && calendar==1)
+ {
+ leapYear =true;
+ }else if (y % 4 == 0)
+ {
+ leapYear=true;
+ }
+ int numdays = leapYear ? 366 : 365;
+
+ int[] retval = new int[numdays];
+
+ int i = 0;
+
+ do
+ {
+ // figure out if this day is a fast day
+ int fast = 0;
+
+ if (mustFast.containsKey(dummy.getJulianDay()))
+ {
+ // mandatory fast
+ fast = 1;
+ }
+ else if (cantFast.containsKey(dummy.getJulianDay()))
+ {
+ // not a fast day
+ }
+ else if (dummy.compareTo(SVIATKI_START) >= 0)
+ {
+ // not a fast day
+ }
+ else if (dummy.compareTo(SVIATKI_END) <= 0)
+ {
+ // not a fast day
+ }
+ else if (dummy.compareTo(PUB_PHAR_START) >= 0 && dummy.compareTo(PUB_PHAR_END) <= 0)
+ {
+ // not a fast day
+ }
+ else if (dummy.compareTo(CHEESE_START) >= 0 && dummy.compareTo(CHEESE_END) <= 0)
+ {
+ // CHEESEFARE WEEK
+ fast = 2;
+ }
+ else if (dummy.compareTo(LENT_START) >= 0 && dummy.compareTo(LENT_END) <= 0)
+ {
+ // LENT
+ fast = 1;
+ }
+ else if (dummy.compareTo(BRIGHT_START) >= 0 && dummy.compareTo(BRIGHT_END) <= 0)
+ {
+ // BRIGHT WEEK
+ fast = 0;
+ }
+ else if (dummy.compareTo(PENT_START) >= 0 && dummy.compareTo(PENT_END) <= 0)
+ {
+ // PENTECOST WEEK
+ fast = 0;
+ }
+ else if (dummy.compareTo(APOSTLES_START) >= 0 && dummy.compareTo(APOSTLES_END) <= 0)
+ {
+ // APOSTLES' FAST
+ fast = 1;
+ }
+ else if (dummy.compareTo(DORM_START) >= 0 && dummy.compareTo(DORM_END) <= 0)
+ {
+ // DORMITION FAST
+ fast = 1;
+ }
+ else if (dummy.compareTo(ADVENT_START) >= 0 && dummy.compareTo(ADVENT_END) <= 0)
+ {
+ // ADVENT
+ fast = 1;
+ }
+ else
+ {
+ // IS THIS A WEDNESDAY OR FRIDAY?
+ fast = (dummy.getDayOfWeek() == 3 || dummy.getDayOfWeek() == 5) ? 1 : 0;
+ }
+
+ retval[i] = fast;
+ i++;
+ dummy.addDays(1);
+ } while(i < numdays);
+
+ return retval;
+
+ }
+
+ // A METHOD TO OBTAIN MAJOR FEAST DAYS FOR A PARTICULAR YEAR
+ // PARAMETERS: AN int WITH THE YEAR DESIRED
+ // RETURNS: A Hashtable OBJECT WITH THE FEASTS FOR THAT YEAR
+ // FIRST ENTRY: THE julian date of a feast
+ // SECOND ENTRY: A STRING DESCRIBING THAT FEAST
+ // THROWS: ditto
+ protected static Hashtable getFeasts(int year, OrderedHashtable dayInfo,int calendar) throws IllegalArgumentException
+ {
+ if (year < 33)
+ {
+ throw( new IllegalArgumentException("Invalid year"));
+ }
+
+ Hashtable feasts = new Hashtable();
+ LanguagePack Text=new LanguagePack(dayInfo);
+ String[] FeastNames=Text.obtainValues((String)Text.Phrases.get("Feasts"));
+ // ADD ALL THE FIXED FEASTS TO OUR HASHTABLE
+ feasts.put(new JDate2(1, 1, year,calendar).getJulianDay(), FeastNames[0]);
+ feasts.put(new JDate2(1, 6, year,calendar).getJulianDay(), FeastNames[1]);
+ feasts.put(new JDate2(6, 24, year,calendar).getJulianDay(),FeastNames[2]);
+ feasts.put(new JDate2(6, 29, year,calendar).getJulianDay(),FeastNames[3]);
+ feasts.put(new JDate2(8, 6, year,calendar).getJulianDay(), FeastNames[4]);
+ feasts.put(new JDate2(8, 15, year,calendar).getJulianDay(), FeastNames[5]);
+ feasts.put(new JDate2(8, 29, year,calendar).getJulianDay(),FeastNames[6]);
+ feasts.put(new JDate2(9, 8, year,calendar).getJulianDay(), FeastNames[7]);
+ feasts.put(new JDate2(9, 14, year,calendar).getJulianDay(), FeastNames[8]);
+ feasts.put(new JDate2(10, 1, year,calendar).getJulianDay(),FeastNames[9]);
+ feasts.put(new JDate2(11, 21, year,calendar).getJulianDay(), FeastNames[10]);
+ feasts.put(new JDate2(12, 25, year,calendar).getJulianDay(), FeastNames[11]);
+
+ // NOW ADD THE MOVEABLE FEASTS TO OUR HASHTABLE
+ JDate2 pascha = getPascha(year,calendar);
+ // DOUBLE CHECK THAT PASCHA IS NOT ON ANNUNCIATION:
+ if (pascha.equals(new JDate2(3, 25, year,calendar)))
+ {
+ feasts.put(pascha.getJulianDay(),FeastNames[12]);
+ }
+ else
+ {
+ feasts.put(pascha.getJulianDay(), FeastNames[13]);
+ feasts.put(new JDate2(3, 25, year,calendar).getJulianDay(), FeastNames[14]);
+ }
+
+ feasts.put(new JDate2(pascha.getJulianDay() + 49,calendar).getJulianDay(), FeastNames[15]);
+ feasts.put(new JDate2(pascha.getJulianDay() + 39,calendar).getJulianDay(), FeastNames[16]);
+ feasts.put(new JDate2(pascha.getJulianDay() - 7,calendar).getJulianDay(), FeastNames[17]);
+
+ // CHECK THAT MEETING OF THE LORD DOES NOT OCCUR ON THE FIRST MONDAY OF LENT
+ JDate2 meeting = new JDate2(2, 2, year,calendar);
+
+ if (JDate2.difference(pascha, meeting) == 48)
+ {
+ // MEETING OF THE LORD TRANSFERRED TO FORGIVENESS SUNDAY
+ meeting.subtractDays(1);
+ }
+
+ feasts.put(meeting.getJulianDay(), FeastNames[18]);
+
+ return feasts;
+ }
+ protected static JDate2 getPascha(int year, int calendar) throws IllegalArgumentException
+ {
+ if (year < 33)
+ {
+ throw (new IllegalArgumentException("Invalid year"));
+ }
+ if (year > 1582 && calendar == 1)
+ {
+ int a = year % 19;
+ int b = (int)Math.floor(year/100);
+ int c = year % 100;
+ int d = (int)Math.floor(b/4);
+ int e = b % 4;
+ int f = (int)Math.floor((b+8)/25);
+ int g = (int)Math.floor((b-f+1)/3);
+ int h = (19*a+b-d-g+15) % 30;
+ int i = (int)Math.floor(c/4);
+ int k = c % 4;
+ int l = (32+2*e+2*i-h-k) % 7;
+ int m = (int)Math.floor((a+11*h+22*l)/451);
+ int n = (int)Math.floor((h+l-7*m+114)/31);
+ int p = (h+l-7*m+114)%31;
+ return new JDate2(n, p+1, year,1);
+ }
+ else
+ {
+ int a = year % 4;
+ int b = year % 7;
+ int c = year % 19;
+ int d = (19 * c + 15) % 30;
+ int e = (2 * a + 4 * b - d + 34) % 7;
+ int f = (int)Math.floor((d + e + 114) / 31); //Month of pascha e.g. march=3
+ int g = ((d + e + 114) % 31) + 1; //Day of pascha in the month
+ //System.out.println("Easter on the Julian calendar is: "+year+"/"+f+"/"+g);
+ // Create a JDate object
+ return new JDate2(f, g, year,0);
+ }
+
+ }
+ protected static JDate2 getPentecost(int year,int calendar) throws IllegalArgumentException
+ {
+ if (year < 33)
+ {
+ throw (new IllegalArgumentException("Invalid year"));
+ }
+
+ JDate2 date = getPascha(year,calendar);
+
+ date.addDays(49);
+ return date;
+ }
+
}
diff --git a/Ponomar/Primes.java b/Ponomar/Primes.java
index 470f32be2..ee6d491bb 100755
--- a/Ponomar/Primes.java
+++ b/Ponomar/Primes.java
@@ -14,7 +14,7 @@
THIS MODULE CREATES THE TEXT FOR THE ORTHODOX SERVICE OF THE FIRST HOUR (PRIME)
THIS MODULE IS STILL IN THE DEVELOPMENT PHASE.
-(C) 2007, 2008 YURI SHARDT. ALL RIGHTS RESERVED.
+(C) 2007, 2008, 2024 YURI SHARDT. ALL RIGHTS RESERVED.
Updated some parts to make it compatible with the changes in Ponomar, especially the language issues!
PERMISSION IS HEREBY GRANTED TO USE, MODIFY, AND/OR REDISTRIBUTE THIS SOURCE CODE
@@ -60,7 +60,7 @@ public class Primes implements DocHandler, ActionListener, ItemListener, Propert
private String[] HelpNames;//=Text.obtainValues((String)Text.Phrases.get("Help"));
String newline = "\n";
private String strOut;
- private JDate today;
+ private JDate2 today;
private Helpers helper;
private PrimeSelector SelectorP;//=new PrimeSelector();
private PrintableTextPane output;
@@ -69,10 +69,12 @@ public class Primes implements DocHandler, ActionListener, ItemListener, Propert
private Font DefaultFont=new Font("",Font.BOLD,12); //CREATE THE DEFAULT FONT
private Font CurrentFont=DefaultFont;
private StringOp Analyse=new StringOp();
+ private String VersionControl="";
+ private Day menologion;
- public Primes(JDate date, OrderedHashtable dayInfo)
+ public Primes(JDate2 date, OrderedHashtable dayInfo)
{
Analyse.dayInfo=dayInfo;
Text=new LanguagePack(dayInfo);
@@ -265,13 +267,29 @@ else if (nday < -70)
e.printStackTrace();
}
+
+ String filenameS = Analyse.dayInfo.get("SolarPath").toString();
+ menologion = new Day(filenameS, Analyse.dayInfo);
+
+
//CHECK WHAT TYPE OF SERVICE WE ARE DEALING WITH
//POTENTIAL STREAMLINING OF THE SERVICE: ALL THE RULES HAVE NOW BEEN OBTAINED EXCEPT FOR ANY OVERRIDES
ServiceInfo ServicePrimes=new ServiceInfo("PRIME",Analyse.dayInfo);
OrderedHashtable PrimesTrial = ServicePrimes.ServiceRules();
-
+
+ /* ServiceInfo ServicePrimesM=new ServiceInfo("PRIME",Analyse.dayInfo.get("SolarPath").toString()+".xml",Analyse.dayInfo);
+ OrderedHashtable PrimesTrialM = ServicePrimesM.ServiceRules();
+ System.out.println("Information Found: "+PrimesTrialM);
+ System.out.println("Override Type: "+PrimesTrialM.get("Type").toString());
+ System.out.println("Override Troparion: "+PrimesTrialM.get("Troparion").toString());
+ */
+ /* System.out.println(PrimesTrial.get("PickT"));
+ System.out.println(PrimesTrial.get("Troparion"));
+ System.out.println(Troparion1);
+ */
Type=PrimesTrial.get("Type").toString();
LentenK=(String) PrimesTrial.get("LENTENK");
+ VersionControl=Type+".";
String PrimesAdd1=new String();
@@ -283,7 +301,7 @@ else if (nday < -70)
else if(Type.equals("Paschal"))
{
- return ReadPrime.startService(ServicesFileName+"PaschalHours.xml");
+ return ReadPrime.startService(ServicesFileName+"PaschalHours.xml")+"\r\n"+VersionControl;
}
//I WOULD THEN NEED TO READ THE MENOLOGION, BUT I WILL NOT DO SO RIGHT NOW.
@@ -312,7 +330,70 @@ else if(Type.equals("Paschal"))
//CREATE THE FIRST TROPAR (BEFORE THE Glory...) PART, IF ANY
//CREATE THE SECOND TROPAR (NORMAL)
//APPROPRIATE TROPAR STILL NEEDS TO BE DETERMINED!!
- if(Troparion1 != null)
+ String options=PrimesTrial.get("Troparion").toString();
+ String amount=PrimesTrial.get("PickT").toString();
+ OrderedHashtable Troparia=troparia(options, amount);
+ int amountI=Integer.parseInt(amount);
+ int amountA=Troparia.size(); //How many troparia did we actually find, we may find fewer than allowed.
+
+
+ //When properly done, this will give me the maximum allowed. But what if there are two allowed, but not available!?!
+ if (Math.min(amountA, amountI)==2){
+ BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/languages/"+Analyse.dayInfo.get("LS").toString()+ServicesFileName+"Var/PTrop1.xml"),"UTF8"));
+ GetID DataID=(GetID) Troparia.get(1);
+ DataID.Header="1";
+ DataID.ToneA="1";
+ DataID.RedFirst="1";
+ DataID.NewLine="1";
+ DataID.Who="R";
+ String Data="\r\n\r\n"+DataID.getHTML()+"\r\n\r\n";
+ out.write(Data);
+ out.close();
+ VersionControl+="T{"+DataID.GetFullID();
+ DataID=(GetID) Troparia.get(2);
+ DataID.Header="1";
+ DataID.ToneA="1";
+ DataID.RedFirst="1";
+ DataID.NewLine="1";
+ DataID.Who="R";
+ Data="\r\n\r\n"+DataID.getHTML()+"\r\n\r\n";
+
+ out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/languages/"+Analyse.dayInfo.get("LS").toString()+ServicesFileName+"Var/PTrop2.xml"),"UTF8"));
+ out.write(Data);
+ out.close();
+ VersionControl+=","+DataID.GetFullID()+"}.";
+ }else if (Math.min(amountA, amountI)==1){
+ BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/languages/"+Analyse.dayInfo.get("LS").toString()+ServicesFileName+"Var/PTrop2.xml"),"UTF8"));
+ GetID DataID=(GetID) Troparia.get(1);
+ // System.out.println(DataID);
+ DataID.Header="1";
+ DataID.ToneA="1";
+ DataID.RedFirst="1";
+ DataID.NewLine="1";
+ DataID.Who="R";
+ DataID.Times="1";
+ VersionControl+="T{"+DataID.GetFullID()+"}.";
+ String Data="\r\n\r\n"+DataID.getHTML()+"\r\n\r\n";
+ out.write(Data);
+ out.close();
+ // System.out.println("TESTING COMPLETED");
+ //Clearing the other Troparion file.
+ out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/languages/"+Analyse.dayInfo.get("LS").toString()+ServicesFileName+"Var/PTrop1.xml"),"UTF8"));
+ out.write("");
+ out.close();
+ }else {
+ //We are in big trouble: no troparia were found, but we need at least one!
+ BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/languages/"+Analyse.dayInfo.get("LS").toString()+ServicesFileName+"Var/PTrop2.xml"),"UTF8"));
+ GetID DataID=(GetID) Troparia.get(1);
+ // System.out.println(DataID);
+ String Data="\r\n\r\n\r\n\r\n";
+ out.write(Data);
+ out.close();
+ System.out.println("Error reading troparia: None found!");
+
+ }
+ /* OLD VERSION
+ if(Troparion1 != null)
{
if(Troparion2 != null)
{
@@ -331,22 +412,62 @@ else if(Type.equals("Paschal"))
String Data="\r\n\r\n\r\n\r\n";
out.write(Data);
out.close();
- }
+ }*/
+
+ if(Type.equals("HolyWeek"))
+ {
+ Analyse.dayInfo.put("PFlag2",3);
+ }
}
//GET AND CREATE THE APPRORIATE KONTAKION
//APROPRIATE KONTAKION MUST STILL BE CREATED!
- if (Kontakion1 != null)
+ if (Type.equals("Lenten")){
+ if (Kontakion1 != null)
+ {
+
+ //Old Version, still only works for the Lenten Part
+ BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/languages/"+Analyse.dayInfo.get("LS").toString()+ServicesFileName+"Var/PKont1.xml"),"UTF8"));
+ String Data="\r\n\r\n\r\n\r\n";
+ out.write(Data);
+ out.close();
+ }
+ }else
+ {
+ String optionsK=PrimesTrial.get("Kontakion").toString();
+ String amountK=PrimesTrial.get("PickK").toString();
+ OrderedHashtable Troparia=contacia(optionsK, amountK);
+ int amountIK=Integer.parseInt(amountK);
+ // if (Kontakion1 != null)
{
- BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/languages/"+Analyse.dayInfo.get("LS").toString()+ServicesFileName+"Var/PKont1.xml"),"UTF8"));
+ GetID DataID=(GetID) Troparia.get(1);
+ // System.out.println(DataID);
+ DataID.Header="1";
+ DataID.ToneA="1";
+ DataID.RedFirst="1";
+ DataID.NewLine="1";
+ DataID.Who="R";
+ DataID.Times="1";
+ VersionControl+="K{"+DataID.GetFullID()+"}";
+
+ BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/languages/"+Analyse.dayInfo.get("LS").toString()+ServicesFileName+"Var/PKont1.xml"),"UTF8"));
+ String Data="\r\n\r\n"+DataID.getHTML()+"\r\n\r\n";
+ out.write(Data);
+ out.close();
+ /*Old Version, still only works for the Lenten Part
+ BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Ponomar/languages/"+Analyse.dayInfo.get("LS").toString()+ServicesFileName+"Var/PKont1.xml"),"UTF8"));
String Data="\r\n\r\n\r\n\r\n";
out.write(Data);
out.close();
+ */
+ //VersionControl+="K{"+DataID.Id+"}";
}
+ }
//System.out.println("Primes Case A: ");
- strOut=ReadPrime.startService(ServicesFileName + "Prime.xml")+"
";
+ strOut=ReadPrime.startService(ServicesFileName + "Prime.xml")+"