if not modules then modules = { } end modules ['m-bibles'] = {
    version   = 1.001,
    comment   = "companion to m-bibles.mkxl",
    author    = "Hans Hagen & Mikael Sundqvist",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files"
}

local tonumber = tonumber
local context = context

moduledata        = moduledata or { }
local bibles      = { }
moduledata.bibles = bibles

bibles.books = {
    english = {
        "Genesis", "Exodus", "Leviticus", "Numbers", "Deuteronomy", "Joshua",
        "Judges", "Ruth", "1 Samuel", "2 Samuel", "1 Kings", "2 Kings",
        "1 Chronicles", "2 Chronicles", "Ezra", "Nehemiah", "Esther", "Job",
        "Psalms", "Proverbs", "Ecclesiastes", "Song of Songs", "Isaiah",
        "Jeremiah", "Lamentations", "Ezekiel", "Daniel", "Hosea", "Joel", "Amos",
        "Obadiah", "Jonah", "Micah", "Nahum", "Habakkuk", "Zephaniah", "Haggai",
        "Zechariah", "Malachi",
        --
        "Matthew", "Mark", "Luke", "John", "Acts", "Romans", "1 Corinthians",
        "2 Corinthians", "Galatians", "Ephesians", "Philippians", "Colossians",
        "1 Thessalonians", "2 Thessalonians", "1 Timothy", "2 Timothy", "Titus",
        "Philemon", "Hebrews", "James", "1 Peter", "2 Peter", "1 John", "2 John",
        "3 John", "Jude", "Revelation",
    },
    polish = {
--            "Rodzaju", "Wyjścia", "Kapłańska", "Liczb", "Powtórzonego Prawa",
        "Rodzaxu", "Wyjścia", "Kapłańska", "Liczb", "Powtórzonego Prawa",
        "Jozuego", "Sędziów", "Ruty", "1. Samuelowa", "2. Samuelowa",
        "1. Królewska", "2. Królewska", "1. Kronik", "2. Kronik", "Ezdraszowa",
        "Nehemijaszowa", "Estery", "Ijobowa", "Psalmów",
        "Przypowieści Salomonowych", "Kaznodziei Salomona", "Pieśń Salomona",
        "Izajasz", "Jeremijasz", "Treny Jeremijaszowe", "Ezechyjel",
        "Danijel", "Ozeasza", "Joel", "Amos", "Abdyjasz", "Jonasz",
        "Micheasz", "Nahum", "Abakuk", "Sofonijasz", "Aggieusz",
        "Zacharyjasz", "Malachyjasz",
        --
        "Mateusza", "Marka", "Łukasza", "Jana", "Dzieje Apostolskie",
        "Rzymian", "1. Koryntów", "2. Koryntów", "Galatów", "Efezów",
        "Filipensów", "Kolosensów", "1. Tesalonicensów", "2. Tesalonicensów",
        "1. Tymoteusza", "2. Tymoteusza", "Tytusa", "Filemona", "Żydów",
        "Jakóba", "1. Piotra", "2. Piotra", "1. Jana", "2. Jana", "3. Jana",
        "Judasa", "Objawienie Jana",
    },
    swedish = { -- according to bibeln.se
        "Första Moseboken", "Andra Moseboken", "Tredje Moseboken",
        "Fjärde Moseboken", "Femte Moseboken", "Josua", "Domarboken", "Rut",
        "Första Samuelsboken", "Andra Samuelsboken", "Första Kungaboken",
        "Andra Kungaboken", "Första Krönikeboken", "Andra Krönikeboken",
        "Esra", "Nehemjah", "Ester", "Job", "Psaltaren", "Ordspråksboken",
        "Predikaren", "Höga visan", "Jesaja", "Jeremia", "Klagovisorna",
        "Hesekiel", "Daniel", "Hosea", "Joel", "Amos", "Obadja", "Jona",
        "Mika", "Nahum", "Habackuk", "Sefanja", "Haggaj", "Sakarja",
        "Malaki",
        --
        "Matteus", "Markus", "Lukas", "Johannes", "Apostlagärningarna",
        "Romarbrevet", "Första Korinthierbrevet", "Andra Korinthierbrevet",
        "Galaterbrevet", "Efesierbrevet", "Filipperbrevet", "Kolosserbrevet",
        "Första Thessalonikerbrevet", "Andra Thessalonikerbrevet",
        "Första Timotheosbrevet", "Andra Timotheosbrevet", "Titusbrevet",
        "Filemonbrevet", "Hebreerbrevet", "Jakobsbrevet",
        "Första Petrusbrevet", "Andra Petrusbrevet", "Första Johannesbrevet",
        "Andra Johannesbrevet", "Tredje Johannesbrevet", "Judasbrevet",
        "Uppenbarelseboken",
    },
    dutch = {
        "Genesis", "Exodus", "Leviticus", "Numeri", "Deuteronomium", "Jozua",
        "Rechters", "Ruth", "1 Samuel", "2 Samuel", "1 Koningen",
        "2 Koningen", "1 Kronieken", "2 Kronieken", "Ezra", "Nehemia", "Ester",
        "Job", "Psalmen", "Spreuken", "Prediker", "Hooglied", "Jesaja",
        "Jeremia", "Klaagliederen", "Ezechiël", "Daniël", "Hosea", "Joël", "Amos",
        "Obadja", "Jona", "Micha", "Nahum", "Habakuk", "Sefanja", "Haggai", "Zacharia",
        "Maleachi",
        --
        "Matteüs", "Marcus", "Lucas", "Johannes", "Handelingen", "Romeinen",
        "1 Korintiërs", "2 Korintiërs", "Galaten", "Efeziërs", "Filippenzen",
        "Kolossenzen", "1 Tessalonicenzen", "2 Tessalonicenzen", "1 Timoteüs",
        "2 Timoteüs", "Titus", "Filemon", "Hebreeën", "Jakobus", "1 Petrus",
        "2 Petrus", "1 Johannes", "2 Johannes", "3 Johannes", "Judas",
        "Openbaring van Johannes",
    }
}

