<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs
	title="Transcription Editor - Book Numbers"
	author_email="workspace@jiscmail.ac.uk"
	author="Universität Trier"
	description="Transcription Editor - Book Numbers"
	screenshot="http://www.uni-trier.de/fileadmin/templates/inc/logo_universitaet-trier.gif"
	thumbnail="http://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"/>
	<EnumValue value="PUBLISHED" display_value="PUBLISHED"/>
</UserPref>

<UserPref name="unclearDefault" datatype="enum" display_name="Unclear Default" default_value="">
	<EnumValue value="" display_value=""/>
	<EnumValue value="poor image" display_value="Poor Image"/>
	<EnumValue value="faded ink" display_value="Faded Ink"/>
	<EnumValue value="damage to page" display_value="Damage To Page"/>
	<EnumValue value="other" display_value="Other"/>
</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="Project Default">
<EnumValue value="Project Default" display_value="Project Default"/>
<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="baseTextDocID" datatype="string" display_name="Base Text DocID" default_value="" />
<UserPref name="baseTextOwner" datatype="enum" display_name="Base Text Owner" default_value="PUBLISHED">
	<EnumValue value="user" display_value="Current User"/>
	<EnumValue value="project" display_value="Current Project"/>
	<EnumValue value="PUBLISHED" display_value="PUBLISHED"/>
</UserPref>
<UserPref name="direction" datatype="bool" display_name="Right to Left" default_value="false"/>


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

<UserPref name="announceChanges" datatype="bool" display_name="Announce Changes" default_value="false"/>
<UserPref name="autoSave" datatype="bool" display_name="Autosave" default_value="true"/>
<UserPref name="loadOnPageSelect" datatype="bool" display_name="Load on Page Select" default_value="true"/>
<UserPref name="saveBehavior" datatype="enum" display_name="Save Behavior" default_value="transcriptionRepository">
	<EnumValue value="transcriptionRepository" display_value="Save to Transcription Repository"/>
	<EnumValue value="broadcast" display_value="Broadcast Event Only"/>
	<EnumValue value="hideButton" display_value="Hide Save Button"/>
</UserPref>
<UserPref name="hidePublish" datatype="bool" display_name="Hide Publish Button" default_value="false"/>

