From 32568c90097c069fde41c2968555293750d8b68e Mon Sep 17 00:00:00 2001
From: Ozzieisaacs <ozzie.fernandez.isaacs@googlemail.com>
Date: Mon, 14 Jan 2019 20:27:53 +0100
Subject: [PATCH] Update testing Update custom columns unicode enums

---
 cps/db.py                                     |    3 +
 cps/helper.py                                 |    8 +-
 .../css/libs/bootstrap-datepicker3.min.css    |    4 +-
 cps/static/js/caliBlur.js                     |   10 +-
 .../bootstrap-datepicker.min.js               |    6 +-
 .../locales/bootstrap-datepicker.ja.min.js    |    1 +
 cps/static/js/unrar.js                        |   80 +-
 cps/static/js/unzip.js                        |   61 +-
 cps/templates/admin.html                      |    2 +-
 cps/templates/detail.html                     |    2 +-
 cps/templates/readpdf.html                    |    8 +-
 cps/templates/search_form.html                |    5 +-
 cps/ub.py                                     |    6 +-
 cps/web.py                                    |    6 +-
 cps/worker.py                                 |   19 +-
 test/Calibre-Web TestSummary.html             | 3938 ++++++++++++++++-
 16 files changed, 3970 insertions(+), 189 deletions(-)
 create mode 100644 cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js

diff --git a/cps/db.py b/cps/db.py
index 54e42d25..dfa01f54 100755
--- a/cps/db.py
+++ b/cps/db.py
@@ -9,6 +9,7 @@ import re
 import ast
 from ub import config
 import ub
+import sys
 
 session = None
 cc_exceptions = ['datetime', 'comments', 'float', 'composite', 'series']
@@ -301,6 +302,8 @@ class Custom_Columns(Base):
 
     def get_display_dict(self):
         display_dict = ast.literal_eval(self.display)
+        if sys.version_info < (3, 0):
+            display_dict['enum_values'] = [x.decode('unicode_escape') for x in display_dict['enum_values']]
         return display_dict
 
 
diff --git a/cps/helper.py b/cps/helper.py
index 8a4fd5dd..fc18e0d8 100644
--- a/cps/helper.py
+++ b/cps/helper.py
@@ -306,12 +306,12 @@ def update_dir_structure_file(book_id, calibrepath, first_author):
     # Rename all files from old names to new names
     if authordir != new_authordir or titledir != new_titledir:
         try:
-            for format in localbook.data:
+            for file_format in localbook.data:
                 path_name = os.path.join(calibrepath, new_authordir, os.path.basename(path))
                 new_name = get_valid_filename(localbook.title) + ' - ' + get_valid_filename(new_authordir)
-                os.renames(os.path.join(path_name, format.name + '.' + format.format.lower()),
-                           os.path.join(path_name,new_name + '.' + format.format.lower()))
-                format.name = new_name
+                os.renames(os.path.join(path_name, file_format.name + '.' + file_format.format.lower()),
+                           os.path.join(path_name,new_name + '.' + file_format.format.lower()))
+                file_format.name = new_name
         except OSError as ex:
             web.app.logger.error("Rename file in path " + path + " to " + new_name + ": " + str(ex))
             web.app.logger.debug(ex, exc_info=True)
diff --git a/cps/static/css/libs/bootstrap-datepicker3.min.css b/cps/static/css/libs/bootstrap-datepicker3.min.css
index d0ee6e71..96631e0d 100644
--- a/cps/static/css/libs/bootstrap-datepicker3.min.css
+++ b/cps/static/css/libs/bootstrap-datepicker3.min.css
@@ -1,7 +1,7 @@
 /*!
- * Datepicker for Bootstrap v1.7.1 (https://github.com/uxsolutions/bootstrap-datepicker)
+ * Datepicker for Bootstrap v1.8.0 (https://github.com/uxsolutions/bootstrap-datepicker)
  *
  * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
  */
 
