<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs
	title="NLP Editor"
	author_email="workspace@jiscmail.ac.uk"
	author="Universität Göttingen"
	description="NLP Editor"
	screenshot="https://www.uni-trier.de/fileadmin/templates/inc/logo_universitaet-trier.gif"
	thumbnail="https://www.uni-trier.de/fileadmin/templates/inc/logo_universitaet-trier.gif"
        scrolling="false"
   >
<Optional feature="pubsub-2">
  <Param name="topics">
    <![CDATA[ 
    <Topic title="Transcription Saved" name="interedition.transcription.saved"
            description="Transcription has been saved" type="void"
            subscribe="true"/>
    ]]>
  </Param>
</Optional>
<Optional feature="dynamic-height"/>
<Require feature="opensocial-0.8"/>
</ModulePrefs>

<UserPref name="transcriptionOwner" datatype="enum" display_name="Transcription Owner" default_value="user">
	<EnumValue value="user" display_value="Current User"/>
	<EnumValue value="project" display_value="Current Project"/>
</UserPref>

<UserPref name="height" datatype="enum" display_name="Gadget Height" default_value="550">
	<EnumValue value="400" display_value="Short"/>
	<EnumValue value="550" display_value="Medium"/>
	<EnumValue value="700" display_value="Tall"/>