<Content type="html">
<![CDATA[
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- odd path on the include because we use index.jsp here, so if we do not specify the index.jsp on the URL, we are 1 level different on our .. -->

	<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="edit.bkv/js/tinymce/tinymce.js"></script>  
	<script type="text/javascript" src="edit.bkv/wce-ote/wce_editor.js"></script>
	<script type="text/javascript" src="edit.bkv/wce-ote/wce_charmap.js"></script>
	<script type="text/javascript" src="edit.bkv/wce-ote/wce_tei.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;

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

// should we show all user transcriptions in history
var showAllUserTranscriptions = false;

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

// whoami
var viewer = null;
var confirmPublish = true;

// default values.  These really are superfluous.  They get set in 'VMR.init...' 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 baseTextOwner = null;
var baseText = "WHNU";
var transcriptionOwner = "user";
var rtl = false;
var announceChanges = false;
var autoSave = true;

var reconciler = 'mergely_reconciler.jsp';

// where or not this user is a VMR Administrator
var ignoreUpdateMessages = 0;

var autoLoad = true;
var saveToRepo = true;
var hideSaveButton = true;
var hidePublishButton = false;

var projectDefaultBasetext = false;

</script>
</head>
<body>
		<div style="margin: 0px 0px 0px 0px">
			<textarea id="wce_editor" rows="28" cols="80" style="width: 100%;"></textarea>
		</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>
<div id="nonExtandPageTool" style="background-color:lightgray; display:inline-block; border-radius: .15em; padding:0 0 0 .25em; margin-left:5em;">New Non-extant Page: 
	<button style="vertical-align: middle;color:red;" id="newPhantomBefore" >Before</button>
	<button style="vertical-align: middle;color:red;" id="newPhantomAfter" >After</button>
</div>
</span>
<span style="margin: 0 0 0 0; float:right; position:absolute;bottom:2px;right:2px;">
<!--
	<button style="vertical-align: middle;" id="plusOneBeforeButton" >Prepend +1</button>
-->
	<button title="Load editor with basetext, determined from index information" style="vertical-align: middle;" id="populateButton" >From Basetext</button>
	<button title="Load editor with stripped basetext data" style="vertical-align: middle;" id="populateButtonStripped"><img style="height:1.2em;" src="../../images/stripped.png"/></button>
<!--
	<button style="vertical-align: middle;" id="plusOneAfterButton" >Append +1</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>
</body>

<script type="text/javascript">


	function previewPage() {
		var url = VMR.httpRoot + 'vmr/api/transcript/show/';
		window.open(url+'?docID='+lastPage.docID+'&pageID='+lastPage.pageID+'&userName='+(transcriptionOwner == 'user' ? VMR.userName : transcriptionOwner == 'project' ? VMR.siteName : transcriptionOwner),'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 newPhantom(isAfter) {
		var pageID = parseInt(''+lastPage.pageID) + (isAfter ? 1 : -1);
		var postData = {
			docID : lastPage.docID,
			pageID: pageID,
		};
		VMR.serviceRequest('metadata/liste/search/', postData, function(o) {
			var xml = $.parseXML(o.text);
			var pageExists = parseInt($(xml).find('manuscripts').attr('pagecount'));
			if (pageExists) {
				alert('Cannot create a new page immediately ' + (isAfter ? 'after':'before') + '. One already exists.');
				return;
			}
			var postData = {
				text : lastPage.indexContent,
				detail: 'verses',
				expandRange: true,
			};
			VMR.serviceRequest('metadata/v11n/parse/', postData, function(o) {
				var xml = $.parseXML(o.text);
				var verse = $(xml).find('verse:'+(isAfter?'last':'first')).attr('osisRef');
				var postData = {
					docID : lastPage.docID,
					pageID: pageID,
				};
				VMR.serviceRequest('metadata/manuscript/putpage/', postData, function(o) {
					var xml = $.parseXML(o.text);
					if (!$(xml).find('success').length) {
						alert('Problem creating new non-extant page.');
						return;
					}
					var postData = {
						docID : lastPage.docID,
						pageID: pageID,
						featureCode : 'Extant',
						stringVal1: 'Not Extant',
					};
					VMR.serviceRequest('feature/put/', postData, function(o) {
						var xml = $.parseXML(o.text);
						if (!$(xml).find('feature').length) {
							alert('Problem adding Extant status feature to new non-extant page.');
							return;
						}
						var postData = {
							docID : lastPage.docID,
							pageID: pageID,
							uri: VMR.imagesURL + '/folio_not_extant.jpg',
						};
						VMR.serviceRequest('image/put/', postData, function(o) {
							var xml = $.parseXML(o.text);
							if (!$(xml).find('success').length) {
								alert('Problem setting non-extant image to new non-extant page.');
								return;
							}
							var postData = {
								docID : lastPage.docID,
								pageID: pageID,
							};
							VMR.serviceRequest('image/generatethumb/', postData, function(o) {
								var xml = $.parseXML(o.text);
								if (!$(xml).find('success').length) {
									alert('Problem generating thumbnail for new non-extant page.');
									return;
								}
								var postData = {
									docID : lastPage.docID,
									pageID: pageID,
									indexContent: verse,
									userName: VMR.userName,
								};
								VMR.serviceRequest('biblicalcontent/put/', postData, function(o) {
									var xml = $.parseXML(o.text);
									if (!$(xml).find('success').length) {
										alert('Problem adding indexing to new non-extant page.');
										return;
									}
									var data = {
										docID : lastPage.docID,
										pageID: pageID,
										searchType: 'lookup',
									};
									VMR.publish("interedition.manuscript.selected", data);
								});
							});
						});
					});
				});
			});
		});
	}

	function saveDataToDB(saveButtonPressed, callback, userName, force) {

		// can't trust tinymce isDirty
		var editorTEIData = getTEI();

		if (force || saveButtonPressed) {
		}
		else if (!lastPage || !tinyMCE.activeEditor.isDirty() || editorTEIData == lastLoadedTEIData) {
			if (callback) callback();
			return;
		}

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

		var transcriptionData = lastHead + getTEIBody(editorTEIData) + lastTail;

		var postData = {
			docID : lastPage.docID,
			pageID: lastPage.pageID,
			userName: (typeof userName != 'undefined' ? userName : transcriptionOwner == 'user' ? VMR.userName : transcriptionOwner == 'project' ? VMR.siteName : transcriptionOwner),
			transcript: transcriptionData
		};
		VMR.publish("interedition.transcription.saverequest", postData);
		if (saveToRepo) {
			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) {
					VMR.publish("interedition.transcription.saved", null);
					if ($('#historyDialog').dialog('isOpen')) {
						showVersionHistory();
					}
				}
				tinymce.activeEditor.isNotDirty = 1;
				
				if (callback) callback();
			});
		}
		else {
			tinymce.activeEditor.isNotDirty = 1;
			if (callback) callback();
		}
	}