-.datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker-rtl{direction:rtl}.datepicker-rtl.dropdown-menu{left:auto}.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0;padding:4px}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.15);border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid rgba(0,0,0,.15)}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.new,.datepicker table tr td.old{color:#777}.datepicker table tr td.day:hover,.datepicker table tr td.focused{background:#eee;cursor:pointer}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#777;cursor:default}.datepicker table tr td.highlighted{color:#000;background-color:#d9edf7;border-color:#85c5e5;border-radius:0}.datepicker table tr td.highlighted.focus,.datepicker table tr td.highlighted:focus{color:#000;background-color:#afd9ee;border-color:#298fc2}.datepicker table tr td.highlighted:hover{color:#000;background-color:#afd9ee;border-color:#52addb}.datepicker table tr td.highlighted.active,.datepicker table tr td.highlighted:active{color:#000;background-color:#afd9ee;border-color:#52addb}.datepicker table tr td.highlighted.active.focus,.datepicker table tr td.highlighted.active:focus,.datepicker table tr td.highlighted.active:hover,.datepicker table tr td.highlighted:active.focus,.datepicker table tr td.highlighted:active:focus,.datepicker table tr td.highlighted:active:hover{color:#000;background-color:#91cbe8;border-color:#298fc2}.datepicker table tr td.highlighted.disabled.focus,.datepicker table tr td.highlighted.disabled:focus,.datepicker table tr td.highlighted.disabled:hover,.datepicker table tr td.highlighted[disabled].focus,.datepicker table tr td.highlighted[disabled]:focus,.datepicker table tr td.highlighted[disabled]:hover,fieldset[disabled] .datepicker table tr td.highlighted.focus,fieldset[disabled] .datepicker table tr td.highlighted:focus,fieldset[disabled] .datepicker table tr td.highlighted:hover{background-color:#d9edf7;border-color:#85c5e5}.datepicker table tr td.highlighted.focused{background:#afd9ee}.datepicker table tr td.highlighted.disabled,.datepicker table tr td.highlighted.disabled:active{background:#d9edf7;color:#777}.datepicker table tr td.today{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.focus,.datepicker table tr td.today:focus{color:#000;background-color:#ffc966;border-color:#b37400}.datepicker table tr td.today:hover{color:#000;background-color:#ffc966;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today:active{color:#000;background-color:#ffc966;border-color:#f59e00}.datepicker table tr td.today.active.focus,.datepicker table tr td.today.active:focus,.datepicker table tr td.today.active:hover,.datepicker table tr td.today:active.focus,.datepicker table tr td.today:active:focus,.datepicker table tr td.today:active:hover{color:#000;background-color:#ffbc42;border-color:#b37400}.datepicker table tr td.today.disabled.focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today[disabled].focus,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today.focus,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.focused{background:#ffc966}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:active{background:#ffdb99;color:#777}.datepicker table tr td.range{color:#000;background-color:#eee;border-color:#bbb;border-radius:0}.datepicker table tr td.range.focus,.datepicker table tr td.range:focus{color:#000;background-color:#d5d5d5;border-color:#7c7c7c}.datepicker table tr td.range:hover{color:#000;background-color:#d5d5d5;border-color:#9d9d9d}.datepicker table tr td.range.active,.datepicker table tr td.range:active{color:#000;background-color:#d5d5d5;border-color:#9d9d9d}.datepicker table tr td.range.active.focus,.datepicker table tr td.range.active:focus,.datepicker table tr td.range.active:hover,.datepicker table tr td.range:active.focus,.datepicker table tr td.range:active:focus,.datepicker table tr td.range:active:hover{color:#000;background-color:#c3c3c3;border-color:#7c7c7c}.datepicker table tr td.range.disabled.focus,.datepicker table tr td.range.disabled:focus,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range[disabled].focus,.datepicker table tr td.range[disabled]:focus,.datepicker table tr td.range[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.focus,fieldset[disabled] .datepicker table tr td.range:focus,fieldset[disabled] .datepicker table tr td.range:hover{background-color:#eee;border-color:#bbb}.datepicker table tr td.range.focused{background:#d5d5d5}.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:active{background:#eee;color:#777}.datepicker table tr td.range.highlighted{color:#000;background-color:#e4eef3;border-color:#9dc1d3}.datepicker table tr td.range.highlighted.focus,.datepicker table tr td.range.highlighted:focus{color:#000;background-color:#c1d7e3;border-color:#4b88a6}.datepicker table tr td.range.highlighted:hover{color:#000;background-color:#c1d7e3;border-color:#73a6c0}.datepicker table tr td.range.highlighted.active,.datepicker table tr td.range.highlighted:active{color:#000;background-color:#c1d7e3;border-color:#73a6c0}.datepicker table tr td.range.highlighted.active.focus,.datepicker table tr td.range.highlighted.active:focus,.datepicker table tr td.range.highlighted.active:hover,.datepicker table tr td.range.highlighted:active.focus,.datepicker table tr td.range.highlighted:active:focus,.datepicker table tr td.range.highlighted:active:hover{color:#000;background-color:#a8c8d8;border-color:#4b88a6}.datepicker table tr td.range.highlighted.disabled.focus,.datepicker table tr td.range.highlighted.disabled:focus,.datepicker table tr td.range.highlighted.disabled:hover,.datepicker table tr td.range.highlighted[disabled].focus,.datepicker table tr td.range.highlighted[disabled]:focus,.datepicker table tr td.range.highlighted[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.highlighted.focus,fieldset[disabled] .datepicker table tr td.range.highlighted:focus,fieldset[disabled] .datepicker table tr td.range.highlighted:hover{background-color:#e4eef3;border-color:#9dc1d3}.datepicker table tr td.range.highlighted.focused{background:#c1d7e3}.datepicker table tr td.range.highlighted.disabled,.datepicker table tr td.range.highlighted.disabled:active{background:#e4eef3;color:#777}.datepicker table tr td.range.today{color:#000;background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today.focus,.datepicker table tr td.range.today:focus{color:#000;background-color:#f4b747;border-color:#815608}.datepicker table tr td.range.today:hover{color:#000;background-color:#f4b747;border-color:#bf800c}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:active{color:#000;background-color:#f4b747;border-color:#bf800c}.datepicker table tr td.range.today.active.focus,.datepicker table tr td.range.today.active:focus,.datepicker table tr td.range.today.active:hover,.datepicker table tr td.range.today:active.focus,.datepicker table tr td.range.today:active:focus,.datepicker table tr td.range.today:active:hover{color:#000;background-color:#f2aa25;border-color:#815608}.datepicker table tr td.range.today.disabled.focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today[disabled].focus,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today.focus,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:active{background:#f7ca77;color:#777}.datepicker table tr td.selected,.datepicker table tr td.selected.highlighted{color:#fff;background-color:#777;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.focus,.datepicker table tr td.selected.highlighted.focus,.datepicker table tr td.selected.highlighted:focus,.datepicker table tr td.selected:focus{color:#fff;background-color:#5e5e5e;border-color:#161616}.datepicker table tr td.selected.highlighted:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#5e5e5e;border-color:#373737}.datepicker table tr td.selected.active,.datepicker table tr td.selected.highlighted.active,.datepicker table tr td.selected.highlighted:active,.datepicker table tr td.selected:active{color:#fff;background-color:#5e5e5e;border-color:#373737}.datepicker table tr td.selected.active.focus,.datepicker table tr td.selected.active:focus,.datepicker table tr td.selected.active:hover,.datepicker table tr td.selected.highlighted.active.focus,.datepicker table tr td.selected.highlighted.active:focus,.datepicker table tr td.selected.highlighted.active:hover,.datepicker table tr td.selected.highlighted:active.focus,.datepicker table tr td.selected.highlighted:active:focus,.datepicker table tr td.selected.highlighted:active:hover,.datepicker table tr td.selected:active.focus,.datepicker table tr td.selected:active:focus,.datepicker table tr td.selected:active:hover{color:#fff;background-color:#4c4c4c;border-color:#161616}.datepicker table tr td.selected.disabled.focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.highlighted.disabled.focus,.datepicker table tr td.selected.highlighted.disabled:focus,.datepicker table tr td.selected.highlighted.disabled:hover,.datepicker table tr td.selected.highlighted[disabled].focus,.datepicker table tr td.selected.highlighted[disabled]:focus,.datepicker table tr td.selected.highlighted[disabled]:hover,.datepicker table tr td.selected[disabled].focus,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected.focus,fieldset[disabled] .datepicker table tr td.selected.highlighted.focus,fieldset[disabled] .datepicker table tr td.selected.highlighted:focus,fieldset[disabled] .datepicker table tr td.selected.highlighted:hover,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover{background-color:#777;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.highlighted{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.focus,.datepicker table tr td.active.highlighted.focus,.datepicker table tr td.active.highlighted:focus,.datepicker table tr td.active:focus{color:#fff;background-color:#286090;border-color:#122b40}.datepicker table tr td.active.highlighted:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td.active.active,.datepicker table tr td.active.highlighted.active,.datepicker table tr td.active.highlighted:active,.datepicker table tr td.active:active{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td.active.active.focus,.datepicker table tr td.active.active:focus,.datepicker table tr td.active.active:hover,.datepicker table tr td.active.highlighted.active.focus,.datepicker table tr td.active.highlighted.active:focus,.datepicker table tr td.active.highlighted.active:hover,.datepicker table tr td.active.highlighted:active.focus,.datepicker table tr td.active.highlighted:active:focus,.datepicker table tr td.active.highlighted:active:hover,.datepicker table tr td.active:active.focus,.datepicker table tr td.active:active:focus,.datepicker table tr td.active:active:hover{color:#fff;background-color:#204d74;border-color:#122b40}.datepicker table tr td.active.disabled.focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.highlighted.disabled.focus,.datepicker table tr td.active.highlighted.disabled:focus,.datepicker table tr td.active.highlighted.disabled:hover,.datepicker table tr td.active.highlighted[disabled].focus,.datepicker table tr td.active.highlighted[disabled]:focus,.datepicker table tr td.active.highlighted[disabled]:hover,.datepicker table tr td.active[disabled].focus,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active.focus,fieldset[disabled] .datepicker table tr td.active.highlighted.focus,fieldset[disabled] .datepicker table tr td.active.highlighted:focus,fieldset[disabled] .datepicker table tr td.active.highlighted:hover,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover{background-color:#337ab7;border-color:#2e6da4}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span.focused,.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#777;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover.focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.focus,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover.focus,.datepicker table tr td span.active:hover:focus{color:#fff;background-color:#286090;border-color:#122b40}.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td span.active.active.focus,.datepicker table tr td span.active.active:focus,.datepicker table tr td span.active.active:hover,.datepicker table tr td span.active.disabled.active.focus,.datepicker table tr td span.active.disabled.active:focus,.datepicker table tr td span.active.disabled.active:hover,.datepicker table tr td span.active.disabled:active.focus,.datepicker table tr td span.active.disabled:active:focus,.datepicker table tr td span.active.disabled:active:hover,.datepicker table tr td span.active.disabled:hover.active.focus,.datepicker table tr td span.active.disabled:hover.active:focus,.datepicker table tr td span.active.disabled:hover.active:hover,.datepicker table tr td span.active.disabled:hover:active.focus,.datepicker table tr td span.active.disabled:hover:active:focus,.datepicker table tr td span.active.disabled:hover:active:hover,.datepicker table tr td span.active:active.focus,.datepicker table tr td span.active:active:focus,.datepicker table tr td span.active:active:hover,.datepicker table tr td span.active:hover.active.focus,.datepicker table tr td span.active:hover.active:focus,.datepicker table tr td span.active:hover.active:hover,.datepicker table tr td span.active:hover:active.focus,.datepicker table tr td span.active:hover:active:focus,.datepicker table tr td span.active:hover:active:hover{color:#fff;background-color:#204d74;border-color:#122b40}.datepicker table tr td span.active.disabled.disabled.focus,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled.focus,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled].focus,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled].focus,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled.focus,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled].focus,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled].focus,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active.disabled.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active.focus,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.focus,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#337ab7;border-color:#2e6da4}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#777}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .next,.datepicker .prev,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .next:hover,.datepicker .prev:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .next.disabled,.datepicker .prev.disabled{visibility:hidden}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;line-height:1.42857143;text-shadow:0 1px 0 #fff;border-width:1px 0;margin-left:-5px;margin-right:-5px}
\ No newline at end of file
+.datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker-rtl{direction:rtl}.datepicker-rtl.dropdown-menu{left:auto}.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0;padding:4px}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.15);border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid rgba(0,0,0,.15)}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.new,.datepicker table tr td.old{color:#777}.datepicker table tr td.day:hover,.datepicker table tr td.focused{background:#eee;cursor:pointer}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#777;cursor:default}.datepicker table tr td.highlighted{color:#000;background-color:#d9edf7;border-color:#85c5e5;border-radius:0}.datepicker table tr td.highlighted.focus,.datepicker table tr td.highlighted:focus{color:#000;background-color:#afd9ee;border-color:#298fc2}.datepicker table tr td.highlighted:hover{color:#000;background-color:#afd9ee;border-color:#52addb}.datepicker table tr td.highlighted.active,.datepicker table tr td.highlighted:active{color:#000;background-color:#afd9ee;border-color:#52addb}.datepicker table tr td.highlighted.active.focus,.datepicker table tr td.highlighted.active:focus,.datepicker table tr td.highlighted.active:hover,.datepicker table tr td.highlighted:active.focus,.datepicker table tr td.highlighted:active:focus,.datepicker table tr td.highlighted:active:hover{color:#000;background-color:#91cbe8;border-color:#298fc2}.datepicker table tr td.highlighted.disabled.focus,.datepicker table tr td.highlighted.disabled:focus,.datepicker table tr td.highlighted.disabled:hover,.datepicker table tr td.highlighted[disabled].focus,.datepicker table tr td.highlighted[disabled]:focus,.datepicker table tr td.highlighted[disabled]:hover,fieldset[disabled] .datepicker table tr td.highlighted.focus,fieldset[disabled] .datepicker table tr td.highlighted:focus,fieldset[disabled] .datepicker table tr td.highlighted:hover{background-color:#d9edf7;border-color:#85c5e5}.datepicker table tr td.highlighted.focused{background:#afd9ee}.datepicker table tr td.highlighted.disabled,.datepicker table tr td.highlighted.disabled:active{background:#d9edf7;color:#777}.datepicker table tr td.today{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.focus,.datepicker table tr td.today:focus{color:#000;background-color:#ffc966;border-color:#b37400}.datepicker table tr td.today:hover{color:#000;background-color:#ffc966;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today:active{color:#000;background-color:#ffc966;border-color:#f59e00}.datepicker table tr td.today.active.focus,.datepicker table tr td.today.active:focus,.datepicker table tr td.today.active:hover,.datepicker table tr td.today:active.focus,.datepicker table tr td.today:active:focus,.datepicker table tr td.today:active:hover{color:#000;background-color:#ffbc42;border-color:#b37400}.datepicker table tr td.today.disabled.focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today[disabled].focus,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today.focus,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.focused{background:#ffc966}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:active{background:#ffdb99;color:#777}.datepicker table tr td.range{color:#000;background-color:#eee;border-color:#bbb;border-radius:0}.datepicker table tr td.range.focus,.datepicker table tr td.range:focus{color:#000;background-color:#d5d5d5;border-color:#7c7c7c}.datepicker table tr td.range:hover{color:#000;background-color:#d5d5d5;border-color:#9d9d9d}.datepicker table tr td.range.active,.datepicker table tr td.range:active{color:#000;background-color:#d5d5d5;border-color:#9d9d9d}.datepicker table tr td.range.active.focus,.datepicker table tr td.range.active:focus,.datepicker table tr td.range.active:hover,.datepicker table tr td.range:active.focus,.datepicker table tr td.range:active:focus,.datepicker table tr td.range:active:hover{color:#000;background-color:#c3c3c3;border-color:#7c7c7c}.datepicker table tr td.range.disabled.focus,.datepicker table tr td.range.disabled:focus,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range[disabled].focus,.datepicker table tr td.range[disabled]:focus,.datepicker table tr td.range[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.focus,fieldset[disabled] .datepicker table tr td.range:focus,fieldset[disabled] .datepicker table tr td.range:hover{background-color:#eee;border-color:#bbb}.datepicker table tr td.range.focused{background:#d5d5d5}.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:active{background:#eee;color:#777}.datepicker table tr td.range.highlighted{color:#000;background-color:#e4eef3;border-color:#9dc1d3}.datepicker table tr td.range.highlighted.focus,.datepicker table tr td.range.highlighted:focus{color:#000;background-color:#c1d7e3;border-color:#4b88a6}.datepicker table tr td.range.highlighted:hover{color:#000;background-color:#c1d7e3;border-color:#73a6c0}.datepicker table tr td.range.highlighted.active,.datepicker table tr td.range.highlighted:active{color:#000;background-color:#c1d7e3;border-color:#73a6c0}.datepicker table tr td.range.highlighted.active.focus,.datepicker table tr td.range.highlighted.active:focus,.datepicker table tr td.range.highlighted.active:hover,.datepicker table tr td.range.highlighted:active.focus,.datepicker table tr td.range.highlighted:active:focus,.datepicker table tr td.range.highlighted:active:hover{color:#000;background-color:#a8c8d8;border-color:#4b88a6}.datepicker table tr td.range.highlighted.disabled.focus,.datepicker table tr td.range.highlighted.disabled:focus,.datepicker table tr td.range.highlighted.disabled:hover,.datepicker table tr td.range.highlighted[disabled].focus,.datepicker table tr td.range.highlighted[disabled]:focus,.datepicker table tr td.range.highlighted[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.highlighted.focus,fieldset[disabled] .datepicker table tr td.range.highlighted:focus,fieldset[disabled] .datepicker table tr td.range.highlighted:hover{background-color:#e4eef3;border-color:#9dc1d3}.datepicker table tr td.range.highlighted.focused{background:#c1d7e3}.datepicker table tr td.range.highlighted.disabled,.datepicker table tr td.range.highlighted.disabled:active{background:#e4eef3;color:#777}.datepicker table tr td.range.today{color:#000;background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today.focus,.datepicker table tr td.range.today:focus{color:#000;background-color:#f4b747;border-color:#815608}.datepicker table tr td.range.today:hover{color:#000;background-color:#f4b747;border-color:#bf800c}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:active{color:#000;background-color:#f4b747;border-color:#bf800c}.datepicker table tr td.range.today.active.focus,.datepicker table tr td.range.today.active:focus,.datepicker table tr td.range.today.active:hover,.datepicker table tr td.range.today:active.focus,.datepicker table tr td.range.today:active:focus,.datepicker table tr td.range.today:active:hover{color:#000;background-color:#f2aa25;border-color:#815608}.datepicker table tr td.range.today.disabled.focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today[disabled].focus,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today.focus,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:active{background:#f7ca77;color:#777}.datepicker table tr td.selected,.datepicker table tr td.selected.highlighted{color:#fff;background-color:#777;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.focus,.datepicker table tr td.selected.highlighted.focus,.datepicker table tr td.selected.highlighted:focus,.datepicker table tr td.selected:focus{color:#fff;background-color:#5e5e5e;border-color:#161616}.datepicker table tr td.selected.highlighted:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#5e5e5e;border-color:#373737}.datepicker table tr td.selected.active,.datepicker table tr td.selected.highlighted.active,.datepicker table tr td.selected.highlighted:active,.datepicker table tr td.selected:active{color:#fff;background-color:#5e5e5e;border-color:#373737}.datepicker table tr td.selected.active.focus,.datepicker table tr td.selected.active:focus,.datepicker table tr td.selected.active:hover,.datepicker table tr td.selected.highlighted.active.focus,.datepicker table tr td.selected.highlighted.active:focus,.datepicker table tr td.selected.highlighted.active:hover,.datepicker table tr td.selected.highlighted:active.focus,.datepicker table tr td.selected.highlighted:active:focus,.datepicker table tr td.selected.highlighted:active:hover,.datepicker table tr td.selected:active.focus,.datepicker table tr td.selected:active:focus,.datepicker table tr td.selected:active:hover{color:#fff;background-color:#4c4c4c;border-color:#161616}.datepicker table tr td.selected.disabled.focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.highlighted.disabled.focus,.datepicker table tr td.selected.highlighted.disabled:focus,.datepicker table tr td.selected.highlighted.disabled:hover,.datepicker table tr td.selected.highlighted[disabled].focus,.datepicker table tr td.selected.highlighted[disabled]:focus,.datepicker table tr td.selected.highlighted[disabled]:hover,.datepicker table tr td.selected[disabled].focus,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected.focus,fieldset[disabled] .datepicker table tr td.selected.highlighted.focus,fieldset[disabled] .datepicker table tr td.selected.highlighted:focus,fieldset[disabled] .datepicker table tr td.selected.highlighted:hover,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover{background-color:#777;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.highlighted{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.focus,.datepicker table tr td.active.highlighted.focus,.datepicker table tr td.active.highlighted:focus,.datepicker table tr td.active:focus{color:#fff;background-color:#286090;border-color:#122b40}.datepicker table tr td.active.highlighted:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td.active.active,.datepicker table tr td.active.highlighted.active,.datepicker table tr td.active.highlighted:active,.datepicker table tr td.active:active{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td.active.active.focus,.datepicker table tr td.active.active:focus,.datepicker table tr td.active.active:hover,.datepicker table tr td.active.highlighted.active.focus,.datepicker table tr td.active.highlighted.active:focus,.datepicker table tr td.active.highlighted.active:hover,.datepicker table tr td.active.highlighted:active.focus,.datepicker table tr td.active.highlighted:active:focus,.datepicker table tr td.active.highlighted:active:hover,.datepicker table tr td.active:active.focus,.datepicker table tr td.active:active:focus,.datepicker table tr td.active:active:hover{color:#fff;background-color:#204d74;border-color:#122b40}.datepicker table tr td.active.disabled.focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.highlighted.disabled.focus,.datepicker table tr td.active.highlighted.disabled:focus,.datepicker table tr td.active.highlighted.disabled:hover,.datepicker table tr td.active.highlighted[disabled].focus,.datepicker table tr td.active.highlighted[disabled]:focus,.datepicker table tr td.active.highlighted[disabled]:hover,.datepicker table tr td.active[disabled].focus,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active.focus,fieldset[disabled] .datepicker table tr td.active.highlighted.focus,fieldset[disabled] .datepicker table tr td.active.highlighted:focus,fieldset[disabled] .datepicker table tr td.active.highlighted:hover,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover{background-color:#337ab7;border-color:#2e6da4}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span.focused,.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#777;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover.focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.focus,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover.focus,.datepicker table tr td span.active:hover:focus{color:#fff;background-color:#286090;border-color:#122b40}.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover:hover{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active{color:#fff;background-color:#286090;border-color:#204d74}.datepicker table tr td span.active.active.focus,.datepicker table tr td span.active.active:focus,.datepicker table tr td span.active.active:hover,.datepicker table tr td span.active.disabled.active.focus,.datepicker table tr td span.active.disabled.active:focus,.datepicker table tr td span.active.disabled.active:hover,.datepicker table tr td span.active.disabled:active.focus,.datepicker table tr td span.active.disabled:active:focus,.datepicker table tr td span.active.disabled:active:hover,.datepicker table tr td span.active.disabled:hover.active.focus,.datepicker table tr td span.active.disabled:hover.active:focus,.datepicker table tr td span.active.disabled:hover.active:hover,.datepicker table tr td span.active.disabled:hover:active.focus,.datepicker table tr td span.active.disabled:hover:active:focus,.datepicker table tr td span.active.disabled:hover:active:hover,.datepicker table tr td span.active:active.focus,.datepicker table tr td span.active:active:focus,.datepicker table tr td span.active:active:hover,.datepicker table tr td span.active:hover.active.focus,.datepicker table tr td span.active:hover.active:focus,.datepicker table tr td span.active:hover.active:hover,.datepicker table tr td span.active:hover:active.focus,.datepicker table tr td span.active:hover:active:focus,.datepicker table tr td span.active:hover:active:hover{color:#fff;background-color:#204d74;border-color:#122b40}.datepicker table tr td span.active.disabled.disabled.focus,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled.focus,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled].focus,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled].focus,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled.focus,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled].focus,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled].focus,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active.disabled.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active.focus,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.focus,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#337ab7;border-color:#2e6da4}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#777}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .next,.datepicker .prev,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .next:hover,.datepicker .prev:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .next.disabled,.datepicker .prev.disabled{visibility:hidden}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;line-height:1.42857143;border-width:1px 0;margin-left:-5px;margin-right:-5px}
\ No newline at end of file
diff --git a/cps/static/js/caliBlur.js b/cps/static/js/caliBlur.js
index 5d0ea612..2f159683 100644
--- a/cps/static/js/caliBlur.js
+++ b/cps/static/js/caliBlur.js
@@ -40,7 +40,7 @@ $( 'a.navbar-brand' ).clone().appendTo( '.home-btn' ).empty().removeClass('navba
 
 // Wrap book description in div container
 if ( $( 'body.book' ).length > 0 ) {
-    
+
   description = $( '.comments' );
   bookInfo = $( '.author' ).nextUntil( 'h3:contains("Description")');
   $( 'h3:contains("Description")' ).detach();
@@ -144,7 +144,7 @@ return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, "");
   $.each(published, function(i, val) {
     $( '.publishing-date' ).append( '<span>' + published[i] + '</span>' );
   });
-    
+
   languages = $( '.languages p span' ).text().split( ': ' );
   $( '.languages p span' ).remove();
   $.each(languages, function(i, val) {
@@ -335,7 +335,7 @@ $( 'input#query' ).focusout(function() {
             $( 'form[role="search"]' ).removeClass( 'search-focus' );
   }, 100);
 });
-    
+
 // Check if dropdown goes out of viewport and add class
 
 $(document).on('click','.dropdown-toggle',function() {
@@ -521,8 +521,6 @@ $( '#add-to-shelf' ).attr({
   'data-viewport': '.btn-toolbar' })
   .addClass('addtoshelf-btn-tooltip');
 
-var teetet = $( '#add-to-shelf' ).text()
-
 $( '#have_read_cb' ).attr({
   'data-toggle': 'tooltip',
   'title': 'Mark As Read',
@@ -559,8 +557,6 @@ $( '.btn-group[aria-label="Edit/Delete book"] a' ).attr({
    'data-viewport': '.btn-toolbar' })
    .addClass('edit-btn-tooltip');
 
-var teetet = $( '#edit_book' ).text()
-
 $( '#sendbtn' ).attr({
   'data-toggle': 'tooltip',
   'title': 'Send to Kindle',
diff --git a/cps/static/js/libs/bootstrap-datepicker/bootstrap-datepicker.min.js b/cps/static/js/libs/bootstrap-datepicker/bootstrap-datepicker.min.js
index 1474f09b..14457e0c 100644
--- a/cps/static/js/libs/bootstrap-datepicker/bootstrap-datepicker.min.js
+++ b/cps/static/js/libs/bootstrap-datepicker/bootstrap-datepicker.min.js
@@ -1,8 +1,8 @@
 /*!
- * Datepicker for Bootstrap v1.7.1 (https://github.com/uxsolutions/bootstrap-datepicker)
+ * Datepicker for Bootstrap v1.8.0 (https://github.com/uxsolutions/bootstrap-datepicker)
  *
  * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
  */
 
-!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(c,d){return function(){return d!==b&&a.fn.datepicker.deprecated(d),this[c].apply(this,arguments)}}function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;c<d;c++)if(0<=this[c].valueOf()-b&&this[c].valueOf()-b<864e5)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new j;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),k=function(b,c){a.data(b,"datepicker",this),this._process_options(c),this.dates=new j,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInput=this.element.is("input"),this.inputField=this.isInput?this.element:this.element.find("input"),this.component=!!this.element.hasClass("date")&&this.element.find(".add-on, .input-group-addon, .btn"),this.component&&0===this.component.length&&(this.component=!1),this.isInline=!this.component&&this.element.is("div"),this.picker=a(r.template),this._check_template(this.o.templates.leftArrow)&&this.picker.find(".prev").html(this.o.templates.leftArrow),this._check_template(this.o.templates.rightArrow)&&this.picker.find(".next").html(this.o.templates.rightArrow),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.o.calendarWeeks&&this.picker.find(".datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan",function(a,b){return Number(b)+1}),this._process_options({startDate:this._o.startDate,endDate:this._o.endDate,daysOfWeekDisabled:this.o.daysOfWeekDisabled,daysOfWeekHighlighted:this.o.daysOfWeekHighlighted,datesDisabled:this.o.datesDisabled}),this._allow_update=!1,this.setViewMode(this.o.startView),this._allow_update=!0,this.fillDow(),this.fillMonths(),this.update(),this.isInline&&this.show()};k.prototype={constructor:k,_resolveViewName:function(b){return a.each(r.viewModes,function(c,d){if(b===c||a.inArray(b,d.names)!==-1)return b=c,!1}),b},_resolveDaysOfWeek:function(b){return a.isArray(b)||(b=b.split(/[,\s]*/)),a.map(b,Number)},_check_template:function(c){try{if(c===b||""===c)return!1;if((c.match(/[<>]/g)||[]).length<=0)return!0;var d=a(c);return d.length>0}catch(a){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-(1/0)),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate instanceof Date||"string"==typeof e.defaultViewDate)e.defaultViewDate=r.parseDate(e.defaultViewDate,g,e.language,e.assumeNearbyYear);else if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(d=b,e=a[f][1]):3===a[f].length&&(d=a[f][1],e=a[f][2]),c.on(e,d)},_unapplyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(e=b,d=a[f][1]):3===a[f].length&&(e=a[f][1],d=a[f][2]),c.off(d,e)},_buildEvents:function(){var b={keyup:a.proxy(function(b){a.inArray(b.keyCode,[27,37,39,38,40,32,13,9])===-1&&this.update()},this),keydown:a.proxy(this.keydown,this),paste:a.proxy(this.paste,this)};this.o.showOnFocus===!0&&(b.focus=a.proxy(this.show,this)),this.isInput?this._events=[[this.element,b]]:this.component&&this.inputField.length?this._events=[[this.inputField,b],[this.component,{click:a.proxy(this.show,this)}]]:this._events=[[this.element,{click:a.proxy(this.show,this),keydown:a.proxy(this.keydown,this)}]],this._events.push([this.element,"*",{blur:a.proxy(function(a){this._focused_from=a.target},this)}],[this.element,{blur:a.proxy(function(a){this._focused_from=a.target},this)}]),this.o.immediateUpdates&&this._events.push([this.element,{"changeYear changeMonth":a.proxy(function(a){this.update(a.date)},this)}]),this._secondaryEvents=[[this.picker,{click:a.proxy(this.click,this)}],[this.picker,".prev, .next",{click:a.proxy(this.navArrowsClick,this)}],[this.picker,".day:not(.disabled)",{click:a.proxy(this.dayCellClick,this)}],[a(window),{resize:a.proxy(this.place,this)}],[a(document),{"mousedown touchstart":a.proxy(function(a){this.element.is(a.target)||this.element.find(a.target).length||this.picker.is(a.target)||this.picker.find(a.target).length||this.isInline||this.hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(b,c){var d=c||this.dates.get(-1),e=this._utc_to_local(d);this.element.trigger({type:b,date:e,viewMode:this.viewMode,dates:a.map(this.dates,this._utc_to_local),format:a.proxy(function(a,b){0===arguments.length?(a=this.dates.length-1,b=this.o.format):"string"==typeof a&&(b=a,a=this.dates.length-1),b=b||this.o.format;var c=this.dates.get(a);return r.formatDate(c,b,this.o.language)},this)})},show:function(){if(!(this.inputField.prop("disabled")||this.inputField.prop("readonly")&&this.o.enableOnReadonly===!1))return this.isInline||this.picker.appendTo(this.o.container),this.place(),this.picker.show(),this._attachSecondaryEvents(),this._trigger("show"),(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.o.disableTouchKeyboard&&a(this.element).blur(),this},hide:function(){return this.isInline||!this.picker.is(":visible")?this:(this.focusDate=null,this.picker.hide().detach(),this._detachSecondaryEvents(),this.setViewMode(this.o.startView),this.o.forceParse&&this.inputField.val()&&this.setValue(),this._trigger("hide"),this)},destroy:function(){return this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date,this},paste:function(b){var c;if(b.originalEvent.clipboardData&&b.originalEvent.clipboardData.types&&a.inArray("text/plain",b.originalEvent.clipboardData.types)!==-1)c=b.originalEvent.clipboardData.getData("text/plain");else{if(!window.clipboardData)return;c=window.clipboardData.getData("Text")}this.setDate(c),this.update(),b.preventDefault()},_utc_to_local:function(a){if(!a)return a;var b=new Date(a.getTime()+6e4*a.getTimezoneOffset());return b.getTimezoneOffset()!==a.getTimezoneOffset()&&(b=new Date(a.getTime()+6e4*b.getTimezoneOffset())),b},_local_to_utc:function(a){return a&&new Date(a.getTime()-6e4*a.getTimezoneOffset())},_zero_time:function(a){return a&&new Date(a.getFullYear(),a.getMonth(),a.getDate())},_zero_utc_time:function(a){return a&&c(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate())},getDates:function(){return a.map(this.dates,this._utc_to_local)},getUTCDates:function(){return a.map(this.dates,function(a){return new Date(a)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var a=this.dates.get(-1);return a!==b?new Date(a):null},clearDates:function(){this.inputField.val(""),this.update(),this._trigger("changeDate"),this.o.autoclose&&this.hide()},setDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,b),this._trigger("changeDate"),this.setValue(),this},setUTCDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.setDates.apply(this,a.map(b,this._utc_to_local)),this},setDate:f("setDates"),setUTCDate:f("setUTCDates"),remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead"),setValue:function(){var a=this.getFormattedDate();return this.inputField.val(a),this},getFormattedDate:function(c){c===b&&(c=this.o.format);var d=this.o.language;return a.map(this.dates,function(a){return r.formatDate(a,c,d)}).join(this.o.multidateSeparator)},getStartDate:function(){return this.o.startDate},setStartDate:function(a){return this._process_options({startDate:a}),this.update(),this.updateNavArrows(),this},getEndDate:function(){return this.o.endDate},setEndDate:function(a){return this._process_options({endDate:a}),this.update(),this.updateNavArrows(),this},setDaysOfWeekDisabled:function(a){return this._process_options({daysOfWeekDisabled:a}),this.update(),this},setDaysOfWeekHighlighted:function(a){return this._process_options({daysOfWeekHighlighted:a}),this.update(),this},setDatesDisabled:function(a){return this._process_options({datesDisabled:a}),this.update(),this},place:function(){if(this.isInline)return this;var b=this.picker.outerWidth(),c=this.picker.outerHeight(),d=10,e=a(this.o.container),f=e.width(),g="body"===this.o.container?a(document).scrollTop():e.scrollTop(),h=e.offset(),i=[0];this.element.parents().each(function(){var b=a(this).css("z-index");"auto"!==b&&0!==Number(b)&&i.push(Number(b))});var j=Math.max.apply(Math,i)+this.o.zIndexOffset,k=this.component?this.component.parent().offset():this.element.offset(),l=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1),m=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1),n=k.left-h.left,o=k.top-h.top;"body"!==this.o.container&&(o+=g),this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"),"auto"!==this.o.orientation.x?(this.picker.addClass("datepicker-orient-"+this.o.orientation.x),"right"===this.o.orientation.x&&(n-=b-m)):k.left<0?(this.picker.addClass("datepicker-orient-left"),n-=k.left-d):n+b>f?(this.picker.addClass("datepicker-orient-right"),n+=m-b):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var p,q=this.o.orientation.y;if("auto"===q&&(p=-g+o-c,q=p<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+q),"top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l,this.o.rtl){var r=f-(n+m);this.picker.css({top:o,right:r,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDate<this.o.startDate?this.viewDate=new Date(this.o.startDate):this.viewDate>this.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),d?(this.setValue(),this.element.change()):this.dates.length&&String(b)!==String(this.dates)&&d&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&b.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var b=this.o.weekStart,c="<tr>";for(this.o.calendarWeeks&&(c+='<th class="cw">&#160;</th>');b<this.o.weekStart+7;)c+='<th class="dow',a.inArray(b,this.o.daysOfWeekDisabled)!==-1&&(c+=" disabled"),c+='">'+q[this.o.language].daysMin[b++%7]+"</th>";c+="</tr>",this.picker.find(".datepicker-days thead").append(c)}},fillMonths:function(){for(var a,b=this._utc_to_local(this.viewDate),c="",d=0;d<12;d++)a=b&&b.getMonth()===d?" focused":"",c+='<span class="month'+a+'">'+q[this.o.language].monthsShort[d]+"</span>";this.picker.find(".datepicker-months td").html(c)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],f=this.viewDate.getUTCFullYear(),g=this.viewDate.getUTCMonth(),h=d();return b.getUTCFullYear()<f||b.getUTCFullYear()===f&&b.getUTCMonth()<g?c.push("old"):(b.getUTCFullYear()>f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&e(b,h)&&c.push("today"),this.dates.contains(b)!==-1&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)!==-1&&c.push("highlighted"),this.range&&(b>this.range[0]&&b<this.range[this.range.length-1]&&c.push("range"),a.inArray(b.valueOf(),this.range)!==-1&&c.push("selected"),b.valueOf()===this.range[0]&&c.push("range-start"),b.valueOf()===this.range[this.range.length-1]&&c.push("range-end")),c},_fill_yearsView:function(c,d,e,f,g,h,i){for(var j,k,l,m="",n=e/10,o=this.picker.find(c),p=Math.floor(f/e)*e,q=p+9*n,r=Math.floor(this.viewDate.getFullYear()/n)*n,s=a.map(this.dates,function(a){return Math.floor(a.getUTCFullYear()/n)*n}),t=p-n;t<=q+n;t+=n)j=[d],k=null,t===p-n?j.push("old"):t===q+n&&j.push("new"),a.inArray(t,s)!==-1&&j.push("active"),(t<g||t>h)&&j.push("disabled"),t===r&&j.push("focused"),i!==a.noop&&(l=i(new Date(t,0,1)),l===b?l={}:"boolean"==typeof l?l={enabled:l}:"string"==typeof l&&(l={classes:l}),l.enabled===!1&&j.push("disabled"),l.classes&&(j=j.concat(l.classes.split(/\s+/))),l.tooltip&&(k=l.tooltip)),m+='<span class="'+j.join(" ")+'"'+(k?' title="'+k+'"':"")+">"+t+"</span>";o.find(".datepicker-switch").text(p+"-"+q),o.find("td").html(m)},fill:function(){var d,e,f=new Date(this.viewDate),g=f.getUTCFullYear(),h=f.getUTCMonth(),i=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),j=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),k=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,m=q[this.o.language].today||q.en.today||"",n=q[this.o.language].clear||q.en.clear||"",o=q[this.o.language].titleFormat||q.en.titleFormat;if(!isNaN(g)&&!isNaN(h)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(f,o,this.o.language)),this.picker.find("tfoot .today").text(m).css("display",this.o.todayBtn===!0||"linked"===this.o.todayBtn?"table-cell":"none"),this.picker.find("tfoot .clear").text(n).css("display",this.o.clearBtn===!0?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var p=c(g,h,0),s=p.getUTCDate();p.setUTCDate(s-(p.getUTCDay()-this.o.weekStart+7)%7);var t=new Date(p);p.getUTCFullYear()<100&&t.setUTCFullYear(p.getUTCFullYear()),t.setUTCDate(t.getUTCDate()+42),t=t.valueOf();for(var u,v,w=[];p.valueOf()<t;){if(u=p.getUTCDay(),u===this.o.weekStart&&(w.push("<tr>"),this.o.calendarWeeks)){var x=new Date(+p+(this.o.weekStart-u-7)%7*864e5),y=new Date(Number(x)+(11-x.getUTCDay())%7*864e5),z=new Date(Number(z=c(y.getUTCFullYear(),0,1))+(11-z.getUTCDay())%7*864e5),A=(y-z)/864e5/7+1;w.push('<td class="cw">'+A+"</td>")}v=this.getClassNames(p),v.push("day");var B=p.getUTCDate();this.o.beforeShowDay!==a.noop&&(e=this.o.beforeShowDay(this._utc_to_local(p)),e===b?e={}:"boolean"==typeof e?e={enabled:e}:"string"==typeof e&&(e={classes:e}),e.enabled===!1&&v.push("disabled"),e.classes&&(v=v.concat(e.classes.split(/\s+/))),e.tooltip&&(d=e.tooltip),e.content&&(B=e.content)),v=a.isFunction(a.uniqueSort)?a.uniqueSort(v):a.unique(v),w.push('<td class="'+v.join(" ")+'"'+(d?' title="'+d+'"':"")+' data-date="'+p.getTime().toString()+'">'+B+"</td>"),d=null,u===this.o.weekEnd&&w.push("</tr>"),p.setUTCDate(p.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(w.join(""));var C=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",D=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?C:g).end().find("tbody span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===g&&D.eq(b.getUTCMonth()).addClass("active")}),(g<i||g>k)&&D.addClass("disabled"),g===i&&D.slice(0,j).addClass("disabled"),g===k&&D.slice(l+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var E=this;a.each(D,function(c,d){var e=new Date(g,c,1),f=E.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),f.enabled!==!1||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,g,i,k,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,g,i,k,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,g,i,k,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a,b,c=new Date(this.viewDate),d=c.getUTCFullYear(),e=c.getUTCMonth(),f=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),g=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),h=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,i=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,j=1;switch(this.viewMode){case 0:a=d<=f&&e<=g,b=d>=h&&e>=i;break;case 4:j*=10;case 3:j*=10;case 2:j*=10;case 1:a=Math.floor(d/j)*j<=f,b=Math.floor(d/j)*j+j>=h}this.picker.find(".prev").toggleClass("disabled",a),this.picker.find(".next").toggleClass("disabled",b)}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h;e=a(b.target),e.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),f=1,1===this.viewMode?(h=e.parent().find("span").index(e),g=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(h)):(h=0,g=Number(e.text()),this.viewDate.setUTCFullYear(g)),this._trigger(r.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(c(g,h,f)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(b){var c=a(b.currentTarget),d=c.data("date"),e=new Date(d);this.o.updateViewDate&&(e.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),e.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(e)},navArrowsClick:function(b){var c=a(b.currentTarget),d=c.hasClass("prev")?-1:1;0!==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,d),this._trigger(r.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),b!==-1?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),(!b&&this.o.updateViewDate||"view"===b)&&(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=b===-1?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),c=(c+12)%12;else{for(var j=0;j<i;j++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!==e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},moveAvailableDate:function(a,b,c){do{if(a=this[c](a,b),!this.dateWithinRange(a))return!1;c="moveDay"}while(this.dateIsDisabled(a));return a},weekOfDateIsDisabled:function(b){return a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled)!==-1},dateIsDisabled:function(b){return this.weekOfDateIsDisabled(b)||a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(40!==a.keyCode&&27!==a.keyCode||(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"),c&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"),c&&this._trigger("changeMonth",this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var l=function(b,c){a.data(b,"datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,this.keepEmptyValues=c.keepEmptyValues,delete c.keepEmptyValues,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a.data(b,"datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(c){if(!this.updating){this.updating=!0;var d=a.data(c.target,"datepicker");if(d!==b){var e=d.getUTCDate(),f=this.keepEmptyValues,g=a.inArray(c.target,this.inputs),h=g-1,i=g+1,j=this.inputs.length;if(g!==-1){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b!==d&&f||b.setUTCDate(e)}),e<this.dates[h])for(;h>=0&&e<this.dates[h];)this.pickers[h--].setUTCDate(e);else if(e>this.dates[i])for(;i<j&&e>this.dates[i];)this.pickers[i++].setUTCDate(e);this.updateDates(),delete this.updating}}}},destroy:function(){a.map(this.pickers,function(a){a.destroy()}),a(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"&#x00AB;",rightArrow:"&#x00BB;"},showWeekDays:!0},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\0").split("\0"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(c,e,f,g){function h(a,b){return b===!0&&(b=10),a<100&&(a+=2e3,a>(new Date).getFullYear()+b&&(a-=100)),a}function i(){var a=this.slice(0,j[n].length),b=j[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!c)return b;if(c instanceof Date)return c;if("string"==typeof e&&(e=r.parseFormat(e)),e.toValue)return e.toValue(c,e,f);var j,l,m,n,o,p={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},s={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(c in s&&(c=s[c]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)){for(j=c.match(/([\-+]\d+)([dmwy])/gi),c=new Date,n=0;n<j.length;n++)l=j[n].match(/([\-+]\d+)([dmwy])/i),m=Number(l[1]),o=p[l[2].toLowerCase()],c=k.prototype[o](c,m);return k.prototype._zero_utc_time(c)}j=c&&c.match(this.nonpunctuation)||[];var t,u,v={},w=["yyyy","yy","M","MM","m","mm","d","dd"],x={yyyy:function(a,b){return a.setUTCFullYear(g?h(b,g):b)},m:function(a,b){if(isNaN(a))return a;for(b-=1;b<0;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};x.yy=x.yyyy,x.M=x.MM=x.mm=x.m,x.dd=x.d,c=d();var y=e.parts.slice();if(j.length!==y.length&&(y=a(y).filter(function(b,c){return a.inArray(c,w)!==-1}).toArray()),j.length===y.length){var z;for(n=0,z=y.length;n<z;n++){if(t=parseInt(j[n],10),l=y[n],isNaN(t))switch(l){case"MM":u=a(q[f].months).filter(i),t=a.inArray(u[0],q[f].months)+1;break;case"M":u=a(q[f].monthsShort).filter(i),t=a.inArray(u[0],q[f].monthsShort)+1}v[l]=t}var A,B;for(n=0;n<w.length;n++)B=w[n],B in v&&!isNaN(v[B])&&(A=new Date(c),x[B](A,v[B]),isNaN(A)||(c=A))}return c},formatDate:function(b,c,d){if(!b)return"";if("string"==typeof c&&(c=r.parseFormat(c)),c.toDisplay)return c.toDisplay(b,c,d);var e={d:b.getUTCDate(),D:q[d].daysShort[b.getUTCDay()],DD:q[d].days[b.getUTCDay()],m:b.getUTCMonth()+1,M:q[d].monthsShort[b.getUTCMonth()],MM:q[d].months[b.getUTCMonth()],yy:b.getUTCFullYear().toString().substring(2),yyyy:b.getUTCFullYear()};e.dd=(e.d<10?"0":"")+e.d,e.mm=(e.m<10?"0":"")+e.m,b=[];for(var f=a.extend([],c.separators),g=0,h=c.parts.length;g<=h;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'<thead><tr><th colspan="7" class="datepicker-title"></th></tr><tr><th class="prev">'+o.templates.leftArrow+'</th><th colspan="5" class="datepicker-switch"></th><th class="next">'+o.templates.rightArrow+"</th></tr></thead>",
-contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};r.template='<div class="datepicker"><div class="datepicker-days"><table class="table-condensed">'+r.headTemplate+"<tbody></tbody>"+r.footTemplate+'</table></div><div class="datepicker-months"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-years"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-decades"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-centuries"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+"</table></div></div>",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.7.1",a.fn.datepicker.deprecated=function(a){var b=window.console;b&&b.warn&&b.warn("DEPRECATED: "+a)},a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})});
\ No newline at end of file
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(c,d){return function(){return d!==b&&a.fn.datepicker.deprecated(d),this[c].apply(this,arguments)}}function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;c<d;c++)if(0<=this[c].valueOf()-b&&this[c].valueOf()-b<864e5)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new j;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),k=function(b,c){a.data(b,"datepicker",this),this._process_options(c),this.dates=new j,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInput=this.element.is("input"),this.inputField=this.isInput?this.element:this.element.find("input"),this.component=!!this.element.hasClass("date")&&this.element.find(".add-on, .input-group-addon, .btn"),this.component&&0===this.component.length&&(this.component=!1),this.isInline=!this.component&&this.element.is("div"),this.picker=a(r.template),this._check_template(this.o.templates.leftArrow)&&this.picker.find(".prev").html(this.o.templates.leftArrow),this._check_template(this.o.templates.rightArrow)&&this.picker.find(".next").html(this.o.templates.rightArrow),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.o.calendarWeeks&&this.picker.find(".datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan",function(a,b){return Number(b)+1}),this._process_options({startDate:this._o.startDate,endDate:this._o.endDate,daysOfWeekDisabled:this.o.daysOfWeekDisabled,daysOfWeekHighlighted:this.o.daysOfWeekHighlighted,datesDisabled:this.o.datesDisabled}),this._allow_update=!1,this.setViewMode(this.o.startView),this._allow_update=!0,this.fillDow(),this.fillMonths(),this.update(),this.isInline&&this.show()};k.prototype={constructor:k,_resolveViewName:function(b){return a.each(r.viewModes,function(c,d){if(b===c||a.inArray(b,d.names)!==-1)return b=c,!1}),b},_resolveDaysOfWeek:function(b){return a.isArray(b)||(b=b.split(/[,\s]*/)),a.map(b,Number)},_check_template:function(c){try{if(c===b||""===c)return!1;if((c.match(/[<>]/g)||[]).length<=0)return!0;var d=a(c);return d.length>0}catch(a){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-(1/0)),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate instanceof Date||"string"==typeof e.defaultViewDate)e.defaultViewDate=r.parseDate(e.defaultViewDate,g,e.language,e.assumeNearbyYear);else if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(d=b,e=a[f][1]):3===a[f].length&&(d=a[f][1],e=a[f][2]),c.on(e,d)},_unapplyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(e=b,d=a[f][1]):3===a[f].length&&(e=a[f][1],d=a[f][2]),c.off(d,e)},_buildEvents:function(){var b={keyup:a.proxy(function(b){a.inArray(b.keyCode,[27,37,39,38,40,32,13,9])===-1&&this.update()},this),keydown:a.proxy(this.keydown,this),paste:a.proxy(this.paste,this)};this.o.showOnFocus===!0&&(b.focus=a.proxy(this.show,this)),this.isInput?this._events=[[this.element,b]]:this.component&&this.inputField.length?this._events=[[this.inputField,b],[this.component,{click:a.proxy(this.show,this)}]]:this._events=[[this.element,{click:a.proxy(this.show,this),keydown:a.proxy(this.keydown,this)}]],this._events.push([this.element,"*",{blur:a.proxy(function(a){this._focused_from=a.target},this)}],[this.element,{blur:a.proxy(function(a){this._focused_from=a.target},this)}]),this.o.immediateUpdates&&this._events.push([this.element,{"changeYear changeMonth":a.proxy(function(a){this.update(a.date)},this)}]),this._secondaryEvents=[[this.picker,{click:a.proxy(this.click,this)}],[this.picker,".prev, .next",{click:a.proxy(this.navArrowsClick,this)}],[this.picker,".day:not(.disabled)",{click:a.proxy(this.dayCellClick,this)}],[a(window),{resize:a.proxy(this.place,this)}],[a(document),{"mousedown touchstart":a.proxy(function(a){this.element.is(a.target)||this.element.find(a.target).length||this.picker.is(a.target)||this.picker.find(a.target).length||this.isInline||this.hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(b,c){var d=c||this.dates.get(-1),e=this._utc_to_local(d);this.element.trigger({type:b,date:e,viewMode:this.viewMode,dates:a.map(this.dates,this._utc_to_local),format:a.proxy(function(a,b){0===arguments.length?(a=this.dates.length-1,b=this.o.format):"string"==typeof a&&(b=a,a=this.dates.length-1),b=b||this.o.format;var c=this.dates.get(a);return r.formatDate(c,b,this.o.language)},this)})},show:function(){if(!(this.inputField.prop("disabled")||this.inputField.prop("readonly")&&this.o.enableOnReadonly===!1))return this.isInline||this.picker.appendTo(this.o.container),this.place(),this.picker.show(),this._attachSecondaryEvents(),this._trigger("show"),(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.o.disableTouchKeyboard&&a(this.element).blur(),this},hide:function(){return this.isInline||!this.picker.is(":visible")?this:(this.focusDate=null,this.picker.hide().detach(),this._detachSecondaryEvents(),this.setViewMode(this.o.startView),this.o.forceParse&&this.inputField.val()&&this.setValue(),this._trigger("hide"),this)},destroy:function(){return this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date,this},paste:function(b){var c;if(b.originalEvent.clipboardData&&b.originalEvent.clipboardData.types&&a.inArray("text/plain",b.originalEvent.clipboardData.types)!==-1)c=b.originalEvent.clipboardData.getData("text/plain");else{if(!window.clipboardData)return;c=window.clipboardData.getData("Text")}this.setDate(c),this.update(),b.preventDefault()},_utc_to_local:function(a){if(!a)return a;var b=new Date(a.getTime()+6e4*a.getTimezoneOffset());return b.getTimezoneOffset()!==a.getTimezoneOffset()&&(b=new Date(a.getTime()+6e4*b.getTimezoneOffset())),b},_local_to_utc:function(a){return a&&new Date(a.getTime()-6e4*a.getTimezoneOffset())},_zero_time:function(a){return a&&new Date(a.getFullYear(),a.getMonth(),a.getDate())},_zero_utc_time:function(a){return a&&c(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate())},getDates:function(){return a.map(this.dates,this._utc_to_local)},getUTCDates:function(){return a.map(this.dates,function(a){return new Date(a)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var a=this.dates.get(-1);return a!==b?new Date(a):null},clearDates:function(){this.inputField.val(""),this.update(),this._trigger("changeDate"),this.o.autoclose&&this.hide()},setDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,b),this._trigger("changeDate"),this.setValue(),this},setUTCDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.setDates.apply(this,a.map(b,this._utc_to_local)),this},setDate:f("setDates"),setUTCDate:f("setUTCDates"),remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead"),setValue:function(){var a=this.getFormattedDate();return this.inputField.val(a),this},getFormattedDate:function(c){c===b&&(c=this.o.format);var d=this.o.language;return a.map(this.dates,function(a){return r.formatDate(a,c,d)}).join(this.o.multidateSeparator)},getStartDate:function(){return this.o.startDate},setStartDate:function(a){return this._process_options({startDate:a}),this.update(),this.updateNavArrows(),this},getEndDate:function(){return this.o.endDate},setEndDate:function(a){return this._process_options({endDate:a}),this.update(),this.updateNavArrows(),this},setDaysOfWeekDisabled:function(a){return this._process_options({daysOfWeekDisabled:a}),this.update(),this},setDaysOfWeekHighlighted:function(a){return this._process_options({daysOfWeekHighlighted:a}),this.update(),this},setDatesDisabled:function(a){return this._process_options({datesDisabled:a}),this.update(),this},place:function(){if(this.isInline)return this;var b=this.picker.outerWidth(),c=this.picker.outerHeight(),d=10,e=a(this.o.container),f=e.width(),g="body"===this.o.container?a(document).scrollTop():e.scrollTop(),h=e.offset(),i=[0];this.element.parents().each(function(){var b=a(this).css("z-index");"auto"!==b&&0!==Number(b)&&i.push(Number(b))});var j=Math.max.apply(Math,i)+this.o.zIndexOffset,k=this.component?this.component.parent().offset():this.element.offset(),l=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1),m=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1),n=k.left-h.left,o=k.top-h.top;"body"!==this.o.container&&(o+=g),this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"),"auto"!==this.o.orientation.x?(this.picker.addClass("datepicker-orient-"+this.o.orientation.x),"right"===this.o.orientation.x&&(n-=b-m)):k.left<0?(this.picker.addClass("datepicker-orient-left"),n-=k.left-d):n+b>f?(this.picker.addClass("datepicker-orient-right"),n+=m-b):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var p,q=this.o.orientation.y;if("auto"===q&&(p=-g+o-c,q=p<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+q),"top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l,this.o.rtl){var r=f-(n+m);this.picker.css({top:o,right:r,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDate<this.o.startDate?this.viewDate=new Date(this.o.startDate):this.viewDate>this.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),d?(this.setValue(),this.element.change()):this.dates.length&&String(b)!==String(this.dates)&&d&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&b.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var b=this.o.weekStart,c="<tr>";for(this.o.calendarWeeks&&(c+='<th class="cw">&#160;</th>');b<this.o.weekStart+7;)c+='<th class="dow',a.inArray(b,this.o.daysOfWeekDisabled)!==-1&&(c+=" disabled"),c+='">'+q[this.o.language].daysMin[b++%7]+"</th>";c+="</tr>",this.picker.find(".datepicker-days thead").append(c)}},fillMonths:function(){for(var a,b=this._utc_to_local(this.viewDate),c="",d=0;d<12;d++)a=b&&b.getMonth()===d?" focused":"",c+='<span class="month'+a+'">'+q[this.o.language].monthsShort[d]+"</span>";this.picker.find(".datepicker-months td").html(c)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],f=this.viewDate.getUTCFullYear(),g=this.viewDate.getUTCMonth(),h=d();return b.getUTCFullYear()<f||b.getUTCFullYear()===f&&b.getUTCMonth()<g?c.push("old"):(b.getUTCFullYear()>f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&e(b,h)&&c.push("today"),this.dates.contains(b)!==-1&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)!==-1&&c.push("highlighted"),this.range&&(b>this.range[0]&&b<this.range[this.range.length-1]&&c.push("range"),a.inArray(b.valueOf(),this.range)!==-1&&c.push("selected"),b.valueOf()===this.range[0]&&c.push("range-start"),b.valueOf()===this.range[this.range.length-1]&&c.push("range-end")),c},_fill_yearsView:function(c,d,e,f,g,h,i){for(var j,k,l,m="",n=e/10,o=this.picker.find(c),p=Math.floor(f/e)*e,q=p+9*n,r=Math.floor(this.viewDate.getFullYear()/n)*n,s=a.map(this.dates,function(a){return Math.floor(a.getUTCFullYear()/n)*n}),t=p-n;t<=q+n;t+=n)j=[d],k=null,t===p-n?j.push("old"):t===q+n&&j.push("new"),a.inArray(t,s)!==-1&&j.push("active"),(t<g||t>h)&&j.push("disabled"),t===r&&j.push("focused"),i!==a.noop&&(l=i(new Date(t,0,1)),l===b?l={}:"boolean"==typeof l?l={enabled:l}:"string"==typeof l&&(l={classes:l}),l.enabled===!1&&j.push("disabled"),l.classes&&(j=j.concat(l.classes.split(/\s+/))),l.tooltip&&(k=l.tooltip)),m+='<span class="'+j.join(" ")+'"'+(k?' title="'+k+'"':"")+">"+t+"</span>";o.find(".datepicker-switch").text(p+"-"+q),o.find("td").html(m)},fill:function(){var d,e,f=new Date(this.viewDate),g=f.getUTCFullYear(),h=f.getUTCMonth(),i=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),j=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),k=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,m=q[this.o.language].today||q.en.today||"",n=q[this.o.language].clear||q.en.clear||"",o=q[this.o.language].titleFormat||q.en.titleFormat;if(!isNaN(g)&&!isNaN(h)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(f,o,this.o.language)),this.picker.find("tfoot .today").text(m).css("display",this.o.todayBtn===!0||"linked"===this.o.todayBtn?"table-cell":"none"),this.picker.find("tfoot .clear").text(n).css("display",this.o.clearBtn===!0?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var p=c(g,h,0),s=p.getUTCDate();p.setUTCDate(s-(p.getUTCDay()-this.o.weekStart+7)%7);var t=new Date(p);p.getUTCFullYear()<100&&t.setUTCFullYear(p.getUTCFullYear()),t.setUTCDate(t.getUTCDate()+42),t=t.valueOf();for(var u,v,w=[];p.valueOf()<t;){if(u=p.getUTCDay(),u===this.o.weekStart&&(w.push("<tr>"),this.o.calendarWeeks)){var x=new Date(+p+(this.o.weekStart-u-7)%7*864e5),y=new Date(Number(x)+(11-x.getUTCDay())%7*864e5),z=new Date(Number(z=c(y.getUTCFullYear(),0,1))+(11-z.getUTCDay())%7*864e5),A=(y-z)/864e5/7+1;w.push('<td class="cw">'+A+"</td>")}v=this.getClassNames(p),v.push("day");var B=p.getUTCDate();this.o.beforeShowDay!==a.noop&&(e=this.o.beforeShowDay(this._utc_to_local(p)),e===b?e={}:"boolean"==typeof e?e={enabled:e}:"string"==typeof e&&(e={classes:e}),e.enabled===!1&&v.push("disabled"),e.classes&&(v=v.concat(e.classes.split(/\s+/))),e.tooltip&&(d=e.tooltip),e.content&&(B=e.content)),v=a.isFunction(a.uniqueSort)?a.uniqueSort(v):a.unique(v),w.push('<td class="'+v.join(" ")+'"'+(d?' title="'+d+'"':"")+' data-date="'+p.getTime().toString()+'">'+B+"</td>"),d=null,u===this.o.weekEnd&&w.push("</tr>"),p.setUTCDate(p.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(w.join(""));var C=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",D=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?C:g).end().find("tbody span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===g&&D.eq(b.getUTCMonth()).addClass("active")}),(g<i||g>k)&&D.addClass("disabled"),g===i&&D.slice(0,j).addClass("disabled"),g===k&&D.slice(l+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var E=this;a.each(D,function(c,d){var e=new Date(g,c,1),f=E.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),f.enabled!==!1||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,g,i,k,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,g,i,k,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,g,i,k,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a,b,c=new Date(this.viewDate),d=c.getUTCFullYear(),e=c.getUTCMonth(),f=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),g=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),h=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,i=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,j=1;switch(this.viewMode){case 4:j*=10;case 3:j*=10;case 2:j*=10;case 1:a=Math.floor(d/j)*j<f,b=Math.floor(d/j)*j+j>h;break;case 0:a=d<=f&&e<g,b=d>=h&&e>i}this.picker.find(".prev").toggleClass("disabled",a),this.picker.find(".next").toggleClass("disabled",b)}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h;e=a(b.target),e.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),f=1,1===this.viewMode?(h=e.parent().find("span").index(e),g=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(h)):(h=0,g=Number(e.text()),this.viewDate.setUTCFullYear(g)),this._trigger(r.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(c(g,h,f)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(b){var c=a(b.currentTarget),d=c.data("date"),e=new Date(d);this.o.updateViewDate&&(e.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),e.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(e)},navArrowsClick:function(b){var c=a(b.currentTarget),d=c.hasClass("prev")?-1:1;0!==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,d),this._trigger(r.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),b!==-1?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),(!b&&this.o.updateViewDate||"view"===b)&&(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=b===-1?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),c=(c+12)%12;else{for(var j=0;j<i;j++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!==e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},moveAvailableDate:function(a,b,c){do{if(a=this[c](a,b),!this.dateWithinRange(a))return!1;c="moveDay"}while(this.dateIsDisabled(a));return a},weekOfDateIsDisabled:function(b){return a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled)!==-1},dateIsDisabled:function(b){return this.weekOfDateIsDisabled(b)||a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(40!==a.keyCode&&27!==a.keyCode||(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"),c&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"),c&&this._trigger("changeMonth",this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var l=function(b,c){a.data(b,"datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,this.keepEmptyValues=c.keepEmptyValues,delete c.keepEmptyValues,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a.data(b,"datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},clearDates:function(){a.each(this.pickers,function(a,b){b.clearDates()})},dateUpdated:function(c){if(!this.updating){this.updating=!0;var d=a.data(c.target,"datepicker");if(d!==b){var e=d.getUTCDate(),f=this.keepEmptyValues,g=a.inArray(c.target,this.inputs),h=g-1,i=g+1,j=this.inputs.length;if(g!==-1){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b!==d&&f||b.setUTCDate(e)}),e<this.dates[h])for(;h>=0&&e<this.dates[h];)this.pickers[h--].setUTCDate(e);else if(e>this.dates[i])for(;i<j&&e>this.dates[i];)this.pickers[i++].setUTCDate(e);this.updateDates(),delete this.updating}}}},destroy:function(){a.map(this.pickers,function(a){a.destroy()}),a(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"&#x00AB;",rightArrow:"&#x00BB;"},showWeekDays:!0},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\0").split("\0"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(c,e,f,g){function h(a,b){return b===!0&&(b=10),a<100&&(a+=2e3,a>(new Date).getFullYear()+b&&(a-=100)),a}function i(){var a=this.slice(0,j[n].length),b=j[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!c)return b;if(c instanceof Date)return c;if("string"==typeof e&&(e=r.parseFormat(e)),e.toValue)return e.toValue(c,e,f);var j,l,m,n,o,p={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},s={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(c in s&&(c=s[c]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)){for(j=c.match(/([\-+]\d+)([dmwy])/gi),c=new Date,n=0;n<j.length;n++)l=j[n].match(/([\-+]\d+)([dmwy])/i),m=Number(l[1]),o=p[l[2].toLowerCase()],c=k.prototype[o](c,m);return k.prototype._zero_utc_time(c)}j=c&&c.match(this.nonpunctuation)||[];var t,u,v={},w=["yyyy","yy","M","MM","m","mm","d","dd"],x={yyyy:function(a,b){return a.setUTCFullYear(g?h(b,g):b)},m:function(a,b){if(isNaN(a))return a;for(b-=1;b<0;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};x.yy=x.yyyy,x.M=x.MM=x.mm=x.m,x.dd=x.d,c=d();var y=e.parts.slice();if(j.length!==y.length&&(y=a(y).filter(function(b,c){return a.inArray(c,w)!==-1}).toArray()),j.length===y.length){var z;for(n=0,z=y.length;n<z;n++){if(t=parseInt(j[n],10),l=y[n],isNaN(t))switch(l){case"MM":u=a(q[f].months).filter(i),t=a.inArray(u[0],q[f].months)+1;break;case"M":u=a(q[f].monthsShort).filter(i),t=a.inArray(u[0],q[f].monthsShort)+1}v[l]=t}var A,B;for(n=0;n<w.length;n++)B=w[n],B in v&&!isNaN(v[B])&&(A=new Date(c),x[B](A,v[B]),isNaN(A)||(c=A))}return c},formatDate:function(b,c,d){if(!b)return"";if("string"==typeof c&&(c=r.parseFormat(c)),c.toDisplay)return c.toDisplay(b,c,d);var e={d:b.getUTCDate(),D:q[d].daysShort[b.getUTCDay()],DD:q[d].days[b.getUTCDay()],m:b.getUTCMonth()+1,M:q[d].monthsShort[b.getUTCMonth()],MM:q[d].months[b.getUTCMonth()],yy:b.getUTCFullYear().toString().substring(2),yyyy:b.getUTCFullYear()};e.dd=(e.d<10?"0":"")+e.d,e.mm=(e.m<10?"0":"")+e.m,b=[];for(var f=a.extend([],c.separators),g=0,h=c.parts.length;g<=h;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'<thead><tr><th colspan="7" class="datepicker-title"></th></tr><tr><th class="prev">'+o.templates.leftArrow+'</th><th colspan="5" class="datepicker-switch"></th><th class="next">'+o.templates.rightArrow+"</th></tr></thead>",
+contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};r.template='<div class="datepicker"><div class="datepicker-days"><table class="table-condensed">'+r.headTemplate+"<tbody></tbody>"+r.footTemplate+'</table></div><div class="datepicker-months"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-years"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-decades"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-centuries"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+"</table></div></div>",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.8.0",a.fn.datepicker.deprecated=function(a){var b=window.console;b&&b.warn&&b.warn("DEPRECATED: "+a)},a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})});
\ No newline at end of file
diff --git a/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js
new file mode 100644
index 00000000..e321f04f
--- /dev/null
+++ b/cps/static/js/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js
@@ -0,0 +1 @@
+!function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery);
\ No newline at end of file
diff --git a/cps/static/js/unrar.js b/cps/static/js/unrar.js
index c43dbd1d..30263bb2 100644
--- a/cps/static/js/unrar.js
+++ b/cps/static/js/unrar.js
@@ -79,7 +79,7 @@ var RarVolumeHeader = function(bstream) {
     // bytes 4,5
     this.flags = {};
     this.flags.value = bstream.peekBits(16);
-  
+
     info("  flags=" + twoByteValueToHexString(this.flags.value));
     switch (this.headType) {
         case MAIN_HEAD:
@@ -115,7 +115,7 @@ var RarVolumeHeader = function(bstream) {
         default:
             bstream.readBits(16);
     }
-  
+
     // byte 6,7
     this.headSize = bstream.readBits(16);
     info("  headSize=" + this.headSize);
@@ -212,12 +212,12 @@ var RarVolumeHeader = function(bstream) {
 
 //var BLOCK_LZ  = 0;
 
-var rLDecode = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224], 
+var rLDecode = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224],
     rLBits = [0, 0, 0, 0, 0, 0, 0, 0, 1,  1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,  4,  5,  5,  5,  5],
     rDBitLengthCounts = [4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 14, 0, 12],
     rSDDecode = [0, 4, 8, 16, 32, 64, 128, 192],
     rSDBits = [2, 2, 3, 4, 5, 6,  6,  6];
-  
+
 var rDDecode = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32,
     48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072,
     4096, 6144, 8192, 12288, 16384, 24576, 32768, 49152, 65536, 98304,
@@ -275,12 +275,12 @@ function rarReadTables(bstream) {
     var i;
     // before we start anything we need to get byte-aligned
     bstream.readBits( (8 - bstream.bitPtr) & 0x7 );
-  
+
     if (bstream.readBits(1)) {
         info("Error!  PPM not implemented yet");
         return;
     }
-  
+
     if (!bstream.readBits(1)) { //discard old table
         for (i = UnpOldTable.length; i--;) UnpOldTable[i] = 0;
     }
@@ -308,7 +308,7 @@ function rarReadTables(bstream) {
     // now all 20 bit lengths are obtained, we construct the Huffman Table:
 
     rarMakeDecodeTables(BitLength, 0, BD, rBC);
-  
+
     var TableSize = rHuffTableSize;
     //console.log(DecodeLen, DecodePos, DecodeNum);
     for (i = 0; i < TableSize;) {
@@ -332,12 +332,12 @@ function rarReadTables(bstream) {
             }
         }
     }
-  
+
     rarMakeDecodeTables(Table, 0, LD, rNC);
     rarMakeDecodeTables(Table, rNC, DD, rDC);
     rarMakeDecodeTables(Table, rNC + rDC, LDD, rLDC);
     rarMakeDecodeTables(Table, rNC + rDC + rLDC, RD, rRC);
-  
+
     for (i = UnpOldTable.length; i--;) {
         UnpOldTable[i] = Table[i];
     }
@@ -366,7 +366,7 @@ function rarDecodeNumber(bstream, dec) {
                 : 15));
     bstream.readBits(bits);
     var N = DecodePos[bits] + ((bitField - DecodeLen[bits - 1]) >>> (16 - bits));
-  
+
     return DecodeNum[N];
 }
 
@@ -568,7 +568,7 @@ function Unpack29(bstream) {
             DBits[Slot] = BitLength;
         }
     }
-  
+
     var Bits;
     //tablesRead = false;
 
@@ -578,13 +578,13 @@ function Unpack29(bstream) {
     lastLength = 0;
     var i;
     for (i = UnpOldTable.length; i--;) UnpOldTable[i] = 0;
-    
+
     // read in Huffman tables
     rarReadTables(bstream);
- 
+
     while (true) {
         var num = rarDecodeNumber(bstream, LD);
-    
+
         if (num < 256) {
             rBuffer.insertByte(num);
             continue;
@@ -675,11 +675,11 @@ function Unpack29(bstream) {
             continue;
         }
     }
-    rarUpdateProgress()
+    rarUpdateProgress();
 }
 
 function rarReadEndOfBlock(bstream) {
-  
+
     rarUpdateProgress();
 
     var NewTable = false, NewFile = false;
@@ -703,7 +703,7 @@ function rarReadVMCode(bstream) {
         Length = bstream.readBits(16);
     }
     var vmCode = [];
-    for(var I = 0; I < Length; I++) {
+    for (var I = 0; I < Length; I++) {
         //do something here with cheking readbuf
         vmCode.push(bstream.readBits(8));
     }
@@ -724,8 +724,8 @@ function rarInsertLastMatch(length, distance) {
 }
 
 function rarInsertOldDist(distance) {
-    rOldDist.splice(3,1);
-    rOldDist.splice(0,0,distance);
+    rOldDist.splice(3, 1);
+    rOldDist.splice(0, 0, distance);
 }
 
 //this is the real function, the other one is for debugging
@@ -737,28 +737,28 @@ function rarCopyString(length, distance) {
             destPtr = rOldBuffers[--l].data.length + destPtr;
         }
         //TODO: lets hope that it never needs to read beyond file boundaries
-        while(length--) rBuffer.insertByte(rOldBuffers[l].data[destPtr++]);
+        while (length--) rBuffer.insertByte(rOldBuffers[l].data[destPtr++]);
     }
     if (length > distance) {
-        while(length--) rBuffer.insertByte(rBuffer.data[destPtr++]);
+        while (length--) rBuffer.insertByte(rBuffer.data[destPtr++]);
     } else {
         rBuffer.insertBytes(rBuffer.data.subarray(destPtr, destPtr + length));
     }
 }
 
-var rOldBuffers = []
+var rOldBuffers = [];
 // v must be a valid RarVolume
 function unpack(v) {
 
-  // TODO: implement what happens when unpVer is < 15
+    // TODO: implement what happens when unpVer is < 15
     var Ver = v.header.unpVer <= 15 ? 15 : v.header.unpVer,
         Solid = v.header.LHD_SOLID,
         bstream = new bitjs.io.BitStream(v.fileData.buffer, true /* rtl */, v.fileData.byteOffset, v.fileData.byteLength );
-  
+
     rBuffer = new bitjs.io.ByteBuffer(v.header.unpackedSize);
 
-    info("Unpacking " + v.filename+" RAR v" + Ver);
-    
+    info("Unpacking " + v.filename + " RAR v" + Ver);
+
     switch(Ver) {
         case 15: // rar 1.5 compression
             Unpack15(); //(bstream, Solid);
@@ -772,7 +772,7 @@ function unpack(v) {
             Unpack29(bstream);
             break;
     } // switch(method)
-  
+
     rOldBuffers.push(rBuffer);
     //TODO: clear these old buffers when there's over 4MB of history
     return rBuffer.data;
@@ -780,10 +780,10 @@ function unpack(v) {
 
 // bstream is a bit stream
 var RarLocalFile = function(bstream) {
-  
+
     this.header = new RarVolumeHeader(bstream);
     this.filename = this.header.filename;
-  
+
     if (this.header.headType != FILE_HEAD && this.header.headType != ENDARC_HEAD) {
         this.isValid = false;
         info("Error! RAR Volume did not include a FILE_HEAD header ");
@@ -804,7 +804,7 @@ RarLocalFile.prototype.unrar = function() {
         if (this.header.method === 0x30) {
             info("Unstore " + this.filename);
             this.isValid = true;
-      
+
             currentBytesUnarchivedInFile += this.fileData.length;
             currentBytesUnarchived += this.fileData.length;
 
@@ -818,7 +818,7 @@ RarLocalFile.prototype.unrar = function() {
             this.fileData = unpack(this);
         }
     }
-}
+};
 
 var unrar = function(arrayBuffer) {
     currentFilename = "";
@@ -835,16 +835,16 @@ var unrar = function(arrayBuffer) {
     if (header.crc === 0x6152 &&
         header.headType === 0x72 &&
         header.flags.value === 0x1A21 &&
-        header.headSize === 7)
-    {
+        header.headSize === 7) {
+
         info("Found RAR signature");
 
         var mhead = new RarVolumeHeader(bstream);
         if (mhead.headType != MAIN_HEAD) {
             info("Error! RAR did not include a MAIN_HEAD header");
         } else {
-            var localFiles = [],
-            localFile = null;
+            var localFiles = [];
+            var localFile = null;
             do {
                 try {
                     localFile = new RarLocalFile(bstream);
@@ -853,24 +853,24 @@ var unrar = function(arrayBuffer) {
                         totalUncompressedBytesInArchive += localFile.header.unpackedSize;
                         localFiles.push(localFile);
                     } else if (localFile.header.packSize === 0 && localFile.header.unpackedSize === 0) {
-                            localFile.isValid = true;
+                        localFile.isValid = true;
                     }
-                } catch(err) {
+                } catch (err) {
                     break;
                 }
                 //info("bstream" + bstream.bytePtr+"/"+bstream.bytes.length);
-            } while( localFile.isValid );
+            } while ( localFile.isValid );
             totalFilesInArchive = localFiles.length;
 
             // now we have all information but things are unpacked
             // TODO: unpack
-            localFiles = localFiles.sort(function(a,b) {
+            localFiles = localFiles.sort(function(a, b) {
                 var aname = a.filename.toLowerCase();
                 var bname = b.filename.toLowerCase();
                 return aname > bname ? 1 : -1;
             });
 
-            info(localFiles.map(function(a) {return a.filename}).join(', '));
+            info(localFiles.map(function(a) {return a.filename;}).join(", "));
             for (var i = 0; i < localFiles.length; ++i) {
                 var localfile = localFiles[i];
 
diff --git a/cps/static/js/unzip.js b/cps/static/js/unzip.js
index c90cf446..f0370f53 100644
--- a/cps/static/js/unzip.js
+++ b/cps/static/js/unzip.js
@@ -236,11 +236,11 @@ var unzip = function(arrayBuffer) {
         }
         postProgress();
         postMessage(new bitjs.archive.UnarchiveFinishEvent());
-  }
+    }
 };
 
-// returns a table of Huffman codes 
-// each entry's index is its code and its value is a JavaScript object 
+// returns a table of Huffman codes
+// each entry's index is its code and its value is a JavaScript object
 // containing {length: 6, symbol: X}
 function getHuffmanCodes(bitLengths) {
     // ensure bitLengths is an array containing at least one element
@@ -389,14 +389,14 @@ Code Bits Length(s) Code Bits Lengths   Code Bits Length(s)
 
 */
 var LengthLookupTable = [
-    [0,3], [0,4], [0,5], [0,6],
-    [0,7], [0,8], [0,9], [0,10],
-    [1,11], [1,13], [1,15], [1,17],
-    [2,19], [2,23], [2,27], [2,31],
-    [3,35], [3,43], [3,51], [3,59],
-    [4,67], [4,83], [4,99], [4,115],
-    [5,131], [5,163], [5,195], [5,227],
-    [0,258]
+    [0, 3], [0, 4], [0, 5], [0, 6],
+    [0, 7], [0, 8], [0, 9], [0, 10],
+    [1, 11], [1, 13], [1, 15], [1, 17],
+    [2, 19], [2, 23], [2, 27], [2, 31],
+    [3, 35], [3, 43], [3, 51], [3, 59],
+    [4, 67], [4, 83], [4, 99], [4, 115],
+    [5, 131], [5, 163], [5, 195], [5, 227],
+    [0, 258]
 ];
 /*
       Extra           Extra                Extra
@@ -414,20 +414,20 @@ var LengthLookupTable = [
    9   3  25-32   19   8   769-1024   29   13 24577-32768
 */
 var DistLookupTable = [
-    [0,1], [0,2], [0,3], [0,4],
-    [1,5], [1,7],
-    [2,9], [2,13],
-    [3,17], [3,25],
-    [4,33], [4,49],
-    [5,65], [5,97],
-    [6,129], [6,193],
-    [7,257], [7,385],
-    [8,513], [8,769],
-    [9,1025], [9,1537],
-    [10,2049], [10,3073],
-    [11,4097], [11,6145],
-    [12,8193], [12,12289],
-    [13,16385], [13,24577]
+    [0, 1], [0, 2], [0, 3], [0, 4],
+    [1, 5], [1, 7],
+    [2, 9], [2, 13],
+    [3, 17], [3, 25],
+    [4, 33], [4, 49],
+    [5, 65], [5, 97],
+    [6, 129], [6, 193],
+    [7, 257], [7, 385],
+    [8, 513], [8, 769],
+    [9, 1025], [9, 1537],
+    [10, 2049], [10, 3073],
+    [11, 4097], [11, 6145],
+    [12, 8193], [12, 12289],
+    [13, 16385], [13, 24577]
 ];
 
 function inflateBlockData(bstream, hcLiteralTable, hcDistanceTable, buffer) {
@@ -572,14 +572,13 @@ function inflate(compressedData, numDecompressedBytes) {
                     }
                 }
                 else if (symbol == 17) {
-                    var repeat = bstream.readBits(3) + 3;
-                    while (repeat--) {
+                    var repeat1 = bstream.readBits(3) + 3;
+                    while (repeat1--) {
                         literalCodeLengths.push(0);
                     }
-                }
-                else if (symbol == 18) {
-                    var repeat = bstream.readBits(7) + 11;
-                    while (repeat--) {
+                } else if (symbol == 18) {
+                    var repeat2 = bstream.readBits(7) + 11;
+                    while (repeat2--) {
                         literalCodeLengths.push(0);
                     }
                 }
diff --git a/cps/templates/admin.html b/cps/templates/admin.html
index 1d038393..e196019f 100644
--- a/cps/templates/admin.html
+++ b/cps/templates/admin.html
@@ -176,7 +176,7 @@
       </div>
       <div class="modal-body text-center">
           <div id="spinner2" class="spinner2"  style="display:none;">
-                <img id="img-spinner" src="{{ url_for('static', filename='css/images/loading-icon.gif') }}"/>
+                <img id="img-spinner2" src="{{ url_for('static', filename='css/images/loading-icon.gif') }}"/>
           </div>
           <p></p>
          <div id="Updatecontent"></div>
diff --git a/cps/templates/detail.html b/cps/templates/detail.html
index 5c96fe61..a49670e6 100644
--- a/cps/templates/detail.html
+++ b/cps/templates/detail.html
@@ -103,7 +103,7 @@
       {% if entry.languages.__len__() > 0 %}
        <div class="languages">
        <p>
-      <span class="label label-default">{{_('language')}}: {% for language in entry.languages %} {{language.language_name}}{% if not loop.last %},{% endif %}{% endfor %} </span>
+      <span class="label label-default">{{_('language')}}: {% for language in entry.languages %}{{language.language_name}}{% if not loop.last %}, {% endif %}{% endfor %}</span>
       </p>
       </div>
       {% endif %}
diff --git a/cps/templates/readpdf.html b/cps/templates/readpdf.html
index abd5df65..44955bf4 100644
--- a/cps/templates/readpdf.html
+++ b/cps/templates/readpdf.html
@@ -41,16 +41,11 @@ See https://github.com/adobe-type-tools/cmap-resources
 <!--<link rel="resource" type="application/l10n" href="locale/locale.properties">-->
 <link rel="resource" type="application/l10n" href="{{ url_for('static', filename='locale/locale.properties') }}">
 <script src="{{ url_for('static', filename='js/libs/l10n.js') }}"></script>
-<!--<script src="l10n.js"></script>-->
-<!--script src="{{ url_for('static', filename='js/libs/debugger.js') }}"></script-->
-<!--<script src="debugger.js"></script>-->
 <script src="{{ url_for('static', filename='js/libs/pdf.js') }}"></script>
-<!--<script src="pdf.js"></script>-->
 
 <script type="text/javascript">
   var DEFAULT_URL = "{{ url_for('serve_book', book_id=pdffile, book_format='pdf') }}";
   var PDFWORKER_LOCATION="{{ url_for('static', filename='js/libs/pdf.worker.js') }}";
-  // var IMAGE_LOCATION="{{ url_for('static', filename='css/../images') }}";
   var IMAGE_LOCATION="{{ url_for('static', filename='/images/') }}";
   var PDFWORKER_LOCATION_JS="{{ url_for('static', filename='js/libs/pdf.worker') }}";
 </script>
@@ -420,8 +415,7 @@ See https://github.com/adobe-type-tools/cmap-resources
 }
   </style>
   <div class="mozPrintCallback-dialog-box">
-    <!-- TODO: Localise the following strings -->
-    Preparing document for printing...
+    {{_('Preparing document for printing...')}}
     <div class="progress-row">
       <progress value="0" max="100"></progress>
       <span class="relative-progress">0%</span>
diff --git a/cps/templates/search_form.html b/cps/templates/search_form.html
index a665f656..a0eca539 100644
--- a/cps/templates/search_form.html
+++ b/cps/templates/search_form.html
@@ -141,10 +141,7 @@
         {% endif %}
 
         {% if c.datatype == 'rating' %}
-          <input type="number" min="1" max="5" step="1" class="form-control" name="{{ 'custom_column_' ~ c.id }}" id="{{ 'custom_column_' ~ c.id }}"
-            {% if book['custom_column_' ~ c.id]|length > 0 %}
-                value="{{ '%d' %  (book['custom_column_' ~ c.id][0].value / 2) }}"
-            {% endif %}>
+          <input type="number" min="1" max="5" step="1" class="form-control" name="{{ 'custom_column_' ~ c.id }}" id="{{ 'custom_column_' ~ c.id }}">
         {% endif %}
         </div>
       {% endfor %}
diff --git a/cps/ub.py b/cps/ub.py
index 80b4f354..f5822738 100644
--- a/cps/ub.py
+++ b/cps/ub.py
@@ -268,8 +268,8 @@ class Registration(Base):
     domain = Column(String)
 
     def __repr__(self):
-        return u"<Registration('{0}')>".format(self.domain)      
-        
+        return u"<Registration('{0}')>".format(self.domain)
+
 
 # Baseclass for representing settings in app.db with email server settings and Calibre database settings
 # (application settings)
@@ -555,7 +555,7 @@ def migrate_Database():
         conn.execute("ALTER TABLE Settings ADD column `config_use_google_drive` INTEGER DEFAULT 0")
         conn.execute("ALTER TABLE Settings ADD column `config_google_drive_folder` String DEFAULT ''")
         conn.execute("ALTER TABLE Settings ADD column `config_google_drive_watch_changes_response` String DEFAULT ''")
-        session.commit()        
+        session.commit()
     try:
         session.query(exists().where(Settings.config_columns_to_ignore)).scalar()
     except exc.OperationalError:
diff --git a/cps/web.py b/cps/web.py
index f6720fea..0a52947e 100644
--- a/cps/web.py
+++ b/cps/web.py
@@ -1072,7 +1072,7 @@ def get_publishers_json():
         json_dumps = json.dumps([dict(name=r.name.replace('|',',')) for r in entries])
         return json_dumps
 
-		
+
 @app.route("/get_tags_json", methods=['GET', 'POST'])
 @login_required_if_no_ano
 def get_tags_json():
@@ -1192,8 +1192,8 @@ def get_update_status():
             r = requests.get(repository_url + '/git/commits/' + commit['object']['sha'])
             r.raise_for_status()
             update_data = r.json()
-        except requests.exceptions.HTTPError as ex:
-            status['error'] = _(u'HTTP Error') + ' ' + str(ex)
+        except requests.exceptions.HTTPError as e:
+            status['error'] = _(u'HTTP Error') + ' ' + str(e)
         except requests.exceptions.ConnectionError:
             status['error'] = _(u'Connection error')
         except requests.exceptions.Timeout:
diff --git a/cps/worker.py b/cps/worker.py
index 91794642..3dd7a68c 100644
--- a/cps/worker.py
+++ b/cps/worker.py
@@ -108,7 +108,7 @@ class emailbase():
                     self.transferSize = len(strg)
                     lock.release()
                     for i in range(0, self.transferSize, chunksize):
-                        if type(strg) == bytes:
+                        if isinstance(strg, bytes):
                             self.sock.send((strg[i:i+chunksize]))
                         else:
                             self.sock.send((strg[i:i + chunksize]).encode('utf-8'))
@@ -455,6 +455,8 @@ class WorkerThread(threading.Thread):
         except (smtplib.SMTPException) as e:
             if hasattr(e, "smtp_error"):
                 text = e.smtp_error.replace("\n",'. ')
+            elif hasattr(e, "message"):
+                text = e.message
             else:
                 text = ''
             self._handleError(u'Error sending email: ' + text)
@@ -501,10 +503,13 @@ class StderrLogger(object):
         self.logger = web.app.logger
 
     def write(self, message):
-        if message == '\n':
-            self.logger.debug(self.buffer)
-            print(self.buffer)
-            self.buffer = ''
-        else:
-            self.buffer += message
+        try:
+            if message == '\n':
+                self.logger.debug(self.buffer)
+                print(self.buffer)
+                self.buffer = ''
+            else:
+                self.buffer += message
+        except:
+            pass
 
diff --git a/test/Calibre-Web TestSummary.html b/test/Calibre-Web TestSummary.html
index 358b7b0e..eb381c0a 100644
--- a/test/Calibre-Web TestSummary.html	
+++ b/test/Calibre-Web TestSummary.html	
@@ -30,15 +30,15 @@
 
 <div id='header_parameters' class='row text-center report-parameters'>
     <div class="col-xs-6 col-md-4">
-        <p class='text-justify attribute'><strong>Start Time:</strong> 2018-12-28 13:43:29.420375</p>
+        <p class='text-justify attribute'><strong>Start Time:</strong> 2019-01-14 19:29:43.924290</p>
 
     </div>
     <div class="col-xs-6 col-md-4">
-        <p class='text-justify attribute'><strong>Stop Time:</strong> 2018-12-28 13:43:30.101176</p>
+        <p class='text-justify attribute'><strong>Stop Time:</strong> 2019-01-14 20:13:57.436630</p>
 
     </div>
     <div class="col-xs-6 col-md-4">
-        <p class='text-justify attribute'><strong>Duration:</strong> 0:00:00.680801</p>
+        <p class='text-justify attribute'><strong>Duration:</strong> 0:44:13.512340</p>
 
     </div>
 </div>
@@ -95,99 +95,195 @@
         <td>Skip</td>
         <td>View</td>
     </tr>
-    <tr class='errorClass'>
-    <td>test_helper.calibre_helper</td>
-    <td class="text-center">13</td>
-    <td class="text-center">10</td>
-    <td class="text-center">1</td>
-    <td class="text-center">1</td>
-    <td class="text-center">1</td>
+    <tr class='skipClass'>
+    <td>test_opds_feed.test_opds_feed</td>
+    <td class="text-center">16</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">16</td>
     <td class="text-center">
-        <a onclick="showClassDetail('c1', 13)">Detail</a>
+        <a onclick="showClassDetail('c1', 16)">Detail</a>
     </td>
 </tr>
-<tr id='pt1.1' class='hiddenRow bg-success'>
+<tr id='st1.1' class='none bg-warning'>
     <td>
-        <div class='testcase'>test_author_sort</div>
-    </td>
-    <td colspan='6' align='center'>PASS</td>
-</tr>
-<tr id='et1.2' class='none bg-info'>
-    <td>
-        <div class='testcase'>test_author_sort_comma</div>
+        <div class='testcase'>test_opds</div>
     </td>
     <td colspan='6'>
         <div class="text-center">
-            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et1.2')">ERROR</a>
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.1')">SKIP</a>
         </div>
         <!--css div popup start-->
-        <div id='div_et1.2' class="popup_window test_output" style="display:none;">
+        <div id='div_st1.1' class="popup_window test_output" style="display:none;">
             <div class='close_button pull-right'>
                 <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
-                        onclick="document.getElementById('div_et1.2').style.display='none'"><span
+                        onclick="document.getElementById('div_st1.1').style.display='none'"><span
                         aria-hidden="true">&times;</span></button>
             </div>
             <div class="text-left pull-left">
-                <pre class="text-left">et1.2: Traceback (most recent call last):
-  File "/home/matthias/Entwicklung/calibre-web-test/test/test_helper.py", line 70, in test_author_sort_comma
-    print ('ssus' % d)
-NameError: global name 'd' is not defined</pre>
+                <pre class="text-left">st1.1: Not Implemented</pre>
             </div>
             <div class="clearfix"></div>
         </div>
         <!--css div popup end-->
     </td>
 </tr>
-<tr id='pt1.3' class='hiddenRow bg-success'>
+<tr id='st1.2' class='none bg-warning'>
     <td>
-        <div class='testcase'>test_author_sort_junior</div>
-    </td>
-    <td colspan='6' align='center'>PASS</td>
-</tr>
-<tr id='pt1.4' class='hiddenRow bg-success'>
-    <td>
-        <div class='testcase'>test_author_sort_oneword</div>
-    </td>
-    <td colspan='6' align='center'>PASS</td>
-</tr>
-<tr id='pt1.5' class='hiddenRow bg-success'>
-    <td>
-        <div class='testcase'>test_author_sort_roman</div>
-    </td>
-    <td colspan='6' align='center'>PASS</td>
-</tr>
-<tr id='pt1.6' class='hiddenRow bg-success'>
-    <td>
-        <div class='testcase'>test_check_Limit_Length</div>
-    </td>
-    <td colspan='6' align='center'>PASS</td>
-</tr>
-<tr id='pt1.7' class='hiddenRow bg-success'>
-    <td>
-        <div class='testcase'>test_check_char_replacement</div>
-    </td>
-    <td colspan='6' align='center'>PASS</td>
-</tr>
-<tr id='ft1.8' class='none bg-danger'>
-    <td>
-        <div class='testcase'>test_check_chinese_Characters</div>
+        <div class='testcase'>test_opds_author</div>
     </td>
     <td colspan='6'>
         <div class="text-center">
-            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft1.8')">FAIL</a>
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.2')">SKIP</a>
         </div>
         <!--css div popup start-->
-        <div id='div_ft1.8' class="popup_window test_output" style="display:none;">
+        <div id='div_st1.2' class="popup_window test_output" style="display:none;">
             <div class='close_button pull-right'>
                 <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
-                        onclick="document.getElementById('div_ft1.8').style.display='none'"><span
+                        onclick="document.getElementById('div_st1.2').style.display='none'"><span
                         aria-hidden="true">&times;</span></button>
             </div>
             <div class="text-left pull-left">
-                <pre class="text-left">ft1.8: Traceback (most recent call last):
-  File "/home/matthias/Entwicklung/calibre-web-test/test/test_helper.py", line 32, in test_check_chinese_Characters
-    self.assertEqual(helper.get_valid_filename(u'执一'), u'Zhi Yik')
-AssertionError: 'Zhi Yi' != u'Zhi Yik'</pre>
+                <pre class="text-left">st1.2: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.3' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_calibre_companion</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.3')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.3: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.4' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_cover</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.4')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.4' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.4').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.4: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.5' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_download_book</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.5')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.5' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.5').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.5: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.6' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_guest_user</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.6')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.6' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.6').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.6: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.7' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_hot</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.7')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.7' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.7').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.7: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.8' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_language</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.8')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.8' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.8').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.8: Not Implemented</pre>
             </div>
             <div class="clearfix"></div>
         </div>
@@ -196,7 +292,7 @@ AssertionError: 'Zhi Yi' != u'Zhi Yik'</pre>
 </tr>
 <tr id='st1.9' class='none bg-warning'>
     <td>
-        <div class='testcase'>test_check_degEUR_replacement</div>
+        <div class='testcase'>test_opds_non_admin</div>
     </td>
     <td colspan='6'>
         <div class="text-center">
@@ -217,25 +313,3715 @@ AssertionError: 'Zhi Yi' != u'Zhi Yik'</pre>
         <!--css div popup end-->
     </td>
 </tr>
-<tr id='pt1.10' class='hiddenRow bg-success'>
+<tr id='st1.10' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_paging</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.10')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.10' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.10').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.10: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.11' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_publisher</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.11')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.11' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.11').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.11: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.12' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_random</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.12')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.12' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.12').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.12: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.13' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_read_unread</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.13')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.13' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.13').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.13: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.14' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_search</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.14')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.14' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.14').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.14: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.15' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_series</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.15')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.15' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.15').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.15: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st1.16' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_opds_shelf_access</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st1.16')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st1.16' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st1.16').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st1.16: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='skipClass'>
+    <td>test_register.test_register</td>
+    <td class="text-center">4</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">4</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c2', 4)">Detail</a>
+    </td>
+</tr>
+<tr id='st2.1' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_login_with_password</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st2.1')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st2.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st2.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st2.1: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st2.2' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_registering_user</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st2.2')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st2.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st2.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st2.2: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st2.3' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_registering_user_fail</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st2.3')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st2.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st2.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st2.3: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st2.4' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_resend_password</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st2.4')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st2.4' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st2.4').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st2.4: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='passClass'>
+    <td>test_email_ssl.test_SSL_Python27</td>
+    <td class="text-center">4</td>
+    <td class="text-center">4</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c3', 4)">Detail</a>
+    </td>
+</tr>
+<tr id='pt3.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_SSL_None_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt3.1')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt3.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt3.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt3.1: /home/matthias/Entwicklung/calibre-web-test/test/ui_helper.py:621: FutureWarning: The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.
+  ret['edit_enable'] = bool(tree.find("//*[@class='glyphicon glyphicon-edit']"))
+/home/matthias/Entwicklung/calibre-web-test/test/ui_helper.py:664: FutureWarning: The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.
+  ret['read']= bool(tree.find("//*[@id='have_read_cb']"))
+Incomming connection 127.0.0.1:54218
+127.0.0.1:54218 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt3.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_SSL_STARTTLS_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt3.2')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt3.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt3.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt3.2: Incomming connection 127.0.0.1:54222
+127.0.0.1:54222 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt3.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_SSL_only</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt3.3')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt3.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt3.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt3.3: Incomming connection 127.0.0.1:54224
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 10234
+Received: MAIL
+Received: RCPT
+Received: DATA
+('Receiving message from:', ('127.0.0.1', 54224))
+('Message addressed from:', '&lt;name@host.com&gt; size=30379')
+('Message addressed to  :', ['a1@b.com'])
+('Message length        :', 30378)
+Received: QUIT</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt3.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_logging_email</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt3.4')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt3.4' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt3.4').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt3.4: Incomming connection 127.0.0.1:54226
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 10234
+Received: MAIL
+Received: RCPT
+Received: DATA
+('Receiving message from:', ('127.0.0.1', 54226))
+('Message addressed from:', '&lt;name@host.com&gt; size=507')
+('Message addressed to  :', ['a1@b.com'])
+('Message length        :', 506)
+Received: QUIT</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='failClass'>
+    <td>test_email_ssl.test_SSL_Python36</td>
+    <td class="text-center">4</td>
+    <td class="text-center">3</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c4', 4)">Detail</a>
+    </td>
+</tr>
+<tr id='pt4.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_SSL_None_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt4.1')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt4.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt4.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt4.1: Incomming connection 127.0.0.1:54318
+127.0.0.1:54318 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt4.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_SSL_STARTTLS_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt4.2')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt4.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt4.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt4.2: Incomming connection 127.0.0.1:54324
+127.0.0.1:54324 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt4.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_SSL_only</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt4.3')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt4.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt4.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt4.3: Incomming connection 127.0.0.1:54326
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 10234
+Received: MAIL
+Received: RCPT
+Received: DATA
+('Receiving message from:', ('127.0.0.1', 54326))
+('Message addressed from:', '&lt;name@host.com&gt; size=30788')
+('Message addressed to  :', ['a1@b.com'])
+('Message length        :', 30378)
+Received: QUIT</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='ft4.4' class='none bg-danger'>
+    <td>
+        <div class='testcase'>test_logging_email</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft4.4')">FAIL</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_ft4.4' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_ft4.4').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">ft4.4: Traceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_email_ssl.py", line 168, in test_logging_email
+    self.assertTrue(False, "Email logging not working in python3 testing")
+AssertionError: Email logging not working in python3 testing</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='failClass'>
+    <td>test_logging.test_logging_Python27</td>
+    <td class="text-center">5</td>
+    <td class="text-center">3</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">1</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c5', 5)">Detail</a>
+    </td>
+</tr>
+<tr id='pt5.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_debug_log</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt5.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_failed_login</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st5.3' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_failed_register</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st5.3')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st5.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st5.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st5.3: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt5.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_logfile_change</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='ft5.5' class='none bg-danger'>
+    <td>
+        <div class='testcase'>test_logfile_recover</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft5.5')">FAIL</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_ft5.5' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_ft5.5').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">ft5.5: Traceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_logging.py", line 165, in test_logfile_recover
+    self.assertTrue(logpath=="", "logfile config value is not empty after reseting to default")
+AssertionError: logfile config value is not empty after reseting to default</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='errorClass'>
+    <td>test_logging.test_logging_Python36</td>
+    <td class="text-center">5</td>
+    <td class="text-center">2</td>
+    <td class="text-center">1</td>
+    <td class="text-center">1</td>
+    <td class="text-center">1</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c6', 5)">Detail</a>
+    </td>
+</tr>
+<tr id='pt6.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_debug_log</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt6.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_failed_login</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st6.3' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_failed_register</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st6.3')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st6.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st6.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st6.3: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='ft6.4' class='none bg-danger'>
+    <td>
+        <div class='testcase'>test_logfile_change</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft6.4')">FAIL</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_ft6.4' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_ft6.4').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">ft6.4: Traceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_logging.py", line 137, in test_logfile_change
+    self.assertTrue(os.path.isfile(os.path.join(CALIBRE_WEB_PATH, 'hü lo','lö g')))
+AssertionError: False is not true</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='et6.5' class='none bg-info'>
+    <td>
+        <div class='testcase'>test_logfile_recover</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et6.5')">ERROR</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_et6.5' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_et6.5').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">et6.5: Traceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_logging.py", line 148, in test_logfile_recover
+    os.makedirs(os.path.join(CALIBRE_WEB_PATH, 'hü lo'))
+  File "/usr/lib/python2.7/os.py", line 157, in makedirs
+    mkdir(name, mode)
+OSError: [Errno 17] File exists: '/home/matthias/Entwicklung/calibre-web/h\xc3\xbc lo'</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='skipClass'>
+    <td>test_edit_books_gdrive.test_edit_books_gdrive</td>
+    <td class="text-center">22</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">22</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c7', 22)">Detail</a>
+    </td>
+</tr>
+<tr id='st7.1' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_database_errors</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.1')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.1: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.2' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_delete_book</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.2')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.2: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.3' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_delete_format</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.3')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.3: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.4' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_author</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.4')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.4' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.4').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.4: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.5' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_category</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.5')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.5' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.5').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.5: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.6' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_comments</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.6')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.6' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.6').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.6: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.7' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_custom_bool</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.7')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.7' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.7').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.7: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.8' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_custom_rating</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.8')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.8' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.8').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.8: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.9' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_custom_single_select</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.9')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.9' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.9').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.9: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.10' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_custom_text</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.10')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.10' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.10').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.10: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.11' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_language</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.11')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.11' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.11').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.11: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.12' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_publisher</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.12')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.12' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.12').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.12: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.13' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_publishing_date</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.13')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.13' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.13').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.13: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.14' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_rating</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.14')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.14' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.14').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.14: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.15' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_series</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.15')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.15' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.15').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.15: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.16' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_title</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.16')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.16' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.16').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.16: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.17' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_author</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.17')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.17' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.17').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.17: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.18' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_language</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.18')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.18' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.18').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.18: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.19' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_publisher</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.19')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.19' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.19').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.19: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.20' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_series</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.20')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.20' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.20').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.20: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.21' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_tag</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.21')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.21' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.21').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.21: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st7.22' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_upload_cover_hdd</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st7.22')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st7.22' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st7.22').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st7.22: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='skipClass'>
+    <td>test_anonymous.test_anonymous_Python27</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">1</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c8', 1)">Detail</a>
+    </td>
+</tr>
+<tr id='st8.1' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_anonymous_user</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st8.1')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st8.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st8.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st8.1: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='skipClass'>
+    <td>test_anonymous.test_anonymous_Python36</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">1</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c9', 1)">Detail</a>
+    </td>
+</tr>
+<tr id='st9.1' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_anonymous_user</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st9.1')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st9.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st9.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st9.1: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='errorClass'>
+    <td>unittest.loader.ModuleImportFailure</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c10', 1)">Detail</a>
+    </td>
+</tr>
+<tr id='et10.1' class='none bg-info'>
+    <td>
+        <div class='testcase'>test</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et10.1')">ERROR</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_et10.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_et10.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">et10.1: ImportError: Failed to import test module: parameterized.test
+Traceback (most recent call last):
+  File "/usr/lib/python2.7/unittest/loader.py", line 254, in _find_tests
+    module = self._get_module_from_name(name)
+  File "/usr/lib/python2.7/unittest/loader.py", line 232, in _get_module_from_name
+    __import__(name)
+  File "/usr/local/lib/python2.7/dist-packages/gevent/builtins.py", line 96, in __import__
+    result = _import(*args, **kwargs)
+  File "/home/matthias/Entwicklung/calibre-web-test/test/parameterized/test.py", line 4, in &lt;module&gt;
+    import mock
+  File "/usr/local/lib/python2.7/dist-packages/gevent/builtins.py", line 96, in __import__
+    result = _import(*args, **kwargs)
+ImportError: No module named mock</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='skipClass'>
+    <td>test_user_template.test_user_template_Python27</td>
+    <td class="text-center">15</td>
+    <td class="text-center">12</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">3</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c11', 15)">Detail</a>
+    </td>
+</tr>
+<tr id='pt11.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_author_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_best_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_category_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_detail_random_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_hot_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_language_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st11.7' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_limit_book_languages</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st11.7')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st11.7' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st11.7').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st11.7: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st11.8' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_mature_content_settings</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st11.8')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st11.8' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st11.8').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st11.8: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt11.9' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_publisher_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.10' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_random_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.11' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_read_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.12' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_recent_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.13' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_series_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt11.14' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_sorted_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st11.15' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_ui_language_settings</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st11.15')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st11.15' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st11.15').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st11.15: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='skipClass'>
+    <td>test_user_template.test_user_template_Python36</td>
+    <td class="text-center">15</td>
+    <td class="text-center">12</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">3</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c12', 15)">Detail</a>
+    </td>
+</tr>
+<tr id='pt12.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_author_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_best_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_category_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_detail_random_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_hot_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_language_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st12.7' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_limit_book_languages</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st12.7')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st12.7' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st12.7').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st12.7: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st12.8' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_mature_content_settings</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st12.8')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st12.8' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st12.8').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st12.8: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt12.9' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_publisher_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.10' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_random_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.11' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_read_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.12' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_recent_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.13' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_series_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt12.14' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_sorted_user_template</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st12.15' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_ui_language_settings</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st12.15')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st12.15' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st12.15').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st12.15: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='skipClass'>
+    <td>test_updater.test_updater</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">1</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c13', 1)">Detail</a>
+    </td>
+</tr>
+<tr id='st13.1' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_updater</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st13.1')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st13.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st13.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st13.1: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='skipClass'>
+    <td>test_cli.test_cli_Python27</td>
+    <td class="text-center">6</td>
+    <td class="text-center">5</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">1</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c14', 6)">Detail</a>
+    </td>
+</tr>
+<tr id='pt14.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_already_started</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt14.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_cli_SSL_files</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt14.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_cli_different_folder</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt14.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_cli_different_settings_database</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st14.5' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_cli_gdrive_location</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st14.5')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st14.5' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st14.5').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st14.5: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt14.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_environ_port_setting</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='skipClass'>
+    <td>test_cli.test_cli_Python36</td>
+    <td class="text-center">6</td>
+    <td class="text-center">5</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">1</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c15', 6)">Detail</a>
+    </td>
+</tr>
+<tr id='pt15.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_already_started</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt15.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_cli_SSL_files</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt15.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_cli_different_folder</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt15.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_cli_different_settings_database</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st15.5' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_cli_gdrive_location</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st15.5')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st15.5' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st15.5').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st15.5: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt15.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_environ_port_setting</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='failClass'>
+    <td>test_shelf.test_shelf_Python27</td>
+    <td class="text-center">7</td>
+    <td class="text-center">6</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c16', 7)">Detail</a>
+    </td>
+</tr>
+<tr id='pt16.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_delete_book_of_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt16.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_private_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt16.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_public_private_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt16.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_public_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt16.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_rename_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='ft16.6' class='none bg-danger'>
+    <td>
+        <div class='testcase'>test_shelf_database_change</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft16.6')">FAIL</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_ft16.6' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_ft16.6').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">ft16.6: Traceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_shelf.py", line 315, in test_shelf_database_change
+    self.assertIsNone('Not Implemented', 'Database change')
+AssertionError: Database change</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt16.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_shelf_long_name</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='failClass'>
+    <td>test_shelf.test_shelf_Python36</td>
+    <td class="text-center">7</td>
+    <td class="text-center">6</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c17', 7)">Detail</a>
+    </td>
+</tr>
+<tr id='pt17.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_delete_book_of_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt17.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_private_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt17.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_public_private_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt17.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_public_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt17.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_rename_shelf</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='ft17.6' class='none bg-danger'>
+    <td>
+        <div class='testcase'>test_shelf_database_change</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft17.6')">FAIL</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_ft17.6' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_ft17.6').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">ft17.6: Traceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_shelf.py", line 315, in test_shelf_database_change
+    self.assertIsNone('Not Implemented', 'Database change')
+AssertionError: Database change</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt17.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_shelf_long_name</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='passClass'>
+    <td>test_login.test_login_Python27</td>
+    <td class="text-center">7</td>
+    <td class="text-center">7</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c18', 7)">Detail</a>
+    </td>
+</tr>
+<tr id='pt18.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_capital_letters_user_unicode_password_passwort</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt18.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_delete_admin</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt18.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_empty_password</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt18.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_locale_select</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt18.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_protected</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt18.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_unicode_user_space_end_passwort</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt18.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_user_with_space_passwort_end_space</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='passClass'>
+    <td>test_login.test_login_Python36</td>
+    <td class="text-center">7</td>
+    <td class="text-center">7</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c19', 7)">Detail</a>
+    </td>
+</tr>
+<tr id='pt19.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_capital_letters_user_unicode_password_passwort</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt19.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_delete_admin</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt19.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_empty_password</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt19.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_locale_select</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt19.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_protected</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt19.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_unicode_user_space_end_passwort</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt19.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_login_user_with_space_passwort_end_space</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='failClass'>
+    <td>test_ebook_convert.test_ebook_convert_Python27</td>
+    <td class="text-center">11</td>
+    <td class="text-center">10</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c20', 11)">Detail</a>
+    </td>
+</tr>
+<tr id='pt20.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_SSL_smtp_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt20.1')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt20.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt20.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt20.1: Incomming connection 127.0.0.1:58448
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 1234
+Incomming connection 127.0.0.1:58450</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt20.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_STARTTLS_smtp_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt20.2')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt20.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt20.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt20.2: Incomming connection 127.0.0.1:58452
+Received: EHLO</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt20.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_deactivate</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt20.3')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt20.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt20.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt20.3: 127.0.0.1:58452 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='ft20.4' class='none bg-danger'>
+    <td>
+        <div class='testcase'>test_convert_email</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft20.4')">FAIL</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_ft20.4' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_ft20.4').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">ft20.4: Incomming connection 127.0.0.1:58456
+Received: EHLO
+Incomming connection 127.0.0.1:58458
+Received: EHLOTraceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_ebook_convert.py", line 220, in test_convert_email
+    self.assertEqual(ret[-1]['result'], 'Finished')
+AssertionError: 'Failed' != 'Finished'</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt20.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_failed_and_email</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt20.5')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt20.5' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt20.5').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt20.5: Incomming connection 127.0.0.1:58460
+Received: EHLO</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt20.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_only</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt20.6')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt20.6' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt20.6').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt20.6: Incomming connection 127.0.0.1:58462
+Received: EHLO
+127.0.0.1:58462 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt20.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_parameter</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt20.8' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_wrong_excecutable</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt20.9' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_email_failed</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt20.9')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt20.9' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt20.9').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt20.9: Incomming connection 127.0.0.1:58466
+Received: EHLO
+127.0.0.1:58466 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt20.10' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_email_only</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt20.10')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt20.10' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt20.10').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt20.10: Incomming connection 127.0.0.1:58468
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 10234
+Received: MAIL
+Received: RCPT
+Received: DATA
+('Receiving message from:', ('127.0.0.1', 58468))
+('Message addressed from:', '&lt;name@host.com&gt; size=507')
+('Message addressed to  :', ['a1@b.com'])
+('Message length        :', 506)
+Received: QUIT
+Incomming connection 127.0.0.1:58470
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 10234
+Received: MAIL
+Received: RCPT
+Received: DATA
+('Receiving message from:', ('127.0.0.1', 58470))
+('Message addressed from:', '&lt;name@host.com&gt; size=30783')
+('Message addressed to  :', ['a1@b.com'])
+('Message length        :', 30782)
+Received: QUIT</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt20.11' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_kindle_send_not_configured</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='failClass'>
+    <td>test_ebook_convert.test_ebook_convert_Python36</td>
+    <td class="text-center">11</td>
+    <td class="text-center">10</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c21', 11)">Detail</a>
+    </td>
+</tr>
+<tr id='pt21.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_SSL_smtp_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt21.1')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt21.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt21.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt21.1: Incomming connection 127.0.0.1:58560
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 1234
+Incomming connection 127.0.0.1:58562</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt21.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_STARTTLS_smtp_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt21.2')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt21.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt21.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt21.2: Incomming connection 127.0.0.1:58564
+Received: EHLO</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt21.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_deactivate</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt21.3')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt21.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt21.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt21.3: 127.0.0.1:58564 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='ft21.4' class='none bg-danger'>
+    <td>
+        <div class='testcase'>test_convert_email</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft21.4')">FAIL</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_ft21.4' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_ft21.4').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">ft21.4: Incomming connection 127.0.0.1:58570
+Received: EHLO
+Incomming connection 127.0.0.1:58572
+Received: EHLOTraceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_ebook_convert.py", line 220, in test_convert_email
+    self.assertEqual(ret[-1]['result'], 'Finished')
+AssertionError: 'Failed' != 'Finished'</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt21.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_failed_and_email</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt21.5')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt21.5' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt21.5').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt21.5: Incomming connection 127.0.0.1:58574
+Received: EHLO</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt21.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_only</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt21.6')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt21.6' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt21.6').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt21.6: Incomming connection 127.0.0.1:58576
+Received: EHLO
+127.0.0.1:58576 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt21.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_parameter</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt21.8' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_convert_wrong_excecutable</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt21.9' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_email_failed</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt21.9')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt21.9' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt21.9').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt21.9: Incomming connection 127.0.0.1:58580
+Received: EHLO
+127.0.0.1:58580 Timeouted</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt21.10' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_email_only</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt21.10')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt21.10' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt21.10').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt21.10: Incomming connection 127.0.0.1:58582
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 10234
+Received: MAIL
+Received: RCPT
+Received: DATA
+('Receiving message from:', ('127.0.0.1', 58582))
+('Message addressed from:', '&lt;name@host.com&gt; size=522')
+('Message addressed to  :', ['a1@b.com'])
+('Message length        :', 505)
+Received: QUIT
+Incomming connection 127.0.0.1:58584
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 10234
+Received: MAIL
+Received: RCPT
+Received: DATA
+('Receiving message from:', ('127.0.0.1', 58584))
+('Message addressed from:', '&lt;name@host.com&gt; size=31197')
+('Message addressed to  :', ['a1@b.com'])
+('Message length        :', 30782)
+Received: QUIT</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt21.11' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_kindle_send_not_configured</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='passClass'>
+    <td>test_visiblilitys.calibre_web_visibilitys_Python27</td>
+    <td class="text-center">17</td>
+    <td class="text-center">17</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c22', 17)">Detail</a>
+    </td>
+</tr>
+<tr id='pt22.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_about</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_SMTP_Settings</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_add_user</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_password</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_authors</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_category</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_hot</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.8' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_language</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.9' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_publisher</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.10' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_rated</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.11' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_read</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.12' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_series</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.13' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_sorted</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.14' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_checked_logged_in</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.15' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_random_books_available</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.16' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_user_email_available</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt22.17' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_user_visibility_sidebar</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='passClass'>
+    <td>test_visiblilitys.calibre_web_visibilitys_Python36</td>
+    <td class="text-center">17</td>
+    <td class="text-center">17</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c23', 17)">Detail</a>
+    </td>
+</tr>
+<tr id='pt23.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_about</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_SMTP_Settings</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_add_user</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_password</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_authors</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_category</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_hot</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.8' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_language</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.9' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_publisher</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.10' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_rated</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.11' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_read</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.12' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_series</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.13' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_admin_change_visibility_sorted</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.14' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_checked_logged_in</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.15' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_random_books_available</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.16' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_user_email_available</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt23.17' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_user_visibility_sidebar</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr class='failClass'>
+    <td>test_edit_books.test_edit_books_Python27</td>
+    <td class="text-center">23</td>
+    <td class="text-center">11</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">11</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c24', 23)">Detail</a>
+    </td>
+</tr>
+<tr id='st24.1' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_database_errors</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.1')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.1: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st24.2' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_delete_book</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.2')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.2: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st24.3' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_delete_format</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.3')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.3: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt24.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_author</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt24.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_category</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt24.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_comments</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt24.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_custom_bool</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt24.8' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_custom_rating</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt24.9' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_custom_single_select</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt24.10' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_custom_text</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt24.11' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_language</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt24.12' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_publisher</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st24.13' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_publishing_date</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.13')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.13' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.13').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.13: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt24.14' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_rating</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt24.15' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_series</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='ft24.16' class='none bg-danger'>
+    <td>
+        <div class='testcase'>test_edit_title</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft24.16')">FAIL</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_ft24.16' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_ft24.16').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">ft24.16: Traceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_edit_books.py", line 128, in test_edit_title
+    self.assertEqual('The camicdemo', books[1][8]['title'])
+AssertionError: 'The camicdemo' != '\n          '</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st24.17' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_rename_uppercase_lowercase</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.17')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.17' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.17').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.17: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st24.18' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_author</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.18')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.18' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.18').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.18: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st24.19' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_language</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.19')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.19' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.19').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.19: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st24.20' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_publisher</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.20')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.20' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.20').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.20: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st24.21' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_series</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.21')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.21' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.21').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.21: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st24.22' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_tag</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.22')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.22' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.22').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.22: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st24.23' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_upload_cover_hdd</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st24.23')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st24.23' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st24.23').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st24.23: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='failClass'>
+    <td>test_edit_books.test_edit_books_Python36</td>
+    <td class="text-center">23</td>
+    <td class="text-center">11</td>
+    <td class="text-center">1</td>
+    <td class="text-center">0</td>
+    <td class="text-center">11</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c25', 23)">Detail</a>
+    </td>
+</tr>
+<tr id='st25.1' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_database_errors</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.1')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.1: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st25.2' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_delete_book</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.2')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.2: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st25.3' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_delete_format</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.3')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.3' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.3').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.3: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt25.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_author</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt25.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_category</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt25.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_comments</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt25.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_custom_bool</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt25.8' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_custom_rating</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt25.9' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_custom_single_select</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt25.10' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_custom_text</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt25.11' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_language</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt25.12' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_publisher</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='st25.13' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_edit_publishing_date</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.13')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.13' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.13').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.13: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt25.14' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_rating</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt25.15' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_edit_series</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='ft25.16' class='none bg-danger'>
+    <td>
+        <div class='testcase'>test_edit_title</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft25.16')">FAIL</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_ft25.16' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_ft25.16').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">ft25.16: Traceback (most recent call last):
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_edit_books.py", line 128, in test_edit_title
+    self.assertEqual('The camicdemo', books[1][8]['title'])
+AssertionError: 'The camicdemo' != '\n          '</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st25.17' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_rename_uppercase_lowercase</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.17')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.17' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.17').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.17: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st25.18' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_author</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.18')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.18' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.18').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.18: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st25.19' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_language</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.19')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.19' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.19').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.19: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st25.20' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_publisher</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.20')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.20' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.20').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.20: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st25.21' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_series</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.21')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.21' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.21').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.21: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st25.22' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_typeahead_tag</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.22')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.22' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.22').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.22: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='st25.23' class='none bg-warning'>
+    <td>
+        <div class='testcase'>test_upload_cover_hdd</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_st25.23')">SKIP</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_st25.23' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_st25.23').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">st25.23: Not Implemented</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='passClass'>
+    <td>test_email_STARTTLS.test_STARTTLS_Python27</td>
+    <td class="text-center">2</td>
+    <td class="text-center">2</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c26', 2)">Detail</a>
+    </td>
+</tr>
+<tr id='pt26.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_STARTTLS</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt26.1')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt26.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt26.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt26.1: Incomming connection 127.0.0.1:47924
+Incomming connection 127.0.0.1:47926
+Received: EHLO
+Received: STARTTLS
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 10234
+Received: MAIL
+Received: RCPT
+Received: DATA
+('Receiving message from:', ('127.0.0.1', 47926))
+('Message addressed from:', '&lt;name@host.com&gt; size=30378')
+('Message addressed to  :', ['a1@b.com'])
+('Message length        :', 30377)
+Received: QUIT</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt26.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_STARTTLS_SSL_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt26.2')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt26.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt26.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt26.2: Incomming connection 127.0.0.1:47928</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='passClass'>
+    <td>test_email_STARTTLS.test_STARTTLS_Python36</td>
+    <td class="text-center">2</td>
+    <td class="text-center">2</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c27', 2)">Detail</a>
+    </td>
+</tr>
+<tr id='pt27.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_STARTTLS</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt27.1')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt27.1' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt27.1').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt27.1: Incomming connection 127.0.0.1:48016
+Incomming connection 127.0.0.1:48018
+Received: EHLO
+Received: STARTTLS
+Received: EHLO
+Received: AUTH
+User: name@host.com, Password: 10234
+Received: MAIL
+Received: RCPT
+Received: DATA
+('Receiving message from:', ('127.0.0.1', 48018))
+('Message addressed from:', '&lt;name@host.com&gt; size=30786')
+('Message addressed to  :', ['a1@b.com'])
+('Message length        :', 30376)
+Received: QUIT</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr id='pt27.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_STARTTLS_SSL_setup_error</div>
+    </td>
+    <td colspan='6'>
+        <div class="text-center">
+            <a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_pt27.2')">PASS</a>
+        </div>
+        <!--css div popup start-->
+        <div id='div_pt27.2' class="popup_window test_output" style="display:none;">
+            <div class='close_button pull-right'>
+                <button type="button" class="close" aria-label="Close" onfocus='this.blur();'
+                        onclick="document.getElementById('div_pt27.2').style.display='none'"><span
+                        aria-hidden="true">&times;</span></button>
+            </div>
+            <div class="text-left pull-left">
+                <pre class="text-left">pt27.2: Incomming connection 127.0.0.1:48022</pre>
+            </div>
+            <div class="clearfix"></div>
+        </div>
+        <!--css div popup end-->
+    </td>
+</tr>
+<tr class='passClass'>
+    <td>test_helper.calibre_helper</td>
+    <td class="text-center">13</td>
+    <td class="text-center">13</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">0</td>
+    <td class="text-center">
+        <a onclick="showClassDetail('c28', 13)">Detail</a>
+    </td>
+</tr>
+<tr id='pt28.1' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_author_sort</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt28.2' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_author_sort_comma</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt28.3' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_author_sort_junior</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt28.4' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_author_sort_oneword</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt28.5' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_author_sort_roman</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt28.6' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_check_Limit_Length</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt28.7' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_check_char_replacement</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt28.8' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_check_chinese_Characters</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt28.9' class='hiddenRow bg-success'>
+    <td>
+        <div class='testcase'>test_check_degEUR_replacement</div>
+    </td>
+    <td colspan='6' align='center'>PASS</td>
+</tr>
+<tr id='pt28.10' class='hiddenRow bg-success'>
     <td>
         <div class='testcase'>test_check_doubleS</div>
     </td>
     <td colspan='6' align='center'>PASS</td>
 </tr>
