[Debian-islamic-commits] [SCM] Packaging for Zekr branch, master, updated. debian/0.7.6+repack-2-1-gb082127

Mohammad Derakhshani mderakhs at scspcxxx.cs
Wed Aug 11 16:24:26 UTC 2010


The following commit has been merged in the master branch:
commit b0821271bb464d677ccb6d1f958754ff33c4b451
Author: Mohammad Derakhshani <mderakhs at scspcxxx.cs>
Date:   Wed Aug 11 12:23:03 2010 -0400

    New upstreaqm release 1.0.0

diff --git a/debian/changelog b/debian/changelog
index d87a22c..e6bd4e7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+zekr (1.0.0+repack-1) unstable; urgency=low
+
+  * New upstream release.
+  * debian/java_home
+    + put the sun JREs on top.
+
+ -- Mohammad Derakhshani <mohammad at zekr.org>  Wed,  11 Aug 2010 11:58:07 -0300
+
+
 zekr (0.7.6+repack-2) unstable; urgency=low
 
   * debian/control: B-D on default-jdk rather than default-jdk-builddep
diff --git a/debian/java_home b/debian/java_home
index 7504f35..69a6523 100644
--- a/debian/java_home
+++ b/debian/java_home
@@ -2,10 +2,10 @@
 # compatible ZEKR_JAVA_HOME. This setting may be overridden on a per-user basis by
 # altering the ZEKR_JAVA_HOME setting in ~/.zekr/zekrrc.
 
-/usr/lib/jvm/java-6-openjdk
-/usr/lib/jvm/java-7-icedtea
 /usr/lib/jvm/java-6-sun
 /usr/lib/jvm/java-1.5.0-sun
+/usr/lib/jvm/java-6-openjdk
+/usr/lib/jvm/java-7-icedtea
 /usr/lib/jvm/default-java
 /usr/lib/jvm/java-gcj
 #/usr/lib/kaffe/pthreads
diff --git a/doc/changes.txt b/doc/changes.txt
index cb92f01..0a25d42 100644
--- a/doc/changes.txt
+++ b/doc/changes.txt
@@ -712,11 +712,11 @@ Features/Enhancements:
 	Updated quran-simple from tanzil "Simple" to "Simple Enhanced" version to ease reading.
 	Added the following new patterns to search-info.properties:
 		- Diacritics (search.pattern.diacr): a single regular expression to match all diacritics of a language. Diacritics are inserted after a language's letter range (with * regex operator) so that it matches possible texts with diacritics in the target search text.
-		- Letter range (search.pattern.letter): a single regular expression to match all letter of a language. Letters are basic alphabet of a language, different from digits, marks and diacritics. Diacritics may be applied after each letter in order to search for possible strings with diacritics in the text.
+		- Letter range (search.pattern.letter): a single regular expression to match all letters of a language. Letters are basic alphabet of a language, different from digits, marks and diacritics. Diacritics may be applied after each letter in order to search for possible strings with diacritics in the text.
 		- Punctuation marks (search.pattern.punct): a single regular expression to match all punctuation marks of a language. \p{Punct} will match almost all European punctuations, and we should add more to this for non-European languages. This regex is used to insert before and after search keywords in order to work as a tokenizer (for example so that "salaam" search query matches text parts like: "salaam.").
 	Added QueryParserFactory and a new property to config.properties: view.search.advanced.queryParser. We use QueryParser by default as AnalyzingQueryParser doesn't recognize leading wildcards. User may change it himself. As a result of introducing new query parsers, we have now a new dependency: Added a new dependency: lucene-misc contrib project. This dependency is only used when parsers other than QueryParser are used.
 	Now supports punctuation removal in sura name filtering (in Goto dialog).
-	We now set default volume for search result player audio player.
+	We now set default audio player volume for search result player audio player.
 	Search results are now filtered. As a result, KASRA+SHADDA order is reversed in the final output to help Arabic newbie readers.
 	AudioCacheManagerTimerTask made inactive for now. It had no effect, as there was no offline caching for audio files.
 Bug fixes:
@@ -725,3 +725,18 @@ Bug fixes:
 	In recitation .properties files: audio.offlineBismillam should be changed to audio.offlineBismillah. Both these values are not recognized by Zekr for backward compatibility.
 	A bug in search caused Kasra+Shadda reverse ordering not to be recognized correctly.
 	Do not accept sura numbers below 1 in nav bar.
+
+Version 1.0.0 - [12-08-10]
+Features/Enhancements:
+	All 13px icons change to 16px size.
+	A number of icons changed to have a more harmonic icon set in Zekr.
+	Zoom/Unzoom will only work on Quran OR translation if applied in separate layout. Otherwise both Quran and translation text size is increased/decreased.
+	Zoom/Unzoom will not change sura name font size.
+	Prevent AudioPlayerForm to get out of view (some limitations are applied to its location).
+	Show only language in translation list menu. Show the same info at multi-translation configuration form.
+	Added a new property: trans.name.mode = english | localized. It then shows either translation English name or its localized name wherever a translation data is referenced (e.g. in multi-translation config form or in translation menu). 
+Bug fixes:
+	Save As button will now save search result if current view shows a search result.
+	Changing between Block/Line-by-Line mode in Translation-only layout will now work.
+	Save AudioPlayerForm new location as it closes. It now saves the new location before Zekr is closed (previously it wasn't saved when Zekr was closed and AudioPlayerForm was in open state).
+	A few changes and bug fixes in quran-properties-en.xml, thanks to Yahya Saturday.
diff --git a/doc/readme.txt b/doc/readme.txt
index b1b3fe0..2443768 100644
--- a/doc/readme.txt
+++ b/doc/readme.txt
@@ -41,7 +41,7 @@ their corresponding licenses under doc directory:
     and commons-configuration-1.6):
     Apache License version 2.0, [zekr]/doc/apache-license-2.0.txt
 - Lucene libraries (lucene-core-3.0.0.jar, lucene-highlighter-3.0.0.jar,
-    lucene-snowball-3.0.0.jar, lucene-memory-3.0.0.jar, and lucene-memory-3.0.0.jar):
+    lucene-snowball-3.0.0.jar, lucene-memory-3.0.0.jar, and lucene-misc-3.0.0.jar):
     Apache License version 2.0, [zekr]/doc/apache-license-2.0.txt
 - log4j-1.2.8: Apache Software License version 1.1, [zekr]/doc/apache-software-license-1.1.txt
 - velocity-1.6.2: Apache License version 2.0, [zekr]/doc/apache-license-2.0.txt
diff --git a/readme.txt b/readme.txt
index b1b3fe0..2443768 100644
--- a/readme.txt
+++ b/readme.txt
@@ -41,7 +41,7 @@ their corresponding licenses under doc directory:
     and commons-configuration-1.6):
     Apache License version 2.0, [zekr]/doc/apache-license-2.0.txt
 - Lucene libraries (lucene-core-3.0.0.jar, lucene-highlighter-3.0.0.jar,
-    lucene-snowball-3.0.0.jar, lucene-memory-3.0.0.jar, and lucene-memory-3.0.0.jar):
+    lucene-snowball-3.0.0.jar, lucene-memory-3.0.0.jar, and lucene-misc-3.0.0.jar):
     Apache License version 2.0, [zekr]/doc/apache-license-2.0.txt
 - log4j-1.2.8: Apache Software License version 1.1, [zekr]/doc/apache-software-license-1.1.txt
 - velocity-1.6.2: Apache License version 2.0, [zekr]/doc/apache-license-2.0.txt
diff --git a/res/audio/abdulbasit-64kbps-online.properties b/res/audio/abdulbasit-64kbps-online.properties
index 0fb82e9..8c643d2 100644
--- a/res/audio/abdulbasit-64kbps-online.properties
+++ b/res/audio/abdulbasit-64kbps-online.properties
@@ -16,14 +16,14 @@ audio.reciter.tr = Abdülbâsıt Abdüssamed
 
 audio.type = online
 
-# example of the generated path is: http://everyayah.com/data/AbdulSamad_64kbps_QuranExplorer.Com/001025.mp3 for sura 1, aya 25.
-audio.onlineUrl = http://everyayah.com/data/AbdulSamad_64kbps_QuranExplorer.Com/%1$03d%2$03d.mp3
+# example of the generated path is: http://www.everyayah.com/data/AbdulSamad_64kbps_QuranExplorer.Com/001025.mp3 for sura 1, aya 25.
+audio.onlineUrl = http://www.everyayah.com/data/AbdulSamad_64kbps_QuranExplorer.Com/%1$03d%2$03d.mp3
 audio.offlineUrl =
 
 audio.offlineAudhubillah =
 audio.offlineBismillam =
-audio.offlineSaghaghallah =
+audio.offlineSadaghallah =
 
-audio.onlineAudhubillah = http://everyayah.com/data/AbdulSamad_64kbps_QuranExplorer.Com/audhubillah.mp3
-audio.onlineBismillam = http://everyayah.com/data/AbdulSamad_64kbps_QuranExplorer.Com/bismillah.mp3
-audio.onlineSaghaghallah =
+audio.onlineAudhubillah = http://www.everyayah.com/data/AbdulSamad_64kbps_QuranExplorer.Com/audhubillah.mp3
+audio.onlineBismillam = http://www.everyayah.com/data/AbdulSamad_64kbps_QuranExplorer.Com/bismillah.mp3
+audio.onlineSadaghallah =
diff --git a/res/audio/afasy-128kbps-online.properties b/res/audio/afasy-128kbps-online.properties
index d90904d..a80568a 100644
--- a/res/audio/afasy-128kbps-online.properties
+++ b/res/audio/afasy-128kbps-online.properties
@@ -22,8 +22,8 @@ audio.offlineUrl =
 
 audio.offlineAudhubillah =
 audio.offlineBismillam =
-audio.offlineSaghaghallah =
+audio.offlineSadaghallah =
 
 audio.onlineAudhubillah = http://everyayah.com/data/Alafasy_128kbps/audhubillah.mp3
-audio.onlineBismillam = http://everyayah.com/data/Alafasy_128kbps/bismillah.mp3
-audio.onlineSaghaghallah =
+audio.onlineBismillah = http://everyayah.com/data/Alafasy_128kbps/bismillah.mp3
+audio.onlineSadaghallah =
diff --git a/res/audio/ajmy-64kbps-online.properties b/res/audio/ajmy-64kbps-online.properties
deleted file mode 100644
index 2e3459e..0000000
--- a/res/audio/ajmy-64kbps-online.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-audio.id = ajmy-64kbps-online
-audio.version = 0.7.5
-audio.lastUpdate = 31-10-2009
-audio.quality = 64kbps
-
-audio.license = Unknown
-audio.language = ar
-audio.country = AF
-
-audio.reciter = Ahmad Al-Ajmy
-audio.reciter.ar = أحمد العجمي
-audio.reciter.en = Ahmad Al-Ajmy
-audio.reciter.fa = احمد عجمی
-audio.reciter.ru = Ахмад аль-Аджами
-audio.reciter.tr = Ahmed el-Acemî
-
-audio.type = online
-
-# example of the generated path is: http://everyayah.com/data/Ahmed_ibn_Ali_al-Ajamy_64kbps_QuranExplorer.Com/001025.mp3 for sura 1, aya 25.
-audio.onlineUrl = http://everyayah.com/data/Ahmed_ibn_Ali_al-Ajamy_64kbps_QuranExplorer.Com/%1$03d%2$03d.mp3
-audio.offlineUrl =
-
-audio.offlineAudhubillah =
-audio.offlineBismillam =
-audio.offlineSaghaghallah =
-
-audio.onlineAudhubillah = http://everyayah.com/data/Ahmed_ibn_Ali_al-Ajamy_64kbps_QuranExplorer.Com/audhubillah.mp3
-audio.onlineBismillam = http://everyayah.com/data/Ahmed_ibn_Ali_al-Ajamy_64kbps_QuranExplorer.Com/bismillah.mp3
-audio.onlineSaghaghallah =
diff --git a/res/audio/ghamdi-40kbps-online.properties b/res/audio/ghamdi-40kbps-online.properties
index 282069e..6839b5a 100644
--- a/res/audio/ghamdi-40kbps-online.properties
+++ b/res/audio/ghamdi-40kbps-online.properties
@@ -22,8 +22,8 @@ audio.offlineUrl =
 
 audio.offlineAudhubillah =
 audio.offlineBismillam =
-audio.offlineSaghaghallah =
+audio.offlineSadaghallah =
 
 audio.onlineAudhubillah = http://everyayah.com/data/Ghamadi_40kbps/audhubillah.mp3
 audio.onlineBismillam = http://everyayah.com/data/Ghamadi_40kbps/bismillah.mp3
-audio.onlineSaghaghallah =
+audio.onlineSadaghallah =
diff --git a/res/audio/huzaifi-32kbps-online.properties b/res/audio/huzaifi-32kbps-online.properties
deleted file mode 100644
index af0bcb6..0000000
--- a/res/audio/huzaifi-32kbps-online.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-audio.id = huzaifi-32kbps-online
-audio.version = 0.7.5
-audio.lastUpdate = 31-10-2009
-audio.quality = 32kbps
-
-audio.license = Unknown
-audio.language = ar
-audio.country = SA
-
-audio.reciter = Ali Al-Huzaifi
-audio.reciter.ar = علي الحذيفي
-audio.reciter.en = Ali Al-Huzaifi
-audio.reciter.fa = علی حذیفی
-audio.reciter.ru = Али аль-Хузайфи
-audio.reciter.tr = Ali el-Huzeyfî
-
-audio.type = online
-
-# example of the generated path is: http://everyayah.com/data/Hudhaify_32kbps/001025.mp3 for sura 1, aya 25.
-audio.onlineUrl = http://everyayah.com/data/Hudhaify_32kbps/%1$03d%2$03d.mp3
-audio.offlineUrl =
-
-audio.offlineAudhubillah =
-audio.offlineBismillam =
-audio.offlineSaghaghallah =
-
-audio.onlineAudhubillah = http://everyayah.com/data/Hudhaify_32kbps/audhubillah.mp3
-audio.onlineBismillam = http://everyayah.com/data/Hudhaify_32kbps/bismillah.mp3
-audio.onlineSaghaghallah =
diff --git a/res/audio/minshawi-16kbps-online.properties b/res/audio/minshawi-16kbps-online.properties
index 9496045..b54a7c4 100644
--- a/res/audio/minshawi-16kbps-online.properties
+++ b/res/audio/minshawi-16kbps-online.properties
@@ -17,14 +17,15 @@ audio.reciter.tr = Muhammed Sıddık el-Minşâvî
 # offline, online, or offline-online (first checks for offline, if not available, plays online)
 audio.type = online
 
-# example of the generated path is: http://everyayah.com/data/Menshawi_32kbps/001025.mp3 for sura 1, aya 25.
-audio.onlineUrl = http://everyayah.com/data/Menshawi_16kbps/%1$03d%2$03d.mp3
+# example of the generated path is: http://www.everyayah.com/data/Menshawi_32kbps/001025.mp3 for sura 1, aya 25.
+audio.onlineUrl = http://www.everyayah.com/data/Menshawi_16kbps/%1$03d%2$03d.mp3
 audio.offlineUrl =
 
 audio.offlineAudhubillah =
-audio.offlineBismillam =
-audio.offlineSaghaghallah =
+audio.offlineBismillah =
+audio.offlineSadaghallah =
 
-audio.onlineAudhubillah = http://everyayah.com/data/Menshawi_16kbps/000000.mp3
-audio.onlineBismillam = http://everyayah.com/data/Menshawi_16kbps/001001.mp3
-audio.onlineSaghaghallah = http://everyayah.com/data/Menshawi_16kbps/115001.mp3
+audio.onlineAudhubillah = http://www.everyayah.com/data/Menshawi_16kbps/000000.mp3
+audio.onlineBismillah = http://www.everyayah.com/data/Menshawi_16kbps/001001.mp3
+audio.onlineBismillam = http://www.everyayah.com/data/Menshawi_16kbps/001001.mp3
+audio.onlineSadaghallah = http://www.everyayah.com/data/Menshawi_16kbps/115001.mp3
diff --git a/res/audio/muaiqly-48kbps-online.properties b/res/audio/muaiqly-48kbps-online.properties
deleted file mode 100644
index f2fd892..0000000
--- a/res/audio/muaiqly-48kbps-online.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-audio.id = muaiqly-48kbps-online
-audio.version = 0.7.5
-audio.lastUpdate = 18-02-2010
-audio.quality = 48kbps
-
-audio.license = Unknown
-audio.language = ar
-audio.country = SA
-
-audio.reciter = Maher Al-Muaiqly
-audio.reciter.fa = ماهر معیقلی
-audio.reciter.ar = ماهر المعيقلي
-audio.reciter.en = Maher Al-Muaiqly
-
-audio.type = online
-
-audio.onlineUrl = http://e-quran.org/rec/muaiqly-48kbps/%1$03d/%1$03d%2$03d.mp3
-audio.offlineUrl =
-
-audio.offlineAudhubillah =
-audio.offlineBismillam =
-audio.offlineSaghaghallah =
-
-audio.onlineAudhubillah = http://e-quran.org/rec/muaiqly-48kbps/audhubillah.mp3
-audio.onlineBismillam = http://e-quran.org/rec/muaiqly-48kbps/bismillah.mp3
-audio.onlineSaghaghallah =
diff --git a/res/audio/shatri-128kbps-online.properties b/res/audio/shatri-128kbps-online.properties
index 4ba689d..d22178a 100644
--- a/res/audio/shatri-128kbps-online.properties
+++ b/res/audio/shatri-128kbps-online.properties
@@ -1,29 +1,30 @@
 audio.id = shatri-128kbps-online
 audio.version = 0.7.5
-audio.lastUpdate = 31-10-2009
+audio.lastUpdate = 16-06-2010
 audio.quality = 128kbps
 
 audio.license = Unknown
 audio.language = ar
 audio.country = SA
 
-audio.reciter = Abu Bakr Al-Shatri
+audio.reciter = Abu Bakr Ash-Shatri
 audio.reciter.ar = ابوبكر الشاطري
-audio.reciter.en = Abu Bakr Al-Shatri
+audio.reciter.en = Abu Bakr Ash-Shatri
 audio.reciter.fa = ابوبكر شاطری
 audio.reciter.ru = Абу Бакр аш-Шатри
 audio.reciter.tr = Ebu Bekir eş-Şâtırî
 
 audio.type = online
 
-# example of the generated path is: http://everyayah.com/data/Abu%%20Bakr%%20Ash-Shaatree_128kbps/001025.mp3 for sura 1, aya 25.
-audio.onlineUrl = http://everyayah.com/data/Abu%%20Bakr%%20Ash-Shaatree_128kbps/%1$03d%2$03d.mp3
+# example of the generated path is: http://www.everyayah.com/data/Abu%%20Bakr%%20Ash-Shaatree_128kbps/001025.mp3 for sura 1, aya 25.
+audio.onlineUrl = http://www.everyayah.com/data/Abu%%20Bakr%%20Ash-Shaatree_128kbps/%1$03d%2$03d.mp3
 audio.offlineUrl =
 
 audio.offlineAudhubillah =
-audio.offlineBismillam =
-audio.offlineSaghaghallah =
+audio.offlineBismillah =
+audio.offlineSadaghallah =
 
-audio.onlineAudhubillah = http://everyayah.com/data/Abu%20Bakr%20Ash-Shaatree_128kbps/audhubillah.mp3
-audio.onlineBismillam = http://everyayah.com/data/Abu%20Bakr%20Ash-Shaatree_128kbps/bismillah.mp3
-audio.onlineSaghaghallah =
+audio.onlineAudhubillah = http://www.everyayah.com/data/Abu%20Bakr%20Ash-Shaatree_128kbps/audhubillah.mp3
+audio.onlineBismillah = http://www.everyayah.com/data/Abu%20Bakr%20Ash-Shaatree_128kbps/bismillah.mp3
+audio.onlineBismillam = http://www.everyayah.com/data/Abu%20Bakr%20Ash-Shaatree_128kbps/bismillah.mp3
+audio.onlineSadaghallah =
diff --git a/res/audio/shuraim-128kbps-online.properties b/res/audio/shuraim-128kbps-online.properties
index af8afb6..f579cbf 100644
--- a/res/audio/shuraim-128kbps-online.properties
+++ b/res/audio/shuraim-128kbps-online.properties
@@ -16,14 +16,15 @@ audio.reciter.tr = Suûd eş-Şüreym
 
 audio.type = online
 