function showVersionHistory(specificUser) {

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

		var postData = {
			docID : lastPage.docID,
			pageID: lastPage.pageID,
			userName: specificUser ? specificUser : transcriptionOwner == 'user' ? VMR.userName : transcriptionOwner == 'project' ? VMR.siteName : transcriptionOwner,
			history: true,
			allUsers: showAllUserTranscriptions,
		};

		VMR.serviceRequest('transcript/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\');">' + VMR.userName + '</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;
				var hash = $(this).attr('versionHash');
				var author = $(this).attr('author');
				var comment = $(this).find('comment').text();
				var saveDate = $(this).attr('date');
				var userName = (comment && comment.match('^PUBLISHED:')) ? 'PUBLISHED' : author;
				h += '<tr class="'+(rownum%2?'rowodd':'roweven')+'" style="cursor:pointer;">';
				h += '<td height="24" onclick="loadTranscription(\''+hash+'\');" id="sel_'+hash+'_'+userName+'" class="selectionCell">&nbsp;</td>';
				h += '<td onclick="loadTranscription(\''+hash+'\', \''+userName+'\');" class="vDate">'+saveDate+'</td>';
				if (specificUser) {
					h += '<td onclick="loadTranscription(\''+hash+'\', \''+userName+'\');">'+author+'</td>';
				}
				else {
					h += '<td title="Click to expand full version history for this user" style="color:blue;cursor:pointer;" onclick="showVersionHistory(\''+userName+'\');">'+author+'</td>';
				}
				h += '<td onclick="loadTranscription(\''+hash+'\', \''+userName+'\');">'+comment+'</td>';
				h += '<td><span class="mergeControl"><a href="#" onclick="compareCurrentTo(\''+hash+'\', \''+userName+'\');return false;"><img height="24" src="/community/images/merge.png"/></a></span></td>';
				h += '<td class="versionHash" style="display:none;">'+hash+'</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 onTranscriptionReadOnly(topic, data, subscriberData) {
	tinymce.activeEditor.setMode(data?'readonly':'design');
}

function onTranscriptionScrolled(topic, data, subscriberData) {
	$(tinymce.activeEditor.getBody()).find('.brea, .commentary').css('background', '');
	
	var i = (data.break == 0) ? 1 : data.break;
	$(tinymce.activeEditor.getBody()).find('.brea, .commentary').each(function() {
		if ($(this).hasClass('brea')) --i;
		else if (this.previousSibling.nodeValue == '↵[') --i;
		if (i == 0) {
			$(this).css('background', 'white');
			tinymce.activeEditor.selection.scrollIntoView($(this).get(0));
//			$(this).get(0).scrollIntoView();
//			this.parentNode.scrollTop = this.offsetTop;
/*
			var offset = $(this).offset();
			var scrollTop = offset.top-$(this).parent('body').children().first().offset().top-35;
			$(this).parent('body').animate({
				   scrollTop: scrollTop 
			}, 'slow');
*/

			return false;
		}
	});
}
function onTranscriptionUpdate(topic, data, subscriberData) {

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

	lastVersion = null;
	lastPage = data;
	workingTranscription = lastPage.transcriptionBody;
	loadEditorWithTEI(workingTranscription);
}


function page_select_callback(topic, data, subscriberData) {
	var pageSelect = function () {

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

		lastPage = data;

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

		lastVersion = null;
		workingTranscription = '';

		var postData = { docID : data.docID, pageID : data.pageID, detail : 'long' };
		VMR.serviceRequest('biblicalcontent/get/', postData, function (o) {
			var xml = $.parseXML(o.text);
			lastPage.pageIndexContent = xml;

			if (autoLoad) {
				loadTranscription(null, data.userID);
			}
		});
	};

	if (autoSave) {
		saveDataToDB(null, function () {
			pageSelect();
		});
	}
	else pageSelect();
}


function getTranscription(versionHash, userName, callback) {
	if (userName && !showAllUserTranscriptions && userName != 'PUBLISHED') userName = null;
	var postData = {
		docID : lastPage.docID,
		pageID: lastPage.pageID,
		userName: (userName ? userName : transcriptionOwner == 'user' ? VMR.userName : transcriptionOwner == 'project' ? VMR.siteName : transcriptionOwner),
		format: 'teiraw',
		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 = false;
	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('<response><error message="XML Parse Error"/></response>');
		try {
			xml = $.parseXML(transText);
		} catch (e) {
			console.log('Problem parsing XML: ' + e);
		}
		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 populateFromBasetext(key, appendWhere, stripped) {

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

	if (!appendWhere) tinymce.get('wce_editor').setContent('<img src="/community/images/loading.gif"/>');


	var postData = {};
	var url = baseTextServiceURL;

	postData.mod = getBaseText();

	if (baseTextDocID == null || (postData.mod !='PapBasetext' && baseText == 'Language Dependent')) {

		postData.key = key;
		postData.format = (appendWhere?'basetext':'tei');
	}
	else {
		url = VMR.servicesURL + 'transcript/get/';
		postData.docID = baseTextDocID;
		postData.indexContent = key;
		postData.format = 'teiraw';
		postData.briefTEIHeader = 'true';
		postData.includeEmpty = 'true';
	}
	if (stripped) postData.filterNoise = true;

	if (baseTextOwner == 'project') {
		postData.userName = VMR.siteName;
	}

	VMR.webRequest(url, postData, function (o) {
		if (appendWhere) {
			var content = tinymce.get('wce_editor').getContent();   
			tinymce.get('wce_editor').setContent((appendWhere>0)?content+o.text:o.text+content);   
		}
		else {
			var type = 'page';
			if (lastPage.pageName && lastPage.pageName.length > 0) {
				p = lastPage.pageName;
				type = 'folio';
			}
			else p = lastPage.pageID;
			p = ''+p;
			p = p	.replace(/&/g, '&amp;')
				.replace(/</g, '&lt;')
				.replace(/>/g, '&gt;')
				.replace(/"/g, '&quot;')
				.replace(/'/g, '&apos;');
			var wit = lastPage.docID;
			var header = '<pb n="'+p+'" type="'+type+'" xml:id="P'+p+'-'+wit+'"/><cb n="1" xml:id="P'+p+'C1-'+wit+'"/><lb n="1" xml:id="P'+p+'C1L1-'+wit+'"/>';
			var headerInsertOffset = o.text.indexOf('<body');
			if (headerInsertOffset < 0) headerInsertOffset = o.text.indexOf('<text');
			if (headerInsertOffset < 0) headerInsertOffset = o.text.indexOf('<TEI');
			if (headerInsertOffset > -1) headerInsertOffset = o.text.indexOf('>', headerInsertOffset)+1;
			else headerInsertOffset = 0;
			var content = o.text.substring(0, headerInsertOffset);
			content += header;
			content += o.text.substring(headerInsertOffset);
			loadEditorWithTEI(content);
		}
	});
}


function getManuscriptInfo() {
	var mi = {
		rtl : lastRTL,
		font : 'Antinoou, AntinoouWeb, Arabic, ArabicWeb',
		baseText : baseText
	}
	if (lastPage.lang == 'grc' || lastPage.lang == 'g') {
		/* let's not set a baseText here quite yet until we investigate this more
		if (baseText == 'Language Dependent') {
			mi.baseText = 'NA28';
		}
		*/
		mi.rtl = false;
		mi.font = 'Gentium';
	}
	else 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 == 'la') {
		if (baseText == 'Language Dependent') {
			mi.baseText = 'Vulgate';
		}
		mi.rtl = false;
	}
	else if (lastPage.lang == 'syc') {
		if (baseText == 'Language Dependent') {
			mi.baseText = 'Peshitta';
		}
		mi.rtl = true;
		mi.font = 'Estrangelo Edessa, EstreWeb';
	}
	else if (lastPage.lang == 'hbo') {
		if (baseText == 'Language Dependent') {
			mi.baseText = 'WLC';
		}
		mi.rtl = true;
		mi.font = 'SBL_HebrewWeb';
	}
	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 getTEIBody(text) {
	var body = text;
	var b = text.indexOf("<body>");
	if (b >= 0) {
		var bend = text.indexOf("</body>");
		body = text.substring(b+6, bend);
	}
	return body;
}
function wrapSimpleTEI(text) {
	var 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>'+text+'</body></text></TEI>';
	return tei;
}


var lastHead='';
var lastTail='';
var lastLoadedTEIData = '';
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';
	}
	lastHead = '';
	lastTail = '';
	var b = teiBlob.indexOf("<body>");
	if (b >= 0) {
		var bend = teiBlob.indexOf("</body>");
		lastHead = teiBlob.substring(0, b+6);
		lastTail = teiBlob.substring(bend);
		teiBlob = wrapSimpleTEI(teiBlob.substring(b+6, bend));
	}
	setTEI(teiBlob);   
	lastLoadedTEIData = getTEI();
	setPreferredFontFamily(getPreferredFont());
	if (tinymce.activeEditor && tinymce.activeEditor.clientOptions) {
		tinymce.activeEditor.clientOptions.v11n = 'default';
	}
}


function populateForLastPageLoaded(stripped) {
	if (lastPage != null) {
		if (lastPage.indexContent == null || lastPage.indexContent.length < 2) {
			verseRefDialog.append = false;
                        verseRefDialog.dialog('open');
		}
		else populateFromBasetext(lastPage.indexContent, false, stripped);
	}
}


// 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));
}

function plusFromBasetext(count) {
	if (lastPage != null) {
		if (lastPage.indexContent == null || lastPage.indexContent.length < 2) {
			verseRefDialog.append = count;
                        verseRefDialog.dialog('open');
		}
		else {
			var alpha = false;
			var i = 0;
			for (; i < lastPage.indexContent.length; ++i) {
				if (alpha && !isAlpha(lastPage.indexContent.substring(i,i+1))) {
					break;
				}
				else if (isAlpha(lastPage.indexContent.substring(i,i+1))) {
					alpha = true;
				}
			}
			var book = lastPage.indexContent.substring(0,i);
			var rest = lastPage.indexContent.substring(i);

			var numeric = false;
			i = 0;
			var chap = '';
			for (; i < rest.length; ++i) {
				if (numeric && !isNumeric(rest.substring(i,i+1))) {
					break;
				}
				else if (isNumeric(rest.substring(i,i+1))) {
					numeric = true;
					chap += rest.substring(i,i+1);
				}
			}
			var rest = rest.substring(i);

			var numeric = false;
			i = 0;
			var verse = '';
			for (; i < rest.length; ++i) {
				if (numeric && !isNumeric(rest.substring(i,i+1))) {
					break;
				}
				else if (isNumeric(rest.substring(i,i+1))) {
					numeric = true;
					verse += rest.substring(i,i+1);
				}
			}

			var atLeastOneVerse = false;
			var atLeastOneChapter = false;

			var transcriptionData = tinymce.get('wce_editor').getContent();
			var xml = $.parseXML('<doc>'+transcriptionData+'</doc>');
			// find the last chapter
			$(xml).find('span[class="chapter_number"]').each(function() {
				if (count > 0 || !atLeastOneChapter) {
					chap = $(this).text();
					atLeastOneChapter = true;
				}
			});
			// find the last verse
			$(xml).find('span[class="verse_number"]').each(function() {
				if (count > 0 || !atLeastOneVerse) {
					verse = $(this).text();
					atLeastOneVerse = true;
				}
			});

			verse = parseInt(verse) + (atLeastOneVerse ? count : 0);

			populateFromBasetext(book+'.'+chap+'.'+verse, count);
		}
	}
}

// end of ugly +1 from base text logic



// 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 params = {
		groupId          : VMR.siteID,
		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        : VMR.siteID,
				userId              : VMR.userID,
				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 params = {
		groupId          : VMR.siteID,
		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 = '' + VMR.userName
			 + ' - ' + 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=' + VMR.userName
				+ '" 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          : VMR.siteID,
			categoryId       : catID,
			subject          : subject,
			body             : body,
			format           : 'html',
			inputStreamOVPs  : JSON.stringify([]),
			anonymous        : false,
			priority         : 0.0,
			allowPingbacks   : true,
			serviceContext   : JSON.stringify({
				scopeGroupId        : VMR.siteID,
				userId              : VMR.userID,
				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 = '';
	var themeDisplay = parent.Liferay.ThemeDisplay;
	if (themeDisplay.getLayoutURL().substr(0,'http'.length) !='http') {
		discussURL = '//'+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 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: ' + e);
     }
   }
   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 = VMR.getRelativeURL('reconciliation');
	var objectPart = $(projectXML).attr('objectPart');
	var params = '?projectName='+projectName+'&docID='+docID+'&biblicalContent='+objectPart+'&searchType=pages';
	$(projectXML).find('documentGroup[primary="true"]').find('document[docID='+docID+']').children('task').each(function() {
		var assignee = $(this).attr('assignedTo');
		params += '&transcriber='+assignee;
	});

	reconcilerWindow = window.open(reconcilerURL+params, 'reconcile', 'scrollbars=yes,menubar=yes,height=600,width=800,resizable=yes,toolbar=yes,status=yes');

*/



	var reconcilerURL = VMR.httpRoot+'modules/reconciler/';
	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 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 lang = null;

VMR.init(function() {
	reconciler = VMR.prefs.getString('reconciler');
	baseTextDocID = VMR.prefs.getString('baseTextDocID');
	if (baseTextDocID != null && baseTextDocID.length < 1) baseTextDocID = null;
	baseTextOwner = VMR.prefs.getString('baseTextOwner');
	baseText = VMR.prefs.getString('baseText');
	transcriptionOwner = VMR.prefs.getString('transcriptionOwner');
	rtl = VMR.prefs.getBool('direction');
	announceChanges = VMR.prefs.getBool('announceChanges');
	autoSave = VMR.prefs.getBool('autoSave');
	autoLoad = VMR.prefs.getBool('loadOnPageSelect');
	saveToRepo = 'transcriptionRepository' == VMR.prefs.getString('saveBehavior');
	hideSaveButton = 'hideButton' == VMR.prefs.getString('saveBehavior');
	hidePublishButton = VMR.prefs.getBool('hidePublish');

	$('#publishButton').hide();
				
	VMR.hasRole('Transcription Manager', function(result) {
		if (result) {
			showAllUserTranscriptions = true;
		}
		VMR.hasRole('Project Transcription Manager', VMR.siteID, function(result) {
			if (result) {
				showAllUserTranscriptions = true;
			}
			VMR.hasRole('Transcription Publisher', function(result) {
				if (result) {
					VMR.isAdmin = true;
				}

				if (VMR.isAdmin) {
					if (!hidePublishButton) {
						$('#publishButton').show();
					}
					showAllUserTranscriptions = true;
				}
				VMR.serviceRequest('projectmanagement/project/get', { projectID : VMR.projectID }, function (o) {
					var xml = $.parseXML(o.text);
					projectDefaultBasetext = $(xml).find('project:first').attr('transcriptionBaseDefault');
					if (projectDefaultBasetext && !projectDefaultBasetext.trim().length) projectDefaultBasetext = false;
					if (baseText == 'Project Default') {
						if (projectDefaultBasetext) {
							if (projectDefaultBasetext.startsWith('CrossWire:')) {
								baseText = projectDefaultBasetext.substring('CrossWire:'.length);
							}
							else {
								if (parseInt(projectDefaultBasetext) > 0) {
									if (baseTextDocID == null) {
										baseTextDocID = projectDefaultBasetext;
									}
								}
							}
						}
						else baseText = 'Language Dependent';
					}
				});
			});
		});
	});

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

		$('#populateButton').bind('click',function(event){ 
			populateForLastPageLoaded();
		});
		$('#populateButtonStripped').bind('click',function(event){ 
			populateForLastPageLoaded(true);
		});

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

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

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

		$('#publishConfirmButton').bind('click',function(event) { 
			if ($('#publishConfirmDontAsk').is(':checked')) {
				confirmPublish = false;
			}
			$.unblockUI();
			publishPage();
		});
		$('#publishConfirmCancelButton').bind('click',function(event){ 
			$.unblockUI();
		});
		$('#publishButton').bind('click',function(event){ 
			if (confirmPublish) {
				$.blockUI({ message: $('#publishConfirm') });
			}
			else publishPage();
		});

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

		$('#newPhantomBefore').bind('click',function(event){ 
			if (confirm("Are you sure you would like to create a new non-extant page before the current page?")) {
				newPhantom();
			}
		});

		$('#newPhantomAfter').bind('click',function(event){ 
			if (confirm("Are you sure you would like to create a new non-extant page after the current page?")) {
				newPhantom(true);
			}
		});

		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 populateForLastPageLoaded();
			}
			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');
		});
//		tinymce.activeEditor.contentCSS.push(VMR.httpRoot+'modules/transcript/edit.bkv/content-extra.css');
		var extraCSS = VMR.httpRoot+'modules/transcript/edit.bkv/content-extra.css';
		$('#wce_editor_ifr').contents().find('head').append('<link rel="stylesheet" href="'+extraCSS+'" type="text/css" />');
		tinymce.get('wce_editor').on('keyup', function() {
			if (announceChanges) {
				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);
				if (lastPage.lang == 'g') lastPage.lang = 'grc';
				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>';
				var postData = {
					text: tei,
					docID : lastPage.docID,
					pageID: lastPage.pageID,
				};
				VMR.serviceRequest('transcript/clean/', postData, function (o) {
					if (o.text.match('^<TEI')) {
						o.text = '<?xml version="1.0" encoding="utf-8"?><?xml-model href="TEI-NTMSS.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>' + o.text;
					}
					lastPage.transcriptionBody = o.text;
					lastPage.sender = document;
					++ignoreUpdateMessages; setTimeout(function() { --ignoreUpdateMessages; }, 500);
					VMR.publish("interedition.transcription.updated", lastPage);
				});
			}
		});
		if (hideSaveButton) $('#mceu_4').css('display','none');
	});

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

	VMR.expandFillPageClientsOrig = VMR.expandFillPageClients;
	VMR.expandFillPageClients = function() {
		VMR.expandFillPageClientsOrig();
		resizeEditor();
	};

	VMR.subscribe("interedition.page.selected", page_select_callback);
	VMR.subscribe("interedition.transcription.updated", onTranscriptionUpdate);
	VMR.subscribe("interedition.transcription.scrolled", onTranscriptionScrolled);
	VMR.subscribe("interedition.transcription.readonly", onTranscriptionReadOnly);

	setTimeout(VMR.refreshHeight, 1000);
	setTimeout(VMR.refreshHeight, 1200);
	setTimeout(VMR.refreshHeight, 1400);

}, '../../', true);