-<tr id='pt1.11' class='hiddenRow bg-success'>
+<tr id='pt28.11' class='hiddenRow bg-success'>
     <td>
         <div class='testcase'>test_check_finish_Dot</div>
     </td>
     <td colspan='6' align='center'>PASS</td>
 </tr>
-<tr id='pt1.12' class='hiddenRow bg-success'>
+<tr id='pt28.12' class='hiddenRow bg-success'>
     <td>
         <div class='testcase'>test_check_high23</div>
     </td>
     <td colspan='6' align='center'>PASS</td>
 </tr>
-<tr id='pt1.13' class='hiddenRow bg-success'>
+<tr id='pt28.13' class='hiddenRow bg-success'>
     <td>
         <div class='testcase'>test_check_umlauts</div>
     </td>
@@ -244,17 +4030,17 @@ AssertionError: 'Zhi Yi' != u'Zhi Yik'</pre>
 
     <tr id='total_row' class="text-center bg-grey">
         <td>Total</td>
-        <td>13</td>
-        <td>10</td>
-        <td>1</td>
-        <td>1</td>
-        <td>1</td>
+        <td>253</td>
+        <td>165</td>
+        <td>9</td>
+        <td>2</td>
+        <td>77</td>
         <td>&nbsp;</td>
     </tr>
 </table>
 
 <script>
-    drawCircle(10, 1, 1, 1);
+    drawCircle(165, 9, 2, 77);
 </script>
 
 </div>