</UserPref>
<UserPref name="baseText" datatype="enum" display_name="Base Text" default_value="Language Dependent">
<EnumValue value="Language Dependent" display_value="Language Dependent"/>
<EnumValue value="AB" display_value="The Apostles' Bible"/><EnumValue value="ABP" display_value="Apostolic Bible Polyglot English Text"/><EnumValue value="ABPGRK" display_value="Apostolic Bible Polyglot Greek Text"/><EnumValue value="ACV" display_value="A Conservative Version"/><EnumValue value="AKJV" display_value="American King James Version"/><EnumValue value="ASV" display_value="American Standard Version (1901)"/><EnumValue value="Afr1953" display_value="1933/1953 Afrikaans Bybel"/><EnumValue value="Alb" display_value="Albanian Bible"/><EnumValue value="Aleppo" display_value="Aleppo Codex"/><EnumValue value="Anderson" display_value="Henry Tompkins Anderson’s 1864 New Testament"/><EnumValue value="Antoniades" display_value="Antoniades Patriarchal Edition (1904/1912)"/><EnumValue value="AraNAV" display_value="New Arabic Version (Ketab El Hayat)"/><EnumValue value="AraSVD" display_value="Smith and van Dyck's al-Kitab al-Muqaddas (Arabic Bible)"/><EnumValue value="ArmEastern" display_value="Eastern Armenian Bible"/><EnumValue value="ArmWestern" display_value="1853 Western Armenian NT"/><EnumValue value="Azeri" display_value="مقدَس کتاب آذربايجان ديلی"/><EnumValue value="BBE" display_value="1949/1964 Bible in Basic English"/><EnumValue value="BSB" display_value="Berean Standard Bible"/><EnumValue value="BWE" display_value="Bible in Worldwide English"/><EnumValue value="BasHautin" display_value="1571 Navarro-Labourdin Basque NT"/><EnumValue value="BeaMRK" display_value="The Gospel of Mark in Beaver (Danezaa)"/><EnumValue value="Bela" display_value="Belarusian Bible"/><EnumValue value="BohairicBible" display_value="Bohairic Bible - Askeland"/><EnumValue value="BretonNT" display_value="Breton New Testament (Koad 21)"/><EnumValue value="BulCarigradNT" display_value="Bulgarian New Testament from 1914, known as 'Tsarigrad Edition'"/><EnumValue value="BulVeren" display_value="Veren’s Contemporary Bible"/><EnumValue value="BurCBCM" display_value="ဤဘာသာပြန်ကျမ်းကိုကက်သလစ်ဆရာတော်များရုံးချုပ်ရှိ  သမမ္မာ ကျမ်းစာတမန်တော်လုပ်ငန်းကော်မစ်ရှင်မှပံ့ပိုးပေးပါသည်။"/><EnumValue value="BurJudson" display_value="1835 Judson Burmese Bible"/><EnumValue value="Byz" display_value="The New Testament in the Original Greek: Byzantine Textform 2013"/><EnumValue value="CPDV" display_value="Catholic Public Domain Version"/><EnumValue value="CSlElizabeth" display_value="1757 Church Slavonic Elizabeth Bible"/><EnumValue value="Calo" display_value="El Evangelio segun S. Lucas, traducido al Romaní, ó dialecto de los Gitanos de España"/><EnumValue value="CebPinadayag" display_value="Cebuano Pinadayag"/><EnumValue value="Che1860" display_value="Cherokee New Testament (1860) with Sequoyah transliterated forms"/><EnumValue value="ChiNCVs" display_value="新译本"/><EnumValue value="ChiNCVt" display_value="新譯本"/><EnumValue value="ChiSB" display_value="思高本 (Sīgāo Běn), 聖經：思高聖經學會譯釋"/><EnumValue value="ChiUn" display_value="和合本 (繁體字)"/><EnumValue value="ChiUnL" display_value="聖經 (文理和合)"/><EnumValue value="ChiUns" display_value="和合本 (简体字)"/><EnumValue value="Common" display_value="The Common Edition: New Testament"/><EnumValue value="CopNT" display_value="The Coptic New Testament"/><EnumValue value="CopSahBible2" display_value="Sahidic Bible 2"/><EnumValue value="CopSahHorner" display_value="Sahidic Coptic New Testament, ed. by G. W. Horner"/><EnumValue value="CopSahidicMSS" display_value="The Sahidica Manuscripts"/><EnumValue value="CopSahidica" display_value="Sahidica - A New Edition of the New Testament in Sahidic Coptic"/><EnumValue value="CroSaric" display_value="Hrvatska Biblija Ivana Šarića"/><EnumValue value="CzeB21" display_value="Czech Bible, Překlad 21. století včetně deuterokanonických knih"/><EnumValue value="CzeBKR" display_value="Czech Bible Kralicka"/><EnumValue value="CzeCEP" display_value="Czech Ekumenicky Cesky preklad"/><EnumValue value="CzeCSP" display_value="Czech Český studijní překlad"/><EnumValue value="DRC" display_value="Douay-Rheims Bible, Challoner Revision"/><EnumValue value="DaNT1819" display_value="Danish New Testament from 1819 with original orthography"/><EnumValue value="DaOT1871NT1907" display_value="Danish OT1871 + NT1907 with original orthography"/><EnumValue value="DaOT1931NT1907" display_value="Danish OT1931 + NT1907 with original orthography"/><EnumValue value="Darby" display_value="Darby Bible (1889)"/><EnumValue value="Dari" display_value="Dari Translation"/><EnumValue value="DutSVV" display_value="Dutch Statenvertaling Bijbel"/><EnumValue value="DutSVVA" display_value="De ganse Heilige Schrift bevattende al de kanonieke boeken van het Oude en Nieuwe Testament, met de apocriefe (deuterocanonieke) boeken"/><EnumValue value="ECM" display_value="Editio Critica Maior"/><EnumValue value="EMTV" display_value="English Majority Text Version, 2012 Edition with Greek Explanatory Notes"/><EnumValue value="Elzevir" display_value="Elzevir Textus Receptus (1624)"/><EnumValue value="Esperanto" display_value="Esperanto Londona Biblio"/><EnumValue value="Est" display_value="Estonian Bible"/><EnumValue value="Etheridge" display_value="The Peschito Syriac New Testament: Translated into English by John Wesley Etheridge"/><EnumValue value="Eusebian_vs" display_value="Eusebian Numbers By Verse"/><EnumValue value="FarHezareNoh" display_value="Tarjumeh-ye Hezare Noh"/><EnumValue value="FarOPV" display_value="Persian Holy Bible (Tarjumeh-ye Ghadeem)"/><EnumValue value="FarTPV" display_value="Today's Persian Version (Mojdeh Baraye Asre Jadid)"/><EnumValue value="FinBiblia" display_value="Finnish Biblia (1776)"/><EnumValue value="FinPR" display_value="Finnish Pyhä Raamattu (1933/1938)"/><EnumValue value="FinPR92" display_value="Finnish Pyhä Raamattu (1992)"/><EnumValue value="FinRK" display_value="Raamattu Kansalle (2012)"/><EnumValue value="FinSTLK2017" display_value="Pyhä Raamattu (STLK 2017)"/><EnumValue value="FreBBB" display_value="French Bible Bovet Bonnet (1900)"/><EnumValue value="FreBDM1707" display_value="Bible David Martin (1707)"/><EnumValue value="FreBDM1744" display_value="Bible David Martin (1744)"/><EnumValue value="FreCrampon" display_value="La Bible Augustin Crampon 1923"/><EnumValue value="FreGeneve1669" display_value="Le Nouveau Testament de la Bible de Genève de 1669"/><EnumValue value="FreJND" display_value="Bible J.N. Darby in French with Strong's numbers"/><EnumValue value="FreKhan" display_value="La Bible de Zadoc Khan"/><EnumValue value="FreLSN1872" display_value="Bible de Lausanne (1872)"/><EnumValue value="FreLXX" display_value="Traduction de la LXX par P. GIGUET et autres traducteurs, 1872."/><EnumValue value="FreLXXGiguet" display_value="Traduction de la LXX par Pierre GIGUET et autres traducteurs, 1872."/><EnumValue value="FreOltramare1874" display_value="Le Nouveau Testament Version Oltramare 1874"/><EnumValue value="FrePGR" display_value="Bible Perret-Gentil et Rilliet"/><EnumValue value="FreSegond1910" display_value="Bible Louis Segond (1910)"/><EnumValue value="FreStapfer1889" display_value="Le Nouveau Testament traduction de Stapfer - 1889"/><EnumValue value="FreSynodale1921" display_value="Le Nouveau Testament Version Synodale 1921 et le livre des Psaumes"/><EnumValue value="FreVulgGlaire" display_value="Vulgate en Français par l’Abbé Glaire avec la traduction de Migne pour les Apocryphes."/><EnumValue value="Geez" display_value="Ge’ez Bible"/><EnumValue value="Geneva1599" display_value="Geneva Bible (1599)"/><EnumValue value="GerAlbrecht" display_value="German Albrecht Neues Testament und Psalmen"/><EnumValue value="GerBoLut" display_value="Deutsch Bolsingerߴs Luther 1545 Bibel (moderne Rechtschreibung)"/><EnumValue value="GerElb1871" display_value="German Elberfelder (1871) (sogenannt)"/><EnumValue value="GerElb1905" display_value="German Darby Unrevidierte Elberfelder (1905)"/><EnumValue value="GerGruenewald" display_value="1924 Grünewaldbibel"/><EnumValue value="GerLeoNA28" display_value="Leonberger Bibel, NT (NA28)"/><EnumValue value="GerLeoRP18" display_value="Leonberger Bibel, NT (RP19)"/><EnumValue value="GerMenge" display_value="Menge-Bibel (1939)"/><EnumValue value="GerNeUe" display_value="Neue evangelistische Übersetzung"/><EnumValue value="GerOffBiSt" display_value="Offene Bibel - Studienfassung"/><EnumValue value="GerReinhardt" display_value="German Reinhardt Evangelien"/><EnumValue value="GerSch" display_value="Schlachter Bibel (1951)"/><EnumValue value="GerTafel" display_value="German Tafelbibel (1911)"/><EnumValue value="GerTextbibel" display_value="Deutsch Textbibel (1906)"/><EnumValue value="GerZurcher" display_value="Deutsche Zürcher Bibel von 1931."/><EnumValue value="Godbey" display_value="1902 William Baxter Godbey NT"/><EnumValue value="GodsWord" display_value="GOD'S WORD to the Nations"/><EnumValue value="GreVamvas" display_value="Neophytos Vamvas's translation of the Holy Bible into modern Greek (1850)"/><EnumValue value="Haitian" display_value="Haitian Creole Bible"/><EnumValue value="Haweis" display_value="Thomas Haweis 1795 New Testament"/><EnumValue value="HebDelitzsch" display_value="Hebrew New Testament with Niqqud, based on Delitzsch's translation"/><EnumValue value="HebModern" display_value="Modern Hebrew Bible"/><EnumValue value="HinERV" display_value="पवित्र बाइबल"/><EnumValue value="HunIMIT" display_value="Az Izraelita-Magyar Irodalmi Társaság (IMIT) Bibliája (zsidó)"/><EnumValue value="HunKNB" display_value="Káldi-Neovulgáta (katolikus) 2013"/><EnumValue value="HunKar" display_value="Revideált Károli Biblia 1908"/><EnumValue value="HunRUF" display_value="A Magyar Bibliatársulat Revideált Újfordítású Bibliája"/><EnumValue value="HunUj" display_value="A Magyar Bibliatársulat Újfordítású Bibliája"/><EnumValue value="ISV" display_value="International Standard Version"/><EnumValue value="IriODomhnuill" display_value="A modern Irish New Testament (Luke preview)"/><EnumValue value="ItaDio" display_value="Italian Giovanni Diodati Bibbia 1649"/><EnumValue value="ItaRive" display_value="Italian Riveduta Bibbia (1927)"/><EnumValue value="JPS" display_value="Jewish Publication Society Old Testament"/><EnumValue value="JapBungo" display_value="明治元訳「舊約聖書」(1953年版) 大正改訳「新約聖書"/><EnumValue value="JapDenmo" display_value="Japanese Denmo 電網聖書"/><EnumValue value="JapKougo" display_value="Japanese Kougo-yaku 口語訳「聖書」(1954/1955年版)"/><EnumValue value="JapLifeline" display_value="Lifeline Japanese New Testament ライフライン訳新約聖書（2013年）"/><EnumValue value="JapRaguet" display_value="Japanese Raguet-yaku ラゲ訳「我主イエズスキリストの新約聖書」(1910年版)"/><EnumValue value="Jubilee2000" display_value="English Jubilee 2000 Bible"/><EnumValue value="KJV" display_value="King James Version (1769) with Strongs Numbers and Morphology  and CatchWords"/><EnumValue value="KJVA" display_value="King James Version (1769) with Strongs Numbers and Morphology and CatchWords, including Apocrypha (without glosses)"/><EnumValue value="KJVPCE" display_value="King James Version: Pure Cambridge Edition"/><EnumValue value="KLV" display_value="Klingon Language Version of the World English Bible"/><EnumValue value="Kapingamarangi" display_value="The New Testament in the Kapingamarangi language"/><EnumValue value="Kaz" display_value="Киелі кітап"/><EnumValue value="Kekchi" display_value="K'ekchi' Bible"/><EnumValue value="KhmerNT" display_value="Khmer Christian Bible"/><EnumValue value="KorHKJV" display_value="Hangul King James Version"/><EnumValue value="KorRV" display_value="개역성경"/><EnumValue value="KswSKMB" display_value="S'gaw Karen Mason Bible 1853"/><EnumValue value="KtuVB" display_value="Masonama ya Santu par le Père Widart et l’équipe de Verbum Bible Kinshasa."/><EnumValue value="LEB" display_value="The Lexham English Bible"/><EnumValue value="LITV" display_value="Green's Literal Translation"/><EnumValue value="LO" display_value="The Living Oracles NT"/><EnumValue value="LXX" display_value="Septuagint, Morphologically Tagged Rahlfs'"/><EnumValue value="LXXCATSS" display_value="LXX CATSS with Morphology"/><EnumValue value="LXXGoe" display_value="Septuagint, Göttingen"/><EnumValue value="LXXGoeApp" display_value="Septuagint, Göttingen, Apparatus"/><EnumValue value="LXXRH" display_value="Septuagint, Rahlfs-Hanhart"/><EnumValue value="LXXRHApp" display_value="Septuagint, Rahlfs-Hanhart"/><EnumValue value="Latvian" display_value="Latvian New Testament"/><EnumValue value="LinVB" display_value="Liloba lya Nzambe, édition Verbum Bible"/><EnumValue value="LtKBB" display_value="Lithuanian Bible"/><EnumValue value="LvGluck8" display_value="Latvian Glück 8th edition"/><EnumValue value="MKJV" display_value="Green's Modern King James Version"/><EnumValue value="MOTBTR" display_value="MOTB - Greek Paul Basetext"/><EnumValue value="Mal1910" display_value="Sathyavedapusthakam (Malayalam Bible) published in 1910"/><EnumValue value="ManxGaelic" display_value="Manx Gaelic Scripture Portions"/><EnumValue value="Maori" display_value="Maori Bible"/><EnumValue value="MapM" display_value="מקרא על פי המסורה (Miqra `al pi ha-Mesorah)"/><EnumValue value="Mg1865" display_value="Baiboly Malagasy (1865)"/><EnumValue value="MonKJV" display_value="Mongolian King James Version"/><EnumValue value="Montgomery" display_value="Montgomery New Testament"/><EnumValue value="MorphGNT" display_value="Morphologically Parsed Greek New Testament based on the SBLGNT"/><EnumValue value="Murdock" display_value="James Murdock's Translation of the Syriac Peshitta"/><EnumValue value="NA28" display_value="Nestle-Aland, Novum Testamentum Graece, 28th Revised Edition"/><EnumValue value="NA28DBG" display_value="Nestle-Aland, Novum Testamentum Graece, 28th Revised Edition"/><EnumValue value="NASB" display_value="New American Standard Bible - NASB 2020"/><EnumValue value="NASB1995" display_value="New American Standard Bible - NASB 1995"/><EnumValue value="NASB1995old" display_value="New American Standard Bible - NASB 1995 pre-2021 Lockman update"/><EnumValue value="NETfree" display_value="Free version of New English Translation with limited notes"/><EnumValue value="NETtext" display_value="New English Translation text only with footnote markers"/><EnumValue value="NHEB" display_value="New Heart English Bible"/><EnumValue value="NHEBJE" display_value="New Heart English Bible: Jehovah Edition"/><EnumValue value="NHEBME" display_value="New Heart English Bible: Messianic Edition"/><EnumValue value="Ndebele" display_value="Ndebele Bible"/><EnumValue value="Nestle1904" display_value="Nestle GNT 1904"/><EnumValue value="NlCanisius1939" display_value="Petrus Canisius Translation"/><EnumValue value="NorBroed" display_value="Brød Nye Testamente"/><EnumValue value="NorSMB" display_value="Studentmållagsbibelen frå 1921"/><EnumValue value="Norsk" display_value="Bibelen på Norsk (1930)"/><EnumValue value="NorthernAzeri" display_value="Northern Azeri Translation"/><EnumValue value="Noyes" display_value="1869 Noyes Translation"/><EnumValue value="OEB" display_value="Open English Bible (US Spelling)"/><EnumValue value="OEBcth" display_value="Open English Bible (Commonwealth Spelling)"/><EnumValue value="OSHB" display_value="Open Scriptures Hebrew Bible"/><EnumValue value="OrthJBC" display_value="The Orthodox Jewish Brit Chadasha"/><EnumValue value="OxfordTR" display_value="1873 Oxford Textus Receptus Gospel of John"/><EnumValue value="Peshitta" display_value="Syriac Peshitta"/><EnumValue value="PohnOld" display_value="Old Public Domain Pohnpeian Bible"/><EnumValue value="Pohnpeian" display_value="Bible in Pohnpeian language"/><EnumValue value="PolGdanska" display_value="Polish Biblia Gdanska (1881)"/><EnumValue value="PolUGdanska" display_value="Updated Gdańsk Bible"/><EnumValue value="PorAlmeida1911" display_value="De 1911 Biblia Sagrada Traduzida em Portuguez Por João Ferreeira D'Almeida"/><EnumValue value="PorBLivre" display_value="Bíblia Livre"/><EnumValue value="PorBLivreTR" display_value="Bíblia Livre - Textus Receptus"/><EnumValue value="PorCap" display_value="Bíblia Sagrada (Capuchinhos)"/><EnumValue value="PorNVA" display_value="Bíblia Nova Versão de Acesso Livre"/><EnumValue value="PotLykins" display_value="1833 Potawatomi Matthew and Acts"/><EnumValue value="RKJNT" display_value="Revised King James New Testament"/><EnumValue value="RLT" display_value="Revised Literal Translation (2018) of the King James Version with Strongs Numbers and Morphology"/><EnumValue value="RNKJV" display_value="Restored Name King James Version"/><EnumValue value="RWebster" display_value="Revised Webster Version (1833)"/><EnumValue value="RecVer" display_value="Text Only Recovery Version (no outlines)"/><EnumValue value="RomCor" display_value="Cornilescu Bible in Romanian language"/><EnumValue value="Rotherham" display_value="The Emphasised Bible by J. B. Rotherham"/><EnumValue value="RusCARS" display_value="Смысловой перевод Таурата, Книги Пророков, Забура и Инджила."/><EnumValue value="RusCARSA" display_value="Смысловой перевод Таурата, Книги Пророков, Забура и Инджила."/><EnumValue value="RusCARST" display_value="Смысловой перевод Таврота, Книги Пророков, Забура и Инджила."/><EnumValue value="RusMakarij" display_value="The Pentateuch of Moses in Russian"/><EnumValue value="RusSynodal" display_value="Синодального Перевода Библии"/><EnumValue value="RusSynodalLIO" display_value="Russian Synodal Bible, Licht im Osten Edition"/><EnumValue value="RusVZh" display_value="Russian New Testament with Strong's Numbers under edition of Victor R. Zhuromsky."/><EnumValue value="SBLGNT" display_value="The Greek New Testament: SBL Edition"/><EnumValue value="SP" display_value="Samaritan Pentateuch"/><EnumValue value="SPDSS" display_value="Dead Sea Scrolls variants parallel to the Samaritan Pentateuch"/><EnumValue value="SPE" display_value="Samaritan Pentateuch in English"/><EnumValue value="SPMT" display_value="Masoretic Text parallel to the Samaritan Pentateuch"/><EnumValue value="SPVar" display_value="Samaritan Pentateuch with variant readings"/><EnumValue value="ScotsGaelic" display_value="Scottish Gaelic Gospel of Mark"/><EnumValue value="Shona" display_value="Shona Bible"/><EnumValue value="SloChraska" display_value="Sveto pismo Starega in Novega zakona (1925) – SloChraska"/><EnumValue value="SloKJV" display_value="Slovenian translation of Holy Bible King James Version (1769)"/><EnumValue value="SloOjacano" display_value="Ojačano Sveto pismo (Ps + Gal)"/><EnumValue value="SloStritar" display_value="Novi testament in Psalmi Davidovi Josipa Stritarja (1882)"/><EnumValue value="SomKQA" display_value="Kitaabka Quduuska Ah"/><EnumValue value="SpaPlatense" display_value="Biblia Platense (Straubinger)"/><EnumValue value="SpaRV" display_value="La Santa Biblia Reina-Valera (1909)"/><EnumValue value="SpaRV1865" display_value="La Santa Biblia Reina-Valera (1865) con arreglos ortográficos"/><EnumValue value="SpaRV1909" display_value="Reina-Valera 1909 con números de Strong"/><EnumValue value="SpaRVG" display_value="Reina Valera Gómez"/><EnumValue value="SpaTDP" display_value="Spanish Traducción de dominio público (Mateo a Romanos)"/><EnumValue value="SpaVNT" display_value="Spanish 1858 Reina Valera New Testament"/><EnumValue value="SrKDEkavski" display_value="Serbian Bible Daničić-Karadžić Ekavski"/><EnumValue value="SrKDIjekav" display_value="Serbian Bible Daničić-Karadžić Ijekavski"/><EnumValue value="StatResGNT" display_value="Statistical Restoration Greek New Testament"/><EnumValue value="Swahili" display_value="Swahili New Testament"/><EnumValue value="Swe1917" display_value="Swedish Bible (1917)"/><EnumValue value="SweFolk" display_value="Svenska Folkbibeln (2015)"/><EnumValue value="SweKarlXII" display_value="Svenska Karl XII:s Bibel (1703)"/><EnumValue value="SweKarlXII1873" display_value="Svenska Karl XII:s Bibel (1873)"/><EnumValue value="TNT" display_value="Tregelles' Greek New Testament"/><EnumValue value="TR" display_value="Textus Receptus (1550/1894)"/><EnumValue value="TagAngBiblia" display_value="Philippine Bible Society (1905)"/><EnumValue value="Tagalog" display_value="Tagalog (John &amp; James)"/><EnumValue value="Tausug" display_value="Tausug Kitab Injil"/><EnumValue value="ThaiKJV" display_value="Thai King James Version"/><EnumValue value="Tisch" display_value="Tischendorf's 8th edition GNT"/><EnumValue value="TpiKJPB" display_value="King Jems Pisin Baibel"/><EnumValue value="TurHADI" display_value="Turkish Easy-to-Read Translation (HADI)"/><EnumValue value="TurNTB" display_value="Kutsal Kitap (New Turkish Bible)"/><EnumValue value="Twenty" display_value="Twentieth Century New Testament"/><EnumValue value="Tyndale" display_value="William Tyndale Bible (1525/1530)"/><EnumValue value="UKJV" display_value="Updated King James Version"/><EnumValue value="UkrKulish" display_value="Новий Завіт. Переклад П. Куліша (1871)"/><EnumValue value="UkrOgienko" display_value="Українська Біблія. Переклад Івана Огієнка."/><EnumValue value="Uma" display_value="Uma New Testament"/><EnumValue value="UrduGeo" display_value="Urdu Geo Version (UGV)"/><EnumValue value="UrduGeoDeva" display_value="Urdu Geo Version Devanagari Script (UGV)"/><EnumValue value="UrduGeoRoman" display_value="Urdu Geo Version Latin Script (UGV)"/><EnumValue value="UyCyr" display_value="Муқәддәс Китап (Современный уйгурский перевод)"/><EnumValue value="VieLCCMN" display_value="Lời Chúa Cho Mọi Người"/><EnumValue value="Viet" display_value="Kinh Thánh Tiếng Việt (1934)"/><EnumValue value="VietNVB" display_value="New Vietnamese Bible (2002)"/><EnumValue value="VulgClementine" display_value="Clementine Vulgate"/><EnumValue value="VulgConte" display_value="Vulgata Clementina, Conte editore"/><EnumValue value="VulgHetzenauer" display_value="Vulgata Clementina, Hetzenauer editore"/><EnumValue value="VulgSistine" display_value="Vulgata Sistina"/><EnumValue value="Vulgate" display_value="Latin Vulgate"/><EnumValue value="Vulgate_HebPs" display_value="Latin Vulgate Psalms from Hebrew"/><EnumValue value="WHNU" display_value="Westcott and Hort with NA27/UBS4 variants"/><EnumValue value="WLC" display_value="Westminster Leningrad Codex"/><EnumValue value="Webster" display_value="Webster Bible"/><EnumValue value="WelBeiblNet" display_value="beibl.net"/><EnumValue value="Weymouth" display_value="Weymouth NT (1912)"/><EnumValue value="Worsley" display_value="1770 John Worsley NT"/><EnumValue value="Wulfila" display_value="Bishop Wulfila Gothic Bible"/><EnumValue value="Wycliffe" display_value="John Wycliffe Bible (c.1395)"/><EnumValue value="YLT" display_value="Young's Literal Translation (1898)"/><EnumValue value="f35" display_value="Family 35"/><EnumValue value="sml_BL_2008" display_value="Kitab Awal-Jaman maka Kitab Injil"/><EnumValue value="vlsJoNT" display_value="Het Nieuwe Testament by Nicolaas De Jonge"/></UserPref>
<UserPref name="debugDisplay" datatype="bool" display_name="Debug" default_value="false"/>