var MARGIN=34;
function resizeEditor() {
	if (tinymce && tinymce.activeEditor && tinymce.activeEditor.iframeElement) {
		var height = gadgets.window.getViewportDimensions().height;
		var toolbarHeight = $(tinymce.activeEditor.iframeElement.parentElement.parentElement).children('.mce-toolbar-grp').height();
		var statusbarHeight = $(tinymce.activeEditor.iframeElement.parentElement.parentElement).children('.mce-statusbar').height();
		tinymce.DOM.setStyle(tinymce.activeEditor.iframeElement, 'height', (height - toolbarHeight - statusbarHeight - 8 - MARGIN) + 'px');
	}
}


function setupEditor(rtl, callback) {
	var lang = (parent && parent.Liferay) ? parent.Liferay.ThemeDisplay.getLanguageId() : 'en';
	setWceEditor('wce_editor', rtl,
		function() {
			var unclearDefault = VMR.prefs.getString('unclearDefault');
			if (unclearDefault && unclearDefault.length > 0 && tinymce && tinymce.activeEditor) tinymce.activeEditor.settings.unclear_text_reason_default = unclearDefault;
			if (callback) callback();
		},
		lang, VMR.httpRoot+'modules/transcript/edit/js/tinymce',
		function () {
			return (lastPage) ? lastPage.docName : '';
		},
		function() {
			return (lastPage.lang == 'g') ? 'grc' : lastPage.lang;
		});
}


function getFolio() {
	return lastPage.pageName;
}





</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>
<div id="publishConfirm" style="display:none;margin-top:.5em;margin-bottom:.5em;margin-left:.2em;">
	<p><h2>Confirm</h2><label>Are you sure you wish to publish?</label> &nbsp; &nbsp; <button id="publishConfirmButton">Yes</button> &nbsp; &nbsp; <button id="publishConfirmCancelButton">Cancel</button></p>
<p><input type="checkbox" id="publishConfirmDontAsk" /> <label>Don't ask me again.</label></p>
</div>

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