-# example of the generated path is: http://everyayah.com/data/Saood%%20bin%%20Ibraaheem%%20Ash-Shuraym_128kbps/001025.mp3 for sura 1, aya 25.
-audio.onlineUrl = http://everyayah.com/data/Saood%%20bin%%20Ibraaheem%%20Ash-Shuraym_128kbps/%1$03d%2$03d.mp3
+# example of the generated path is: http://www.everyayah.com/data/Saood%%20bin%%20Ibraaheem%%20Ash-Shuraym_128kbps/001025.mp3 for sura 1, aya 25.
+audio.onlineUrl = http://www.everyayah.com/data/Saood%%20bin%%20Ibraaheem%%20Ash-Shuraym_128kbps/%1$03d%2$03d.mp3
 audio.offlineUrl =
 
 audio.offlineAudhubillah =
 audio.offlineBismillam =
-audio.offlineSaghaghallah =
+audio.offlineSadaghallah =
 
-audio.onlineAudhubillah = http://everyayah.com/data/Saood%20bin%20Ibraaheem%20Ash-Shuraym_128kbps/audhubillah.mp3
-audio.onlineBismillam = http://everyayah.com/data/Saood%20bin%20Ibraaheem%20Ash-Shuraym_128kbps/bismillah.mp3
-audio.onlineSaghaghallah =
+audio.onlineAudhubillah = http://www.everyayah.com/data/Saood%20bin%20Ibraaheem%20Ash-Shuraym_128kbps/audhubillah.mp3
+audio.onlineBismillah = http://www.everyayah.com/data/Saood%20bin%20Ibraaheem%20Ash-Shuraym_128kbps/bismillah.mp3
+audio.onlineBismillam = http://www.everyayah.com/data/Saood%20bin%20Ibraaheem%20Ash-Shuraym_128kbps/bismillah.mp3
+audio.onlineSadaghallah =
diff --git a/res/audio/sudais-192kbps-online.properties b/res/audio/sudais-192kbps-online.properties
index 277ccc4..8093c4b 100644
--- a/res/audio/sudais-192kbps-online.properties
+++ b/res/audio/sudais-192kbps-online.properties
@@ -16,14 +16,15 @@ audio.reciter.tr = Abdurrahman es-Südeys
 
 audio.type = online
 
-# example of the generated path is: http://everyayah.com/data/Abdurrahmaan_As-Sudais_192kbps/001025.mp3 for sura 1, aya 25.
-audio.onlineUrl = http://everyayah.com/data/Abdurrahmaan_As-Sudais_192kbps/%1$03d%2$03d.mp3
+# example of the generated path is: http://www.everyayah.com/data/Abdurrahmaan_As-Sudais_192kbps/001025.mp3 for sura 1, aya 25.
+audio.onlineUrl = http://www.everyayah.com/data/Abdurrahmaan_As-Sudais_192kbps/%1$03d%2$03d.mp3
 audio.offlineUrl =
 
 audio.offlineAudhubillah =
-audio.offlineBismillam =
-audio.offlineSaghaghallah =
+audio.offlineBismillah =
+audio.offlineSadaghallah =
 
-audio.onlineAudhubillah = http://everyayah.com/data/Abdurrahmaan_As-Sudais_192kbps/audhubillah.mp3
-audio.onlineBismillam = http://everyayah.com/data/Abdurrahmaan_As-Sudais_192kbps/bismillah.mp3
-audio.onlineSaghaghallah =
+audio.onlineAudhubillah = http://www.everyayah.com/data/Abdurrahmaan_As-Sudais_192kbps/audhubillah.mp3
+audio.onlineBismillah = http://www.everyayah.com/data/Abdurrahmaan_As-Sudais_192kbps/bismillah.mp3
+audio.onlineBismillam = http://www.everyayah.com/data/Abdurrahmaan_As-Sudais_192kbps/bismillah.mp3
+audio.onlineSadaghallah =
diff --git a/res/config/config.properties b/res/config/config.properties
index 21b7e14..7601682 100644
--- a/res/config/config.properties
+++ b/res/config/config.properties
@@ -1,5 +1,5 @@
 # Zekr configuration file
-version = 0.7.6
+version = 1.0.0
 
 # Quran
 quran.text.delim = \\r\\n
@@ -11,6 +11,8 @@ lang.default = en_US
 # Translation
 trans.default = transliteration-en
 trans.custom =
+# can be: english or localized
+trans.name.mode = localized
 
 # Revelation data
 revel.default = ibn-abbas
diff --git a/res/config/search-info.properties b/res/config/search-info.properties
index f7d158d..b37bf8a 100644
--- a/res/config/search-info.properties
+++ b/res/config/search-info.properties
@@ -1,5 +1,5 @@
 # Zekr replace patterns and stop words to be used in search
-search.version = 0.7.6
+search.version = 1.0.0
 
 # Generic patterns
 search.pattern.replace = [\u00e0-\u00e5\u0100-\u0105]=a,[\u00e8-\u00eb\u0112-\u011b]=e,[\u00ec-\u00ef\u0128-\u0131]=i