bibles.testaments = {
    english = {
        Old = "Old testament",
        New = "New testament",
    },
    polish = {
        Old = "Starego testamentu",
        New = "Nowego testamentu",
    },
    swedish = {
        Old = "Gamla testamentet",
        New = "Nya testamentet",
    },
    dutch = {
        Old = "Oude testament",
        New = "Nieuwe testament",
    },
}

table.setmetatableindex(bibles.books, bibles.books.english)
table.setmetatableindex(bibles.testaments, bibles.testaments.english)

bibles.biblefiles = table.setmetatableindex {
    title      = "Bible",
    books      = bibles.books.english,
    testaments = bibles.testaments.english,
    chapter    = "Chapter",
}

bibles.biblefiles["EnglishKJBible.xml"] = {
    filename   = "EnglishKJBible.xml",
    title      = "English King James",
    books      = bibles.books.english,
    testaments = bibles.testaments.english,
    chapter    = "Chapter",
}

bibles.biblefiles["PolishBible.xml"] = {
    filename   = "PolishBible.xml",
    title      = "Polish Biblia Warszawska 1975",
    books      = bibles.books.polish,
    testaments = bibles.testaments.polish,
    chapter    = "Rozdział",
}

bibles.biblefiles["DutchBible.xml"] = {
    filename   = "DutchBible.xml",
    title      = "Nederlandse Statenvertaling",
    books      = bibles.books.dutch,
    testaments = bibles.testaments.dutch,
    chapter    = "Hoofdstuk",
}

bibles.biblefiles["SwedishBible.xml"] = {
    filename   = "SwedishBible.xml",
    title      = "Svenska 1917",
    books      = bibles.books.swedish,
    testaments = bibles.testaments.swedish,
    chapter    = "Kapitel",
}

bibles.biblefiles["HebrewBible.xml"] = {
    filename   = "HebrewBible.xml",
    title      = "Hebrew Bible Modern 1977",
    books      = bibles.books.hebrew,
    books      = bibles.books.english,
    testaments = bibles.testaments.hebrew,
    testaments = bibles.testaments.english,
    chapter    = "Chapter",
}

bibles.biblefiles["Swedish2015Bible.xml"] = {
    filename   = "Swedish2015Bible.xml",
    title      = "Svenska 2015",
    books      = bibles.books.swedish,
    testaments = bibles.testaments.swedish,
    chapter    = "Kapitel",
}

bibles.biblefiles["Swedish2000Bible.xml"] = {
    filename   = "Swedish2000Bible.xml",
    title      = "Svenska 2000",
    books      = bibles.books.swedish,
    testaments = bibles.testaments.swedish,
    chapter    = "Kapitel",
}

bibles.biblefiles["SwedishFolkBible.xml"] = {
    filename   = "SwedishFolkBible.xml",
    title      = "Svenska folkbibln 1998",
    books      = bibles.books.swedish,
    testaments = bibles.testaments.swedish,
    chapter    = "Kapitel",
}

bibles.biblefiles["SwedishSFBBible.xml"] = {
    filename   = "SwedishSFBBible.xml",
    title      = "Svenska folkbibln 2015",
    books      = bibles.books.swedish,
    testaments = bibles.testaments.swedish,
    chapter    = "Kapitel",
}

if context then

    local biblefiles = bibles.biblefiles

    interfaces.implement {
        name      = "BibleSetFile",
        public    = true,
        arguments = "2 strings",
        actions   = function(bibleindex,biblefile)
            biblefiles[bibleindex] = biblefiles[biblefile]
        end
    }

    interfaces.implement {
        name      = "BibleFile",
        public    = true,
        arguments = "string",
        actions   = function(bibleindex)
--         print(biblefiles[bibleindex].filename)
            context(biblefiles[bibleindex].filename)
        end
    }

    interfaces.implement {
        name      = "BibleTitleName",
        public    = true,
        arguments = "string",
        actions   = function(biblefile)
            context(biblefiles[biblefile].title)
        end
    }

    interfaces.implement {
        name    = "BibleTestamentName",
        public  = true,
        arguments = "2 strings",
        actions = function(biblefile,biblename)
            context(biblefiles[biblefile].testaments[biblename])
        end
    }

    interfaces.implement {
        name    = "BibleBookName",
        public  = true,
        arguments = "2 strings",
        actions = function(biblefile,biblebook)
            context(biblefiles[biblefile].books[tonumber(biblebook)])
        end
    }

    interfaces.implement {
        name    = "BibleChapterName",
        public  = true,
        arguments = "string",
        actions = function(biblefile)
            context(biblefiles[biblefile].chapter)
        end
    }

end

return bibles