<UserPref name="servicesBaseURL" datatype="string" display_name="Services Base URL" default_value="../../vmr/api" />
<UserPref name="baseTextServiceURL" datatype="string" display_name="Base Text Service URL" default_value="https://crosswire.org/study/fetchdata.jsp" />

<UserPref name="reconciler" datatype="enum" display_name="Reconciler" default_value="../reconciler/reconciler.jsp">
	<EnumValue value="../reconciler/reconciler.jsp" display_value="Cat-tastic Reconciler"/>
	<EnumValue value="mergely_reconciler.jsp" display_value="Mergely"/>
</UserPref>

<Content type="html">
<![CDATA[
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

	<link rel="stylesheet" type="text/css" href="/community/js/jquery-ui/jquery-ui.css"/>

	<script type="text/javascript" src="/community/js/jquery/jquery.min.js"></script>
	<script type="text/javascript" src="/community/js/URI.min.js"></script>
	<script type="text/javascript" src="/community/js/jquery/jquery.cookie.js"></script>
	<script type="text/javascript" src="/community/js/jquery-ui/jquery-ui.min.js"></script>
	<script type="text/javascript" src="/community/js/jquery.blockUI.js"></script>
	<script type="text/javascript" src="/community/js/vmr-common.js"></script>

<title>Workspace for Collaborative Editing</title>

<style type="text/css">
<!--
body {
	margin-left: auto;
	margin-right: auto;
	background-color: #666;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 14px;
}

table {
	border-collapse: collapse;
}

table#historyTable {
	border-collapse: collapse;
	width: 100%;
}

td, th {
	padding: 5px 4px;
	border: 1px solid #CCC;
	/*overflow: hidden;*/
}

.vDate {
	white-space: nowrap;
}

thead, tfoot {
	background-color: #CCC;
}

tr.rowodd {
	background-color: #FFF;
}

tr.roweven {
	background-color: #F2F2F2;
}

/* seems this has trouble loading a background image via opensocial proxy or something, so we'll just set it to white */
.ui-widget-content {
	background: white !important;
}
-->
</style>



<script type="text/javascript">

// reset error handling to browser default
window.onerror = window.parent.onerror;

// record last direction set for editor, this is used to determine if we need to re-initialize editor to switch directions
var lastRTL = false;
var debugDisplay = false;

// if no index data for the page, then dialog to ask what content from base text to use
var verseRefDialog = null; 

// listen for page loaded events from portal and hold on to last page which as loaded
var lastDocument = null;
var workingTranscription = '';
var lastVersion = null;

// whoami
var viewer = null;

// default values.  These really are superfluous.  They get set in 'loaded()' by configuration parameters
// but we'll set them to something in case somehow our reading of config params fails miserably

// this is for retrieving base text data this URL will receive posted data params:
//	 mod : Base Text Name, currently either coptic or greek (SahidicBible|PapBasetext)
//	 key : section of text to load, e.g., Rom 6:5-14; Rom 8:9-11
//	 format : the format in which the data should be returned. currently 'basetext', and means tinyMCE/WFCE/Trier/HTML spans
var baseTextServiceURL = 'https://crosswire.org/study/fetchdata.jsp';
var baseTextDocID = null;
var baseText = "WHNU";
var transcriptionOwner = "user";
var rtl = false;

var reconciler = '../reconciler/reconciler.jsp';

// where or not this user is a VMR Administrator
var isAdmin = false;
var siteName = '';

</script>
</head>
<body>
		<div class="fillPage" style="margin: 0px 0px 0px 0px">
			<iframe class="fillPage" id="wce_editor" src="https://ethercalc.manuscriptroom.com/demo" style="width: 100%;"></iframe>
		</div>

<span style="margin: 0 0 0 0; float:left; position:absolute;bottom:2px;left:2px;">
	<button style="vertical-align: middle;" id="versionHistoryControl" >Version History</button>
	<img id="chirho" height="32" style="margin: 0 0 0 0; vertical-align: middle;" src="/community/images/chirho.png"/><input id="palInput" size="8" />
	<button style="vertical-align: middle;color:red;" id="publishButton" >Publish</button>
	<button style="vertical-align: middle;color:red;" id="previewButton" >Preview Last Saved</button>
</span>
<span style="margin: 0 0 0 0; float:right; position:absolute;bottom:2px;right:2px;">
	<button style="vertical-align: middle;" id="populateButton" >From Transcription</button>
	<span id="discussButtonSpan"><a href="#" onclick="discussTranscription();return false;" title="Discuss This Transcription"><img style="margin: 0 0 0 0; vertical-align: middle;" src="../images/discuss.png"/></a></span>
	<span id="discussButtonSpan"><a href="#" target="_blank" id="externalEditor" title="Edit Full Screen"><img style="margin: 0 0 0 0; vertical-align: middle;" src="../images/link.png"/></a></span>
</span>
</body>

<script type="text/javascript">


	function previewPage() {
		var url = VMR.servicesURL + '/transcript/show/';
		window.open(url+'?docID='+lastDocument+'&pageID=ALL&userName='+(transcriptionOwner == 'user' ? viewer.getDisplayName() : siteName),'transcription',
                  'titlebar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes,menubar=no,location=yes,directories=no,'
                + 'width=900,height=768');

	}

	function publishPage() {
		saveDataToDB(false, false, '', true);
	}

	function saveDataToDB(editor, callback, userName, force) {
		if (force) {
		}
		else if (!tinyMCE.activeEditor.isDirty()) {
			if (callback) callback();
			return;
		}

		$.blockUI({ message: '<h3><img src="/community/images/fuzzball.gif" /> Saving, please wait...</h3>' });

		// currently we grab the HTML span formatted data, but eventually we'd like to grab the TEI
		var transcriptionData = getTEI();

		var params = {};
		var postData = {
			docID : lastDocID,
			userName: (typeof userName != 'undefined' ? userName : transcriptionOwner == 'user' ? viewer.getDisplayName() : siteName),
			transcript: transcriptionData
		};
		VMR.serviceRequest('transcript/put', postData, function(o) {
			$.unblockUI();
			var xml = $.parseXML(o.text);
			if ($(xml).children('error').length) {
				alert($(xml).children('error').attr('message'));
			}
			if ($(xml).children('success').length) {
				if (gadgets.util.hasFeature('pubsub-2')) gadgets.Hub.publish("interedition.transcription.saved", null);
				if ($('#historyDialog').dialog('isOpen')) {
					showVersionHistory();
				}
			}
			tinyMCE.activeEditor.isNotDirty = 1;
			
			if (callback) callback();
		});
	}


function showVersionHistory() {

	if (lastDocID) {
		$.blockUI({ message: '<h4><img src="/community/images/fuzzball.gif" /> Loading history...</h4>' });

		var params = {};
		var postData = {
			docID : lastDocID,
			userName: transcriptionOwner == 'user' ? viewer.getDisplayName() : siteName,
			history: true,
			allUsers: isAdmin,
		};

		VMR.serviceRequest('transcription/get', postData, function(o) {
			$.unblockUI();
			document.body.style.cursor = 'default';
			var xml = $.parseXML(o.text);
			var h = '<table id="historyTable"><thead><th class="selectionCell"><th>Date</th><th>Author</th><th style="width:100%;">Comments</th></thead><tbody>';
			var rownum = 1;
			h += '<tr class="'+(rownum%2?'rowodd':'roweven')+'" style="cursor:pointer;">';
			h += '<td height="24" onclick="loadTranscription(\'workingTranscription\');" id="sel_workingTranscription" class="selectionCell">*</td>';
			h += '<td onclick="loadTranscription(\'workingTranscription\');" class="vDate">working copy</td>';
			h += '<td onclick="loadTranscription(\'workingTranscription\');">'+viewer.getDisplayName()+'</td>';
			h += '<td onclick="loadTranscription(\'workingTranscription\');"></td>';
			h += '<td><span class="mergeControl" style="display:none;"><a href="#" onclick="compareCurrentTo(\'workingTranscription\');return false;"><img height="24" src="/community/images/merge.png"/></a></span></td>';
			h += '<td class="versionHash" style="display:none;">workingTranscription</td>';
			h += '</tr>';
			$(xml).find('history').each(function() {
				++rownum;
				h += '<tr class="'+(rownum%2?'rowodd':'roweven')+'" style="cursor:pointer;">';
				h += '<td height="24" onclick="loadTranscription(\''+$(this).attr('versionHash')+'\');" id="sel_'+$(this).attr('versionHash')+'_'+$(this).attr('author')+'" class="selectionCell">&nbsp;</td>';
				h += '<td onclick="loadTranscription(\''+$(this).attr('versionHash')+'\', \''+$(this).attr('author')+'\');" class="vDate">'+$(this).attr('date')+'</td>';
				h += '<td onclick="loadTranscription(\''+$(this).attr('versionHash')+'\', \''+$(this).attr('author')+'\');">'+$(this).attr('author')+'</td>';
				h += '<td onclick="loadTranscription(\''+$(this).attr('versionHash')+'\', \''+$(this).attr('author')+'\');">'+$(this).find('comment').text()+'</td>';
				h += '<td><span class="mergeControl"><a href="#" onclick="compareCurrentTo(\''+$(this).attr('versionHash')+'\', \''+$(this).attr('author')+'\');return false;"><img height="24" src="/community/images/merge.png"/></a></span></td>';
				h += '<td class="versionHash" style="display:none;">'+$(this).attr('versionHash')+'</td>';
				h += '</tr>';
			});
			h += '</tbody></table>';
			$('#historyDialogContent').html(h);

			if (lastVersion) {
				$('.selectionCell').text('');
				$('#sel_'+lastVersion).text('*');
				$('.mergeControl').show('');
				$('#sel_'+lastVersion).parent().find('.mergeControl').hide();
			}
			
			$('#historyDialog').dialog('open');
		});
	}
}


function onTranscriptionUpdate(topic, data, subscriberData) {

	if (data.sender == document) return; // assert we didn't publish event

	lastVersion = null;
	lastDocID = data;
	loadEditorWithTEI(workingTranscription);
}


function manuscript_select_callback(topic, data, subscriberData) {
//	saveDataToDB(null, function () {

		document.body.style.cursor = 'wait';

		lastDocID = data;

		$('#historyDialog').dialog('close');

		lastVersion = null;
		workingTranscription = '';

		loadTranscription(null, data.userID);
//	});
}


function getTranscription(versionHash, userName, callback) {
	var params = {};
	if (userName && !isAdmin && userName != 'PUBLISHED') userName = null;
	var postData = {
		docID : lastDocID,
		pageID: 'ALL',
		userName: (userName ? userName : transcriptionOwner == 'user' ? viewer.getDisplayName() : siteName),
		format: 'rawtei',
		briefTEIHeader : 'true'
	};

	if (versionHash && versionHash.length > 0 && versionHash != 'HEAD') postData.versionHash = versionHash;

	VMR.serviceRequest('transcript/get', postData, function(o) {
		// silliness when sometimes stuff is returned as mime type XML it is stored in 'data' instead of 'text'.  stupid
		var transText = (!o.text || o.text.length < 1) ? o.data : o.text;
		if (transText.indexOf("<?xml") > 0) transText = transText.substring(transText.indexOf('>', transText.indexOf("<?xml"))+1);

		if (callback) callback(transText);
	});
}

function loadTranscription(versionHash, userName) {

	tinyMCE.activeEditor.isNotDirty = 1;
	if (versionHash == 'workingTranscription' && $('#sel_'+versionHash+'_'+userName).text() == '*')	return;

	if (versionHash) {
		$('.selectionCell').text('');
		$('#sel_'+versionHash+'_'+userName).text('*');
		$('.mergeControl').show('');
		$('#sel_'+versionHash+'_'+userName).parent().find('.mergeControl').hide();
	}

	if (versionHash == 'workingTranscription') {
		lastVersion = null;
		loadEditorWithTEI(workingTranscription);
		return;
	}

	getTranscription(versionHash, userName, function(transText) {
		var xml = $.parseXML(transText);
		if ($(xml).children('error').length) {
			loadEditorWithTEI('<TEI></TEI>');
//			loadEditorWithTEI('<?xml  version="1.0" encoding="utf-8"?><TEI xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.tei-c.org/ns/1.0 http://urts173.uni-trier.de/~gany2d01/test/TEI-NTMSS.xsd" xmlns="http://www.tei-c.org/ns/1.0" ><teiHeader><fileDesc><titleStmt><title/> </titleStmt><publicationStmt><p/></publicationStmt><sourceDesc><msDesc><msIdentifier></msIdentifier></msDesc></sourceDesc></fileDesc></teiHeader><text><body></body></text></TEI>');
		}
		else {
			if (!lastVersion) {
				workingTranscription = getTEI();
			}
			loadEditorWithTEI(transText);
			lastVersion = versionHash+'_'+userName;
		}
		document.body.style.cursor = 'default';
	});

}


// appendWhere 0 - don't append, overwrite; 1 - append after; -1 - prepend
function populateFromTranscription(docID) {

	document.body.style.cursor = 'wait';


	$.blockUI({ message: '<h3><img src="/community/images/fuzzball.gif" /> Loading, please wait...</h3>' });

	var params = {};
	var postData = {};

	postData.docID = docID;
//	postData.userName = 'tagriffitts';
	if (transcriptionOwner != 'project') postData.userName = viewer.getDisplayName();
	postData.pageID = 'ALL';
	postData.format = 'teiraw';
	postData.briefTEIHeader = 'true';

	VMR.serviceRequest('transcript/get', postData, function(o) {
		var USERNAME='coptic_client';
		var PASSWORD='kz7hh2';
//		var url = 'https://corpling.uis.georgetown.edu/coptic-nlp/api';
//		var url = 'https://'+USERNAME+':'+PASSWORD+'@corpling.uis.georgetown.edu/coptic-nlp/api';
		var url = 'https://'+USERNAME+':'+PASSWORD+'@tools.copticscriptorium.org/coptic-nlp/api';
		if (debugDisplay) alert(o.text);
		$.ajax({
			type: 'POST',
			url: url,
			data: 'data='+encodeURIComponent(o.text) + '&lb=line',
			dataType: 'text',
			success: function(response) {
				if (debugDisplay) alert(response);

				url = 'https://'+USERNAME+':'+PASSWORD+'@corpling.uis.georgetown.edu/coptic-nlp/ether';
				$.ajax({
					type: 'POST',
					url: url,
					data: 'data='+encodeURIComponent(response),
					dataType: 'text',
					success: function(response) {
						if (debugDisplay) alert(response);

						url = 'https://ethercalc.manuscriptroom.com/_/'+viewer.getDisplayName()+'.'+docID;
						$.ajax({
							type: 'PUT',
							url: url,
//							data: encodeURIComponent(response),
							data: response,
							dataType: 'text',
							processData: false,
							headers: { 'Content-Type': 'text/x-socialcalc' },
							success: function(response) {
								if (debugDisplay) alert(response);

								url = 'https://ethercalc.manuscriptroom.com/'+viewer.getDisplayName()+'.'+docID;
								$('#wce_editor').attr('src', url);
								$('#externalEditor').attr('href', url);
								$.unblockUI();

							},
							error: function(error) {
								alert('ERROR:', error);
							}
						});
					},
					xhrFields: {
						withCredentials: true
					},
					error: function(error) {
						alert('ERROR:', error);
					}
				});
			},
			xhrFields: {
				withCredentials: true
			},
			error: function(error) {
				alert('ERROR:', error);
			}
		});
		
	});
}


function getManuscriptInfo() {
	var mi = {
		rtl : lastRTL,
		font : 'Gentium',
		baseText : baseText
	}
	if (lastPage.lang == 'sa') {
		if (baseText == 'Language Dependent') {
			mi.baseText = 'SahidicBible';
			mi.rtl = false;
		}
		mi.font = 'Antinoou, AntinoouWeb';
	}
	else if (lastPage.lang == 'chu') {
		if (baseText == 'Language Dependent') {
			mi.baseText = 'CSlElizabeth';
			mi.rtl = false;
		}
		mi.font = 'BukyvedeWeb';
	}
	else if (lastPage.lang == 'syc') {
		if (baseText == 'Language Dependent') {
			mi.baseText = 'Peshitta';
			mi.rtl = true;
		}
		mi.font = 'Estrangelo Edessa, EstreWeb';
	}
	else {
		if (baseText == 'Language Dependent') {
			mi.baseText = 'PapBasetext';
			mi.rtl = false;
		}
	}
	return mi;
}


function getBaseText() {
	return getManuscriptInfo().baseText;
}


function isRTL() {
	return getManuscriptInfo().rtl;
}

function getPreferredFont() {
	return getManuscriptInfo().font;
}

function loadEditorWithTEI(teiBlob) {
	document.body.style.cursor = 'default';
	// change text direction of editor if isRTL is different than last RTL set
	var rtl = isRTL();
	if (rtl != lastRTL) {
		lastRTL = rtl;
		tinyMCE.execCommand(rtl?'mceDirectionRTL':'mceDirectionLTR');
		tinyMCE.get('wce_editor').settings.directionality = rtl?'rtl':'ltr';
	}
	setTEI(teiBlob);   
	setPreferredFontFamily(getPreferredFont());
}


// this is all the +1 from base text logic.  This probably needs to be re-thought.
// this assumes a very strict "Book Chapter:Verse" format.
// we now have a verse parsing service we should use instead

function isAlpha(val)
{
	var re = /^([a-zA-Z])$/;
	var retVal = (re.test(val));
	return retVal;
}

function isNumeric(val)
{
	var re = /^([0-9])$/;
	return (re.test(val));
}


// start of ugly 'discuss this transcription page' logic.
// this is highly dependent on liferay being the portal
// we should simply not show the discuss button if liferay is not detected

function assureCategory(parentCategoryId, name, description) {
	var catID = -1;
	var themeDisplay = parent.Liferay.ThemeDisplay;

	var params = {
		groupId          : themeDisplay.getScopeGroupId(),
		parentCategoryId : parentCategoryId,
		start            : -1,
		end              : -1,
		serviceParameterTypes : JSON.stringify([ 'long', 'long', 'int', 'int' ])
	};

	var categories = parent.Liferay.Service.MB.MBCategory.getCategories(params);

	var i = 0;
	if (categories) {
		for (i = 0; i < categories.length; ++i) {
			if (categories[i].name == name) {
				catID = categories[i].categoryId;
				break;
			}
		}
	}
	if (catID == -1) {
		params = {
			parentCategoryId    : parentCategoryId,
			name                : name,
			description         : description,
			displayStyle        : 'default',
			emailAddress        : '',
			inProtocol          : '',
			inServerName        : '',
			inServerPort        : 0,
			inUseSSL            : false,
			inUserName          : '',
			inPassword          : '',
			inReadInterval      : 0,
			outEmailAddress     : '',
			outCustom           : false,
			outServerName       : '',
			outServerPort       : 0,
			outUseSSL           : false,
			outUserName         : '',
			outPassword         : '',
			mailingListActive   : false,
			allowAnonymousEmail : false,

			serviceContext : JSON.stringify({
				scopeGroupId        : themeDisplay.getScopeGroupId(),
				userId              : themeDisplay.getUserId(),
				addGroupPermissions : true,
				addGuestPermissions : true})
		};
		var annCat = parent.Liferay.Service.MB.MBCategory.addCategory(params);
		catID = annCat.categoryId;

	}
	return catID;
}

function discussTranscription() {
	if (!lastPage) return;	// assert we've loaded a page

	var pageCategoryName = 'Page '+lastPage.pageID + (lastPage.pageName && lastPage.pageName.length > 0 ? (' (folio '+lastPage.pageName+')') : '');
	var catID = assureCategory(0, 'Transcriptions', 'Manuscript Transcriptions');
	catID = assureCategory(catID, ''+lastPage.docID + ' ('+lastPage.docName+')', '');
	catID = assureCategory(catID, pageCategoryName, '');

	var themeDisplay = parent.Liferay.ThemeDisplay;
	var params = {
		groupId          : themeDisplay.getScopeGroupId(),
		categoryId       : catID,
		status           : -1,
		start            : -1,
		end              : -1,
		serviceParameterTypes : JSON.stringify([ 'long', 'long', 'int', 'int', 'int' ])
	};

	var landingPoint = 'category/'+catID;

	var messages = parent.Liferay.Service.MB.MBMessage.getCategoryMessages(params);

	var subject = '' + viewer.getDisplayName()
			 + ' - ' + lastPage.docID + ' ('+lastPage.docName+') '
			 + pageCategoryName;

	var mID = -1;
	for (i = 0; messages && i < messages.length; ++i) {
		if (messages[i].subject == subject) {
			mID = messages[i].messageId;
			break;
		}
	}

	if (mID < 0) {

		var transcription = getTEI();

		var body = '<p><a href="https://ntvmr.uni-muenster.de/transcribing'
				+ '?docID='+lastPage.docID
				+ '&pageID='+lastPage.pageID
				+ '&userName='+viewer.getDisplayName()
				+ '" target="_blank">Jump To Artifact</a></p>'
				+ '<br/>'
				+ '<b>Transcription Text:</b>'
				+ '<div style="margins: 5px 20px 5px 20px;">'+transcription+'</div><br/>'
				+ '<p> You should: <b>Edit this message.</b> '
				+ 'Be sure to leave the above link, and delete this line.</p>';

		params = {
			groupId          : themeDisplay.getScopeGroupId(),
			categoryId       : catID,
			subject          : subject,
			body             : body,
			format           : 'html',
			inputStreamOVPs  : JSON.stringify([]),
			anonymous        : false,
			priority         : 0.0,
			allowPingbacks   : true,
			serviceContext   : JSON.stringify({
				scopeGroupId        : themeDisplay.getScopeGroupId(),
				userId              : themeDisplay.getUserId(),
				addGroupPermissions : true,
				addGuestPermissions : true,
				workflowAction      : 0
			})
		};
		var message = parent.Liferay.Service.MB.MBMessage.addMessage(params);
		landingPoint = 'message/'+message.messageId;
	}
	else {
		landingPoint = 'message/'+mID;
	}

	var discussURL = '';
	if (themeDisplay.getLayoutURL().substr(0,'http'.length) !='http') {
		discussURL = 'https://'+parent.window.location.href.split('/')[2];
	}
	discussURL	+= themeDisplay.getLayoutURL()
			+ '/../forum/-/message_boards/'+landingPoint;

	window.open(discussURL,'Discuss',
		  'titlebar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes,menubar=no,location=yes,directories=no,'
		+ 'width=1024,height=768');
}


function externalEditor() {
	window.open(discussURL,'Discuss',
		  'titlebar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes,menubar=no,location=yes,directories=no,'
		+ 'width=1024,height=768');
}


function xml2str(xmlNode) {
   try {
      // Gecko- and Webkit-based browsers (Firefox, Chrome), Opera.
      return (new XMLSerializer()).serializeToString(xmlNode);
  }
  catch (e) {
     try {
        // Internet Explorer.
        return xmlNode.xml;
     }
     catch (e) {  
        //Other browsers without XML Serializer
        alert('Xmlserializer not supported');
     }
   }
   return false;
}


function simplifyTEI(tei) {
	var xml = $.parseXML(tei);


/*
	$(xml).find('w').contents().unwrap();
	$(xml).find('lb').removeAttr('xml:id');
	$(xml).find('supplied[reason="undefined"]').removeAttr('reason');
	$(xml).find('supplied[unit="undefined"]').removeAttr('unit');
*/


	return xml2str(xml);
}


function compareCurrentTo(versionHash, userName) {

	var reconcilerURL = URI(reconciler).absoluteTo(gadgets.util.getUrlParameters()['url']);
	var form = document.createElement("form");
	form.setAttribute("method", "post");
	form.setAttribute("action", reconcilerURL);
	form.setAttribute("target", "reconcile");

	var hiddenField = document.createElement("input");              
	hiddenField.setAttribute("type", "hidden");
	hiddenField.setAttribute("name", "lhs");
	var tei = getTEI();
	tei = simplifyTEI(tei);
	hiddenField.setAttribute("value", encodeURIComponent(tei));
	form.appendChild(hiddenField);

	hiddenField = document.createElement("input");              
	hiddenField.setAttribute("type", "hidden");
	hiddenField.setAttribute("name", "rhs");

	if (versionHash == 'workingTranscription') {
		hiddenField.setAttribute("value", encodeURIComponent(simplifyTEI(workingTranscription)));
		form.appendChild(hiddenField);

		document.body.appendChild(form);
		reconcilerWindow = window.open('/community/images/blank.png', 'reconcile', 'scrollbars=yes,menubar=yes,height=600,width=800,resizable=yes,toolbar=yes,status=yes');
		form.submit();
		handleReconcilerWindow();
	}
	else {
		getTranscription(versionHash, userName, function(transText) {
			hiddenField.setAttribute("value", encodeURIComponent(simplifyTEI(transText)));
			form.appendChild(hiddenField);

			document.body.appendChild(form);
			reconcilerWindow = window.open('/community/images/blank.png', 'reconcile', 'scrollbars=yes,menubar=yes,height=600,width=800,resizable=yes,toolbar=yes,status=yes');
			form.submit();
			handleReconcilerWindow();
		});
	}
}


function handleReconcilerWindow() {
	if (reconcilerWindow) {
		if (reconcilerWindow.updateBuffer && reconcilerWindow.updateBuffer.length > 0) {
			loadEditorWithTEI(reconcilerWindow.updateBuffer);
		}
		if (reconcilerWindow.closed) {
			reconcilerWindow = null;
			return;
		}
		setTimeout('handleReconcilerWindow()', 1000);
	}
}


function loadPal(match) {
	var params = {};
	var postData = {
		featureCode : 'Grapheme',
		likeMatch   : '%'+match+'%',
		limit       : 10
	};
	VMR.serviceRequest('feature/definition/getvalues', postData, function(o) {
		var h1 = '<table><thead></thead><tbody>';
		h1 += '<tr style="cursor:pointer;">';
		var h = '';
		var total = 0;
		$(o.text).find('value').each( function() {
			var count = $(this).attr('score');
			h += '<td class="palVal" id="pv'+$(this).text()+'" onclick="showPalVal(\''+$(this).text()+'\');">'+$(this).text()+' ('+count+')</td>';
			total += parseInt(count);
		});
		h1 += '<td class="palVal" id="pv_'+match+'_" onclick="showPalVal(\'%'+match+'%\');">* '+match+' * ('+total+')</td>';
		h += '</tr>';
		h += '</tbody></table>';
		$('#palResultList').html(h1+h);
		$('#palResultImages').html('');
		showPalVal('%'+match+'%');
	});
}


function showPalVal(match) {
	$('#palResultImages').html('<img src="/community/images/loading.gif"/>');
	var postData = {
		detail : 'page',
		featureCode : 'Grapheme%='+match,
		featureCodeClipString : 'Grapheme%='+match
	};
	VMR.serviceRequest('metadata/liste/search', postData, function(o) {
		var h = '<table style=""><thead></thead><tbody>';
		h += '<tr style="cursor:pointer;">';
		$(o.text).find('feature').each( function() {
			var docID = $(this).parent().parent().parent().attr('docID');
			var gaNum = $(this).parent().parent().parent().attr('gaNum');
			var pageID = $(this).parent().attr('pageID');
			var folio = $(this).parent().attr('folio');
			var val = $(this).find('stringVal1').text();
			var featureID = $(this).attr('featureID');
			h += '<td onclick="showDocument('+docID+','+pageID+','+featureID+');"><img title="document: '+gaNum+' ('+docID+')\npage: '+folio + ' ('+pageID+')\nGrapheme: '+val+'" height="48" src="'+$(this).find('regionbox').attr('cacheThumbURL')+'"/></td>';
		});
		h += '</tr>';
		h += '</tbody></table>';
		$('#palResultImages').html(h);
		$('.palVal').css('background-color', '#FFF');
		$('#pv'+match.replace(/%/g, '_')).css('background-color', '#E2E2E2');
	});
}


function showDocument(docID, pageID, featureID) {
	window.open('https://ntvmr.uni-muenster.de/manuscript-workspace?docID='+docID+((pageID)?('&pageID='+pageID):'')+((featureID)?('&featureID='+featureID):''),'workspace',
		  'titlebar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes,menubar=no,location=yes,directories=no,'
		+ 'width=1024,height=768');
}


var MARGIN=60;
function expandFillPageClients() {
	$('.fillPage').each(function () {
		$(this).height(gadgets.window.getViewportDimensions().height - $(this).offset().top - MARGIN);
	});
	$('.fillPageAlmost').each(function () {
		$(this).height(gadgets.window.getViewportDimensions().height - $(this).offset().top - MARGIN - 10);
	});
}


function setupEditor(rtl, callback) {
	if (callback) callback();
/*
	var lang = (parent && parent.Liferay) ? parent.Liferay.ThemeDisplay.getLanguageId() : 'en';
	setWceEditor('wce_editor', rtl,
		function() {
			if (callback) callback();
		},
		lang, URI('js/').absoluteTo(gadgets.util.getUrlParameters()['url']),
		function () {
			return lastPage.docName;
		},
		function() {
			return (lastPage.lang == 'g') ? 'grc' : lastPage.lang;
		});
*/
}


function getFolio() {
	return lastPage.pageName;
}

var lang = null;
VMR.init(function() {
	VMR.subscribe("interedition.manuscript.selected", manuscript_select_callback);

	var prefs = new gadgets.Prefs();
	reconciler = prefs.getString('reconciler');
	debugDisplay = prefs.getBool('debugDisplay');
	baseTextServiceURL = prefs.getString('baseTextServiceURL');
	baseTextDocID = prefs.getString('baseTextDocID');
	if (baseTextDocID != null && baseTextDocID.length < 1) baseTextDocID = null;
	baseText = prefs.getString('baseText');
	transcriptionOwner = prefs.getString('transcriptionOwner');
	rtl = prefs.getBool('direction');
	// if we haven't been given an absolute URL, assume we're relative to our gadget and resolve an absolute URL from the given relative URL.
	var preferredHeight = parseInt(prefs.getString('height'));
	if (gadgets.util.hasFeature('dynamic-height')) gadgets.window.adjustHeight(preferredHeight);

	var req = opensocial.newDataRequest();
	req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
	req.send(function(data) {
		viewer = data.get('viewer').getData();

		$('#publishButton').hide();
		for (i = 0; i < 3; ++i) {
			var postData = {
				role : (i==1 ? 'VMR Administrator' : i==2 ? 'Transcription Manager' : 'Site Administrator')
			};
			if (i == 0) postData.userGroupID = parent.Liferay.ThemeDisplay.getScopeGroupId();
			VMR.serviceRequest('auth/hasrole', postData, function(o) {
				var xml = $.parseXML(o.text);
				if ($(xml).find('role').attr('hasRole') == 'true') {
					isAdmin = true;
					$('#publishButton').show();
				}
				var sn = $(xml).find('role').attr('userGroupName');
				if (sn != null && sn.length > 0) siteName = sn;
			});
		}
	});

	lastRTL = rtl;
	setupEditor(rtl, function() {
		if (parent && parent.Liferay) $('#discussButtonSpan').show();
		else $('#discussButtonSpan').hide();
		

		$('#populateButton').bind('click',function(event){ 
			populateFromTranscription(lastDocID);
		});

		$('#versionHistoryControl').bind('click',function(event){ 
			showVersionHistory();
		});

		$('#plusOneBeforeButton').bind('click',function(event){ 
			plusFromBasetext(-1);
		});

		$('#plusOneAfterButton').bind('click',function(event){ 
			plusFromBasetext(1);
		});

		$('#publishButton').bind('click',function(event){ 
			publishPage();
		});

		$('#previewButton').bind('click',function(event){ 
			previewPage();
		});

		verseRefDialog = $('#verseRefDialog').dialog({
			autoOpen: false,
			position: 'top',
			width: Math.min(gadgets.window.getViewportDimensions().width-24, 300),
			maxHeight: gadgets.window.getViewportDimensions().height-24,
			title: 'Provide Bible Verse Content'
		});
		verseRefDialog.append = false;

		$('#doSelectVerseRef').click(function() {
			verseRefDialog.dialog('close');
			if ($('#verseRef').val() != null && $('#verseRef').val().length > 0) {
				lastPage.indexContent = $('#verseRef').val();
				if (verseRefDialog.append > 0 || verseRefDialog.append < 0) {
					plusFromBasetext(verseRefDialog.append);
				}
				else populateFromTranscription(lastDocID);
			}
			return false;
		});

		$('#historyDialog').dialog({
			autoOpen: false,
			position: 'top',
			width: Math.min(gadgets.window.getViewportDimensions().width-10, 730),
			maxHeight: gadgets.window.getViewportDimensions().height-24,
			title: 'Transcription History'
		});

		$('#palDialog').dialog({
			autoOpen: false,
			width: gadgets.window.getViewportDimensions().width-24,
			height: 156,
			title: 'Paleography',
			open: function() {
				$("#palDialog").dialog("widget").position({
					my: 'bottom',
					at: 'top',
					of: '#chirho',
					offset: '0 0',
					collision: 'fit'
				});
			}
		});

		$('#palInput').bind('input', function(e) {
			var text = $('#palInput').val();
			if (text && text.length > 0) {
				// odd bug in firefox: if we don't let keystroke event drop through before opening the dialog we get double greek characters (some, e.g., beta)
				setTimeout(function () {
					$('#palDialog').dialog('open');
					$('#palInput').focus();
				}, 100);
				loadPal($('#palInput').val());
			}
			else $('#palDialog').dialog('close');
		});
		expandFillPageClients();
		setTimeout(expandFillPageClients, 1000);
		setTimeout(expandFillPageClients, 1200);
		setTimeout(expandFillPageClients, 1400);
		$(window).resize(function() {
			expandFillPageClients();
		});
/*
//		tinyMCE.activeEditor.contentCSS.push(URI('content-extra.css').absoluteTo(gadgets.util.getUrlParameters()['url']));
		var extraCSS = URI('content-extra.css').absoluteTo(gadgets.util.getUrlParameters()['url']);
		$('#wce_editor_ifr').contents().find('head').append('<link rel="stylesheet" href="'+extraCSS+'" type="text/css" />');
		tinyMCE.get('wce_editor').onKeyDown.add(function() {
			var html = getData();
			var tei = getTeiByHtml(html, tinyMCE.get('wce_editor').settings);
			tei = getTEI();
			var endHeaderOffset = tei.indexOf('<body>');
			if (endHeaderOffset > -1) tei = tei.substring(endHeaderOffset+6);
			endHeaderOffset = tei.lastIndexOf('</body>');
			if (endHeaderOffset > -1) tei = tei.substring(0, endHeaderOffset);
			tei = '<?xml version="1.0" encoding="utf-8"?><?xml-model href="TEI-NTMSS.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?><TEI xmlns="http://www.tei-c.org/ns/1.0"><text'+(lastPage.lang?' xml:lang="'+lastPage.lang+'"' : '')+'><body>'+tei+'</body></text></TEI>';
			lastPage.transcriptionBody = tei
			lastPage.sender = document;
			if (gadgets.util.hasFeature('pubsub-2')) gadgets.Hub.publish("interedition.transcription.updated", lastPage);
		});
*/
	});

//	document.getElementById(tinyMCE.activeEditor.id+'_tbl').style.width='100%';
}, '../..');



</script>

<div style="font-size: small;" id="historyDialog">
<div id="historyDialogContent">
</div>
</div>

<div style="font-size: small;" id="palDialog">
<div id="palResultImages" style="width:100%; overflow:auto;">
</div>
<div id="palResultList" style="margin: 0 0 0 0; float:left; position:absolute;bottom:2px;left:2px;"></div>
</div>

<div style="font-size: small;" id="verseRefDialog">
<p style="margin:0px 1px 0px 1px;">
You have selected an image which has not yet been indexed.  With what Biblical content would you like me to populate the editor?  You can be creative; I'm pretty bright.
</p>
<p style="margin:0px 1px 0px 1px;">
e.g., Jn 18:1-5
</p>
<p>
<input id="verseRef" name="verseRef" />
</p>
<p>
<button id="doSelectVerseRef">Populate</button>
</p>
</div>

</html>
]]>
</Content>
</Module>