diff --git a/res/config/shortcut.xml b/res/config/shortcut.xml
index 3009c4c..0d2bf70 100644
--- a/res/config/shortcut.xml
+++ b/res/config/shortcut.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<shortcut version="0.7.6">
+<shortcut version="1.0.0">
 <![CDATA[
 - if shortcut for right-to-left mode is different, specify rtlKey for mapping element.
 - use 'Alt', 'Ctrl', and 'Shift' modifiers only. Ctrl is treated as Cmd on Mac systems.
diff --git a/res/image/icon/about13.png b/res/image/icon/about13.png
deleted file mode 100644
index 43ae70e..0000000
Binary files a/res/image/icon/about13.png and /dev/null differ
diff --git a/res/image/icon/add13.png b/res/image/icon/add13.png
deleted file mode 100644
index d7bce97..0000000
Binary files a/res/image/icon/add13.png and /dev/null differ
diff --git a/res/image/icon/audio/online-recitation13.png b/res/image/icon/audio/online-recitation13.png
deleted file mode 100644
index 044f953..0000000
Binary files a/res/image/icon/audio/online-recitation13.png and /dev/null differ
diff --git a/res/image/icon/audio/player-next13.png b/res/image/icon/audio/player-next13.png
deleted file mode 100644
index de81602..0000000
Binary files a/res/image/icon/audio/player-next13.png and /dev/null differ
diff --git a/res/image/icon/audio/player-pause13.png b/res/image/icon/audio/player-pause13.png
deleted file mode 100644
index 76f62e8..0000000
Binary files a/res/image/icon/audio/player-pause13.png and /dev/null differ
diff --git a/res/image/icon/audio/player-play-rtl13.png b/res/image/icon/audio/player-play-rtl13.png
deleted file mode 100644
index 4cd0a7b..0000000
Binary files a/res/image/icon/audio/player-play-rtl13.png and /dev/null differ
diff --git a/res/image/icon/audio/player-play-rtl16.png b/res/image/icon/audio/player-play-rtl16.png
index 8e74871..4ea2f24 100644
Binary files a/res/image/icon/audio/player-play-rtl16.png and b/res/image/icon/audio/player-play-rtl16.png differ
diff --git a/res/image/icon/audio/player-play13.png b/res/image/icon/audio/player-play13.png
deleted file mode 100644
index 55de42c..0000000
Binary files a/res/image/icon/audio/player-play13.png and /dev/null differ
diff --git a/res/image/icon/audio/player-playlist13.png b/res/image/icon/audio/player-playlist13.png
deleted file mode 100644
index d61d1e5..0000000
Binary files a/res/image/icon/audio/player-playlist13.png and /dev/null differ
diff --git a/res/image/icon/audio/player-prev13.png b/res/image/icon/audio/player-prev13.png
deleted file mode 100644
index ab2b25b..0000000
Binary files a/res/image/icon/audio/player-prev13.png and /dev/null differ
diff --git a/res/image/icon/audio/player-stop13.png b/res/image/icon/audio/player-stop13.png
deleted file mode 100644
index 3af47ac..0000000
Binary files a/res/image/icon/audio/player-stop13.png and /dev/null differ
diff --git a/res/image/icon/audio/recitation-pack13.png b/res/image/icon/audio/recitation-pack13.png
deleted file mode 100644
index 9c5bfd7..0000000
Binary files a/res/image/icon/audio/recitation-pack13.png and /dev/null differ
diff --git a/res/image/icon/blank.gif b/res/image/icon/blank.gif
deleted file mode 100644
index 4bcc753..0000000
Binary files a/res/image/icon/blank.gif and /dev/null differ
diff --git a/res/image/icon/book-blue13.png b/res/image/icon/book-blue13.png
deleted file mode 100644
index 3d71f76..0000000
Binary files a/res/image/icon/book-blue13.png and /dev/null differ
diff --git a/res/image/icon/book-red13.png b/res/image/icon/book-red13.png
deleted file mode 100644
index 78b73f8..0000000
Binary files a/res/image/icon/book-red13.png and /dev/null differ
diff --git a/res/image/icon/book13.png b/res/image/icon/book13.png
deleted file mode 100644
index c86babd..0000000
Binary files a/res/image/icon/book13.png and /dev/null differ
diff --git a/res/image/icon/bookmark/add-bookmark13.png b/res/image/icon/bookmark/add-bookmark13.png
deleted file mode 100644
index d7bce97..0000000
Binary files a/res/image/icon/bookmark/add-bookmark13.png and /dev/null differ
diff --git a/res/image/icon/bookmark/bookmark-item.png b/res/image/icon/bookmark/bookmark-item.png
deleted file mode 100644
index d8d1be6..0000000
Binary files a/res/image/icon/bookmark/bookmark-item.png and /dev/null differ
diff --git a/res/image/icon/bookmark/bookmark-item13.png b/res/image/icon/bookmark/bookmark-item13.png
deleted file mode 100644
index 8143a13..0000000
Binary files a/res/image/icon/bookmark/bookmark-item13.png and /dev/null differ
diff --git a/res/image/icon/bookmark/edit-bookmark13.png b/res/image/icon/bookmark/edit-bookmark13.png
deleted file mode 100644
index d979303..0000000
Binary files a/res/image/icon/bookmark/edit-bookmark13.png and /dev/null differ
diff --git a/res/image/icon/bookmark/find-ref13.png b/res/image/icon/bookmark/find-ref13.png
deleted file mode 100644
index b2c145b..0000000
Binary files a/res/image/icon/bookmark/find-ref13.png and /dev/null differ
diff --git a/res/image/icon/bookmark/folder-close.png b/res/image/icon/bookmark/folder-close.png
deleted file mode 100644
index 901edc9..0000000
Binary files a/res/image/icon/bookmark/folder-close.png and /dev/null differ
diff --git a/res/image/icon/bookmark/folder-close13.png b/res/image/icon/bookmark/folder-close13.png
deleted file mode 100644
index 5f4737d..0000000
Binary files a/res/image/icon/bookmark/folder-close13.png and /dev/null differ
diff --git a/res/image/icon/bookmark/folder-open.png b/res/image/icon/bookmark/folder-open.png
deleted file mode 100644
index 1e074cd..0000000
Binary files a/res/image/icon/bookmark/folder-open.png and /dev/null differ
diff --git a/res/image/icon/bookmark/folder-open13.png b/res/image/icon/bookmark/folder-open13.png
deleted file mode 100644
index e806e50..0000000
Binary files a/res/image/icon/bookmark/folder-open13.png and /dev/null differ
diff --git a/res/image/icon/bookmark/manage-bookmark-sets13.png b/res/image/icon/bookmark/manage-bookmark-sets13.png
deleted file mode 100644
index e668ff4..0000000
Binary files a/res/image/icon/bookmark/manage-bookmark-sets13.png and /dev/null differ
diff --git a/res/image/icon/check-4-update13.png b/res/image/icon/check-4-update13.png
deleted file mode 100644
index 709ecd3..0000000
Binary files a/res/image/icon/check-4-update13.png and /dev/null differ
diff --git a/res/image/icon/config13.png b/res/image/icon/config13.png
deleted file mode 100644
index 43f05a7..0000000
Binary files a/res/image/icon/config13.png and /dev/null differ
diff --git a/res/image/icon/config_trans_list13.png b/res/image/icon/config_trans_list13.png
deleted file mode 100644
index 3922a1c..0000000
Binary files a/res/image/icon/config_trans_list13.png and /dev/null differ
diff --git a/res/image/icon/config_trans_list16.png b/res/image/icon/config_trans_list16.png
deleted file mode 100644
index 6e756cc..0000000
Binary files a/res/image/icon/config_trans_list16.png and /dev/null differ
diff --git a/res/image/icon/down_arrow.gif b/res/image/icon/down_arrow.gif
deleted file mode 100644
index 56bb6cf..0000000
Binary files a/res/image/icon/down_arrow.gif and /dev/null differ
diff --git a/res/image/icon/edit16.png b/res/image/icon/edit16.png
deleted file mode 100644
index b435e77..0000000
Binary files a/res/image/icon/edit16.png and /dev/null differ
diff --git a/res/image/icon/exit13.png b/res/image/icon/exit13.png
deleted file mode 100644
index 04fb611..0000000
Binary files a/res/image/icon/exit13.png and /dev/null differ
diff --git a/res/image/icon/export13.png b/res/image/icon/export13.png
deleted file mode 100644
index 3ecc673..0000000
Binary files a/res/image/icon/export13.png and /dev/null differ
diff --git a/res/image/icon/fullscreen13.png b/res/image/icon/fullscreen13.png
deleted file mode 100644
index b2f7091..0000000
Binary files a/res/image/icon/fullscreen13.png and /dev/null differ
diff --git a/res/image/icon/general-edit13.png b/res/image/icon/general-edit13.png
deleted file mode 100644
index 94972cc..0000000
Binary files a/res/image/icon/general-edit13.png and /dev/null differ
diff --git a/res/image/icon/goto13.png b/res/image/icon/goto13.png
deleted file mode 100644
index f72c9fc..0000000
Binary files a/res/image/icon/goto13.png and /dev/null differ
diff --git a/res/image/icon/help13.png b/res/image/icon/help13.png
deleted file mode 100644
index 623d7c8..0000000
Binary files a/res/image/icon/help13.png and /dev/null differ
diff --git a/res/image/icon/homepage13.png b/res/image/icon/homepage13.png
deleted file mode 100644
index 6788f60..0000000
Binary files a/res/image/icon/homepage13.png and /dev/null differ
diff --git a/res/image/icon/layout13.png b/res/image/icon/layout13.png
deleted file mode 100644
index fa7c6e2..0000000
Binary files a/res/image/icon/layout13.png and /dev/null differ
diff --git a/res/image/icon/locale13.png b/res/image/icon/locale13.png
deleted file mode 100644
index 9c5a2bd..0000000
Binary files a/res/image/icon/locale13.png and /dev/null differ
diff --git a/res/image/icon/mixed13.png b/res/image/icon/mixed13.png
deleted file mode 100644
index 2e9278d..0000000
Binary files a/res/image/icon/mixed13.png and /dev/null differ
diff --git a/res/image/icon/options32.png b/res/image/icon/options32.png
deleted file mode 100644
index 1141564..0000000
Binary files a/res/image/icon/options32.png and /dev/null differ
diff --git a/res/image/icon/print13.png b/res/image/icon/print13.png
deleted file mode 100644
index da61dba..0000000
Binary files a/res/image/icon/print13.png and /dev/null differ
diff --git a/res/image/icon/reload13.png b/res/image/icon/reload13.png
deleted file mode 100644
index b9980ac..0000000
Binary files a/res/image/icon/reload13.png and /dev/null differ
diff --git a/res/image/icon/separate13.png b/res/image/icon/separate13.png
deleted file mode 100644
index f0427cd..0000000
Binary files a/res/image/icon/separate13.png and /dev/null differ
diff --git a/res/image/icon/text_block13.png b/res/image/icon/text_block13.png
deleted file mode 100644
index a9bd2fc..0000000
Binary files a/res/image/icon/text_block13.png and /dev/null differ
diff --git a/res/image/icon/text_linebyline13.png b/res/image/icon/text_linebyline13.png
deleted file mode 100644
index 69a3d57..0000000
Binary files a/res/image/icon/text_linebyline13.png and /dev/null differ
diff --git a/res/image/icon/theme13.png b/res/image/icon/theme13.png
deleted file mode 100644
index c71dd3b..0000000
Binary files a/res/image/icon/theme13.png and /dev/null differ
diff --git a/res/image/icon/trans-invalid13.png b/res/image/icon/trans-invalid13.png
deleted file mode 100644
index f3c56b1..0000000
Binary files a/res/image/icon/trans-invalid13.png and /dev/null differ
diff --git a/res/image/icon/trans-unknown13.png b/res/image/icon/trans-unknown13.png
deleted file mode 100644
index 9cd7248..0000000
Binary files a/res/image/icon/trans-unknown13.png and /dev/null differ
diff --git a/res/image/icon/trans-valid13.png b/res/image/icon/trans-valid13.png
deleted file mode 100644
index 730900f..0000000
Binary files a/res/image/icon/trans-valid13.png and /dev/null differ
diff --git a/res/image/icon/trans13.png b/res/image/icon/trans13.png
deleted file mode 100644
index 7bec9d6..0000000
Binary files a/res/image/icon/trans13.png and /dev/null differ
diff --git a/res/image/icon/trans18.gif b/res/image/icon/trans18.gif
deleted file mode 100644
index aed6218..0000000
Binary files a/res/image/icon/trans18.gif and /dev/null differ
diff --git a/res/image/icon/trans_list16.png b/res/image/icon/trans_list16.png
deleted file mode 100644
index 623d485..0000000
Binary files a/res/image/icon/trans_list16.png and /dev/null differ
diff --git a/res/image/icon/up_arrow.gif b/res/image/icon/up_arrow.gif
deleted file mode 100644
index 0418010..0000000
Binary files a/res/image/icon/up_arrow.gif and /dev/null differ
diff --git a/res/image/icon/wizard13.png b/res/image/icon/wizard13.png
deleted file mode 100644
index 407ade2..0000000
Binary files a/res/image/icon/wizard13.png and /dev/null differ
diff --git a/res/image/sura-header.png b/res/image/sura-header.png
deleted file mode 100644
index da67579..0000000
Binary files a/res/image/sura-header.png and /dev/null differ
diff --git a/res/resource-path.properties b/res/resource-path.properties
index ee5bc20..f0480d3 100644
--- a/res/resource-path.properties
+++ b/res/resource-path.properties
@@ -22,51 +22,56 @@ icon.form128 = $ICON_DIR/open-book-128.png
 icon.form256 = $ICON_DIR/open-book-256.png
 icon.error16 = $ICON_DIR/error16.gif
 icon.error32 = $ICON_DIR/error32.png
+icon.about16 = $ICON_DIR/about-zekr16.png
+icon.about32 = $ICON_DIR/about-zekr32.png
+icon.about48 = $ICON_DIR/open-book-48.png
+icon.about128 = $ICON_DIR/open-book-128.png
+icon.about256 = $ICON_DIR/open-book-256.png
 
 #set ( $FLAG_DIR = "$ICON_DIR/flag" )
 icon.flag.baseDir = $FLAG_DIR/
 icon.flag.default = $FLAG_DIR/flag13.png
 
 /* Menu Items */
-icon.menu.exit = $ICON_DIR/exit13.png
-icon.menu.print = $ICON_DIR/print13.png
-icon.menu.export = $ICON_DIR/export13.png
-icon.menu.reload = $ICON_DIR/reload13.png
-icon.menu.locale = $ICON_DIR/locale13.png
-icon.menu.translation = $ICON_DIR/trans13.png
-icon.menu.theme = $ICON_DIR/theme13.png
-icon.menu.configTransList = $ICON_DIR/config_trans_list13.png
-
-icon.menu.about = $ICON_DIR/about13.png
-icon.menu.homepage = $ICON_DIR/homepage13.png
-icon.menu.check4Update = $ICON_DIR/check-4-update13.png
-icon.menu.onlineHelp = $ICON_DIR/help13.png
-
-icon.menu.layout = $ICON_DIR/layout13.png
-icon.menu.separate = $ICON_DIR/separate13.png
-icon.menu.mixed = $ICON_DIR/mixed13.png
-icon.menu.quranOnly = $ICON_DIR/book-blue13.png
-icon.menu.transOnly = $ICON_DIR/book-red13.png
-icon.menu.text_linebyline = $ICON_DIR/text_linebyline13.png
-icon.menu.text_block = $ICON_DIR/text_block13.png
-
-icon.menu.randomAya = $ICON_DIR/wizard13.png
-icon.menu.goto = $ICON_DIR/goto13.png
+icon.menu.exit = $ICON_DIR/exit16.png
+icon.menu.print = $ICON_DIR/print16.png
+icon.menu.save = $ICON_DIR/save16.png
+icon.menu.reload = $ICON_DIR/reload16.png
+icon.menu.addTrans = $ICON_DIR/add-trans16.png
+icon.menu.transList = $ICON_DIR/trans-list16.png
+icon.menu.theme = $ICON_DIR/theme16.png
+icon.menu.configTransList = $ICON_DIR/config-trans-list16.png
+
+icon.menu.about = $ICON_DIR/about-zekr16.png
+icon.menu.homepage = $ICON_DIR/homepage16.png
+icon.menu.check4Update = $ICON_DIR/check-4-update-menu16.png
+icon.menu.onlineHelp = $ICON_DIR/help16.png
+
+icon.menu.layout = $ICON_DIR/layout16.png
+icon.menu.separate = $ICON_DIR/separate16.png
+icon.menu.mixed = $ICON_DIR/mixed16.png
+icon.menu.quranOnly = $ICON_DIR/quran-only16.png
+icon.menu.transOnly = $ICON_DIR/trans-only16.png
+icon.menu.textLineByLine = $ICON_DIR/text-line16.png
+icon.menu.textBlock = $ICON_DIR/text-block16.png
+
+icon.menu.randomAya = $ICON_DIR/wizard16.png
+icon.menu.goto = $ICON_DIR/goto16.png
 icon.goto.form16 = $ICON_DIR/goto16.png
 icon.goto.form32 = $ICON_DIR/goto32.png
 
 #set ( $AUDIO_DIR = "$ICON_DIR/audio" )
-icon.menu.addOnlineRecitation = $AUDIO_DIR/online-recitation13.png
-icon.menu.addRecitationPack = $AUDIO_DIR/recitation-pack13.png
-icon.menu.play = $AUDIO_DIR/player-play13.png
-icon.menu.playRtl = $AUDIO_DIR/player-play-rtl13.png
-icon.menu.pause = $AUDIO_DIR/player-pause13.png
-icon.menu.stop = $AUDIO_DIR/player-stop13.png
-icon.menu.playlist = $AUDIO_DIR/player-playlist13.png
-icon.menu.onlineRecitationPack = $AUDIO_DIR/online-recitation13.png
-icon.menu.offlineRecitationPack = $AUDIO_DIR/recitation-pack13.png
-icon.menu.playerNext = $AUDIO_DIR/player-next13.png
-icon.menu.playerPrev = $AUDIO_DIR/player-prev13.png
+icon.menu.addOnlineRecitation = $AUDIO_DIR/online-recitation16.png
+icon.menu.addOfflineRecitation = $AUDIO_DIR/offline-recitation16.png
+icon.menu.play = $AUDIO_DIR/player-play16.png
+icon.menu.playRtl = $AUDIO_DIR/player-play-rtl16.png
+icon.menu.pause = $AUDIO_DIR/player-pause16.png
+icon.menu.stop = $AUDIO_DIR/player-stop16.png
+icon.menu.playlist = $AUDIO_DIR/player-playlist16.png
+icon.menu.onlineRecitationPack = $AUDIO_DIR/online-recitation16.png
+icon.menu.offlineRecitationPack = $AUDIO_DIR/offline-recitation16.png
+icon.menu.playerNext = $AUDIO_DIR/player-next16.png
+icon.menu.playerPrev = $AUDIO_DIR/player-prev16.png
 
 icon.player.play = $AUDIO_DIR/player-play22.png
 icon.player.playRtl = $AUDIO_DIR/player-play-rtl22.png
@@ -86,21 +91,21 @@ theme.icon.playRtl = $AUDIO_DIR/player-play-rtl16.gif
 theme.icon.pause = $AUDIO_DIR/player-pause16.gif
 theme.icon.stop = $AUDIO_DIR/player-stop16.gif
 
-icon.menu.options = $ICON_DIR/config13.png
-icon.menu.add = $ICON_DIR/add13.png
+icon.menu.options = $ICON_DIR/config16.png
+icon.menu.addResource = $ICON_DIR/add-resource16.png
 
 #set ( $BOOKMARK = "$ICON_DIR/bookmark" )
-icon.menu.bookmark.edit = $BOOKMARK/edit-bookmark13.png
-icon.menu.bookmark.manage = $BOOKMARK/manage-bookmark-sets13.png
-icon.menu.bookmark.closeFolder = $BOOKMARK/folder-close13.png
-icon.menu.bookmark.openFolder = $BOOKMARK/folder-open13.png
-icon.menu.bookmark.item = $BOOKMARK/bookmark-item13.png
-icon.menu.bookmark.findRef = $BOOKMARK/find-ref13.png
-icon.menu.bookmark.add = $BOOKMARK/add-bookmark13.png
-
-icon.bookmark.closeFolder = $BOOKMARK/folder-close.png
-icon.bookmark.openFolder = $BOOKMARK/folder-open.png
-icon.bookmark.item = $BOOKMARK/bookmark-item.png
+icon.menu.bookmark.edit = $BOOKMARK/edit-bookmark16.png
+icon.menu.bookmark.manage = $BOOKMARK/manage-bookmark-sets16.png
+icon.menu.bookmark.closeFolder = $BOOKMARK/folder-close16.png
+icon.menu.bookmark.openFolder = $BOOKMARK/folder-open16.png
+icon.menu.bookmark.item = $BOOKMARK/bookmark-item16.png
+icon.menu.bookmark.findRef = $BOOKMARK/find-ref16.png
+icon.menu.bookmark.add = $BOOKMARK/add-bookmark16.png
+
+icon.bookmark.closeFolder = $BOOKMARK/folder-close16.png
+icon.bookmark.openFolder = $BOOKMARK/folder-open16.png
+icon.bookmark.item = $BOOKMARK/bookmark-item16.png
 icon.bookmark.newItem = $BOOKMARK/new-item.png
 icon.bookmark.newFolder = $BOOKMARK/new-folder.png
 icon.bookmark.goto = $BOOKMARK/goto-bookmark16.png
@@ -113,12 +118,11 @@ icon.bookmark.edit32 = $BOOKMARK/edit-bookmark32.png
 icon.bookmark.manage16 = $BOOKMARK/manage-bookmark-sets16.png
 icon.bookmark.manage32 = $BOOKMARK/manage-bookmark-sets32.png
 
-icon.menu.book = $ICON_DIR/book13.png
-icon.menu.transUnknown = $ICON_DIR/trans-unknown13.png
-icon.menu.transInvalid = $ICON_DIR/trans-invalid13.png
-icon.menu.transValid = $ICON_DIR/trans-valid13.png
+icon.menu.transUnknown = $ICON_DIR/trans-unknown16.png
+icon.menu.transInvalid = $ICON_DIR/trans-invalid16.png
+icon.menu.transValid = $ICON_DIR/trans-valid16.png
 
-icon.menu.fullScreen = $ICON_DIR/fullscreen13.png
+icon.menu.fullScreen = $ICON_DIR/fullscreen16.png
 
 icon.toolbar.fullScreen = $ICON_DIR/fullscreen24.png
 
@@ -131,7 +135,6 @@ icon.audio = $ICON_DIR/config-audio32.png
 icon.font = $ICON_DIR/font.png
 icon.add = $ICON_DIR/add16.png
 icon.remove = $ICON_DIR/remove16.png
-icon.edit = $ICON_DIR/general-edit16.png
 
 icon.paging = $ICON_DIR/paging.png
 
@@ -154,12 +157,12 @@ icon.down = $ICON_DIR/down.png
 icon.ascending = $ICON_DIR/sort-asc.png
 icon.descending = $ICON_DIR/sort-des.png
 
-icon.translate = $ICON_DIR/trans18.gif
+icon.translate = $ICON_DIR/trans16.png
 
 icon.goUp = $ICON_DIR/go_up16.png
 icon.goDown = $ICON_DIR/go_down16.png
 
-icon.configTransList = $ICON_DIR/trans_list16.png
+icon.configTransList = $ICON_DIR/trans-list16.png
 
 /* config */
 #set ( $CONFIG_DIR = "$RES_DIR/config" )
diff --git a/res/text/metadata/quran-properties-bg.xml b/res/text/metadata/quran-properties-bg.xml
index 4a27c0b..35ae6b2 100644
--- a/res/text/metadata/quran-properties-bg.xml
+++ b/res/text/metadata/quran-properties-bg.xml
@@ -1,119 +1,119 @@
-<?xml version="1.0" encoding="utf-8"?>
-<quran author="Yahya Saturday (Яхия Съботинов)" version="0.7.5-1.1">
-	<sura-detail>
-		<sura index="1" name="Откриване" tname="Ал-Фӓтих̣ах̃" />
-		<sura index="2" name="Кравата" tname="Ал-Бак͡ьарах̃" />
-		<sura index="3" name="Родът на Имран" tname="'Ӓли ˁИмрӓн" />
-		<sura index="4" name="Жените" tname="Ан-Нисӓ'" />
-		<sura index="5" name="Трапезата" tname="Ал-Мӓ'идах̃" />
-		<sura index="6" name="Добитъкът" tname="Ал-'Анˁӓм" />
-		<sura index="7" name="Стената" tname="Ал-'Аˁрӓф" />
-		<sura index="8" name="Придобитото във война" tname="Ал-'Анфӓл" />
-		<sura index="9" name="Покаянието" tname="Ат-Таўбах̃" />
-		<sura index="10" name="Юнус" tname="Йӱнус" />
-		<sura index="11" name="Худ" tname="Хӱд" />
-		<sura index="12" name="Юсуф" tname="Йӱсуф" />
-		<sura index="13" name="Гърмът" tname="Ар-Раˁд" />
-		<sura index="14" name="Ибрахим" tname="'Ибрӓхӥм" />
-		<sura index="15" name="Ал-Хиджр" tname="Ал-Х̣ид͡жр" />
-		<sura index="16" name="Пчелите" tname="Ан-Нах̣л" />
-		<sura index="17" name="Нощното пътешествие" tname="Ал-'Исрӓ'" />
-		<sura index="18" name="Пещерата" tname="Ал-Кахф" />
-		<sura index="19" name="Мариам" tname="Марйам" />
-		<sura index="20" name="Та-Ха" tname="Т̣ӓ-Хӓ" />
-		<sura index="21" name="Пророците" tname="Ал-'Ам̃бийӓ'" />
-		<sura index="22" name="Поклонението хадж" tname="Ал-Х̣ад͡ж͡ж" />
-		<sura index="23" name="Вярващите" tname="Ал-Му'минӱн" />
-		<sura index="24" name="Светлината" tname="Ан-Нӱр" />
-		<sura index="25" name="Разграничаването" tname="Ал-Фурк͡ьӓн" />
-		<sura index="26" name="Поетите" tname="Аш-Шуˁарӓ'" />
-		<sura index="27" name="Мравките" tname="Ан-Намл" />
-		<sura index="28" name="Разказът" tname="Ал-К͡ьас̣ас̣" />
-		<sura index="29" name="Паякът" tname="Ал-ˁАнкабӱт" />
-		<sura index="30" name="Ромеите" tname="Ар-Рӱм" />
-		<sura index="31" name="Лукман" tname="Лук͡ьмӓн" />
-		<sura index="32" name="Поклонът" tname="Ас-Сад͡ждах̃" />
-		<sura index="33" name="Съюзените племена" tname="Ал-'Ах̣зӓб" />
-		<sura index="34" name="Саба" tname="Саба'" />
-		<sura index="35" name="Твореца" tname="Фӓт̣ир" />
-		<sura index="36" name="Йа-Син" tname="Йӓ-Сӥн" />
-		<sura index="37" name="Строените в редици" tname="Ас̣-С̣ӓффӓт" />
-		<sura index="38" name="Сад" tname="С̣ӓд" />
-		<sura index="39" name="Тълпите" tname="Аз-Зумар" />
-		<sura index="40" name="Опрощаващия" tname="Г͡хӓфир" />
-		<sura index="41" name="Разяснените" tname="Фус̣с̣илат" />
-		<sura index="42" name="Съвещаването" tname="Аш-Шӱра́а" />
-		<sura index="43" name="Украсата" tname="Аз-Зук͡хруф" />
-		<sura index="44" name="Димът" tname="Ад-Дук͡хӓн" />
-		<sura index="45" name="Коленопреклонната" tname="Ал-Д͡жӓс̱ийах̃" />
-		<sura index="46" name="Пясъчните хълмове" tname="Ал-'Ах̣к͡ьӓф" />
-		<sura index="47" name="Мухаммад" tname="Мух̣аммад" />
-		<sura index="48" name="Победата" tname="Ал-Фатх̣" />
-		<sura index="49" name="Стаите" tname="Ал-Х̣уд͡журӓт" />
-		<sura index="50" name="Каф" tname="К͡ьӓф" />
-		<sura index="51" name="Отвяващите" tname="Аз̱-З̱ӓрийӓт" />
-		<sura index="52" name="Планината" tname="Ат̣-Т̣ӱр" />
-		<sura index="53" name="Звездата" tname="Ан-Над͡жм" />
-		<sura index="54" name="Луната" tname="Ал-К͡ьамар" />
-		<sura index="55" name="Всемилостивия" tname="Ар-Рах̣мӓн" />
-		<sura index="56" name="Събитието" tname="Ал-Ўӓк͡ьиˁах̃" />
-		<sura index="57" name="Желязото" tname="Ал-Х̣адӥд" />
-		<sura index="58" name="Спорът" tname="Ал-Муд͡жӓдалах̃" />
-		<sura index="59" name="Изселването" tname="Ал-Х̣ашр" />
-		<sura index="60" name="Изпитваната" tname="Ал-Мумтах̣анах̃" />
-		<sura index="61" name="Редицата" tname="Ас̣-С̣афф" />
-		<sura index="62" name="Петъкът" tname="Ал-Д͡жумуˁах̃" />
-		<sura index="63" name="Лицемерите" tname="Ал-Мунӓфик͡ьӱн" />
-		<sura index="64" name="Разкриването на заблудата" tname="Ат-Таг͡хӓбун" />
-		<sura index="65" name="Разводът" tname="Ат̣-Т̣алӓк͡ь" />
-		<sura index="66" name="Възбраната" tname="Ат-Тах̣рӥм" />
-		<sura index="67" name="Владението" tname="Ал-Мулк" />
-		<sura index="68" name="Калемът" tname="Ал-К͡ьалам" />
-		<sura index="69" name="Неизбежното" tname="Ал-Х̣ӓк͡к͡ьах̃" />
-		<sura index="70" name="Небесните стъпала" tname="Ал-Маˁӓрид͡ж" />
-		<sura index="71" name="Нух" tname="Нӱх̣" />
-		<sura index="72" name="Джиновете" tname="Ал-Д͡жинн" />
-		<sura index="73" name="Загръщащият се" tname="Ал-Муззаммил" />
-		<sura index="74" name="Обвиващият се" tname="Ал-Муддас̱с̱ир" />
-		<sura index="75" name="Възкресението" tname="Ал-К͡ьийӓмах̃" />
-		<sura index="76" name="Човекът" tname="Ал-'Инсӓн" />
-		<sura index="77" name="Изпращаните" tname="Ал-Мурсалӓт" />
-		<sura index="78" name="Вестта" tname="Ан-Наба'" />
-		<sura index="79" name="Изтръгващите" tname="Ан-Нӓзиˁӓт" />
-		<sura index="80" name="Той се намръщи" tname="ˁАбаса" />
-		<sura index="81" name="Обвиването" tname="Ат-Такўӥр" />
-		<sura index="82" name="Разкъсването" tname="Ал-'Инфит̣ӓр" />
-		<sura index="83" name="Ощетяващите" tname="Ал-Мут̣аффифӥн" />
-		<sura index="84" name="Разцепването" tname="Ал-'Иншик͡ьӓк͡ь" />
-		<sura index="85" name="Съзвездията" tname="Ал-Бурӱд͡ж" />
-		<sura index="86" name="Вечерницата" tname="Ат̣-Т̣ӓрик͡ь" />
-		<sura index="87" name="Всевишния" tname="Ал-'Аˁла́а" />
-		<sura index="88" name="Всепокриващият ден" tname="Ал-Г͡хӓшийах̃" />
-		<sura index="89" name="Зората" tname="Ал-Фад͡жр" />
-		<sura index="90" name="Градът" tname="Ал-Балад" />
-		<sura index="91" name="Слънцето" tname="Аш-Шамс" />
-		<sura index="92" name="Нощта" tname="Ал-Лайл" />
-		<sura index="93" name="Утрото" tname="Ад̣-Д̣ух̣а́а" />
-		<sura index="94" name="Разтварянето" tname="Ал-'Инширӓх̣" /><!-- الْإِنْشِرَاح по Цв. Теофанов (Аш-Шарх̣ по Zekr) -->
-		<sura index="95" name="Смоковницата" tname="Ат-Тӥн" />
-		<sura index="96" name="Съсирекът" tname="Ал-ˁАлак͡ь" />
-		<sura index="97" name="Могъществото" tname="Ал-К͡ьадр" />
-		<sura index="98" name="Ясният знак" tname="Ал-Баййинах̃" />
-		<sura index="99" name="Земетръсът" tname="Аз-Залзалах̃" />
-		<sura index="100" name="Препускащите" tname="Ал-ˁӒдийӓт" />
-		<sura index="101" name="Бедствието" tname="Ал-К͡ьӓриˁах̃" />
-		<sura index="102" name="Преумножаването" tname="Ат-Такӓс̱ур" />
-		<sura index="103" name="Следобедът" tname="Ал-ˁАс̣р" />
-		<sura index="104" name="Клеветникът" tname="Ал-Хумазах̃" />
-		<sura index="105" name="Слонът" tname="Ал-Фӥл" />
-		<sura index="106" name="Курайш" tname="К͡ьурайш" />
-		<sura index="107" name="Услугите" tname="Ал-Мӓˁӱн" />
-		<sura index="108" name="Ал-Каусар" tname="Ал-Каўс̱ар" />
-		<sura index="109" name="Неверниците" tname="Ал-Кӓфирӱн" />
-		<sura index="110" name="Подкрепата" tname="Ан-Нас̣р" />
-		<sura index="111" name="Сплетените влакна" tname="Ал-Масад" />
-		<sura index="112" name="Пречистването" tname="Ал-'Ик͡хлӓс̣" />
-		<sura index="113" name="Разсъмването" tname="Ал-Фалак͡ь" />
-		<sura index="114" name="Хората" tname="Ан-Нӓс" />
-	</sura-detail>
-</quran>
+<?xml version="1.0" encoding="utf-8"?>
+<quran author="Yahya Saturday (Яхия Съботинов)" version="0.7.6-1.2">
+	<sura-detail>
+		<sura index="1" name="Откриване" tname="Ал-Фӓтих̣ах̃" />
+		<sura index="2" name="Кравата" tname="Ал-Бак͡ьарах̃" />
+		<sura index="3" name="Родът на Имран" tname="'Ӓли ˁИмрӓн" />
+		<sura index="4" name="Жените" tname="Ан-Нисӓ'" />
+		<sura index="5" name="Трапезата" tname="Ал-Мӓ'идах̃" />
+		<sura index="6" name="Добитъкът" tname="Ал-'Анˁӓм" />
+		<sura index="7" name="Стената" tname="Ал-'Аˁрӓф" />
+		<sura index="8" name="Придобитото във война" tname="Ал-'Анфӓл" />
+		<sura index="9" name="Покаянието" tname="Ат-Таўбах̃" />
+		<sura index="10" name="Юнус" tname="Йӱнус" />
+		<sura index="11" name="Худ" tname="Хӱд" />
+		<sura index="12" name="Юсуф" tname="Йӱсуф" />
+		<sura index="13" name="Гърмът" tname="Ар-Раˁд" />
+		<sura index="14" name="Ибрахим" tname="'Ибрӓхӥм" />
+		<sura index="15" name="Ал-Хиджр" tname="Ал-Х̣ид͡жр" />
+		<sura index="16" name="Пчелите" tname="Ан-Нах̣л" />
+		<sura index="17" name="Нощното пътешествие" tname="Ал-'Исрӓ'" />
+		<sura index="18" name="Пещерата" tname="Ал-Кахф" />
+		<sura index="19" name="Мариам" tname="Марйам" />
+		<sura index="20" name="Та-Ха" tname="Т̣ӓ-Хӓ" />
+		<sura index="21" name="Пророците" tname="Ал-'Ам̃бийӓ'" />
+		<sura index="22" name="Поклонението Хадж" tname="Ал-Х̣ад͡ж͡ж" />
+		<sura index="23" name="Вярващите" tname="Ал-Му'минӱн" />
+		<sura index="24" name="Светлината" tname="Ан-Нӱр" />
+		<sura index="25" name="Разграничаването" tname="Ал-Фурк͡ьӓн" />
+		<sura index="26" name="Поетите" tname="Аш-Шуˁарӓ'" />
+		<sura index="27" name="Мравките" tname="Ан-Намл" />
+		<sura index="28" name="Разказът" tname="Ал-К͡ьас̣ас̣" />
+		<sura index="29" name="Паякът" tname="Ал-ˁАнкабӱт" />
+		<sura index="30" name="Ромеите" tname="Ар-Рӱм" />
+		<sura index="31" name="Лукман" tname="Лук͡ьмӓн" />
+		<sura index="32" name="Поклонът" tname="Ас-Сад͡ждах̃" />
+		<sura index="33" name="Съюзените племена" tname="Ал-'Ах̣зӓб" />
+		<sura index="34" name="Саба" tname="Саба'" />
+		<sura index="35" name="Твореца" tname="Фӓт̣ир" />
+		<sura index="36" name="Йа-Син" tname="Йӓ-Сӥн" />
+		<sura index="37" name="Строените в редици" tname="Ас̣-С̣ӓффӓт" />
+		<sura index="38" name="Сад" tname="С̣ӓд" />
+		<sura index="39" name="Тълпите" tname="Аз-Зумар" />
+		<sura index="40" name="Опрощаващия" tname="Г͡хӓфир" />
+		<sura index="41" name="Разяснените" tname="Фус̣с̣илат" />
+		<sura index="42" name="Съвещаването" tname="Аш-Шӱраа́" />
+		<sura index="43" name="Украсата" tname="Аз-Зук͡хруф" />
+		<sura index="44" name="Димът" tname="Ад-Дук͡хӓн" />
+		<sura index="45" name="Коленопреклонната" tname="Ал-Д͡жӓс̱ийах̃" />
+		<sura index="46" name="Пясъчните хълмове" tname="Ал-'Ах̣к͡ьӓф" />
+		<sura index="47" name="Мухаммад" tname="Мух̣аммад" />
+		<sura index="48" name="Победата" tname="Ал-Фатх̣" />
+		<sura index="49" name="Стаите" tname="Ал-Х̣уд͡журӓт" />
+		<sura index="50" name="Каф" tname="К͡ьӓф" />
+		<sura index="51" name="Отвяващите" tname="Аз̱-З̱ӓрийӓт" />
+		<sura index="52" name="Планината" tname="Ат̣-Т̣ӱр" />
+		<sura index="53" name="Звездата" tname="Ан-Над͡жм" />
+		<sura index="54" name="Луната" tname="Ал-К͡ьамар" />
+		<sura index="55" name="Всемилостивия" tname="Ар-Рах̣мӓн" />
+		<sura index="56" name="Събитието" tname="Ал-Ўӓк͡ьиˁах̃" />
+		<sura index="57" name="Желязото" tname="Ал-Х̣адӥд" />
+		<sura index="58" name="Спорът" tname="Ал-Муд͡жӓдалах̃" />
+		<sura index="59" name="Изселването" tname="Ал-Х̣ашр" />
+		<sura index="60" name="Изпитваната" tname="Ал-Мумтах̣анах̃" />
+		<sura index="61" name="Редицата" tname="Ас̣-С̣афф" />
+		<sura index="62" name="Петъкът" tname="Ал-Д͡жумуˁах̃" />
+		<sura index="63" name="Лицемерите" tname="Ал-Мунӓфик͡ьӱн" />
+		<sura index="64" name="Разкриването на заблудата" tname="Ат-Таг͡хӓбун" />
+		<sura index="65" name="Разводът" tname="Ат̣-Т̣алӓк͡ь" />
+		<sura index="66" name="Възбраната" tname="Ат-Тах̣рӥм" />
+		<sura index="67" name="Владението" tname="Ал-Мулк" />
+		<sura index="68" name="Калемът" tname="Ал-К͡ьалам" />
+		<sura index="69" name="Неизбежното" tname="Ал-Х̣ӓк͡к͡ьах̃" />
+		<sura index="70" name="Небесните стъпала" tname="Ал-Маˁӓрид͡ж" />
+		<sura index="71" name="Нух" tname="Нӱх̣" />
+		<sura index="72" name="Джиновете" tname="Ал-Д͡жинн" />
+		<sura index="73" name="Загръщащият се" tname="Ал-Муззаммил" />
+		<sura index="74" name="Обвиващият се" tname="Ал-Муддас̱с̱ир" />
+		<sura index="75" name="Възкресението" tname="Ал-К͡ьийӓмах̃" />
+		<sura index="76" name="Човекът" tname="Ал-'Инсӓн" />
+		<sura index="77" name="Изпращаните" tname="Ал-Мурсалӓт" />
+		<sura index="78" name="Вестта" tname="Ан-Наба'" />
+		<sura index="79" name="Изтръгващите" tname="Ан-Нӓзиˁӓт" />
+		<sura index="80" name="Той се намръщи" tname="ˁАбаса" />
+		<sura index="81" name="Обвиването" tname="Ат-Такўӥр" />
+		<sura index="82" name="Разкъсването" tname="Ал-'Инфит̣ӓр" />
+		<sura index="83" name="Ощетяващите" tname="Ал-Мут̣аффифӥн" />
+		<sura index="84" name="Разцепването" tname="Ал-'Иншик͡ьӓк͡ь" />
+		<sura index="85" name="Съзвездията" tname="Ал-Бурӱд͡ж" />
+		<sura index="86" name="Вечерницата" tname="Ат̣-Т̣ӓрик͡ь" />
+		<sura index="87" name="Всевишния" tname="Ал-'Аˁлаа́" />
+		<sura index="88" name="Всепокриващият ден" tname="Ал-Г͡хӓшийах̃" />
+		<sura index="89" name="Зората" tname="Ал-Фад͡жр" />
+		<sura index="90" name="Градът" tname="Ал-Балад" />
+		<sura index="91" name="Слънцето" tname="Аш-Шамс" />
+		<sura index="92" name="Нощта" tname="Ал-Лайл" />
+		<sura index="93" name="Утрото" tname="Ад̣-Д̣ух̣аа́" />
+		<sura index="94" name="Разтварянето" tname="Ал-'Инширӓх̣" /><!-- الْإِنْشِرَاح по Цв. Теофанов (Аш-Шарх̣ по Zekr) -->
+		<sura index="95" name="Смоковницата" tname="Ат-Тӥн" />
+		<sura index="96" name="Съсирекът" tname="Ал-ˁАлак͡ь" />
+		<sura index="97" name="Могъществото" tname="Ал-К͡ьадр" />
+		<sura index="98" name="Ясният знак" tname="Ал-Баййинах̃" />
+		<sura index="99" name="Земетръсът" tname="Аз-Залзалах̃" />
+		<sura index="100" name="Препускащите" tname="Ал-ˁӒдийӓт" />
+		<sura index="101" name="Бедствието" tname="Ал-К͡ьӓриˁах̃" />
+		<sura index="102" name="Преумножаването" tname="Ат-Такӓс̱ур" />
+		<sura index="103" name="Следобедът" tname="Ал-ˁАс̣р" />
+		<sura index="104" name="Клеветникът" tname="Ал-Хумазах̃" />
+		<sura index="105" name="Слонът" tname="Ал-Фӥл" />
+		<sura index="106" name="Курайш" tname="К͡ьурайш" />
+		<sura index="107" name="Услугите" tname="Ал-Мӓˁӱн" />
+		<sura index="108" name="Ал-Каусар" tname="Ал-Каўс̱ар" />
+		<sura index="109" name="Неверниците" tname="Ал-Кӓфирӱн" />
+		<sura index="110" name="Подкрепата" tname="Ан-Нас̣р" />
+		<sura index="111" name="Сплетените влакна" tname="Ал-Масад" />
+		<sura index="112" name="Пречистването" tname="Ал-'Ик͡хлӓс̣" />
+		<sura index="113" name="Разсъмването" tname="Ал-Фалак͡ь" />
+		<sura index="114" name="Хората" tname="Ан-Нӓс" />
+	</sura-detail>
+</quran>
diff --git a/res/text/metadata/quran-properties-en.xml b/res/text/metadata/quran-properties-en.xml
index de0d10f..816c95d 100644
--- a/res/text/metadata/quran-properties-en.xml
+++ b/res/text/metadata/quran-properties-en.xml
@@ -36,21 +36,21 @@
 		<sura index="33" name="The Clans" tname="Al-Ahzaab" />
 		<sura index="34" name="Sheba" tname="Saba" />
 		<sura index="35" name="The Originator" tname="Faatir" />
-		<sura index="36" name="Yaseen" tname="Yaseen" />
-		<sura index="37" name="Those drawn up in Ranks" tname="As-Saaffaat" />
-		<sura index="38" name="The letter Saad" tname="Saad" />
+		<sura index="36" name="Yaa-Seen" tname="Yaseen" />
+		<sura index="37" name="Those Drawn Up in Ranks" tname="As-Saaffaat" />
+		<sura index="38" name="The Letter Saad" tname="Saad" />
 		<sura index="39" name="The Groups" tname="Az-Zumar" />
 		<sura index="40" name="The Forgiver" tname="Ghaafir" />
-		<sura index="41" name="Explained in detail" tname="Fussilat" />
+		<sura index="41" name="Explained in Detail" tname="Fussilat" />
 		<sura index="42" name="Consultation" tname="Ash-Shura" />
-		<sura index="43" name="Ornaments of gold" tname="Az-Zukhruf" />
+		<sura index="43" name="Ornaments of Gold" tname="Az-Zukhruf" />
 		<sura index="44" name="The Smoke" tname="Ad-Dukhaan" />
 		<sura index="45" name="Crouching" tname="Al-Jaathiya" />
 		<sura index="46" name="The Dunes" tname="Al-Ahqaf" />
 		<sura index="47" name="Muhammad" tname="Muhammad" />
 		<sura index="48" name="The Victory" tname="Al-Fath" />
 		<sura index="49" name="The Inner Apartments" tname="Al-Hujuraat" />
-		<sura index="50" name="The letter Qaaf" tname="Qaaf" />
+		<sura index="50" name="The Letter Qaaf" tname="Qaaf" />
 		<sura index="51" name="The Winnowing Winds" tname="Adh-Dhaariyat" />
 		<sura index="52" name="The Mount" tname="At-Tur" />
 		<sura index="53" name="The Star" tname="An-Najm" />
@@ -60,7 +60,7 @@
 		<sura index="57" name="The Iron" tname="Al-Hadid" />
 		<sura index="58" name="The Pleading Woman" tname="Al-Mujaadila" />
 		<sura index="59" name="The Exile" tname="Al-Hashr" />
-		<sura index="60" name="She that is to be examined" tname="Al-Mumtahana" />
+		<sura index="60" name="She That Is to Be Examined" tname="Al-Mumtahana" />
 		<sura index="61" name="The Ranks" tname="As-Saff" />
 		<sura index="62" name="Friday" tname="Al-Jumu'a" />
 		<sura index="63" name="The Hypocrites" tname="Al-Munaafiqoon" />
@@ -71,16 +71,16 @@
 		<sura index="68" name="The Pen" tname="Al-Qalam" />
 		<sura index="69" name="The Reality" tname="Al-Haaqqa" />
 		<sura index="70" name="The Ascending Stairways" tname="Al-Ma'aarij" />
-		<sura index="71" name="Nooh" tname="Nooh" />
-		<sura index="72" name="the Jinn" tname="Al-Jinn" />
+		<sura index="71" name="Noah" tname="Nooh" />
+		<sura index="72" name="The Jinn" tname="Al-Jinn" />
 		<sura index="73" name="The Enshrouded One" tname="Al-Muzzammil" />
 		<sura index="74" name="The Cloaked One" tname="Al-Muddaththir" />
 		<sura index="75" name="The Resurrection" tname="Al-Qiyaama" />
 		<sura index="76" name="Man" tname="Al-Insaan" />
 		<sura index="77" name="The Emissaries" tname="Al-Mursalaat" />
 		<sura index="78" name="The Announcement" tname="An-Naba" />
-		<sura index="79" name="Those who drag forth" tname="An-Naazi'aat" />
-		<sura index="80" name="He frowned" tname="Abasa" />
+		<sura index="79" name="Those Who Drag Forth" tname="An-Naazi'aat" />
+		<sura index="80" name="He Frowned" tname="Abasa" />
 		<sura index="81" name="The Overthrowing" tname="At-Takwir" />
 		<sura index="82" name="The Cleaving" tname="Al-Infitaar" />
 		<sura index="83" name="Defrauding" tname="Al-Mutaffifin" />
@@ -116,4 +116,4 @@
 		<sura index="113" name="The Dawn" tname="Al-Falaq" />
 		<sura index="114" name="Mankind" tname="An-Naas" />
 	</sura-detail>
-</quran>
\ No newline at end of file
+</quran>
diff --git a/res/text/metadata/quran-properties-extendedenglish.xml b/res/text/metadata/quran-properties-extendedenglish.xml
index f8f6765..09aac87 100644
--- a/res/text/metadata/quran-properties-extendedenglish.xml
+++ b/res/text/metadata/quran-properties-extendedenglish.xml
@@ -1,170 +1,170 @@
-<?xml version="1.0" encoding="utf-8"?>
-<quran author="Yahya Saturday (Яхия Съботинов)" version="0.7.5-2.1">
-	<sura-detail>
-		<sura index="1" ayaCount="7" name="الْفَاتِحَة" en="The Opening" tname="Al-Fātiḥaħ" descent="makki" />
-		<sura index="2" ayaCount="286" name="الْبَقَرَة" en="The Cow" tname="Al-Baqaraħ" descent="madani" />
-		<sura index="3" ayaCount="200" name="آلِ عِمْرَان" en="The Family of Imraan" tname="'Āli `Imrān" descent="madani" />
-		<sura index="4" ayaCount="176" name="النِّسَآء" en="The Women" tname="An-Nisā'" descent="madani" />
-		<sura index="5" ayaCount="120" name="الْمَآئِدَة" en="The Table" tname="Al-Mā'idaħ" descent="madani" />
-		<sura index="6" ayaCount="165" name="الْأَنْعَام" en="The Cattle" tname="Al-'An`ām" descent="makki" />
-		<sura index="7" ayaCount="206" name="الْأَعْرَاف" en="The Heights" tname="Al-'A`rāf" descent="makki" />
-		<sura index="8" ayaCount="75" name="الْأَنْفَال" en="The Spoils of War" tname="Al-'Anfāl" descent="madani" />
-		<sura index="9" ayaCount="129" name="التَّوْبَة" en="The Repentance" tname="At-Tawbaħ" descent="madani" />
-		<sura index="10" ayaCount="109" name="يُونُس" en="Jonas" tname="Yūnus" descent="makki" />
-		<sura index="11" ayaCount="123" name="هُود" en="Hud" tname="Hūd" descent="makki" />
-		<sura index="12" ayaCount="111" name="يُوسُف" en="Joseph" tname="Yūsuf" descent="makki" />
-		<sura index="13" ayaCount="43" name="الرَّعْد" en="The Thunder" tname="Ar-Ra`d" descent="madani" />
-		<sura index="14" ayaCount="52" name="إِبْرَاهِيم" en="Abraham" tname="'Ibrāhīm" descent="makki" />
-		<sura index="15" ayaCount="99" name="الْحِجْر" en="The Rock" tname="Al-Ḥijr" descent="makki" />
-		<sura index="16" ayaCount="128" name="النَّحْل" en="The Bee" tname="An-Naḥl" descent="makki" />
-		<sura index="17" ayaCount="111" name="الْإِسْرَآء" en="The Night Journey" tname="Al-'Isrā'" descent="makki" />
-		<sura index="18" ayaCount="110" name="الْكَهْف" en="The Cave" tname="Al-Kahf" descent="makki" />
-		<sura index="19" ayaCount="98" name="مَرْيَم" en="Mary" tname="Maryam" descent="makki" />
-		<sura index="20" ayaCount="135" name="طٰهٰ" en="Taa-Haa" tname="Ṭā-Hā" descent="makki" />
-		<sura index="21" ayaCount="112" name="الْأَنْبِيَآء" en="The Prophets" tname="Al-'Aɱbiyā'" descent="makki" />
-		<sura index="22" ayaCount="78" name="الْحَجّ" en="The Pilgrimage" tname="Al-Ḥajj" descent="madani" />
-		<sura index="23" ayaCount="118" name="الْمُؤْمِنُون" en="The Believers" tname="Al-Mu'minūn" descent="makki" />
-		<sura index="24" ayaCount="64" name="النُّور" en="The Light" tname="An-Nūr" descent="madani" />
-		<sura index="25" ayaCount="77" name="الْفُرْقَان" en="The Criterion" tname="Al-Furqān" descent="makki" />
-		<sura index="26" ayaCount="227" name="الشُّعَرَآء" en="The Poets" tname="Ash-Shu`arā'" descent="makki" />
-		<sura index="27" ayaCount="93" name="النَّمْل" en="The Ant" tname="An-Naml" descent="makki" />
-		<sura index="28" ayaCount="88" name="الْقَصَص" en="The Stories" tname="Al-Qaṣaṣ" descent="makki" />
-		<sura index="29" ayaCount="69" name="الْعَنْكَبُوت" en="The Spider" tname="Al-`Ankabūt" descent="makki" />
-		<sura index="30" ayaCount="60" name="الرُّوم" en="The Romans" tname="Ar-Rūm" descent="makki" />
-		<sura index="31" ayaCount="34" name="لُقْمَان" en="Luqman" tname="Luqmān" descent="makki" />
-		<sura index="32" ayaCount="30" name="السَّجْدَة" en="The Prostration" tname="As-Sajdaħ" descent="makki" />
-		<sura index="33" ayaCount="73" name="الْأَحْزَاب" en="The Clans" tname="Al-'Aḥzāb" descent="madani" />
-		<sura index="34" ayaCount="54" name="سَبَأ" en="Sheba" tname="Saba'" descent="makki" />
-		<sura index="35" ayaCount="45" name="فَاطِر" en="The Originator" tname="Fāṭir" descent="makki" />
-		<sura index="36" ayaCount="83" name="يٰسٓ" en="Yaa-Seen" tname="Yā-Sīn" descent="makki" />
-		<sura index="37" ayaCount="182" name="الصَّافَّات" en="Those Drawn Up in Ranks" tname="Aṣ-Ṣāffāt" descent="makki" />
-		<sura index="38" ayaCount="88" name="صٓ" en="The Letter Saad" tname="Ṣād" descent="makki" />
-		<sura index="39" ayaCount="75" name="الزُّمَر" en="The Groups" tname="Az-Zumar" descent="makki" />
-		<sura index="40" ayaCount="85" name="غَافِر" en="The Forgiver" tname="Ghāfir" descent="makki" />
-		<sura index="41" ayaCount="54" name="فُصِّلَت" en="Explained in Detail" tname="Fuṣṣilat" descent="makki" />
-		<sura index="42" ayaCount="53" name="الشُّورَىٰ" en="Consultation" tname="Ash-Shūráa" descent="makki" />
-		<sura index="43" ayaCount="89" name="الزُّخْرُف" en="Ornaments of Gold" tname="Az-Zukhruf" descent="makki" />
-		<sura index="44" ayaCount="59" name="الدُّخَان" en="The Smoke" tname="Ad-Dukhān" descent="makki" />
-		<sura index="45" ayaCount="37" name="الْجَاثِيَة" en="Crouching" tname="Al-Jāthiyaħ" descent="makki" />
-		<sura index="46" ayaCount="35" name="الْأَحْقَاف" en="The Dunes" tname="Al-'Aḥqāf" descent="makki" />
-		<sura index="47" ayaCount="38" name="مُحَمَّد" en="Muhammad" tname="Muḥammad" descent="madani" />
-		<sura index="48" ayaCount="29" name="الْفَتْح" en="The Victory" tname="Al-Fatḥ" descent="madani" />
-		<sura index="49" ayaCount="18" name="الْحُجُرَات" en="The Inner Apartments" tname="Al-Ḥujurāt" descent="madani" />
-		<sura index="50" ayaCount="45" name="قٓ" en="The Letter Qaaf" tname="Qāf" descent="makki" />
-		<sura index="51" ayaCount="60" name="الذَّارِيَات" en="The Winnowing Winds" tname="Adh-Dhāriyāt" descent="makki" />
-		<sura index="52" ayaCount="49" name="الطُّور" en="The Mount" tname="Aṭ-Ṭūr" descent="makki" />
-		<sura index="53" ayaCount="62" name="النَّجْم" en="The Star" tname="An-Najm" descent="makki" />
-		<sura index="54" ayaCount="55" name="الْقَمَر" en="The Moon" tname="Al-Qamar" descent="makki" />
-		<sura index="55" ayaCount="78" name="الرَّحْمَٰن" en="The Beneficent" tname="Ar-Raḥmān" descent="madani" />
-		<sura index="56" ayaCount="96" name="الْوَاقِعَة" en="The Inevitable" tname="Al-Wāqi`aħ" descent="makki" />
-		<sura index="57" ayaCount="29" name="الْحَدِيد" en="The Iron" tname="Al-Ḥadīd" descent="madani" />
-		<sura index="58" ayaCount="22" name="الْمُجَادَلَة" en="The Pleading Woman" tname="Al-Mujādalaħ" descent="madani" />
-		<sura index="59" ayaCount="24" name="الْحَشْر" en="The Exile" tname="Al-Ḥashr" descent="madani" />
-		<sura index="60" ayaCount="13" name="الْمُمْتَحِنَة" en="She That Is to Be Examined" tname="Al-Mumtaḥanaħ" descent="madani" />
-		<sura index="61" ayaCount="14" name="الصَّفّ" en="The Ranks" tname="Aṣ-Ṣaff" descent="madani" />
-		<sura index="62" ayaCount="11" name="الْجُمُعَة" en="Friday" tname="Al-Jumu`aħ" descent="madani" />
-		<sura index="63" ayaCount="11" name="الْمُنَافِقُون" en="The Hypocrites" tname="Al-Munāfiqūn" descent="madani" />
-		<sura index="64" ayaCount="18" name="التَّغَابُن" en="Mutual Disillusion" tname="At-Taghābun" descent="madani" />
-		<sura index="65" ayaCount="12" name="الطَّلَاق" en="Divorce" tname="Aṭ-Ṭalāq" descent="madani" />
-		<sura index="66" ayaCount="12" name="التَّحْرِيم" en="The Prohibition" tname="At-Taḥrīm" descent="madani" />
-		<sura index="67" ayaCount="30" name="الْمُلْك" en="The Sovereignty" tname="Al-Mulk" descent="makki" />
-		<sura index="68" ayaCount="52" name="الْقَلَم" en="The Pen" tname="Al-Qalam" descent="makki" />
-		<sura index="69" ayaCount="52" name="الْحَاقَّة" en="The Reality" tname="Al-Ḥāqqaħ" descent="makki" />
-		<sura index="70" ayaCount="44" name="الْمَعَارِج" en="The Ascending Stairways" tname="Al-Ma`ārij" descent="makki" />
-		<sura index="71" ayaCount="28" name="نُوح" en="Noah" tname="Nūḥ" descent="makki" />
-		<sura index="72" ayaCount="28" name="الْجِنّ" en="The Jinn" tname="Al-Jinn" descent="makki" />
-		<sura index="73" ayaCount="20" name="الْمُزَّمِّل" en="The Enshrouded One" tname="Al-Muzzammil" descent="makki" />
-		<sura index="74" ayaCount="56" name="الْمُدَّثِّر" en="The Cloaked One" tname="Al-Muddaththir" descent="makki" />
-		<sura index="75" ayaCount="40" name="الْقِيَامَة" en="The Resurrection" tname="Al-Qiyāmaħ" descent="makki" />
-		<sura index="76" ayaCount="31" name="الْإِنْسَان" en="Man" tname="Al-'Insān" descent="madani" />
-		<sura index="77" ayaCount="50" name="الْمُرْسَلَات" en="The Emissaries" tname="Al-Mursalāt" descent="makki" />
-		<sura index="78" ayaCount="40" name="النَّبَأ" en="The Announcement" tname="An-Naba'" descent="makki" />
-		<sura index="79" ayaCount="46" name="النَّازِعَات" en="Those Who Drag Forth" tname="An-Nāzi`āt" descent="makki" />
-		<sura index="80" ayaCount="42" name="عَبَسَ" en="He Frowned" tname="`Abasa" descent="makki" />
-		<sura index="81" ayaCount="29" name="التَّکْوِير" en="The Overthrowing" tname="At-Takwīr" descent="makki" />
-		<sura index="82" ayaCount="19" name="الْإِنْفِطَار" en="The Cleaving" tname="Al-'Infiṭār" descent="makki" />
-		<sura index="83" ayaCount="36" name="الْمُطَفِّفِين" en="Defrauding" tname="Al-Muṭaffifīn" descent="makki" />
-		<sura index="84" ayaCount="25" name="الْإِنْشِقَاق" en="The Splitting Open" tname="Al-'Inshiqāq" descent="makki" />
-		<sura index="85" ayaCount="22" name="الْبُرُوج" en="The Constellations" tname="Al-Burūj" descent="makki" />
-		<sura index="86" ayaCount="17" name="الطَّارِق" en="The Morning Star" tname="Aṭ-Ṭāriq" descent="makki" />
-		<sura index="87" ayaCount="19" name="الْأَعْلَیٰ" en="The Most High" tname="Al-'A`láa" descent="makki" />
-		<sura index="88" ayaCount="26" name="الْغَاشِيَة" en="The Overwhelming" tname="Al-Ghāshiyaħ" descent="makki" />
-		<sura index="89" ayaCount="30" name="الْفَجْر" en="The Dawn" tname="Al-Fajr" descent="makki" />
-		<sura index="90" ayaCount="20" name="الْبَلَد" en="The City" tname="Al-Balad" descent="makki" />
-		<sura index="91" ayaCount="15" name="الشَّمْس" en="The Sun" tname="Ash-Shams" descent="makki" />
-		<sura index="92" ayaCount="21" name="اللَّيْل" en="The Night" tname="Al-Layl" descent="makki" />
-		<sura index="93" ayaCount="11" name="الضُّحَیٰ" en="The Morning Hours" tname="Aḍ-Ḍuḥáa" descent="makki" />
-		<sura index="94" ayaCount="8" name="الشَّرْح" en="The Consolation" tname="Ash-Sharḥ" descent="makki" />
-		<sura index="95" ayaCount="8" name="التِّين" en="The Fig" tname="At-Tīn" descent="makki" />
-		<sura index="96" ayaCount="19" name="الْعَلَق" en="The Clot" tname="Al-`Alaq" descent="makki" />
-		<sura index="97" ayaCount="5" name="الْقَدْر" en="The Power, Fate" tname="Al-Qadr" descent="makki" />
-		<sura index="98" ayaCount="8" name="الْبَيِّنَة" en="The Evidence" tname="Al-Bayyinaħ" descent="madani" />
-		<sura index="99" ayaCount="8" name="الزَّلْزَلَة" en="The Earthquake" tname="Az-Zalzalaħ" descent="madani" />
-		<sura index="100" ayaCount="11" name="الْعَادِيَات" en="The Chargers" tname="Al-`Ādiyāt" descent="makki" />
-		<sura index="101" ayaCount="11" name="الْقَارِعَة" en="The Calamity" tname="Al-Qāri`aħ" descent="makki" />
-		<sura index="102" ayaCount="8" name="التَّكَاثُر" en="Competition" tname="At-Takāthur" descent="makki" />
-		<sura index="103" ayaCount="3" name="الْعَصْر" en="The Declining Day, Epoch" tname="Al-`Aṣr" descent="makki" />
-		<sura index="104" ayaCount="9" name="الْهُمَزَة" en="The Traducer" tname="Al-Humazaħ" descent="makki" />
-		<sura index="105" ayaCount="5" name="الْفِيل" en="The Elephant" tname="Al-Fīl" descent="makki" />
-		<sura index="106" ayaCount="4" name="قُرَيْش" en="Quraysh" tname="Quraysh" descent="makki" />
-		<sura index="107" ayaCount="7" name="الْمَاعُون" en="Almsgiving" tname="Al-Mā`ūn" descent="makki" />
-		<sura index="108" ayaCount="3" name="الْكَوْثَر" en="Abundance" tname="Al-Kawthar" descent="makki" />
-		<sura index="109" ayaCount="6" name="الْكَافِرُون" en="The Disbelievers" tname="Al-Kāfirūn" descent="makki" />
-		<sura index="110" ayaCount="3" name="النَّصْر" en="Divine Support" tname="An-Naṣr" descent="madani" />
-		<sura index="111" ayaCount="5" name="الْمَسَد" en="The Palm Fibre" tname="Al-Masad" descent="makki" />
-		<sura index="112" ayaCount="4" name="الْإِخْلَاص" en="Sincerity" tname="Al-'Ikhlāṣ" descent="makki" />
-		<sura index="113" ayaCount="5" name="الْفَلَق" en="The Dawn" tname="Al-Falaq" descent="makki" />
-		<sura index="114" ayaCount="6" name="النَّاس" en="Mankind" tname="An-Nās" descent="makki" />
-	</sura-detail>
-	<juz-detail>
-		<juz index="1" sura="1" aya="1" />
-		<juz index="2" sura="2" aya="142" />
-		<juz index="3" sura="2" aya="253" />
-		<juz index="4" sura="3" aya="93" />
-		<juz index="5" sura="4" aya="24" />
-		<juz index="6" sura="4" aya="148" />
-		<juz index="7" sura="5" aya="82" />
-		<juz index="8" sura="6" aya="111" />
-		<juz index="9" sura="7" aya="88" />
-		<juz index="10" sura="8" aya="41" />
-		<juz index="11" sura="9" aya="93" />
-		<juz index="12" sura="11" aya="6" />
-		<juz index="13" sura="12" aya="53" />
-		<juz index="14" sura="15" aya="1" />
-		<juz index="15" sura="17" aya="1" />
-		<juz index="16" sura="18" aya="75" />
-		<juz index="17" sura="21" aya="1" />
-		<juz index="18" sura="23" aya="1" />
-		<juz index="19" sura="25" aya="21" />
-		<juz index="20" sura="27" aya="56" />
-		<juz index="21" sura="29" aya="46" />
-		<juz index="22" sura="33" aya="31" />
-		<juz index="23" sura="36" aya="28" />
-		<juz index="24" sura="39" aya="32" />
-		<juz index="25" sura="41" aya="47" />
-		<juz index="26" sura="46" aya="1" />
-		<juz index="27" sura="51" aya="31" />
-		<juz index="28" sura="58" aya="1" />
-		<juz index="29" sura="67" aya="1" />
-		<juz index="30" sura="78" aya="1" />
-	</juz-detail>
-	<sajda-detail>
-		<!-- Mustahab Sajda -->
-		<sajda index="1" sura="7" aya="206" type="recommended" />
-		<sajda index="2" sura="13" aya="15" type="recommended" />
-		<sajda index="3" sura="16" aya="50" type="recommended" />
-		<sajda index="4" sura="17" aya="109" type="recommended" />
-		<sajda index="5" sura="19" aya="58" type="recommended" />
-		<sajda index="6" sura="22" aya="18" type="recommended" />
-		<sajda index="7" sura="22" aya="77" type="recommended" />
-		<sajda index="8" sura="25" aya="60" type="recommended" />
-		<sajda index="9" sura="27" aya="26" type="recommended" />
-		<sajda index="11" sura="38" aya="24" type="recommended" />
-		<sajda index="14" sura="84" aya="21" type="recommended" />
-		<!-- Wajib Sajda -->
-		<sajda index="10" sura="32" aya="15" type="mandatory" /><!-- سجدة -->
-		<sajda index="12" sura="41" aya="38" type="mandatory" /><!-- فصلت -->
-		<sajda index="13" sura="53" aya="62" type="mandatory" /><!-- نجم -->
-		<sajda index="15" sura="96" aya="19" type="mandatory" /><!-- علق -->
-	</sajda-detail>
-</quran>
+<?xml version="1.0" encoding="utf-8"?>
+<quran author="Yahya Saturday (Яхия Съботинов)" version="0.7.6-2.2">
+	<sura-detail>
+		<sura index="1" ayaCount="7" name="الْفَاتِحَة" en="The Opening" tname="Al-Fātiḥaħ" descent="makki" />
+		<sura index="2" ayaCount="286" name="الْبَقَرَة" en="The Cow" tname="Al-Baqaraħ" descent="madani" />
+		<sura index="3" ayaCount="200" name="آلِ عِمْرَان" en="The Family of Imraan" tname="'Āli `Imrān" descent="madani" />
+		<sura index="4" ayaCount="176" name="النِّسَآء" en="The Women" tname="An-Nisā'" descent="madani" />
+		<sura index="5" ayaCount="120" name="الْمَآئِدَة" en="The Table" tname="Al-Mā'idaħ" descent="madani" />
+		<sura index="6" ayaCount="165" name="الْأَنْعَام" en="The Cattle" tname="Al-'An`ām" descent="makki" />
+		<sura index="7" ayaCount="206" name="الْأَعْرَاف" en="The Heights" tname="Al-'A`rāf" descent="makki" />
+		<sura index="8" ayaCount="75" name="الْأَنْفَال" en="The Spoils of War" tname="Al-'Anfāl" descent="madani" />
+		<sura index="9" ayaCount="129" name="التَّوْبَة" en="The Repentance" tname="At-Tawbaħ" descent="madani" />
+		<sura index="10" ayaCount="109" name="يُونُس" en="Jonas" tname="Yūnus" descent="makki" />
+		<sura index="11" ayaCount="123" name="هُود" en="Hud" tname="Hūd" descent="makki" />
+		<sura index="12" ayaCount="111" name="يُوسُف" en="Joseph" tname="Yūsuf" descent="makki" />
+		<sura index="13" ayaCount="43" name="الرَّعْد" en="The Thunder" tname="Ar-Ra`d" descent="madani" />
+		<sura index="14" ayaCount="52" name="إِبْرَاهِيم" en="Abraham" tname="'Ibrāhīm" descent="makki" />
+		<sura index="15" ayaCount="99" name="الْحِجْر" en="The Rock" tname="Al-Ḥijr" descent="makki" />
+		<sura index="16" ayaCount="128" name="النَّحْل" en="The Bee" tname="An-Naḥl" descent="makki" />
+		<sura index="17" ayaCount="111" name="الْإِسْرَآء" en="The Night Journey" tname="Al-'Isrā'" descent="makki" />
+		<sura index="18" ayaCount="110" name="الْكَهْف" en="The Cave" tname="Al-Kahf" descent="makki" />
+		<sura index="19" ayaCount="98" name="مَرْيَم" en="Mary" tname="Maryam" descent="makki" />
+		<sura index="20" ayaCount="135" name="طٰهٰ" en="Taa-Haa" tname="Ṭā-Hā" descent="makki" />
+		<sura index="21" ayaCount="112" name="الْأَنْبِيَآء" en="The Prophets" tname="Al-'Aɱbiyā'" descent="makki" />
+		<sura index="22" ayaCount="78" name="الْحَجّ" en="The Pilgrimage" tname="Al-Ḥajj" descent="madani" />
+		<sura index="23" ayaCount="118" name="الْمُؤْمِنُون" en="The Believers" tname="Al-Mu'minūn" descent="makki" />
+		<sura index="24" ayaCount="64" name="النُّور" en="The Light" tname="An-Nūr" descent="madani" />
+		<sura index="25" ayaCount="77" name="الْفُرْقَان" en="The Criterion" tname="Al-Furqān" descent="makki" />
+		<sura index="26" ayaCount="227" name="الشُّعَرَآء" en="The Poets" tname="Ash-Shu`arā'" descent="makki" />
+		<sura index="27" ayaCount="93" name="النَّمْل" en="The Ant" tname="An-Naml" descent="makki" />
+		<sura index="28" ayaCount="88" name="الْقَصَص" en="The Stories" tname="Al-Qaṣaṣ" descent="makki" />
+		<sura index="29" ayaCount="69" name="الْعَنْكَبُوت" en="The Spider" tname="Al-`Ankabūt" descent="makki" />
+		<sura index="30" ayaCount="60" name="الرُّوم" en="The Romans" tname="Ar-Rūm" descent="makki" />
+		<sura index="31" ayaCount="34" name="لُقْمَان" en="Luqman" tname="Luqmān" descent="makki" />
+		<sura index="32" ayaCount="30" name="السَّجْدَة" en="The Prostration" tname="As-Sajdaħ" descent="makki" />
+		<sura index="33" ayaCount="73" name="الْأَحْزَاب" en="The Clans" tname="Al-'Aḥzāb" descent="madani" />
+		<sura index="34" ayaCount="54" name="سَبَأ" en="Sheba" tname="Saba'" descent="makki" />
+		<sura index="35" ayaCount="45" name="فَاطِر" en="The Originator" tname="Fāṭir" descent="makki" />
+		<sura index="36" ayaCount="83" name="يٰسٓ" en="Yaa-Seen" tname="Yā-Sīn" descent="makki" />
+		<sura index="37" ayaCount="182" name="الصَّافَّات" en="Those Drawn Up in Ranks" tname="Aṣ-Ṣāffāt" descent="makki" />
+		<sura index="38" ayaCount="88" name="صٓ" en="The Letter Saad" tname="Ṣād" descent="makki" />
+		<sura index="39" ayaCount="75" name="الزُّمَر" en="The Groups" tname="Az-Zumar" descent="makki" />
+		<sura index="40" ayaCount="85" name="غَافِر" en="The Forgiver" tname="Ghāfir" descent="makki" />
+		<sura index="41" ayaCount="54" name="فُصِّلَت" en="Explained in Detail" tname="Fuṣṣilat" descent="makki" />
+		<sura index="42" ayaCount="53" name="الشُّورَىٰ" en="Consultation" tname="Ash-Shūraá" descent="makki" />
+		<sura index="43" ayaCount="89" name="الزُّخْرُف" en="Ornaments of Gold" tname="Az-Zukhruf" descent="makki" />
+		<sura index="44" ayaCount="59" name="الدُّخَان" en="The Smoke" tname="Ad-Dukhān" descent="makki" />
+		<sura index="45" ayaCount="37" name="الْجَاثِيَة" en="Crouching" tname="Al-Jāthiyaħ" descent="makki" />
+		<sura index="46" ayaCount="35" name="الْأَحْقَاف" en="The Dunes" tname="Al-'Aḥqāf" descent="makki" />
+		<sura index="47" ayaCount="38" name="مُحَمَّد" en="Muhammad" tname="Muḥammad" descent="madani" />
+		<sura index="48" ayaCount="29" name="الْفَتْح" en="The Victory" tname="Al-Fatḥ" descent="madani" />
+		<sura index="49" ayaCount="18" name="الْحُجُرَات" en="The Inner Apartments" tname="Al-Ḥujurāt" descent="madani" />
+		<sura index="50" ayaCount="45" name="قٓ" en="The Letter Qaaf" tname="Qāf" descent="makki" />
+		<sura index="51" ayaCount="60" name="الذَّارِيَات" en="The Winnowing Winds" tname="Adh-Dhāriyāt" descent="makki" />
+		<sura index="52" ayaCount="49" name="الطُّور" en="The Mount" tname="Aṭ-Ṭūr" descent="makki" />
+		<sura index="53" ayaCount="62" name="النَّجْم" en="The Star" tname="An-Najm" descent="makki" />
+		<sura index="54" ayaCount="55" name="الْقَمَر" en="The Moon" tname="Al-Qamar" descent="makki" />
+		<sura index="55" ayaCount="78" name="الرَّحْمَٰن" en="The Beneficent" tname="Ar-Raḥmān" descent="madani" />
+		<sura index="56" ayaCount="96" name="الْوَاقِعَة" en="The Inevitable" tname="Al-Wāqi`aħ" descent="makki" />
+		<sura index="57" ayaCount="29" name="الْحَدِيد" en="The Iron" tname="Al-Ḥadīd" descent="madani" />
+		<sura index="58" ayaCount="22" name="الْمُجَادَلَة" en="The Pleading Woman" tname="Al-Mujādalaħ" descent="madani" />
+		<sura index="59" ayaCount="24" name="الْحَشْر" en="The Exile" tname="Al-Ḥashr" descent="madani" />
+		<sura index="60" ayaCount="13" name="الْمُمْتَحِنَة" en="She That Is to Be Examined" tname="Al-Mumtaḥanaħ" descent="madani" />
+		<sura index="61" ayaCount="14" name="الصَّفّ" en="The Ranks" tname="Aṣ-Ṣaff" descent="madani" />
+		<sura index="62" ayaCount="11" name="الْجُمُعَة" en="Friday" tname="Al-Jumu`aħ" descent="madani" />
+		<sura index="63" ayaCount="11" name="الْمُنَافِقُون" en="The Hypocrites" tname="Al-Munāfiqūn" descent="madani" />
+		<sura index="64" ayaCount="18" name="التَّغَابُن" en="Mutual Disillusion" tname="At-Taghābun" descent="madani" />
+		<sura index="65" ayaCount="12" name="الطَّلَاق" en="Divorce" tname="Aṭ-Ṭalāq" descent="madani" />
+		<sura index="66" ayaCount="12" name="التَّحْرِيم" en="The Prohibition" tname="At-Taḥrīm" descent="madani" />
+		<sura index="67" ayaCount="30" name="الْمُلْك" en="The Sovereignty" tname="Al-Mulk" descent="makki" />
+		<sura index="68" ayaCount="52" name="الْقَلَم" en="The Pen" tname="Al-Qalam" descent="makki" />
+		<sura index="69" ayaCount="52" name="الْحَاقَّة" en="The Reality" tname="Al-Ḥāqqaħ" descent="makki" />
+		<sura index="70" ayaCount="44" name="الْمَعَارِج" en="The Ascending Stairways" tname="Al-Ma`ārij" descent="makki" />
+		<sura index="71" ayaCount="28" name="نُوح" en="Noah" tname="Nūḥ" descent="makki" />
+		<sura index="72" ayaCount="28" name="الْجِنّ" en="The Jinn" tname="Al-Jinn" descent="makki" />
+		<sura index="73" ayaCount="20" name="الْمُزَّمِّل" en="The Enshrouded One" tname="Al-Muzzammil" descent="makki" />
+		<sura index="74" ayaCount="56" name="الْمُدَّثِّر" en="The Cloaked One" tname="Al-Muddaththir" descent="makki" />
+		<sura index="75" ayaCount="40" name="الْقِيَامَة" en="The Resurrection" tname="Al-Qiyāmaħ" descent="makki" />
+		<sura index="76" ayaCount="31" name="الْإِنْسَان" en="Man" tname="Al-'Insān" descent="madani" />
+		<sura index="77" ayaCount="50" name="الْمُرْسَلَات" en="The Emissaries" tname="Al-Mursalāt" descent="makki" />
+		<sura index="78" ayaCount="40" name="النَّبَأ" en="The Announcement" tname="An-Naba'" descent="makki" />
+		<sura index="79" ayaCount="46" name="النَّازِعَات" en="Those Who Drag Forth" tname="An-Nāzi`āt" descent="makki" />
+		<sura index="80" ayaCount="42" name="عَبَسَ" en="He Frowned" tname="`Abasa" descent="makki" />
+		<sura index="81" ayaCount="29" name="التَّکْوِير" en="The Overthrowing" tname="At-Takwīr" descent="makki" />
+		<sura index="82" ayaCount="19" name="الْإِنْفِطَار" en="The Cleaving" tname="Al-'Infiṭār" descent="makki" />
+		<sura index="83" ayaCount="36" name="الْمُطَفِّفِين" en="Defrauding" tname="Al-Muṭaffifīn" descent="makki" />
+		<sura index="84" ayaCount="25" name="الْإِنْشِقَاق" en="The Splitting Open" tname="Al-'Inshiqāq" descent="makki" />
+		<sura index="85" ayaCount="22" name="الْبُرُوج" en="The Constellations" tname="Al-Burūj" descent="makki" />
+		<sura index="86" ayaCount="17" name="الطَّارِق" en="The Morning Star" tname="Aṭ-Ṭāriq" descent="makki" />
+		<sura index="87" ayaCount="19" name="الْأَعْلَیٰ" en="The Most High" tname="Al-'A`laá" descent="makki" />
+		<sura index="88" ayaCount="26" name="الْغَاشِيَة" en="The Overwhelming" tname="Al-Ghāshiyaħ" descent="makki" />
+		<sura index="89" ayaCount="30" name="الْفَجْر" en="The Dawn" tname="Al-Fajr" descent="makki" />
+		<sura index="90" ayaCount="20" name="الْبَلَد" en="The City" tname="Al-Balad" descent="makki" />
+		<sura index="91" ayaCount="15" name="الشَّمْس" en="The Sun" tname="Ash-Shams" descent="makki" />
+		<sura index="92" ayaCount="21" name="اللَّيْل" en="The Night" tname="Al-Layl" descent="makki" />
+		<sura index="93" ayaCount="11" name="الضُّحَیٰ" en="The Morning Hours" tname="Aḍ-Ḍuḥaá" descent="makki" />
+		<sura index="94" ayaCount="8" name="الشَّرْح" en="The Consolation" tname="Ash-Sharḥ" descent="makki" />
+		<sura index="95" ayaCount="8" name="التِّين" en="The Fig" tname="At-Tīn" descent="makki" />
+		<sura index="96" ayaCount="19" name="الْعَلَق" en="The Clot" tname="Al-`Alaq" descent="makki" />
+		<sura index="97" ayaCount="5" name="الْقَدْر" en="The Power, Fate" tname="Al-Qadr" descent="makki" />
+		<sura index="98" ayaCount="8" name="الْبَيِّنَة" en="The Evidence" tname="Al-Bayyinaħ" descent="madani" />
+		<sura index="99" ayaCount="8" name="الزَّلْزَلَة" en="The Earthquake" tname="Az-Zalzalaħ" descent="madani" />
+		<sura index="100" ayaCount="11" name="الْعَادِيَات" en="The Chargers" tname="Al-`Ādiyāt" descent="makki" />
+		<sura index="101" ayaCount="11" name="الْقَارِعَة" en="The Calamity" tname="Al-Qāri`aħ" descent="makki" />
+		<sura index="102" ayaCount="8" name="التَّكَاثُر" en="Competition" tname="At-Takāthur" descent="makki" />
+		<sura index="103" ayaCount="3" name="الْعَصْر" en="The Declining Day, Epoch" tname="Al-`Aṣr" descent="makki" />
+		<sura index="104" ayaCount="9" name="الْهُمَزَة" en="The Traducer" tname="Al-Humazaħ" descent="makki" />
+		<sura index="105" ayaCount="5" name="الْفِيل" en="The Elephant" tname="Al-Fīl" descent="makki" />
+		<sura index="106" ayaCount="4" name="قُرَيْش" en="Quraysh" tname="Quraysh" descent="makki" />
+		<sura index="107" ayaCount="7" name="الْمَاعُون" en="Almsgiving" tname="Al-Mā`ūn" descent="makki" />
+		<sura index="108" ayaCount="3" name="الْكَوْثَر" en="Abundance" tname="Al-Kawthar" descent="makki" />
+		<sura index="109" ayaCount="6" name="الْكَافِرُون" en="The Disbelievers" tname="Al-Kāfirūn" descent="makki" />
+		<sura index="110" ayaCount="3" name="النَّصْر" en="Divine Support" tname="An-Naṣr" descent="madani" />
+		<sura index="111" ayaCount="5" name="الْمَسَد" en="The Palm Fibre" tname="Al-Masad" descent="makki" />
+		<sura index="112" ayaCount="4" name="الْإِخْلَاص" en="Sincerity" tname="Al-'Ikhlāṣ" descent="makki" />
+		<sura index="113" ayaCount="5" name="الْفَلَق" en="The Dawn" tname="Al-Falaq" descent="makki" />
+		<sura index="114" ayaCount="6" name="النَّاس" en="Mankind" tname="An-Nās" descent="makki" />
+	</sura-detail>
+	<juz-detail>
+		<juz index="1" sura="1" aya="1" />
+		<juz index="2" sura="2" aya="142" />
+		<juz index="3" sura="2" aya="253" />
+		<juz index="4" sura="3" aya="93" />
+		<juz index="5" sura="4" aya="24" />
+		<juz index="6" sura="4" aya="148" />
+		<juz index="7" sura="5" aya="82" />
+		<juz index="8" sura="6" aya="111" />
+		<juz index="9" sura="7" aya="88" />
+		<juz index="10" sura="8" aya="41" />
+		<juz index="11" sura="9" aya="93" />
+		<juz index="12" sura="11" aya="6" />
+		<juz index="13" sura="12" aya="53" />
+		<juz index="14" sura="15" aya="1" />
+		<juz index="15" sura="17" aya="1" />
+		<juz index="16" sura="18" aya="75" />
+		<juz index="17" sura="21" aya="1" />
+		<juz index="18" sura="23" aya="1" />
+		<juz index="19" sura="25" aya="21" />
+		<juz index="20" sura="27" aya="56" />
+		<juz index="21" sura="29" aya="46" />
+		<juz index="22" sura="33" aya="31" />
+		<juz index="23" sura="36" aya="28" />
+		<juz index="24" sura="39" aya="32" />
+		<juz index="25" sura="41" aya="47" />
+		<juz index="26" sura="46" aya="1" />
+		<juz index="27" sura="51" aya="31" />
+		<juz index="28" sura="58" aya="1" />
+		<juz index="29" sura="67" aya="1" />
+		<juz index="30" sura="78" aya="1" />
+	</juz-detail>
+	<sajda-detail>
+		<!-- Mustahab Sajda -->
+		<sajda index="1" sura="7" aya="206" type="recommended" />
+		<sajda index="2" sura="13" aya="15" type="recommended" />
+		<sajda index="3" sura="16" aya="50" type="recommended" />
+		<sajda index="4" sura="17" aya="109" type="recommended" />
+		<sajda index="5" sura="19" aya="58" type="recommended" />
+		<sajda index="6" sura="22" aya="18" type="recommended" />
+		<sajda index="7" sura="22" aya="77" type="recommended" />
+		<sajda index="8" sura="25" aya="60" type="recommended" />
+		<sajda index="9" sura="27" aya="26" type="recommended" />
+		<sajda index="11" sura="38" aya="24" type="recommended" />
+		<sajda index="14" sura="84" aya="21" type="recommended" />
+		<!-- Wajib Sajda -->
+		<sajda index="10" sura="32" aya="15" type="mandatory" /><!-- سجدة -->
+		<sajda index="12" sura="41" aya="38" type="mandatory" /><!-- فصلت -->
+		<sajda index="13" sura="53" aya="62" type="mandatory" /><!-- نجم -->
+		<sajda index="15" sura="96" aya="19" type="mandatory" /><!-- علق -->
+	</sajda-detail>
+</quran>
diff --git a/res/ui/js/common.js b/res/ui/js/common.js
index 0721f32..553e69b 100644
--- a/res/ui/js/common.js
+++ b/res/ui/js/common.js
@@ -34,9 +34,9 @@ function play(loc, isPlay) {
     }
 }
 
-function zoom(z) {
+function zoom(z, trans) {
     if (javaFunction) {
-        javaFunction('ZEKR::ZOOM', z);
+        javaFunction('ZEKR::ZOOM', z, trans);
     }
 }
 
diff --git a/res/ui/theme/sky/css/common-style.css b/res/ui/theme/sky/css/common-style.css
index 2072df3..d6af2fe 100644
--- a/res/ui/theme/sky/css/common-style.css
+++ b/res/ui/theme/sky/css/common-style.css
@@ -52,8 +52,10 @@ div.bodyTop {
 
 .suraName {
 	font-weight: bold;
-	padding-top: 6px;
-	font-size: .75em;
+	/*padding-top: 6px;
+	font-size: .75em;*/
+	padding-top: 7px;
+	font-size: 12.5pt;
 	height: 40px;
 	background: url(${APP_PATH}res/image/sura-header.png) no-repeat center center;
 }
diff --git a/res/ui/theme/sky/page.vm b/res/ui/theme/sky/page.vm
index 760dd0a..421196f 100644
--- a/res/ui/theme/sky/page.vm
+++ b/res/ui/theme/sky/page.vm
@@ -9,11 +9,12 @@
 	#set($TD_CLASS="trans")
 	#set($BODY_ID="transBody")
 	#set($DIR=${TRANS_DIRECTION})
+	#set($IS_TRANS="true")
 #else
 	#set($TD_CLASS="quran")
 	#set($BODY_ID="quranBody")
 	#set($DIR="rtl")
-	#set($IS_QURAN="true")
+	#set($IS_TRANS="false")
 #end
 #if($DIRECTION == "rtl")
 	#set($LEAD="right")
@@ -42,9 +43,9 @@ window.res = null;
 		<button type="button" onclick="navtoSuraAya()">&nbsp;$DICT.getMeaning('GO')&nbsp;</button>
 		</td>
 		<td align="center" width="8%" nowrap="nowrap">
-			<img alt="-" tabindex="0" class="handCursor" title="$DICT.getMeaning('SMALLER')" border="0" src="res/image/icon/zoom-out16.png" onclick="zoom(-1)">
+			<img alt="-" tabindex="0" class="handCursor" title="$DICT.getMeaning('SMALLER')" border="0" src="res/image/icon/zoom-out16.png" onclick="zoom(-1, $IS_TRANS)">
 			|
-			<img alt="+" tabindex="0" class="handCursor" title="$DICT.getMeaning('LARGER')" border="0" src="res/image/icon/zoom-in16.png" onclick="zoom(1)">
+			<img alt="+" tabindex="0" class="handCursor" title="$DICT.getMeaning('LARGER')" border="0" src="res/image/icon/zoom-in16.png" onclick="zoom(1, $IS_TRANS)">
 		</td>
 		</tr>
 	</table>
diff --git a/res/ui/theme/sky/search-result.vm b/res/ui/theme/sky/search-result.vm
index 780ffa4..49422c7 100644
--- a/res/ui/theme/sky/search-result.vm
+++ b/res/ui/theme/sky/search-result.vm
@@ -22,10 +22,10 @@ res = new SearchResult();
 	<table width="100%" style="padding: 0px; margin: 0px" cellspacing="0" cellpadding="0">
 		<tr><td align="$LEAD" width="40%">
 			<button title="$DICT.getMeaning('PREV_AYA')" style="padding: 0px 10px 0px 10px;" onclick="res.prev()">
-			<img src="res/image/icon/up_arrow.gif" style="margin: 1px" alt="$DICT.getMeaning('PREV_AYA')" />
+			<img src="res/image/icon/up-arrow16.gif" style="margin: 1px" alt="$DICT.getMeaning('PREV_AYA')" />
 			</button>&nbsp;
 			<button title="$DICT.getMeaning('NEXT_AYA')" style="padding: 0px 10px 0px 10px;" onclick="res.next()">
-			<img src="res/image/icon/down_arrow.gif" style="margin: 1px" alt="$DICT.getMeaning('NEXT_AYA')"/>
+			<img src="res/image/icon/down-arrow16.gif" style="margin: 1px" alt="$DICT.getMeaning('NEXT_AYA')"/>
 			</button>
 		</td><td align="center">
 		<font size="-1">$PAGE_NUM_MSG</font>
diff --git a/res/ui/theme/uthman-taha/search-result.vm b/res/ui/theme/uthman-taha/search-result.vm
index 780ffa4..49422c7 100644
--- a/res/ui/theme/uthman-taha/search-result.vm
+++ b/res/ui/theme/uthman-taha/search-result.vm
@@ -22,10 +22,10 @@ res = new SearchResult();
 	<table width="100%" style="padding: 0px; margin: 0px" cellspacing="0" cellpadding="0">
 		<tr><td align="$LEAD" width="40%">
 			<button title="$DICT.getMeaning('PREV_AYA')" style="padding: 0px 10px 0px 10px;" onclick="res.prev()">
-			<img src="res/image/icon/up_arrow.gif" style="margin: 1px" alt="$DICT.getMeaning('PREV_AYA')" />
+			<img src="res/image/icon/up-arrow16.gif" style="margin: 1px" alt="$DICT.getMeaning('PREV_AYA')" />
 			</button>&nbsp;
 			<button title="$DICT.getMeaning('NEXT_AYA')" style="padding: 0px 10px 0px 10px;" onclick="res.next()">
-			<img src="res/image/icon/down_arrow.gif" style="margin: 1px" alt="$DICT.getMeaning('NEXT_AYA')"/>
+			<img src="res/image/icon/down-arrow16.gif" style="margin: 1px" alt="$DICT.getMeaning('NEXT_AYA')"/>
 			</button>
 		</td><td align="center">
 		<font size="-1">$PAGE_NUM_MSG</font>
diff --git a/src/net/sf/zekr/common/config/ApplicationConfig.java b/src/net/sf/zekr/common/config/ApplicationConfig.java
index 68cc017..c4676f9 100644
--- a/src/net/sf/zekr/common/config/ApplicationConfig.java
+++ b/src/net/sf/zekr/common/config/ApplicationConfig.java
@@ -257,7 +257,7 @@ public class ApplicationConfig implements ConfigNaming {
 
 			searchInfo.setDefaultStopWord(defaultStopWord);
 			for (Iterator<String> iterator = stopWordConf.getKeys(); iterator.hasNext();) {
-				String langCode = (String) iterator.next();
+				String langCode = iterator.next();
 				if (langCode.length() <= 0) {
 					continue;
 				}
@@ -266,8 +266,8 @@ public class ApplicationConfig implements ConfigNaming {
 			}
 
 			searchInfo.setDefaultReplacePattern(defaultReplacePattern);
-			for (Iterator iterator = replacePatternConf.getKeys(); iterator.hasNext();) {
-				String langCode = (String) iterator.next();
+			for (Iterator<String> iterator = replacePatternConf.getKeys(); iterator.hasNext();) {
+				String langCode = iterator.next();
 				if (langCode.length() <= 0) {
 					continue;
 				}
@@ -279,7 +279,7 @@ public class ApplicationConfig implements ConfigNaming {
 				searchInfo.setDefaultPunctuation(Pattern.compile(defaultPunctuation));
 			}
 			for (Iterator<String> iterator = punctuationConf.getKeys(); iterator.hasNext();) {
-				String langCode = (String) iterator.next();
+				String langCode = iterator.next();
 				if (langCode.length() <= 0) {
 					continue;
 				}
@@ -291,7 +291,7 @@ public class ApplicationConfig implements ConfigNaming {
 				searchInfo.setDefaultDiacritic(Pattern.compile(defaultDiacritics));
 			}
 			for (Iterator<String> iterator = diacriticsConf.getKeys(); iterator.hasNext();) {
-				String langCode = (String) iterator.next();
+				String langCode = iterator.next();
 				if (langCode.length() <= 0) {
 					continue;
 				}
@@ -300,7 +300,7 @@ public class ApplicationConfig implements ConfigNaming {
 			}
 
 			for (Iterator<String> iterator = letterConf.getKeys(); iterator.hasNext();) {
-				String langCode = (String) iterator.next();
+				String langCode = iterator.next();
 				if (langCode.length() <= 0) {
 					continue;
 				}
@@ -688,13 +688,12 @@ public class ApplicationConfig implements ConfigNaming {
 		if (translation.getDefault() == null) {
 			logger.error(new ZekrBaseException("Could not find default translation: " + def));
 			logger.warn("Will use any English or other translations found.");
-			for (Iterator iter = translation.getAllTranslation().iterator(); iter.hasNext();) {
-				TranslationData transData = (TranslationData) iter.next();
-				if (transData.locale.getLanguage().equalsIgnoreCase("en")) {
-					logger.info("Trying to set default translation to: " + transData.getId());
+			for (TranslationData translationData : translation.getAllTranslation()) {
+				if (translationData.locale.getLanguage().equalsIgnoreCase("en")) {
+					logger.info("Trying to set default translation to: " + translationData.getId());
 					try {
-						transData.load();
-						translation.setDefault(transData);
+						translationData.load();
+						translation.setDefault(translationData);
 						props.setProperty("trans.default", translation.getDefault().id);
 						break;
 					} catch (TranslationException e) {
@@ -841,8 +840,8 @@ public class ApplicationConfig implements ConfigNaming {
 
 					td = new ThemeData();
 					td.props = new LinkedHashMap<String, String>(); // order is important for options table!
-					for (Iterator iter = pc.getKeys(); iter.hasNext();) {
-						String key = (String) iter.next();
+					for (Iterator<String> iter = pc.getKeys(); iter.hasNext();) {
+						String key = iter.next();
 						td.props.put(key, CollectionUtils.toString(pc.getList(key), ", "));
 					}
 					td.author = pc.getString("author");
@@ -1008,12 +1007,14 @@ public class ApplicationConfig implements ConfigNaming {
 		audioData.onlineAudhubillah = pc.getString("audio.onlineAudhubillah");
 		// keep backward compatibility for old typo in files (bismillam instead of bismillah)
 		audioData.onlineBismillah = pc.getString("audio.onlineBismillah", pc.getString("audio.onlineBismillam"));
-		audioData.onlineSadaghallah = pc.getString("audio.onlineSaghaghallah");
+		// keep backward compatibility for old typo in files (saghaghallah instead of sadaghallah)
+		audioData.onlineSadaghallah = pc.getString("audio.onlineSadaghallah", pc.getString("audio.onlineSaghaghallah"));
 
 		audioData.offlineAudhubillah = pc.getString("audio.offlineAudhubillah");
 		// keep backward compatibility for old typo in files (bismillam instead of bismillah)
 		audioData.offlineBismillah = pc.getString("audio.offlineBismillah", pc.getString("audio.offlineBismillam"));
-		audioData.offlineSadaghallah = pc.getString("audio.offlineSaghaghallah");
+		// keep backward compatibility for old typo in files (saghaghallah instead of sadaghallah)
+		audioData.offlineSadaghallah = pc.getString("audio.offlineSadaghallah", pc.getString("audio.offlineSaghaghallah"));
 		return audioData;
 	}
 
diff --git a/src/net/sf/zekr/common/config/GlobalConfig.java b/src/net/sf/zekr/common/config/GlobalConfig.java
index 86b3a7e..cecf8df 100644
--- a/src/net/sf/zekr/common/config/GlobalConfig.java
+++ b/src/net/sf/zekr/common/config/GlobalConfig.java
@@ -82,7 +82,7 @@ public class GlobalConfig {
 	 */
 	public static final String USER_LANGUAGE = System.getProperty("user.language");
 
-	public static final int MAX_MENU_STRING_LENGTH = 40;
+	public static final int MAX_MENU_STRING_LENGTH = 45;
 
 	/**
 	 * A unique number for each build. It contains full date plus hour. For example <tt>2008021020</tt> is used
diff --git a/src/net/sf/zekr/common/config/version.properties b/src/net/sf/zekr/common/config/version.properties
index 54ebe98..ee3c84c 100644
--- a/src/net/sf/zekr/common/config/version.properties
+++ b/src/net/sf/zekr/common/config/version.properties
@@ -1,5 +1,5 @@
-zekr.version = 0.7.6
-zekr.build.number = 2010061700
+zekr.version = 1.0.0
+zekr.build.number = 2010081200
 zekr.build.status = FINAL
 
 zekr.update.address = http://zekr.org/update
diff --git a/src/net/sf/zekr/common/util/RangeUtils.java b/src/net/sf/zekr/common/util/RangeUtils.java
deleted file mode 100644
index e69de29..0000000
diff --git a/src/net/sf/zekr/engine/audio/AudioCacheManager.java b/src/net/sf/zekr/engine/audio/AudioCacheManager.java
index 8eb0e87..434d952 100644
--- a/src/net/sf/zekr/engine/audio/AudioCacheManager.java
+++ b/src/net/sf/zekr/engine/audio/AudioCacheManager.java
@@ -174,7 +174,7 @@ public class AudioCacheManager {
 				}
 			}, null);
 
-			List fileList = new ArrayList();
+			List<File> fileList = new ArrayList<File>();
 			for (File dir : audioDirectoryList) {
 				fileList.addAll(Arrays.asList(dir.listFiles()));
 			}
@@ -188,7 +188,7 @@ public class AudioCacheManager {
 							+ " were deleted.");
 					break;
 				}
-				File file = (File) fileList.get(i);
+				File file = fileList.get(i);
 				deleteSize += file.length();
 				logger.debug("Delete: " + file);
 				file.delete();
diff --git a/src/net/sf/zekr/engine/audio/PlaylistProvider.java b/src/net/sf/zekr/engine/audio/PlaylistProvider.java
deleted file mode 100644
index 47d38e6..0000000
--- a/src/net/sf/zekr/engine/audio/PlaylistProvider.java
+++ /dev/null
@@ -1,99 +0,0 @@
-///*
-// *               In the name of Allah
-// * This file is part of The Zekr Project. Use is subject to
-// * license terms.
-// *
-// * Author:         Mohsen Saboorian
-// * Start Date:     Sep 3, 2007
-// */
-//package net.sf.zekr.engine.audio;
-//
-//import net.sf.zekr.common.config.ApplicationConfig;
-//import net.sf.zekr.common.resource.IQuranPage;
-//import net.sf.zekr.common.resource.QuranPropertiesUtils;
-//
-///**
-// * @author Mohsen Saboorian
-// */
-//public abstract class PlaylistProvider implements IPlaylistProvider {
-//	protected AudioData audioData;
-//	protected int pageNum;
-//
-//	public PlaylistProvider(AudioData audioData, int pageNum) {
-//		this.audioData = audioData;
-//		this.pageNum = pageNum;
-//	}
-//
-//	public abstract String providePlaylist() throws PlaylistProvisionException;
-//
-//	/**
-//	 * Default getItem behavior is implemented in this class, and can be overridden for special playlists.<br>
-//	 * If audio data is in sura mode, this method does <code>return aya - 1;</code>, regardless of sura/aya
-//	 * number, since in sura mode every sura has a corresponding playlist in which each playling item (counted
-//	 * from 0) is mapped exactly to its corresponding aya (counted from 1).<br>
-//	 * For audio data in collection mode assumption is that sura items are located regularly one sura after the
-//	 * other in natural Quran order. So exact number of an item for sura <i>i</i> is equal to aggregative sum
-//	 * of aya count from sura 1 to sura i - 1 plus aya parameter - 1:<br>
-//	 * (for sura: 1 to sura parameter) &#8721;(<i>aya count</i>) + <i>aya parameter</i> - 1</i>
-//	 * 
-//	 * @param sura sura number in which corresponding aya should be returned as a playlist item. This parameter
-//	 *           is 1-based.
-//	 * @param aya aya number to be resolved to an item. This parameter is 1-based.
-//	 * @return playlist item to be played, corresponding to the given sura/aya number. This number is 0-based.
-//	 * @deprecated since {@link AudioData#SURA_PLAYLIST} is deprecated.
-//	 */
-//	public int getItem(int sura, int aya) {
-//		if (audioData.getPlaylistMode().equals(AudioData.SURA_PLAYLIST)) {
-//			return aya - 1;
-//		} else {
-//			return QuranPropertiesUtils.getAggregateAyaCount(pageNum) + aya - 1;
-//		}
-//	}
-//
-//	/*
-//	 * (non-Javadoc)
-//	 * 
-//	 * @see net.sf.zekr.engine.audio.IPlaylistProvider#getAudioData()
-//	 */
-//	public AudioData getAudioData() {
-//		return audioData;
-//	}
-//
-//	/**
-//	 * Default implementation for special audio item index lookup. This implementation assumes that special
-//	 * items are located at the end of playlist (if any): <code>SPECIAL_PRESTART</code>,
-//	 * <code>SPECIAL_START</code>, and <code>SPECIAL_END</code> respectively.
-//	 * 
-//	 * @param name the name of special audio item
-//	 * @return special audio item index, or -1 if there is no such item for the playlist
-//	 */
-//	public int getSpecialItem(String name) {
-//		int index = 0;
-//		//		if (audioData.getPlaylistMode().equals(AudioData.COLLECTION_PLAYLIST)) {
-//		//			index = QuranPropertiesUtils.QURAN_AYA_COUNT;
-//		//		} else {
-//		//			index = QuranPropertiesUtils.getSura(pageNum).getAyaCount();
-//		//		}
-//		IQuranPage p = ApplicationConfig.getInstance().getQuranPaging().getDefault().getQuranPage(pageNum);
-//		int from = QuranPropertiesUtils.getAbsoluteLocation(p.getFrom());
-//		int to = QuranPropertiesUtils.getAbsoluteLocation(p.getTo());
-//		index = from - to;
-//		if (SPECIAL_PRESTART.equals(name)) {
-//			if (audioData.getPrestartFileName() != null)
-//				return index;
-//			else
-//				return -1;
-//		} else if (SPECIAL_START.equals(name)) {
-//			if (audioData.getStartFileName() != null)
-//				return index + 1;
-//			else
-//				return -1;
-//		} else if (SPECIAL_END.equals(name)) {
-//			if (audioData.getEndFileName() != null)
-//				return index + 2;
-//			else
-//				return -1;
-//		}
-//		return -1;
-//	}
-//}
diff --git a/src/net/sf/zekr/engine/audio/ui/AudioPlayerForm.java b/src/net/sf/zekr/engine/audio/ui/AudioPlayerForm.java
index 0a0999c..5926b4a 100644
--- a/src/net/sf/zekr/engine/audio/ui/AudioPlayerForm.java
+++ b/src/net/sf/zekr/engine/audio/ui/AudioPlayerForm.java
@@ -20,6 +20,7 @@ import net.sf.zekr.engine.audio.PlayableObject;
 import net.sf.zekr.engine.audio.PlayerController;
 import net.sf.zekr.ui.BaseForm;
 import net.sf.zekr.ui.QuranForm;
+import net.sf.zekr.ui.helper.FormUtils;
 
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.eclipse.swt.SWT;
@@ -35,6 +36,7 @@ import org.eclipse.swt.events.ShellAdapter;
 import org.eclipse.swt.events.ShellEvent;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -57,6 +59,7 @@ import org.eclipse.swt.widgets.Widget;
  * @author Mohsen Saboorian
  */
 public class AudioPlayerForm extends BaseForm {
+	private static final int WINDOW_VISIBILITY_THRESHOLD = 60;
 	public static final String FORM_ID = "AUDIO_PLAYER_FORM";
 	public static final int MAX_SEEK_VALUE = 1000;
 	public static final int MAX_VOLUME_VALUE = 100;
@@ -118,24 +121,38 @@ public class AudioPlayerForm extends BaseForm {
 		init();
 	}
 
-	@SuppressWarnings("unchecked")
+	@SuppressWarnings("rawtypes")
 	private void init() {
 		shell = createShell(parent, SWT.CLOSE /*| SWT.ON_TOP */| SWT.TOOL
 				| (isRtl ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT));
 		List shellLocationList = config.getProps().getList("audio.controller.location");
 		if (shellLocationList.size() > 1) {
-			shellLocation = new Point(Integer.parseInt(shellLocationList.get(0).toString()), Integer
-					.parseInt(shellLocationList.get(1).toString()));
+			shellLocation = new Point(Integer.parseInt(shellLocationList.get(0).toString()),
+					Integer.parseInt(shellLocationList.get(1).toString()));
 		}
 		shell.addShellListener(new ShellAdapter() {
 			@Override
 			public void shellClosed(ShellEvent e) {
 				Point location = shell.getLocation();
+				Rectangle bounds = shell.getBounds();
+				// make sure player form is visible
+				Point screen = FormUtils.getScreenSize(display);
+				if (bounds.width + bounds.x < WINDOW_VISIBILITY_THRESHOLD) {
+					location.x = WINDOW_VISIBILITY_THRESHOLD - bounds.width;
+				} else if (screen.x - location.x < WINDOW_VISIBILITY_THRESHOLD) {
+					location.x = screen.x - WINDOW_VISIBILITY_THRESHOLD;
+				}
+				if (bounds.height + bounds.y < WINDOW_VISIBILITY_THRESHOLD) {
+					location.y = WINDOW_VISIBILITY_THRESHOLD - bounds.height;
+				} else if (screen.y - location.y < WINDOW_VISIBILITY_THRESHOLD) {
+					location.y = screen.y - WINDOW_VISIBILITY_THRESHOLD;
+				}
+
 				config.getProps().setProperty("audio.controller.location", new Object[] { location.x, location.y });
-				config.getProps().setProperty("audio.controller.show", "false");
+				// config.getProps().setProperty("audio.controller.show", "false");
 			}
 		});
-		config.getProps().setProperty("audio.controller.show", "true");
+		// config.getProps().setProperty("audio.controller.show", "true");
 
 		FillLayout fl = new FillLayout();
 		shell.setLayout(fl);
@@ -185,8 +202,8 @@ public class AudioPlayerForm extends BaseForm {
 		prevAyaImage = new Image(display, resource.getString("icon.player.prevAya"));
 		nextAyaImage = new Image(display, resource.getString("icon.player.nextAya"));
 
-		File playImageFile = new File(isRtl ? resource.getString("icon.player.playRtl") : resource
-				.getString("icon.player.play"));
+		File playImageFile = new File(isRtl ? resource.getString("icon.player.playRtl")
+				: resource.getString("icon.player.play"));
 		File pauseImageFile = new File(resource.getString("icon.player.pause"));
 		File stopImageFile = new File(resource.getString("icon.player.stop"));
 		playImage = new Image(display, playImageFile.getAbsolutePath());
diff --git a/src/net/sf/zekr/engine/template/TranslationViewTemplate.java b/src/net/sf/zekr/engine/template/TranslationViewTemplate.java
index 89d7643..ac125be 100644
--- a/src/net/sf/zekr/engine/template/TranslationViewTemplate.java
+++ b/src/net/sf/zekr/engine/template/TranslationViewTemplate.java
@@ -20,7 +20,7 @@ public class TranslationViewTemplate extends AbstractPageViewTemplate {
 
 	public TranslationViewTemplate(IQuranText trans, IUserView userView) {
 		super(trans, userView);
-		engine.put("TEXT_LAYOUT", config.getViewProp("view.quranLayout"));
+		engine.put("TEXT_LAYOUT", config.getViewProp("view.transLayout"));
 		engine.put("TRANSLATION", "true");
 		engine.put("AYA_LIST", new Page(trans, quranPage).getAyaList());
 	}
diff --git a/src/net/sf/zekr/engine/translation/TranslationData.java b/src/net/sf/zekr/engine/translation/TranslationData.java
index 4e6ccbe..a73a765 100644
--- a/src/net/sf/zekr/engine/translation/TranslationData.java
+++ b/src/net/sf/zekr/engine/translation/TranslationData.java
@@ -17,9 +17,14 @@ import java.util.Locale;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
+import org.apache.commons.lang.StringUtils;
+
+import net.sf.zekr.common.config.ApplicationConfig;
+import net.sf.zekr.common.config.GlobalConfig;
 import net.sf.zekr.common.resource.AbstractQuranText;
 import net.sf.zekr.common.resource.QuranProperties;
 import net.sf.zekr.common.util.CryptoUtils;
+import net.sf.zekr.common.util.I18N;
 import net.sf.zekr.engine.common.Signable;
 import net.sf.zekr.engine.log.Logger;
 
@@ -271,4 +276,12 @@ public class TranslationData extends AbstractQuranText implements Signable {
 	public int getMode() {
 		throw new UnsupportedOperationException("Method not implemented.");
 	}
+
+	public String getName(String transNameMode, boolean rtl) {
+		String s = "english".equals(transNameMode) ? name : localizedName;
+		s = StringUtils.abbreviate((rtl ? I18N.RLE + "" : "") + "[" + locale.getLanguage() + "]" + " "
+				+ (rtl ? I18N.RLM + "" : "") + s, GlobalConfig.MAX_MENU_STRING_LENGTH);
+
+		return s;
+	}
 }
diff --git a/src/net/sf/zekr/engine/translation/ui/CustomTranslationListForm.java b/src/net/sf/zekr/engine/translation/ui/CustomTranslationListForm.java
index 4714b7d..f500d8c 100644
--- a/src/net/sf/zekr/engine/translation/ui/CustomTranslationListForm.java
+++ b/src/net/sf/zekr/engine/translation/ui/CustomTranslationListForm.java
@@ -15,6 +15,7 @@ import java.util.Iterator;
 import net.sf.zekr.common.ZekrMessageException;
 import net.sf.zekr.common.config.ApplicationConfig;
 import net.sf.zekr.common.config.GlobalConfig;
+import net.sf.zekr.common.util.I18N;
 import net.sf.zekr.engine.translation.TranslationData;
 import net.sf.zekr.ui.BaseForm;
 import net.sf.zekr.ui.MessageBoxUtils;
@@ -22,6 +23,7 @@ import net.sf.zekr.ui.helper.EventProtocol;
 import net.sf.zekr.ui.helper.EventUtils;
 import net.sf.zekr.ui.helper.FormUtils;
 
+import org.apache.commons.lang.StringUtils;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
@@ -58,6 +60,7 @@ public class CustomTranslationListForm extends BaseForm {
 	private java.util.List<String> sourceData = new ArrayList<String>();
 	private java.util.List<String> targetData = new ArrayList<String>();
 	private boolean okayed = false;
+	private boolean rtl;
 
 	public CustomTranslationListForm(Shell parent) {
 		try {
@@ -69,6 +72,8 @@ public class CustomTranslationListForm extends BaseForm {
 			shell.setText(meaning("TITLE"));
 			shell.setImage(new Image(display, resource.getString("icon.configTransList")));
 
+			rtl = lang.isRtl();
+
 			init();
 		} catch (RuntimeException re) {
 			FormUtils.disposeGracefully(shell);
@@ -127,9 +132,10 @@ public class CustomTranslationListForm extends BaseForm {
 		String[] sourceItems = new String[transCollection.size()];
 
 		int i = 0;
+		String transNameMode = config.getProps().getString("trans.name.mode", "english");
 		for (Iterator<TranslationData> iter = transCollection.iterator(); iter.hasNext(); i++) {
 			TranslationData td = iter.next();
-			sourceItems[i] = td.localizedName + " - " + td.locale;
+			sourceItems[i] = td.getName(transNameMode, rtl);
 			sourceData.add(td.id);
 		}
 		sourceList.setItems(sourceItems);
@@ -209,7 +215,7 @@ public class CustomTranslationListForm extends BaseForm {
 		String[] targetItems = new String[customList.size()];
 		for (i = 0; i < customList.size(); i++) {
 			TranslationData td = customList.get(i);
-			targetItems[i] = td.localizedName + " - " + td.locale;
+			targetItems[i] = td.getName(transNameMode, rtl);
 			targetData.add(td.id);
 		}
 		targetList.setItems(targetItems);
diff --git a/src/net/sf/zekr/ui/AboutForm.java b/src/net/sf/zekr/ui/AboutForm.java
index ccf0606..344e5ee 100644
--- a/src/net/sf/zekr/ui/AboutForm.java
+++ b/src/net/sf/zekr/ui/AboutForm.java
@@ -58,11 +58,11 @@ public class AboutForm extends BaseForm {
 		GridData gd;
 
 		shell = createShell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
-		shell.setImages(new Image[] { new Image(display, resource.getString("icon.form16")),
-				new Image(display, resource.getString("icon.form32")),
-				new Image(display, resource.getString("icon.form48")),
-				new Image(display, resource.getString("icon.form128")),
-				new Image(display, resource.getString("icon.form256")) });
+		shell.setImages(new Image[] { new Image(display, resource.getString("icon.about16")),
+				new Image(display, resource.getString("icon.about32")),
+				new Image(display, resource.getString("icon.about48")),
+				new Image(display, resource.getString("icon.about128")),
+				new Image(display, resource.getString("icon.about256")) });
 		shell.setText(meaning("TITLE"));
 		shell.setLayout(new FillLayout());
 
diff --git a/src/net/sf/zekr/ui/AudioPlayerUiController.java b/src/net/sf/zekr/ui/AudioPlayerUiController.java
index 6f5fc39..6642385 100644
--- a/src/net/sf/zekr/ui/AudioPlayerUiController.java
+++ b/src/net/sf/zekr/ui/AudioPlayerUiController.java
@@ -251,14 +251,15 @@ public class AudioPlayerUiController {
 	}
 
 	public void toggleAudioControllerForm(boolean open) {
+		config.getProps().setProperty("audio.controller.show", open);
+		// quranForm.qmf.toggleAudioPanelState(open);
 		if (open) {
 			audioControllerForm = new AudioPlayerForm(quranForm, quranForm.getShell());
-			config.getProps().setProperty("audio.controller.show", open);
 			audioControllerForm.getShell().addDisposeListener(new DisposeListener() {
 				public void widgetDisposed(DisposeEvent e) {
 					if (!quranForm.isDisposed()) {
-						Point location = audioControllerForm.getShell().getLocation();
-						config.getProps().setProperty("audio.controller.location", new Object[] { location.x, location.y });
+						// Point location = audioControllerForm.getShell().getLocation();
+						// config.getProps().setProperty("audio.controller.location", new Object[] { location.x, location.y });
 						quranForm.qmf.toggleAudioPanelState(false);
 					}
 				}
@@ -331,7 +332,7 @@ public class AudioPlayerUiController {
 	 * 
 	 * @param seekPercent should be a float number between 0.0 and 1.0
 	 */
-	@SuppressWarnings("unchecked")
+	@SuppressWarnings("rawtypes")
 	public void seek(float seekPercent) {
 		Map audioInfo = playerController.getCurrentAudioInfo();
 		// boolean posValueJump;
diff --git a/src/net/sf/zekr/ui/BrowserCallbackHandler.java b/src/net/sf/zekr/ui/BrowserCallbackHandler.java
index 7c64a98..66dbc3c 100644
--- a/src/net/sf/zekr/ui/BrowserCallbackHandler.java
+++ b/src/net/sf/zekr/ui/BrowserCallbackHandler.java
@@ -12,6 +12,8 @@ import java.io.IOException;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import javax.security.auth.login.AppConfigurationEntry;
+
 import net.sf.zekr.common.config.ApplicationConfig;
 import net.sf.zekr.common.config.IUserView;
 import net.sf.zekr.common.resource.FilteredQuranText;
@@ -81,8 +83,8 @@ public class BrowserCallbackHandler {
 			if (isQuranTarget) {
 				logger.info("Show translation: (" + sura + ", " + aya + ")");
 				TranslationData td = config.getTranslation().getDefault();
-				pe = new PopupBox(form.shell, form.meaning("TRANSLATION_SCOPE"), td.get(sura, aya), FormUtils
-						.toSwtDirection(td.direction));
+				pe = new PopupBox(form.shell, form.meaning("TRANSLATION_SCOPE"), td.get(sura, aya),
+						FormUtils.toSwtDirection(td.direction));
 			} else {
 				logger.info("Show quran: (" + sura + ", " + aya + ")");
 				try {
@@ -116,23 +118,34 @@ public class BrowserCallbackHandler {
 			}
 		} else if ("ZEKR::ZOOM".equals(method)) {
 			int zoom = (int) Double.parseDouble(args[1].toString());
+			String layout = config.getViewLayout();
+			boolean onlyTrans = false;
+			boolean onlyQuran = false;
+			if (ApplicationConfig.SEPARATE_LAYOUT.equals(layout)) {
+				onlyTrans = Boolean.parseBoolean(args[2].toString());
+				onlyQuran = !Boolean.parseBoolean(args[2].toString());
+			}
 
 			ThemeData themeData = config.getTheme().getCurrent();
 			Map<String, String> props = themeData.props;
 
-			for (Entry<String, String> entry : props.entrySet()) {
-				String key = entry.getKey();
-				if (key.startsWith("trans_") && key.endsWith("fontSize")) {
-					int transFontSize = MapUtils.getIntValue(props, key, 10);
-					transFontSize += zoom;
-					props.put(key, String.valueOf(transFontSize));
+			if (!onlyQuran) {
+				for (Entry<String, String> entry : props.entrySet()) {
+					String key = entry.getKey();
+					if (key.startsWith("trans_") && key.endsWith("fontSize")) {
+						int transFontSize = MapUtils.getIntValue(props, key, 10);
+						transFontSize += zoom;
+						props.put(key, String.valueOf(transFontSize));
+					}
 				}
 			}
 
-			String quranFontSizeKey = "quran_fontSize";
-			int quranFontSize = MapUtils.getIntValue(props, quranFontSizeKey, 10);
-			quranFontSize += zoom;
-			props.put(quranFontSizeKey, String.valueOf(quranFontSize));
+			if (!onlyTrans) {
+				String quranFontSizeKey = "quran_fontSize";
+				int quranFontSize = MapUtils.getIntValue(props, quranFontSizeKey, 10);
+				quranFontSize += zoom;
+				props.put(quranFontSizeKey, String.valueOf(quranFontSize));
+			}
 
 			EventUtils.sendEvent(EventProtocol.REFRESH_VIEW);
 		}
diff --git a/src/net/sf/zekr/ui/GotoForm.java b/src/net/sf/zekr/ui/GotoForm.java
index b591d20..d7aa0ae 100644
--- a/src/net/sf/zekr/ui/GotoForm.java
+++ b/src/net/sf/zekr/ui/GotoForm.java
@@ -467,8 +467,6 @@ public class GotoForm extends BaseForm implements FocusListener {
 						RevelationData revel = revelOrder;
 						if (revel != null) {
 							gotoSura(revel.getSuraOfOrder(order + 1));
-						} else {
-							gotoSura(order + 1);
 						}
 					}
 				}
diff --git a/src/net/sf/zekr/ui/QuranForm.java b/src/net/sf/zekr/ui/QuranForm.java
index 84d00d9..8addf0a 100644
--- a/src/net/sf/zekr/ui/QuranForm.java
+++ b/src/net/sf/zekr/ui/QuranForm.java
@@ -188,7 +188,7 @@ public class QuranForm extends BaseForm {
 	protected boolean pageChanged;
 
 	/** The current Quran URI loaded in the browser */
-	private String quranUri;
+	String quranUri;
 
 	/** The current Translation URI loaded in the browser */
 	private String transUri;
@@ -1433,7 +1433,7 @@ public class QuranForm extends BaseForm {
 		try {
 			if (pageChanged) {
 				quranBrowser.addProgressListener(qpl);
-				logger.info("Set Quran location to " + uvc.getLocation());
+				logger.info("Set Qur'an location to " + uvc.getLocation());
 				if (viewLayout == MIXED) {
 					quranUri = HtmlRepository.getMixedUri(uvc.getLocation());
 				} else if (viewLayout == MULTI_TRANS) {
@@ -1634,7 +1634,7 @@ public class QuranForm extends BaseForm {
 			pageNo = pageNo == 0 ? 1 : pageNo;
 			logger.info("Navigate to page #" + pageNo + " of advanced search result.");
 			Browser searchBrowser = viewLayout == TRANS_ONLY ? transBrowser : quranBrowser;
-			searchBrowser.setUrl(HtmlRepository.getAdvancedSearchQuranUri(asr, pageNo - 1));
+			searchBrowser.setUrl(quranUri = HtmlRepository.getAdvancedSearchQuranUri(asr, pageNo - 1));
 			pageChanged = true;
 		} catch (HtmlGenerationException e) {
 			logger.log(e);
@@ -1672,7 +1672,7 @@ public class QuranForm extends BaseForm {
 			pageNo = pageNo == 0 ? 1 : pageNo;
 			logger.info("Navigate to page #" + pageNo + " of search result.");
 			Browser searchBrowser = viewLayout == TRANS_ONLY ? transBrowser : quranBrowser;
-			searchBrowser.setUrl(HtmlRepository.getAdvancedSearchQuranUri(sr, pageNo - 1));
+			searchBrowser.setUrl(quranUri = HtmlRepository.getAdvancedSearchQuranUri(sr, pageNo - 1));
 			pageChanged = true;
 		} catch (HtmlGenerationException e) {
 			logger.log(e);
@@ -1871,9 +1871,9 @@ public class QuranForm extends BaseForm {
 	}
 
 	public void close() {
+		closeAudioSilently(); // the next line will save config file, so this call should precede saveConfigProps()
 		saveConfigProps();
 		config.updateFile();
-		closeAudioSilently();
 		if (clearOnExit) {
 			logger.info("Clear cache directory.");
 			config.getRuntime().clearCache();
diff --git a/src/net/sf/zekr/ui/QuranFormMenuFactory.java b/src/net/sf/zekr/ui/QuranFormMenuFactory.java
index 1acb83f..6be6ca6 100644
--- a/src/net/sf/zekr/ui/QuranFormMenuFactory.java
+++ b/src/net/sf/zekr/ui/QuranFormMenuFactory.java
@@ -155,7 +155,7 @@ public class QuranFormMenuFactory {
 
 		// save as...
 		saveAsItem = createMenuItem(SWT.PUSH, fileMenu, lang.getMeaning("SAVE_AS") + "...", "savePageAs",
-				"icon.menu.export");
+				"icon.menu.save");
 		// disabled exporting if HTTP server is enabled
 		saveAsItem.setEnabled(!config.isHttpServerEnabled());
 
@@ -180,7 +180,7 @@ public class QuranFormMenuFactory {
 		// separator
 		new MenuItem(viewMenu, SWT.SEPARATOR);
 		transName = createMenuItem(SWT.CASCADE | direction, viewMenu, lang.getMeaning("TRANSLATION"),
-				"icon.menu.translation");
+				"icon.menu.transList");
 		transMenu = new Menu(shell, SWT.DROP_DOWN | direction);
 		transName.setMenu(transMenu);
 		createOrUpdateTranslationMenu();
@@ -191,11 +191,10 @@ public class QuranFormMenuFactory {
 		viewModeMenu = new Menu(shell, SWT.DROP_DOWN | direction);
 		viewMode.setMenu(viewModeMenu);
 		MenuItem suraViewMode = createMenuItem(SWT.RADIO, viewModeMenu, lang.getMeaningById("PAGING_MODE", "SURA"), null);
-		MenuItem fixedAyaViewMode = createMenuItem(SWT.RADIO, viewModeMenu, lang.getMeaningById("PAGING_MODE",
-				"CONST_AYA")
-				+ "...", null);
-		MenuItem hizbViewMode = createMenuItem(SWT.RADIO, viewModeMenu, lang
-				.getMeaningById("PAGING_MODE", "HIZB_QUARTER"), null);
+		MenuItem fixedAyaViewMode = createMenuItem(SWT.RADIO, viewModeMenu,
+				lang.getMeaningById("PAGING_MODE", "CONST_AYA") + "...", null);
+		MenuItem hizbViewMode = createMenuItem(SWT.RADIO, viewModeMenu,
+				lang.getMeaningById("PAGING_MODE", "HIZB_QUARTER"), null);
 		MenuItem juzViewMode = createMenuItem(SWT.RADIO, viewModeMenu, lang.getMeaningById("PAGING_MODE", "JUZ"), null);
 		MenuItem customViewMode = createMenuItem(SWT.RADIO, viewModeMenu, lang.getMeaningById("PAGING_MODE", "CUSTOM")
 				+ "...", null);
@@ -382,11 +381,11 @@ public class QuranFormMenuFactory {
 			}
 		};
 
-		quranBlockLayoutItem = createMenuItem(SWT.RADIO, quranViewMenu, lang.getMeaning("BLOCK"), "icon.menu.text_block");
+		quranBlockLayoutItem = createMenuItem(SWT.RADIO, quranViewMenu, lang.getMeaning("BLOCK"), "icon.menu.textBlock");
 		quranBlockLayoutItem.addListener(SWT.Selection, blockListener);
 		quranBlockLayoutItem.setData("quran");
 
-		transBlockLayoutItem = createMenuItem(SWT.RADIO, transViewMenu, lang.getMeaning("BLOCK"), "icon.menu.text_block");
+		transBlockLayoutItem = createMenuItem(SWT.RADIO, transViewMenu, lang.getMeaning("BLOCK"), "icon.menu.textBlock");
 		transBlockLayoutItem.addListener(SWT.Selection, blockListener);
 		transBlockLayoutItem.setData("trans");
 
@@ -414,12 +413,12 @@ public class QuranFormMenuFactory {
 		};
 
 		quranLineLayoutItem = createMenuItem(SWT.RADIO, quranViewMenu, lang.getMeaning("LINE_BY_LINE"),
-				"icon.menu.text_linebyline");
+				"icon.menu.textLineByLine");
 		quranLineLayoutItem.addListener(SWT.Selection, inlineListener);
 		quranLineLayoutItem.setData("quran");
 
 		transLineLayoutItem = createMenuItem(SWT.RADIO, transViewMenu, lang.getMeaning("LINE_BY_LINE"),
-				"icon.menu.text_linebyline");
+				"icon.menu.textLineByLine");
 		transLineLayoutItem.addListener(SWT.Selection, inlineListener);
 		transLineLayoutItem.setData("trans");
 
@@ -544,12 +543,12 @@ public class QuranFormMenuFactory {
 		tools.setMenu(toolsMenu);
 
 		Menu addMenu = new Menu(shell, SWT.DROP_DOWN | direction);
-		MenuItem addItem = createMenuItem(SWT.CASCADE, toolsMenu, lang.getMeaning("ADD"), "icon.menu.add");
+		MenuItem addItem = createMenuItem(SWT.CASCADE, toolsMenu, lang.getMeaning("ADD"), "icon.menu.addResource");
 		addItem.setMenu(addMenu);
 
 		// cascading menu for add...
 		MenuItem transAddItem = createMenuItem(SWT.PUSH, addMenu, lang.getMeaning("TRANSLATION") + "...",
-				"icon.menu.translation");
+				"icon.menu.addTrans");
 		transAddItem.addListener(SWT.Selection, new Listener() {
 			public void handleEvent(Event e) {
 				importTrans();
@@ -572,7 +571,7 @@ public class QuranFormMenuFactory {
 		});
 
 		MenuItem recitationPackAddItem = createMenuItem(SWT.PUSH, addMenu, lang.getMeaning("RECITATION")
-				+ " (*.recit.zip) ...", "icon.menu.addRecitationPack");
+				+ " (*.recit.zip) ...", "icon.menu.addOfflineRecitation");
 		recitationPackAddItem.addListener(SWT.Selection, new Listener() {
 			public void handleEvent(Event e) {
 				importRecitationPack();
@@ -677,14 +676,14 @@ public class QuranFormMenuFactory {
 
 	private boolean setFixedAyaMode() {
 		int aypp = config.getProps().getInt("view.pagingMode.ayaPerPage", 20);
-		String ayaStr = MessageBoxUtils.textBoxPrompt(lang.getMeaning("QUESTION"), lang.getMeaningById("PAGING_MODE",
-				"AYA_PER_SURA"), String.valueOf(aypp));
+		String ayaStr = MessageBoxUtils.textBoxPrompt(lang.getMeaning("QUESTION"),
+				lang.getMeaningById("PAGING_MODE", "AYA_PER_SURA"), String.valueOf(aypp));
 		if (!StringUtils.isBlank(ayaStr)) {
 			try {
 				int aya = Integer.parseInt(ayaStr);
 				if (aya <= 0 || aya > QuranPropertiesUtils.QURAN_AYA_COUNT) {
-					MessageBoxUtils.showError(lang.getDynamicMeaning("NUMBER_LIMIT", new String[] { "1",
-							String.valueOf(QuranPropertiesUtils.QURAN_AYA_COUNT) }));
+					MessageBoxUtils.showError(lang.getDynamicMeaning("NUMBER_LIMIT",
+							new String[] { "1", String.valueOf(QuranPropertiesUtils.QURAN_AYA_COUNT) }));
 					logger.error("Aya-per-page out of bound: " + aya);
 					return false;
 				}
@@ -718,12 +717,11 @@ public class QuranFormMenuFactory {
 		}
 
 		List<TranslationData> trans = config.getTranslation().getAllTranslation();
+		String transNameMode = props.getString("trans.name.mode", "english");
 		for (TranslationData td : trans) {
 			String img = getTranslationValidityIcon(td);
-			final MenuItem transItem = createMenuItem(SWT.RADIO, transMenu, StringUtils.abbreviate((rtl ? I18N.RLE + ""
-					: "")
-					+ "[" + td.locale + "]" + " " + (rtl ? I18N.RLM + "" : "") + td.localizedName,
-					GlobalConfig.MAX_MENU_STRING_LENGTH)
+
+			final MenuItem transItem = createMenuItem(SWT.RADIO, transMenu, td.getName(transNameMode, rtl)
 					+ (rtl ? I18N.LRM + "" : ""), img);
 
 			transItem.setData(td.id);
@@ -887,8 +885,8 @@ public class QuranFormMenuFactory {
 
 			int result = MessageBoxUtils.radioQuestionPrompt(
 					new String[] { lang.getMeaningById("IMPORT_QUESTION", "ME_ONLY"),
-							lang.getMeaningById("IMPORT_QUESTION", "ALL_USERS") }, lang.getMeaningById("IMPORT_QUESTION",
-							"IMPORT_FOR"), lang.getMeaning("QUESTION"));
+							lang.getMeaningById("IMPORT_QUESTION", "ALL_USERS") },
+					lang.getMeaningById("IMPORT_QUESTION", "IMPORT_FOR"), lang.getMeaning("QUESTION"));
 
 			if (result == -1) {
 				return;
@@ -957,8 +955,8 @@ public class QuranFormMenuFactory {
 
 			int result = MessageBoxUtils.radioQuestionPrompt(
 					new String[] { lang.getMeaningById("IMPORT_QUESTION", "ME_ONLY"),
-							lang.getMeaningById("IMPORT_QUESTION", "ALL_USERS") }, lang.getMeaningById("IMPORT_QUESTION",
-							"IMPORT_FOR"), lang.getMeaning("QUESTION"));
+							lang.getMeaningById("IMPORT_QUESTION", "ALL_USERS") },
+					lang.getMeaningById("IMPORT_QUESTION", "IMPORT_FOR"), lang.getMeaning("QUESTION"));
 
 			if (result == -1) {
 				return;
@@ -1142,8 +1140,8 @@ public class QuranFormMenuFactory {
 
 			int result = MessageBoxUtils.radioQuestionPrompt(
 					new String[] { lang.getMeaningById("IMPORT_QUESTION", "ME_ONLY"),
-							lang.getMeaningById("IMPORT_QUESTION", "ALL_USERS") }, lang.getMeaningById("IMPORT_QUESTION",
-							"IMPORT_FOR"), lang.getMeaning("QUESTION"));
+							lang.getMeaningById("IMPORT_QUESTION", "ALL_USERS") },
+					lang.getMeaningById("IMPORT_QUESTION", "IMPORT_FOR"), lang.getMeaning("QUESTION"));
 
 			if (result == -1) {
 				return;
diff --git a/src/net/sf/zekr/ui/RootTabForm.java b/src/net/sf/zekr/ui/RootTabForm.java
index a3aeb81..c60746f 100644
--- a/src/net/sf/zekr/ui/RootTabForm.java
+++ b/src/net/sf/zekr/ui/RootTabForm.java
@@ -305,7 +305,7 @@ public class RootTabForm {
 			logger.info("Navigate to page #" + pageNo + " of root search result.");
 			Browser searchBrowser = quranForm.viewLayout == QuranForm.TRANS_ONLY ? quranForm.transBrowser
 					: quranForm.quranBrowser;
-			searchBrowser.setUrl(HtmlRepository.getAdvancedSearchQuranUri(srm, pageNo - 1));
+			searchBrowser.setUrl(quranForm.quranUri = HtmlRepository.getAdvancedSearchQuranUri(srm, pageNo - 1));
 			quranForm.pageChanged = true;
 		} catch (HtmlGenerationException e) {
 			logger.log(e);
diff --git a/src/net/sf/zekr/ui/splash/AdvancedSplashScreen.java b/src/net/sf/zekr/ui/splash/AdvancedSplashScreen.java
index f869217..7549b0e 100644
--- a/src/net/sf/zekr/ui/splash/AdvancedSplashScreen.java
+++ b/src/net/sf/zekr/ui/splash/AdvancedSplashScreen.java
@@ -50,7 +50,7 @@ public class AdvancedSplashScreen extends AbstractSplachScreen {
 				new Image(display, resource.getString("icon.form48")),
 				new Image(display, resource.getString("icon.form128")),
 				new Image(display, resource.getString("icon.form256")) });
-
+		
 		shell.addListener(EventProtocol.CUSTOM_ZEKR_EVENT, new Listener() {
 			public void handleEvent(Event e) {
 				if (e.data != null) {
diff --git a/zekr.sh b/zekr.sh
index d271c60..c2cab1d 100755
--- a/zekr.sh
+++ b/zekr.sh
@@ -5,7 +5,7 @@
 # variable MOZILLA_FIVE_HOME to your Mozilla home folder.
 # See http://zekr.org/faq.html#linux for more details.
 
-# uncomment and change the following line to a proper Mozilla-GTK2 installation directory.
+# change the following line to a proper Mozilla-GTK2 installation directory.
 export MOZILLA_FIVE_HOME=/usr/lib/firefox
 
 if [ -z "$MOZILLA_FIVE_HOME" ]; then

-- 
Packaging for Zekr



More information about the Debian-islamic-commits mailing list