pretty much working version
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Thu, 1 Sep 2011 14:19:55 +0000 (16:19 +0200)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Mon, 5 Sep 2011 09:30:48 +0000 (11:30 +0200)
41 files changed:
.classpath
AndroidManifest.xml
assets/www/css/book_text.css
assets/www/css/style.css
assets/www/img/cc-by-sa.png [new file with mode: 0644]
assets/www/img/cover.jpg [new file with mode: 0644]
assets/www/img/icon-Book.png [new file with mode: 0644]
assets/www/img/icon-BookText.png [new file with mode: 0644]
assets/www/img/icon-Bookmarks.png [new file with mode: 0644]
assets/www/img/icon-Last.png [new file with mode: 0644]
assets/www/img/icon-Tag.png [new file with mode: 0644]
assets/www/img/logo-fnp.png [new file with mode: 0644]
assets/www/img/logo-wl.png [new file with mode: 0644]
assets/www/img/procent.png [new file with mode: 0644]
assets/www/img/wl-logo.png [deleted file]
assets/www/index.html
assets/www/js/assetcopy.js [deleted file]
assets/www/js/catalogue.js
assets/www/js/dbput.js [new file with mode: 0644]
assets/www/js/downloader.js
assets/www/js/filerepo.js [new file with mode: 0644]
assets/www/js/history.js [new file with mode: 0644]
assets/www/js/links.js [new file with mode: 0644]
assets/www/js/main.js [new file with mode: 0644]
assets/www/js/menu.js [new file with mode: 0644]
assets/www/js/menuinterface.js [new file with mode: 0644]
assets/www/js/phonegap-1.0.0.js [new file with mode: 0644]
assets/www/js/phonegap.0.9.4.js [deleted file]
assets/www/js/view.js [new file with mode: 0644]
default.properties
gen/pl/org/nowoczesnapolska/wlmobi/R.java
initial/initdb.py [deleted file]
initial/initial.json [deleted file]
libs/phonegap-1.0.0.jar [new file with mode: 0644]
libs/phonegap.0.9.4.jar [deleted file]
res/xml/plugins.xml [new file with mode: 0644]
src/pl/org/nowoczesnapolska/wlmobi/AssetCopy.java [deleted file]
src/pl/org/nowoczesnapolska/wlmobi/Catalogue.java
src/pl/org/nowoczesnapolska/wlmobi/DBPut.java [new file with mode: 0644]
src/pl/org/nowoczesnapolska/wlmobi/Downloader.java
src/pl/org/nowoczesnapolska/wlmobi/MenuInterface.java [new file with mode: 0644]

index f523e53..1a630a7 100644 (file)
@@ -3,6 +3,6 @@
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="src" path="gen"/>
        <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
-       <classpathentry kind="lib" path="libs/phonegap.0.9.4.jar"/>
+       <classpathentry kind="lib" path="libs/phonegap-1.0.0.jar"/>
        <classpathentry kind="output" path="bin"/>
 </classpath>
index b92e718..66f2e50 100644 (file)
@@ -1,43 +1,32 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="pl.org.nowoczesnapolska.wlmobi"
-      android:versionCode="1"
-      android:versionName="1.0">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
+      package="pl.org.nowoczesnapolska.wlmobi" android:versionName="1.0" android:versionCode="2">
+    <supports-screens
+       android:largeScreens="true"
+       android:normalScreens="true"
+       android:smallScreens="true"
+       android:resizeable="true"
+       android:anyDensity="true"
+       />
 
-<supports-screens
-android:largeScreens="true"
-android:normalScreens="true"
-android:smallScreens="true"
-android:resizeable="true"
-android:anyDensity="true"
-/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />   
+   
 
-<uses-permission android:name="android.permission.INTERNET" />
-<!-- 
-<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-<uses-permission android:name="android.permission.CAMERA" />
-<uses-permission android:name="android.permission.VIBRATE" />
-<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
-<uses-permission android:name="android.permission.READ_PHONE_STATE" />
-<uses-permission android:name="android.permission.RECEIVE_SMS" />
-<uses-permission android:name="android.permission.RECORD_AUDIO" />
-<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
-<uses-permission android:name="android.permission.READ_CONTACTS" />
-<uses-permission android:name="android.permission.WRITE_CONTACTS" />
--->
-
-    <application android:icon="@drawable/icon" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden" android:debuggable="true">
+    <application android:icon="@drawable/icon" android:label="@string/app_name"
+       android:debuggable="true">
         <activity android:name=".Catalogue"
-                  android:label="@string/app_name"
-                  android:configChanges="orientation|keyboardHidden">
+                  android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-
     </application>
-</manifest>
\ No newline at end of file
+
+       <uses-sdk android:minSdkVersion="7" />
+
+</manifest> 
\ No newline at end of file
index cc54ce3..a59cdbb 100644 (file)
 
 #book-text blockquote {
     font-size: 0.875em;
+    margin: 0 0 0 1em;
 }
 
 /* ============= */
index b1f0022..eee8406 100644 (file)
@@ -1,16 +1,25 @@
 body {
        padding: 0;
        margin: 0;
-       font-size: 12px;
+       /*font-size: 13px;*/
        font-family: verdana, arial, helvetica, sans-serif;
 }
 
 .spinner {
-       padding: 5em;
+       margin-top: 4em;
+       text-align: center;
+}
+#spinnertext {
+       margin-top: 2em;
+       font-size: .7em;
+}
+
+#cover {
+       width: 100%;
 }
 
 #searchbox {
-       font-size: 1.5em;
+       font-size: 1.25em;
        background: #84bf2a;
        padding: 5px;
        display: none;
@@ -27,42 +36,56 @@ body {
        width:80px;
        float:right;
 }
-#logo {
-       padding: 1em;
-       text-align:center;
-}
 #content {
     padding: 10px;
 }
-.buttons a {
+.button {
        display: block;
-       background: #b6e372;
-    font-size: 20px;
-       padding: 1em;
+       background: #ddd;
+    font-size: 1.25em;
+       padding: .5em;
+       margin-bottom: .5em;
        border-radius: 8px;
     -webkit-border-radius: 8px;
-       /*margin: 0.5em;*/
-       text-align:center;
        color: #295158;
-       text-decoration: none;
 }
-
-.book-list a {
-    display: block;
-    background: #eee;
-    font-size: 16px;
-    padding: 15px;
-    margin: 5px;
-    border-radius: 8px;
-    -webkit-border-radius: 8px;
-    text-align:center;
-    color: #295158;
-    text-decoration: none;
+.button img {
+       margin-right: .5em;
+       vertical-align: middle;
+}
+.button .sub {
+       font-size: .7em;
+}
+.button .note {
+       font-size: .5em;
+       text-align: right;
+}
+.button img {
+       float:left;
+}
+.button .label {
+       margin-left: 32px;
 }
 
-a.Book {
+.button-Book {
+    background: #ccc;
+}
+.button-BookText {
     background: #ccc;
 }
+.delete {
+       float: right;
+       width: 24px;
+
+       background: #464646;
+    font-size: 1.25em;
+       padding: .5em;
+       margin-bottom: .5em;
+       border-radius: 8px;
+    -webkit-border-radius: 8px;
+       color: white;
+       text-align: center;
+}
 
 h1 .subheader {
        display:block;
@@ -74,11 +97,24 @@ h1 .subheader {
 
 
 .footer {
-       color: #888;
-       border-top: 1px solid #888;
-       margin-top: 2em;
-       font-size: 0.9em;
+       font-size: 0.75em;
+       text-align: center;
+}
+
+.clr {
+       clear: both;
+}
+
+
+.info dt {
+       display: inline;
+       font-weight: bold;
+}
+
+.info dd {
+       display: inline;
+       margin: 0;
 }
-.footer a {
-       color: #888;
+.info img {
+       max-width: 100%;
 }
\ No newline at end of file
diff --git a/assets/www/img/cc-by-sa.png b/assets/www/img/cc-by-sa.png
new file mode 100644 (file)
index 0000000..12c70b6
Binary files /dev/null and b/assets/www/img/cc-by-sa.png differ
diff --git a/assets/www/img/cover.jpg b/assets/www/img/cover.jpg
new file mode 100644 (file)
index 0000000..343c352
Binary files /dev/null and b/assets/www/img/cover.jpg differ
diff --git a/assets/www/img/icon-Book.png b/assets/www/img/icon-Book.png
new file mode 100644 (file)
index 0000000..3c18284
Binary files /dev/null and b/assets/www/img/icon-Book.png differ
diff --git a/assets/www/img/icon-BookText.png b/assets/www/img/icon-BookText.png
new file mode 100644 (file)
index 0000000..60d38ee
Binary files /dev/null and b/assets/www/img/icon-BookText.png differ
diff --git a/assets/www/img/icon-Bookmarks.png b/assets/www/img/icon-Bookmarks.png
new file mode 100644 (file)
index 0000000..4cb6b9c
Binary files /dev/null and b/assets/www/img/icon-Bookmarks.png differ
diff --git a/assets/www/img/icon-Last.png b/assets/www/img/icon-Last.png
new file mode 100644 (file)
index 0000000..81d1b46
Binary files /dev/null and b/assets/www/img/icon-Last.png differ
diff --git a/assets/www/img/icon-Tag.png b/assets/www/img/icon-Tag.png
new file mode 100644 (file)
index 0000000..db88d3a
Binary files /dev/null and b/assets/www/img/icon-Tag.png differ
diff --git a/assets/www/img/logo-fnp.png b/assets/www/img/logo-fnp.png
new file mode 100644 (file)
index 0000000..8720140
Binary files /dev/null and b/assets/www/img/logo-fnp.png differ
diff --git a/assets/www/img/logo-wl.png b/assets/www/img/logo-wl.png
new file mode 100644 (file)
index 0000000..a18e950
Binary files /dev/null and b/assets/www/img/logo-wl.png differ
diff --git a/assets/www/img/procent.png b/assets/www/img/procent.png
new file mode 100644 (file)
index 0000000..2e0d73e
Binary files /dev/null and b/assets/www/img/procent.png differ
diff --git a/assets/www/img/wl-logo.png b/assets/www/img/wl-logo.png
deleted file mode 100644 (file)
index b623d8b..0000000
Binary files a/assets/www/img/wl-logo.png and /dev/null differ
index adcf584..fe6e17c 100644 (file)
@@ -3,10 +3,21 @@
 <head>
     <title>Wolne Lektury</title>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <script type="text/javascript" charset="utf-8" src="js/phonegap.0.9.4.js"></script>
-    <script type="text/javascript" charset="utf-8" src="js/assetcopy.js"></script>
+
+    <script type="text/javascript" charset="utf-8" src="js/phonegap-1.0.0.js"></script>
+
+    <script type="text/javascript" charset="utf-8" src="js/dbput.js"></script>
     <script type="text/javascript" charset="utf-8" src="js/downloader.js"></script>
+    <script type="text/javascript" charset="utf-8" src="js/menuinterface.js"></script>
+
+    <script type="text/javascript" charset="utf-8" src="js/main.js"></script>
     <script type="text/javascript" charset="utf-8" src="js/catalogue.js"></script>
+    <script type="text/javascript" charset="utf-8" src="js/filerepo.js"></script>
+    <script type="text/javascript" charset="utf-8" src="js/history.js"></script>
+    <script type="text/javascript" charset="utf-8" src="js/links.js"></script>
+    <script type="text/javascript" charset="utf-8" src="js/menu.js"></script>
+    <script type="text/javascript" charset="utf-8" src="js/view.js"></script>
+
     <link rel="stylesheet" type="style/css" href="css/style.css" />
     <link rel="stylesheet" type="style/css" href="css/book_text.css" />
 </head>
     </form>
 </div>
 
+<img id="cover" src="img/cover.jpg" />
 <div id="content">
-
-<div class="spinner">
-<img src="img/spinner.gif" /><br/>
-<span id="spinnertext">Ładowanie</span
+<p class='footer'>Uruchamianie…</p>
 </div>
 
 </div>
-<div class="footer">Wersja testowa (0.1 beta). Kontakt: <a href='mailto:wolnelektury@nowoczesnapolska.org.pl'>wolnelektury@nowoczesnapolska.org.pl</a></div>
-
 
+<div id='nothing'></div>
 </body>   
 </html>
\ No newline at end of file
diff --git a/assets/www/js/assetcopy.js b/assets/www/js/assetcopy.js
deleted file mode 100644 (file)
index e7e0ac5..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-function AssetCopy() {
-}
-AssetCopy.prototype.copy = function(asset, target, overwrite, win, fail) {
-       if(overwrite==false) overwrite="false";
-       else overwrite="true";
-       PhoneGap.exec(win, fail, "AssetCopy", "copy", [asset, target, overwrite]);
-};
-PhoneGap.addConstructor(function() {
-       PhoneGap.addPlugin("assetcopy", new AssetCopy());
-       PluginManager.addService("AssetCopy","pl.org.nowoczesnapolska.wlmobi.AssetCopy");
-});
\ No newline at end of file
index db9c069..268c817 100644 (file)
-// FIXME: htmlescape strings!
-
-var VERSION = '0.1';
-
-
-var FileRepo = new function() {
-       /* API for files repository */
-       var self = this;
-       const WL_URL = 'http://www.wolnelektury.pl';
-       this.root = null;
-
-       this.init = function(success, error) {
-               self.initRoot(success);
-       };
-
-       this.initRoot = function(success) {
-               // fs size is irrelevant, PERSISTENT is futile (on Android, at least)
-               window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fs) {
-                       console.log('local fs found: ' + fs.root.fullPath);
-                       self.root = fs.root;
-                       success && success();
-               }, function() {
-                       console.log('local fs not found');
-                       success && success();
-               });
-       };
-
-
-       this.withLocalHtml = function(book_id, success, error) {
-               console.log('info:withLocalHtml: id:' + book_id);
-               View.spinner('Otwieranie treści utworu');
-               if (!self.root)
-                       error && error('info:withLocalHtml: no local html: no usable filesystem');
-
-               var url = "file://" + self.root.fullPath + "/html/" + book_id;
-               console.log('info:withLocalHtml: local ajax: ' + url);
-               var xhr = new XMLHttpRequest();
-               xhr.open('GET', url, true);
-               xhr.onload = function() {
-                       console.log('info:withLocalHtml: fetched by local ajax: ' + url);
-                       success && success(xhr.responseText);
-               }
-               xhr.onerror = error;
-               xhr.send();
-       };
-
-
-       // downloads HTML file from server, saves it in cache and calls success with file contents
-       this.withHtmlFromServer = function(book_id, success, error) {
-               console.log('info:withHtmlFromServer: id:' + book_id);
-               // read file from WL
-               Catalogue.withBook(book_id, function(book) {
-                       var url = WL_URL + book.html_file;
-                       console.log('info:withHtmlFromServer: fetching url: ' + url);
-
-                       View.spinner("Pobieranie treści utworu z sieci");
-
-                       if (self.root) {
-                               window.plugins.downloader.downloadFile(url, self.root.fullPath + "/html/", ""+book_id, true,
-                                       function(data){
-                                               console.log('info:withHtmlFromServer: loaded file from WL');
-                                               self.withLocalHtml(book_id, success, error);
-                                       }, function(data) {
-                                               console.log('error downloading file!')
-                                               error && error("error: "+data);
-                                       });
-                       }
-                       else {
-                               // there's no big fs, so we'll just get the text from AJAX
-                               console.log('info:withHtmlFromServer: ajax: ' + url);
-                               var xhr = new XMLHttpRequest();
-                               xhr.open(url);
-                               xhr.onload = function() {
-                                       console.log('info:withHtmlFromServer: fetched by ajax: ' + url);
-                                       success && success(xhr.responseText);
-                               }
-                               xhr.send();
-                       }
-               });             
-       };
-       
-       // calls the callback with contents of the HTML file for a given book,
-       // loaded from the server and cached locally
-       this.withHtml = function(id, success, error) {
-               console.log('info:withHtml: id:' + id);
-               self.withLocalHtml(id, success, function() {
-                       self.withHtmlFromServer(id, success, error);
-               });
-       };
-};
-
-
-var View = new function() {
-       var self = this;
-       self.minOffset = 1000;
-       //self.element
-       self.categories = {
-                       autor: 'Autorzy', 
-                       rodzaj: 'Rodzaje',
-                       gatunek: 'Gatunki',
-                       epoka: 'Epoki'
-       };
-       
-
-       self.init = function() {
-               console.log('View.init');
-
-               self.viewStack = [];
-               self.current;
-               navigator.app.overrideBackbutton(); 
-               document.addEventListener("backbutton", View.goBack, true);
-
-               self._searchbox = document.getElementById("searchbox");
-               self._searchinput = document.getElementById("search");
-               self._content = document.getElementById("content");
-
-               self.enter(location.href);
-       };
-
-
-       this.sanitize = function(text) {
-               return text.replace(/&/g, "&amp;").replace(/</g, "&lt;");
-       };
-
-       this.showSearch = function() {
-               self._searchbox.style.display = "block";
-       };
-
-       this.hideSearch = function() {
-               self._searchbox.style.display = "none";
-       };
-
-       this.spinner = function(text) {
-               if (!text)
-                       text = "Ładowanie";
-               self._content.innerHTML = "<div class='spinner'><img src='img/spinner.gif' /><br/><span id='spinnertext'>" + text +"</span></div>";
-               scroll(0, 0);
-       };
+var DB_VER = '0.9.15';
 
-       this.content = function(text) {
-               console.log('content');
+var WL_INITIAL = WL + '/media/api/mobile/initial/initial.db';
+var WL_UPDATE = WL + '/api/changes/SINCE.json?book_fields=author,html,parent,parent_number,sort_key,title' +
+               '&tag_fields=books,category,name,sort_key' +
+               '&tag_categories=author,epoch,genre,kind';
 
-               self._content.innerHTML = '';
-               self._content.innerHTML = text;
-               scroll(0, 0);
-       }
-       
-       this.enter = function(url) {
-               console.log('View.enter: ' + url);
-
-               self.current = url;
-               var view = 'Index';
-               var arg = null;
-
-               var query_start = url.indexOf('?');
-               if (query_start != -1) {
-                       var slash_index = url.indexOf('/', query_start + 1);
-                       if (slash_index != -1) {
-                               view = url.substr(query_start + 1, slash_index - query_start - 1);
-                               arg = url.substr(slash_index + 1);
-                       }
-                       else {
-                               view = url.substr(query_start + 1);
-                       }
-               }
-               console.log('View.enter: ' + view + ' ' + arg);
-               self['enter' + view](arg);
-       }
-       
-       this.enterIndex = function(arg) {
-               console.log('enterIndex');
-               self.showSearch();
-               var html = "<div class='book-list'>";
-               for (category in self.categories)
-                       html += self.a('Category', category) + self.categories[category] + "</a>\n"; 
-               html += "</div>" +
-                               "<p id='logo'><img src='img/wl-logo.png' alt='Wolne Lektury' /><br/>\n" +
-                               "szkolna biblioteka internetowa" +
-                               //"<br/>v. " + VERSION +
-                               "</p>";
-               self.content(html);
-       };
-       
-       this.enterBook = function(id) {
-               id = parseInt(id);
-               console.log('enterBook: ' + id);
-               self.showSearch();
-
-               Catalogue.withBook(id, function(book) {
-               Catalogue.withChildren(id, function(children) {
-               Catalogue.withAuthors(id, function(authors) {
-                       var html = "<h1><span class='subheader'>";
-                       var auths = [];
-                       for (a in authors) auths.push(authors[a].name);
-                       html += auths.join(", ");
-                       html += "</span>" + book.title + "</h1>\n";
-                       if (book.html_file) {
-                               html += "<p class='buttons'>" + self.a('BookText', id) + "Czytaj tekst</a></p>";
-                       }
-                       if (children.length) {
-                               html += "<div class='book-list'>";
-                               for (c in children) {
-                                       child = children[c];
-                                       html += self.a('Book', child.id) + child.title + "</a>\n";
-                               }
-                               html += "</div>";
-                       }
-                       self.content(html);                             
-               });
-               });
-               });
-       }
-       
-       this.enterBookText = function(id) {
-               id = parseInt(id);
-               self.spinner("Otwieranie utworu");
-               console.log('enterBookText: ' + id);
-               self.hideSearch();
-               
-               FileRepo.withHtml(id, function(data) {
-                       self.content(data);
-               });
-       }
-
-       this.enterTag = function(id) {
-               id = parseInt(id);
-               console.log('enterTag: ' + id);
-               self.showSearch();
-
-               self.spinner("Otwieranie listy utworów");
-
-               Catalogue.withTag(id, function(tag) {
-                       var html = "<h1><span class='subheader upper'>" + tag.category + ': </span>' + tag.name + "</h1>\n";
-                       html += "<div class='book-list'>";
-                       if (tag._books) {
-                               Catalogue.withBooks(tag._books, function(books) {
-                                       for (var i in books) {
-                                               var book = books[i];
-                                               html += self.a('Book', book.id) + book.title + "</a>\n";
-                                       }
-                                       html += "</div>";
-                                       self.content(html);
-                               });
-                       }
-               });
-       };
-
-
-       this.enterCategory = function(category) {
-               console.log('enterCategory: ' + category);
-               self.spinner("Otwieranie katalogu");
-               self.showSearch();
-
-               Catalogue.withCategory(category, function(tags) {
-                       var html = "<h1>" + self.categories[category] + "</h1>\n";
-                       html += "<div class='book-list'>";
-                       for (i in tags) {
-                               tag = tags[i];
-                               html += self.a('Tag', tag.id) + tag.name + "</a>\n";
-                       }
-                       html += "</div>";
-                       self.content(html);
-               });
-       };
-
-
-
-       this.enterSearch = function(query) {
-               console.log('enterTag: ' + query);
-               self.showSearch();
-
-               var html = "<h1><span class='subheader'>Szukana fraza:</span>" + View.sanitize(query) + "</h1>\n";
 
-               if (query.length < 2) {
-                       html += "<p>Szukana fraza musi mieć co najmniej dwa znaki</p>";
-                       self.content(html);
-                       return;
-               }
-
-               Catalogue.withSearch(query, function(results) {
-                       if (results.length == 1) {
-                               self.enter(self.href(results[0].view, results[0].id));
-                               return;
-                       }
-                       if (results.length == 0) {
-                               html += "<p>Brak wyników wyszukiwania</p>";
-                       }
-                       else {
-                               html += "<div class='book-list'>";
-                               for (var i in results) {
-                                       var result = results[i];
-                                       html += self.a(result.view, result.id) + result.label + "</a>\n";
-                               }
-                               html += "</div>";
-                       }
-                       self.content(html);
-               });
-       };
 
+var categories = {'author': 'autor',
+              'epoch': 'epoka', 
+              'genre': 'gatunek', 
+              'kind': 'rodzaj', 
+              'theme': 'motyw'
+              }
 
-       /* search form submit callback */
-       this.search = function() {
-               self.goTo('?Search/' + self._searchinput.value);
-               return false;
-       }
-       
-       
-       this.href = function(view, par) {
-               return "?"+view+"/"+par;
-       };
-       
-       this.a = function(view, par) {
-               return "<a class='"+view+"' onclick='View.goTo(\"" + 
-                                       self.href(view, par).replace(/["']/g, "\\$&") + "\");'>";
-       };
-       
-       this.goTo = function(url) {
-               self.viewStack.push(self.current);
-               console.log('goTo: ' + url);
-               self.enter(url);
-       };
-       
-       this.goBack = function() {
-               if (self.viewStack.length > 0) {
-                       var url = self.viewStack.pop();
-                       console.log('goBack: ' + url);
-                       self.enter(url);
-               }
-               else {
-                       console.log('exiting');
-                       navigator.app.exitApp();
-               }
-       };
-}
+// FIXME: htmlescape strings!
 
 
-/*
 // for preparing sql statements
 // use like: 
 //   var s = new Sql("INSERT ... '{0}', '{1}' ...";
@@ -350,10 +32,10 @@ var Sql = function(scheme) {
        self.prepare = function() {
                var args = arguments;
                return self.text.replace(/{(\d+)}/g, function(match, number) {
-                       return self.sql_escape(args[number]);
+                       return self.sql_escape(args[parseInt(number)]);
                });
        }
-};*/
+};
 
 
 var Catalogue = new function() {
@@ -396,86 +78,79 @@ var Catalogue = new function() {
 
        /* check if DB needs updating and upload a fresh copy, if so */
        this.updateDB = function(success, error) {
-               var db_ver = '0.1.4';
-               if (window.localStorage.getItem('db_ver') == db_ver) {
+               var has_ver = window.localStorage.getItem('db_ver');
+               if (has_ver == DB_VER) {
                        console.log('db ok, skipping')
                        success && success();
                        return;
                }
 
                var done = function() {
-                       window.localStorage.setItem('db_ver', db_ver);
+                       FileRepo.clear();
+                       window.localStorage.setItem('db_ver', DB_VER);
                        console.log('db updated');
                        success && success();
                };
 
                // db initialize
                // this is Android-specific for now
-               var version = device.version.split('.')[0];
-               switch(version) {
-               case '1':
-                       self.upload_db_android1(done, error);
-                       break;
-               case '2':
-                       self.upload_db_android2(done, error);
-                       break;
-               case '3':
-               default:
-                       error && error('Błąd migracji: ' + err);
+               var android = device.version.split('.')[0];
+               if (android > 1) {
+                       self.upload_db_android(done, error);
+               } else {
+                       error && error("Nieobsługiwana wersja systemu. Wymagany Android>=2.0.");
                };
        };
 
 
-       this.upload_db_android1 = function(success, error) {
-               console.log('upload db for Android 1.x');
-               window.requestFileSystem(LocalFileSystem.APPLICATION, 0, function(fs) {
-                       window.plugins.assetcopy.copy("initial/wolnelektury.db",
-                                       fs.root.fullPath + "/databases/wolnelektury.db", true,
-                                       function(data) {
-                                               console.log('db upload successful');
-                                               success && success();
-                                       }, function(data) {
-                                               error && error("database upload error: " + data);
-                                       });
-               }, error);
+       this.upload_db_android = function(success, error) {
+               // TODO: this should be downloaded from teh net, not stored in res
+
+               console.log('upload db for Android 2.x+');
+               // upload databases description file
+
+               var dbname = "wolnelektury";
+               var db = window.openDatabase(dbname, "1.0", "WL Catalogue", 500000);
+               if (db) {
+                       console.log('db created successfully');
+                       DBPut.fetch(WL_INITIAL, function(data) {
+                               console.log('db fetch successful');
+                               success && success();
+                       }, function(data) {
+                               error && error('Błąd podczas pobierania bazy danych: ' + data);
+                       });
+               } else {
+                       error && error('Błąd podczas inicjowania bazy danych: ' + data);
+               }
        };
 
 
-       this.upload_db_android2 = function(success, error) {
-               console.log('upload db for Android 2.x');
-               window.requestFileSystem(LocalFileSystem.APPLICATION, 0, function(fs) {
-
-                       // upload databases description file
-                       window.plugins.assetcopy.copy("initial/Databases.db",
-                               fs.root.fullPath + "/app_database/Databases.db", true,
-                               function(data) {
-                                       console.log('db descriptior upload successful');
-
-                                       // upload the database file
-                                       window.plugins.assetcopy.copy("initial/0000000000000001.db",
-                                               fs.root.fullPath + "/app_database/file__0/0000000000000001.db", true,
-                                               function(data) {
-                                                       console.log('db upload successful');
-                                                       success && success();
-                                               }, function(data) {
-                                                       error && error("database upload error: " + data);
-                                               });
-
-                                       
-                               }, function(data) {
-                                       error && error("database descriptor upload error: " + data);
+       this.withState = function(callback) {
+               self.db.transaction(function(tx) {
+                       tx.executeSql("SELECT * FROM state", [], 
+                               function(tx, results) {
+                                       if (results.rows.length) {
+                                               callback(results.rows.item(0));
+                                       }
+                                       else {
+                                               callback({last_checked: 0});
+                                       }
                                });
-
-               }, error);
+               });
        };
 
 
-       this.withBook = function(id, callback) {
+       this.withBook = function(id, callback, error) {
                console.log('withBook '+id)
                self.db.transaction(function(tx) {
                        tx.executeSql("SELECT * FROM book WHERE id="+id, [], 
                                function(tx, results) {
-                                       callback(results.rows.item(0));
+                                       if (results.rows.length) {
+                                               callback(results.rows.item(0));
+                                       }
+                                       else {
+                                               error && error();
+                                       }
                                });
                });
        };
@@ -483,7 +158,7 @@ var Catalogue = new function() {
        this.withBooks = function(ids, callback) {
                console.log('withBooks ' + ids)
                self.db.transaction(function(tx) {
-                       tx.executeSql("SELECT * FROM book WHERE id IN ("+ids+") ORDER BY title", [], 
+                       tx.executeSql("SELECT * FROM book WHERE id IN ("+ids+") ORDER BY sort_key", [], 
                                function(tx, results) {
                                        var items = [];
                                        var count = results.rows.length;
@@ -495,29 +170,11 @@ var Catalogue = new function() {
                });
        };
 
-       this.withAuthors = function(id, callback) {
-               console.log('withAuthors ' + id);
 
-               self.db.transaction(function(tx) {
-                       tx.executeSql("SELECT t.name " +
-                                       "FROM book_tag bt LEFT JOIN tag t ON t.id=bt.tag " +
-                                       "WHERE bt.book="+id+" AND t.category='autor' " +
-                                       "ORDER BY t.sort_key", [], 
-                               function(tx, results) {
-                                       var tags = [];
-                                       var count = results.rows.length;
-                                       for (var i=0; i<count; ++i) {
-                                               tags.push(results.rows.item(i));
-                                       }
-                                       callback(tags);
-                               });
-               });
-       };
-       
        this.withChildren = function(id, callback) {
                console.log('withChildren ' + id)
                self.db.transaction(function(tx) {
-                       tx.executeSql("SELECT * FROM book WHERE parent="+id+" ORDER BY parent_number", [], 
+                       tx.executeSql("SELECT * FROM book WHERE parent="+id+" ORDER BY parent_number, sort_key", [], 
                                function(tx, results) {
                                        var books = [];
                                        var count = results.rows.length;
@@ -529,12 +186,17 @@ var Catalogue = new function() {
                });
        };
 
-       this.withTag = function(id, callback) {
+       this.withTag = function(id, callback, error) {
                console.log('withTag '+id)
                self.db.transaction(function(tx) {
                        tx.executeSql("SELECT * FROM tag WHERE id="+id, [], 
                                function(tx, results) {
-                                       callback(results.rows.item(0));
+                                       if (results.rows.length) {
+                                               callback(results.rows.item(0));
+                                       }
+                                       else {
+                                               error && error();
+                                       }
                                });
                });
        };
@@ -542,7 +204,7 @@ var Catalogue = new function() {
        this.withCategory = function(category, callback) {
                console.log('withCategory ' + category)
                self.db.transaction(function(tx) {
-                       tx.executeSql("SELECT * FROM tag WHERE category='"+category+"'", [], 
+                       tx.executeSql("SELECT * FROM tag WHERE category='"+category+"' ORDER BY sort_key", [], 
                                function(tx, results) {
                                        var items = [];
                                        var count = results.rows.length;
@@ -554,71 +216,10 @@ var Catalogue = new function() {
        };
 
 
-/*     this.withUnrelatedBooks = function(books, success) {
-               if (books.length == 0) return books;
-
-               var book_ids = {};
-               for (i in books) {
-                       book_ids[books[i].id] = true;
-               }
-               var new_books = [];
-
-               var addIfUnrelated = function(book) {
-                       var addIfUnrelated_wrapped = function(b) {
-                               if (b.parent) {
-                                       if (b.parent in book_ids) {
-                                               // go to next book
-                                               filterBooks();
-                                       }
-                                       else self.withBook(b.parent, addIfUnrelated_wrapped);
-                               }
-                               else {
-                                       new_books.push(book);
-                                       // go to next book
-                                       filterBooks();
-                               }
-                       };
-                       addIfUnrelated_wrapped(book);
-               };
-
-
-               var filterBooks = function() {
-                       console.log('filterBooks: ' + books.length);
-                       if (books.length) {
-                               addIfUnrelated(books.shift());
-                       }
-                       else {
-                               success && success(new_books);
-                       }
-               };
-               
-               filterBooks();
-       };
-
-
-       this.withBooksTagged = function(tag, callback, withChildren) {
-               self.db.transaction(function(tx) {
-                       tx.executeSql("SELECT book.* " +
-                                       "FROM book LEFT JOIN book_tag ON book_tag.book=book.id " +
-                                       "WHERE book_tag.tag="+tag+" ORDER BY book.title", [], 
-                               function(tx, results) {
-                                       var books = [];
-                                       var count = results.rows.length;
-                                       console.log('withBooksTagged('+tag+'): '+count);
-                                       for (var i=0; i<count; ++i) {
-                                               books.push(results.rows.item(i));
-                                       }
-                                       if (withChildren)
-                                               callback(books);
-                                       else self.withUnrelatedBooks(books, callback);
-                               });
-               });
-       };
-*/
-
        /* takes a query, returns a list of {view,id,label} objects to a callback */
        this.withSearch = function(term, callback) {
                console.log('searching...');
+               term =  term.replace(/^\s+|\s+$/g, '') ;
                var found = [];
 
                function booksFound(tx, results) {
@@ -628,8 +229,7 @@ var Catalogue = new function() {
                                var item = results.rows.item(i);
                                found.push({
                                        view: "Book",
-                                       id: item.id,
-                                       label: item.title
+                                       item: item
                                });
                        }
                };
@@ -641,8 +241,7 @@ var Catalogue = new function() {
                                var item = results.rows.item(i);
                                found.push({
                                        view: "Tag",
-                                       id: item.id,
-                                       label: item.name + ' (' + item.category + ')'
+                                       item: item
                                });
                        }
                        // TODO error handling
@@ -654,13 +253,13 @@ var Catalogue = new function() {
                // TODO pliterki, start of the word match
                self.db.transaction(function(tx) {
                        sql_term = self.sqlSanitize(term); // this is still insane, % and _
-                       tx.executeSql("SELECT id, title FROM book WHERE title LIKE '%"+sql_term+"%' ORDER BY title LIMIT 10", [],
-                       //tx.executeSql("SELECT id, title FROM book WHERE title REGEXP '.*"+sql_term+".*' ORDER BY title", [],
+                       tx.executeSql("SELECT * FROM book WHERE title LIKE '%"+sql_term+"%' ORDER BY sort_key LIMIT 10", [],
+                       //tx.executeSql("SELECT * FROM book WHERE title REGEXP '.*"+sql_term+".*' ORDER BY sort_key", [],
                                function(tx, results) {
                                        // save the books
                                        booksFound(tx, results);
                                        // and proceed to tags
-                                       tx.executeSql("SELECT id, name, category FROM tag WHERE name LIKE '%"+sql_term+"%' ORDER BY name LIMIT 10",
+                                       tx.executeSql("SELECT * FROM tag WHERE name LIKE '%"+sql_term+"%' ORDER BY sort_key LIMIT 10",
                                                        [], tagsFound);
                                },
                                function(err) {
@@ -670,58 +269,110 @@ var Catalogue = new function() {
                });
        };
 
-/*
-       // each book and tag in its own transaction
-       // TODO: error handling
-       self.parse = function(json, success, error) {
-               console.log('parsing');
+       self.chainSqls = function(sqls, success, error) {
+               self.db.transaction(function(tx) {
+                       var do_next = function() {
+                               if (sqls.length) {
+                                       var sql = sqls.shift();
+                                       console.log(sql);
+                                       tx.executeSql(sql, [], do_next, error);
+                               }
+                               else {
+                                       success && success();
+                               }
+                       }
+                       do_next();
+               });
+       };
+
+
+       self.update = function(data, success, error) {
+               var addBookSql = new Sql("\
+                       INSERT OR REPLACE INTO book \
+                               (id, title, html_file,  html_file_size, parent, parent_number, sort_key, pretty_size, authors) \
+                       VALUES \
+                               ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}')");
+               var addTagSql = new Sql("INSERT OR REPLACE INTO tag (id, category, name, sort_key, books) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}')");
+
                var sqls = [];
-               var addBookSql = new Sql("INSERT INTO book (id, title, html_file, html_file_size) VALUES ('{0}', '{1}', '{2}', '{3}')");
-               var addBookTagSql = new Sql("INSERT INTO book_tag (book, tag) VALUES ('{0}', '{1}')");
-               var addTagSql = new Sql("INSERT INTO tag (id, category, name) VALUES ('{0}', '{1}', '{2}')");
-
-               var bookValues = [];
-               var books = json.added.books;
-               while (books.length) {
-                       var book = books.shift();
-                       if (!book.html) book.html = '';
-                       if (!book.html_size) book.html_size = '';
-                       sqls.push(addBookSql.prepare(book.id, book.title, book.html, book.html_size));
-                       for (var t in book.tags) {
-                               sqls.push(addBookTagSql.prepare(book.id, book.tags[t]));
+
+               if (data.deleted) {
+                       for (i in data.deleted.books) {
+                               var book_id = data.deleted.books[i];
+                               sqls.push("DELETE FROM book WHERE id=" + book_id);
+                               FileRepo.deleteIfExists(book_id);
+                       }
+
+                       for (i in data.deleted.tags) {
+                               var tag_id = data.deleted.tags[i];
+                               sqls.push("DELETE FROM tag WHERE id=" + tag_id);
                        }
                }
-               console.log('ASSERT json.added.books.length=0: ' + json.added.books.length);
 
-               var categories = {author: 'autor', epoch: 'epoch', genre: 'genre', kind: 'kind', theme: 'motyw'};
-               var tags = json.added.tags;
-               while (tags.length) {
-                       var tag = tags.shift();
-                       sqls.push(addTagSql.prepare(tag.id, categories[tag.category], tag.name));
+               if (data.updated) {
+                       for (i in data.updated.books) {
+                               var book = data.updated.books[i];
+                               if (!book.html) book.html = {};
+                               if (!book.html.url) book.html.url = '';
+                               if (!book.html.size) book.html.size = '';
+                               if (!book.parent) book.parent = '';
+                               if (!book.parent_number) book.parent_number = '';
+                               var pretty_size = prettySize(book.html.size);
+                               sqls.push(addBookSql.prepare(
+                                       book.id, book.title, book.html.url, book.html.size,
+                                       book.parent, book.parent_number, book.sort_key, pretty_size, book.author
+                               ));
+                               FileRepo.deleteIfExists(book.id);
+                       }
+
+                       for (i in data.updated.tags) {
+                               var tag = data.updated.tags[i];
+                               var category = categories[tag.category];
+                               var books = tag.books.join(',');
+                               sqls.push(addTagSql.prepare(tag.id, category, tag.name, tag.sort_key, books));
+                       }
                }
 
-               self.chainSql(sqls, success, error);
-       }; */
-}
+               sqls.push("UPDATE state SET last_checked=" + data.time_checked);
 
+               self.chainSqls(sqls, success, error);
+       };
 
 
-function onLoad() {
-       console.log('onLoad');
-       document.addEventListener("deviceready", onDeviceReady, false);
-}
+       this.sync = function(success, error) {
+               self.withState(function(state) {
+                       var url = WL_UPDATE.replace("SINCE", state.last_checked); 
+                       console.log('sync: ' + url);
+                       var xhr = new XMLHttpRequest();
+                       xhr.open("GET", url);
+                       xhr.onload = function() {
+                               console.log('sync: fetched by ajax: ' + url);                   
+                               self.update(JSON.parse(xhr.responseText), success, error);
+                       }
+                       xhr.onerror = function(e) {
+                               error && error("Błąd aktualizacji bazy danych." + e);
+                       }
+                       xhr.send();
+               });
+       };
 
-function onDeviceReady() {
-       console.log('onDeviceReady');
-       var error = function(err) { alert(err); };
-       Catalogue.init(
-               function() {
-                       console.log('after catalogue.init');
-                       FileRepo.init(
-                               function() {
-                                       console.log('after FileRepo.init');
-                                       View.init();
-                               },
-                               error);
-               }, error);
+       this.updateLocal = function() {
+               FileRepo.withLocal(function(local) {
+                       self.db.transaction(function(tx) {
+                               tx.executeSql("UPDATE book SET _local=0", [], function(tx, results) {
+                                       ll = local.length;
+                                       var ids = [];
+                                       for (var i = 0; i < ll; i ++) {
+                                               ids.push(local[i].name);
+                                       }
+                                       ids = ids.join(',');
+                                       tx.executeSql("UPDATE book SET _local=1 where id in ("+ids+")"); 
+                               });
+                       });
+               }, function() {
+                       self.db.transaction(function(tx) {
+                               tx.executeSql("UPDATE book SET _local=0");
+                       });
+               });
+       };
 }
diff --git a/assets/www/js/dbput.js b/assets/www/js/dbput.js
new file mode 100644 (file)
index 0000000..cfdbede
--- /dev/null
@@ -0,0 +1,34 @@
+/**
+ *  
+ * @return Object literal singleton instance of DBPut
+ */
+var DBPut = { 
+       /**
+     * @param asset Path to the asset (relative to assets dir)
+     * @param target Path to DB file (relative to app db files dir)
+     * @param overwrite
+     * @param win Success callback
+     * @param fail Error callback
+     */
+       put: function(asset, target, overwrite, win, fail) {
+               if (overwrite==false) overwrite="false";
+               else overwrite="true";
+               return PhoneGap.exec(
+                       win, 
+                       fail, 
+                       "DBPut", 
+                       "put", 
+                       [asset, target, overwrite]
+               );
+       },
+       fetch: function(url, win, fail) {
+               return PhoneGap.exec(
+                       win, 
+                       fail, 
+                       "DBPut", 
+                       "fetch", 
+                       [url]
+               );
+       }
+};
+
index f5b6f2b..15edf30 100644 (file)
@@ -1,15 +1,19 @@
-function Downloader() {
-}
-Downloader.prototype.downloadFile = function(fileUrl,dirName,fileName,overwrite,win,fail) {
- if(overwrite==false) overwrite="false";
- else overwrite="true";
- PhoneGap.exec(win, fail, "Downloader", "downloadFile", [fileUrl,dirName,fileName,overwrite]);
+/**
+ *  
+ * @return Object literal singleton instance of Downloader
+ */
+var Downloader = { 
+       /**
+     * @param fileUrl
+     * @param dirName
+     * @param fileName
+     * @param overwrite
+     * @param win
+     * @param fail
+     */
+       downloadFile: function(fileUrl,dirName,fileName,overwrite,win,fail) {
+               if(overwrite==false) overwrite="false";
+               else overwrite="true";
+               return PhoneGap.exec(win, fail, "Downloader", "downloadFile", [fileUrl,dirName,fileName,overwrite]);
+       }
 };
-PhoneGap.addConstructor(function() {
- PhoneGap.addPlugin("downloader", new Downloader());
- PluginManager.addService("Downloader","pl.org.nowoczesnapolska.wlmobi.Downloader");
-});
\ No newline at end of file
diff --git a/assets/www/js/filerepo.js b/assets/www/js/filerepo.js
new file mode 100644 (file)
index 0000000..0bd196b
--- /dev/null
@@ -0,0 +1,119 @@
+var FileRepo = new function() {
+       /* API for files repository */
+       var self = this;
+       this.root = null;
+
+       this.init = function(success, error) {
+               self.initRoot(success);
+       };
+
+       this.initRoot = function(success) {
+               // fs size is irrelevant, PERSISTENT is futile (on Android, at least)
+               window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fs) {
+                       console.log('local fs found: ' + fs.root.fullPath);
+                       self.root = fs.root;
+                       success && success();
+               }, function() {
+                       console.log('local fs not found');
+                       success && success();
+               });
+       };
+
+
+       this.withLocalHtml = function(book_id, success, error) {
+               console.log('info:withLocalHtml: id:' + book_id);
+               View.spinner('Otwieranie treści utworu');
+               if (!self.root)
+                       error && error('info:withLocalHtml: no local html: no usable filesystem');
+
+               var url = "file://" + self.root.fullPath + "/html/" + book_id;
+               console.log('info:withLocalHtml: local ajax: ' + url);
+               var xhr = new XMLHttpRequest();
+               xhr.open('GET', url, true);
+               xhr.onload = function() {
+                       console.log('info:withLocalHtml: fetched by local ajax: ' + url);
+                       success && success(xhr.responseText);
+               }
+               xhr.onerror = error;
+               xhr.send();
+       };
+
+
+       this.withLocal = function(win, fail) {
+               if (self.root) {
+                       self.root.getDirectory('html', {}, function(dir) {
+                               var reader = dir.createReader();
+                               reader.readEntries(win, fail);
+                       });
+               }
+               else {
+                       win && win([]);
+               }
+       }
+
+
+       // downloads HTML file from server, saves it in cache and calls success with file contents
+       this.withHtmlFromServer = function(book_id, success, error) {
+               console.log('info:withHtmlFromServer: id:' + book_id);
+               // read file from WL
+               Catalogue.withBook(book_id, function(book) {
+                       var url = WL + book.html_file;
+                       console.log('info:withHtmlFromServer: fetching url: ' + url);
+
+                       View.spinner("Pobieranie treści utworu z sieci");
+
+                       if (self.root) {
+                               Downloader.downloadFile(url, self.root.fullPath + "/html/", ""+book_id, true,
+                                       function(data){
+                                               console.log('info:withHtmlFromServer: loaded file from WL');
+                                               self.withLocalHtml(book_id, success, error);
+                                       }, function(data) {
+                                               console.log('error downloading file!')
+                                               error && error("error: " + data);
+                                       });
+                       }
+                       else {
+                               // there's no big fs, so we'll just get the text from AJAX
+                               console.log('info:withHtmlFromServer: ajax: ' + url);
+                               var xhr = new XMLHttpRequest();
+                               xhr.open("GET", url);
+                               xhr.onload = function() {
+                                       console.log('info:withHtmlFromServer: fetched by ajax: ' + url);
+                                       success && success(xhr.responseText);
+                               }
+                               xhr.onerror = function() {
+                                       console.log('error downloading file!')
+                                       error && error("error: " + data);
+                               }
+                               xhr.send();
+                       }
+               });             
+       };
+       
+       // calls the callback with contents of the HTML file for a given book,
+       // loaded from the server and cached locally
+       this.withHtml = function(id, success, error) {
+               console.log('info:withHtml: id:' + id);
+               self.withLocalHtml(id, success, function() {
+                       self.withHtmlFromServer(id, success, error);
+               });
+       };
+
+
+       this.clear = function() {
+               FileRepo.withLocal(function(local) {
+                       for (i in local) {
+                               local[i].remove();
+                       }
+               });
+       };
+
+
+       this.deleteIfExists = function(id) {
+               if (self.root) {
+                       self.root.getFile('html/' + id, {create: false}, function(f) {
+                               f.remove();
+                       });
+               }
+       }
+};
diff --git a/assets/www/js/history.js b/assets/www/js/history.js
new file mode 100644 (file)
index 0000000..a7c2f67
--- /dev/null
@@ -0,0 +1,96 @@
+
+var History = new function() {
+       var self = this;
+
+       self.init = function(success, error) {
+               console.log('History.init');
+
+               self.viewStack = [];
+               navigator.app.overrideBackbutton(); 
+               document.addEventListener("backbutton", History.goBack, true);
+
+               success && success();
+       };
+
+       self.visit = function(url, offset) {
+               offset = offset || 0;
+               self.viewStack.push(View.current);
+               console.log('History.visit: ' + url);
+               View.enter(url, offset);
+       };
+       
+       self.goBack = function() {
+               if (self.viewStack.length > 0) {
+                       var url = self.viewStack.pop();
+                       console.log('History.goBack: ' + url);
+                       View.enter(url);
+               }
+               else {
+                       console.log('History: exiting');
+                       navigator.app.exitApp();
+               }
+       };
+
+
+       self.lastRead = function() {
+               var last_read = window.localStorage.getItem('History.last_ids');
+               try {
+                       return last_read.split(';');
+               } catch (err) {
+                       return [];
+               }
+       };
+
+       self.addRead = function(id, offset) {
+               id = "" + id; // this should check if int
+               console.log("History.addRead: " + id);
+               var last_read = self.lastRead();
+               var lastly = last_read.indexOf(id);
+               if (lastly != -1) {
+                       last_read.splice(lastly, 1);
+               }
+               while (last_read.length >= 10) {
+                       last_read.pop();
+               }
+               last_read.unshift(id);
+               window.localStorage.setItem('History.last_ids', last_read.join(';'));
+       }
+
+
+       self.bookmarks = function() {
+               var bookmarks = window.localStorage.getItem('History.bookmarks');
+               try {
+                       return JSON.parse(bookmarks) || [];
+               } catch (err) {
+                       return [];
+               }
+       };
+
+       self.addBookmark = function(name) {
+               var id=(new Date).getTime();
+               console.log("History.addBookmark: " + id);
+
+               var bms = self.bookmarks();
+               bms.unshift({
+                       id: id,
+                       name: name,
+                       title: View.currentTitle,
+                       view: View.currentView,
+                       par: View.currentPar,
+                       offset: currentOffset()
+               });
+               window.localStorage.setItem('History.bookmarks', JSON.stringify(bms));
+       }
+
+       self.deleteBookmark = function(id) {
+               console.log("History.deleteBookmark: " + id);
+               var bms = self.bookmarks();
+               for (b in bms) {
+                       if (bms[b].id == id) {
+                               bms.splice(b, 1);
+                       }
+               }
+               window.localStorage.setItem('History.bookmarks', JSON.stringify(bms));
+               View.onBookmarkChange();
+       }
+}
diff --git a/assets/www/js/links.js b/assets/www/js/links.js
new file mode 100644 (file)
index 0000000..ff2bb12
--- /dev/null
@@ -0,0 +1,49 @@
+
+var Links = new function() {
+       var self = this;
+
+       self.href = function(view, par) {
+               return view+"/"+par;
+       };
+
+       self.button = function(view, par, text, offset) {
+               offset = offset || 0;
+               var html = "<div class='button button-"+view+"' onclick='History.visit(\"" + 
+                                       self.href(view, par).replace(/["']/g, "\\$&") + "\", "+offset+");'>";
+               icon = view;
+               if (icon != 'Book' && icon != 'Bookmarks' && icon != 'BookText' && 
+                       icon != 'Last' && icon != 'Tag') {
+                   icon = 'Tag';
+               }
+               html += "<img src='img/icon-" + icon + ".png' />";
+               html += "<div class='label'>" + text + "</div>";
+               html += "<div class='clr'></div>";
+               html += "</div>\n";
+               return html; 
+       };
+
+       self.bookLink = function(book) {
+               var target = 'Book';
+               var note = '';
+
+               if (book.html_file) {
+                       // this assumes that either book has a html XOR it has children
+                       target = 'BookText';
+                       note = "<div class='note'>";
+                       if (book._local)
+                               note += 'Pobrane';
+                       else {
+                               note += book.pretty_size;
+                       }
+                       note += "</div>";
+               }
+
+               return self.button(target, book.id,
+                               "<div class='sub'>" + book.authors + "</div>" +
+                               book.title + note);
+       };
+
+       self.deleteButton = function(id) {
+               return "<div class='delete' onClick='History.deleteBookmark(\""+id+"\");'>x</div>";
+       };
+}
diff --git a/assets/www/js/main.js b/assets/www/js/main.js
new file mode 100644 (file)
index 0000000..23eba54
--- /dev/null
@@ -0,0 +1,56 @@
+var VERSION = '1.0';
+var WL = 'http://www.wolnelektury.pl';
+
+
+function onLoad() {
+       console.log('onLoad');
+       document.addEventListener("deviceready", onDeviceReady, false);
+}
+
+function onDeviceReady() {
+       console.log('onDeviceReady');
+       var error = function(err) { alert(err); };
+
+       FileRepo.init(function() {
+               console.log('after FileRepo.init');
+               Catalogue.init(function() {
+                       console.log('after catalogue.init');
+                       History.init(function() {
+                               console.log('after history.init');
+                               View.init(function() {
+                                       Catalogue.sync(function() {
+                                               Catalogue.updateLocal();
+                                       }, error);
+                               }, error);
+                       }, error);
+               }, error);
+       });
+}
+
+
+var currentOffset = function() {
+       var scr = document.body.scrollTop;
+       var h = document.getElementById('nothing').offsetTop;
+       return scr/h;document.getElementById('nothing')
+};
+
+var setOffset = function(offset) {
+       var h = document.getElementById('nothing').offsetTop;
+       scroll(0, h*offset); 
+};
+
+
+var prettySize = function(size) {
+    if (!size) return "";
+    var units = ['B', 'KiB', 'MiB', 'GiB'];
+    size = size;
+    var unit = units.shift();
+    while (size > 1000 && units.length) {
+        size /= 1024;
+        unit = units.shift();
+    }
+    if (size < 10) {
+        return Math.round(size*10)/10 + ' ' + unit;
+    }
+    return Math.round(size) + ' ' + unit;
+}
diff --git a/assets/www/js/menu.js b/assets/www/js/menu.js
new file mode 100644 (file)
index 0000000..2e383a1
--- /dev/null
@@ -0,0 +1,24 @@
+
+var Menu = new function() {
+       var self = this;
+       var infoView = "ProjectInfo";
+
+       self.start = function() {
+               History.visit('');
+       };
+
+       self.info = function() {
+               History.visit(self.infoView + '/' + View.currentPar);
+       };
+
+       self.bookmark = function() {
+               var name = prompt('Nazwa zakładki');
+               if (name != null)
+                       History.addBookmark(name);
+       };
+
+       self.setInfoButton = function(view, label, enabled) {
+               self.infoView = view;
+               window.MenuInterface.setInfoButton(label, enabled);
+       };
+}
diff --git a/assets/www/js/menuinterface.js b/assets/www/js/menuinterface.js
new file mode 100644 (file)
index 0000000..aa8df52
--- /dev/null
@@ -0,0 +1,25 @@
+/**
+ *  
+ * @return Object literal singleton instance of MenuInterface
+ */
+var MenuInterface = { 
+       /**
+     * @param asset Path to the asset (relative to assets dir)
+     * @param target Path to DB file (relative to app db files dir)
+     * @param overwrite
+     * @param win Success callback
+     * @param fail Error callback
+     */
+       setInfoButton: function(label, enabled, win, fail) {
+               if (enabled == false) enabled = "false";
+               else enabled = "true";
+               return PhoneGap.exec(
+                       win, 
+                       fail, 
+                       "MenuInterface", 
+                       "setInfoButton", 
+                       [label, enabled]
+               );
+       },
+};
+
diff --git a/assets/www/js/phonegap-1.0.0.js b/assets/www/js/phonegap-1.0.0.js
new file mode 100644 (file)
index 0000000..751c52c
--- /dev/null
@@ -0,0 +1,4367 @@
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (typeof PhoneGap === "undefined") {
+
+/**
+ * The order of events during page load and PhoneGap startup is as follows:
+ *
+ * onDOMContentLoaded         Internal event that is received when the web page is loaded and parsed.
+ * window.onload              Body onload event.
+ * onNativeReady              Internal event that indicates the PhoneGap native side is ready.
+ * onPhoneGapInit             Internal event that kicks off creation of all PhoneGap JavaScript objects (runs constructors).
+ * onPhoneGapReady            Internal event fired when all PhoneGap JavaScript objects have been created
+ * onPhoneGapInfoReady        Internal event fired when device properties are available
+ * onDeviceReady              User event fired to indicate that PhoneGap is ready
+ * onResume                   User event fired to indicate a start/resume lifecycle event
+ * onPause                    User event fired to indicate a pause lifecycle event
+ * onDestroy                  Internal event fired when app is being destroyed (User should use window.onunload event, not this one).
+ *
+ * The only PhoneGap events that user code should register for are:
+ *      onDeviceReady
+ *      onResume
+ *
+ * Listeners can be registered as:
+ *      document.addEventListener("deviceready", myDeviceReadyListener, false);
+ *      document.addEventListener("resume", myResumeListener, false);
+ *      document.addEventListener("pause", myPauseListener, false);
+ */
+
+if (typeof(DeviceInfo) !== 'object') {
+    var DeviceInfo = {};
+}
+
+/**
+ * This represents the PhoneGap API itself, and provides a global namespace for accessing
+ * information about the state of PhoneGap.
+ * @class
+ */
+var PhoneGap = {
+    queue: {
+        ready: true,
+        commands: [],
+        timer: null
+    }
+};
+
+/**
+ * List of resource files loaded by PhoneGap.
+ * This is used to ensure JS and other files are loaded only once.
+ */
+PhoneGap.resources = {base: true};
+
+/**
+ * Determine if resource has been loaded by PhoneGap
+ *
+ * @param name
+ * @return
+ */
+PhoneGap.hasResource = function(name) {
+    return PhoneGap.resources[name];
+};
+
+/**
+ * Add a resource to list of loaded resources by PhoneGap
+ *
+ * @param name
+ */
+PhoneGap.addResource = function(name) {
+    PhoneGap.resources[name] = true;
+};
+
+/**
+ * Custom pub-sub channel that can have functions subscribed to it
+ * @constructor
+ */
+PhoneGap.Channel = function (type)
+{
+    this.type = type;
+    this.handlers = {};
+    this.guid = 0;
+    this.fired = false;
+    this.enabled = true;
+};
+
+/**
+ * Subscribes the given function to the channel. Any time that
+ * Channel.fire is called so too will the function.
+ * Optionally specify an execution context for the function
+ * and a guid that can be used to stop subscribing to the channel.
+ * Returns the guid.
+ */
+PhoneGap.Channel.prototype.subscribe = function(f, c, g) {
+    // need a function to call
+    if (f === null) { return; }
+
+    var func = f;
+    if (typeof c === "object" && typeof f === "function") { func = PhoneGap.close(c, f); }
+
+    g = g || func.observer_guid || f.observer_guid || this.guid++;
+    func.observer_guid = g;
+    f.observer_guid = g;
+    this.handlers[g] = func;
+    return g;
+};
+
+/**
+ * Like subscribe but the function is only called once and then it
+ * auto-unsubscribes itself.
+ */
+PhoneGap.Channel.prototype.subscribeOnce = function(f, c) {
+    var g = null;
+    var _this = this;
+    var m = function() {
+        f.apply(c || null, arguments);
+        _this.unsubscribe(g);
+    };
+    if (this.fired) {
+        if (typeof c === "object" && typeof f === "function") { f = PhoneGap.close(c, f); }
+        f.apply(this, this.fireArgs);
+    } else {
+        g = this.subscribe(m);
+    }
+    return g;
+};
+
+/**
+ * Unsubscribes the function with the given guid from the channel.
+ */
+PhoneGap.Channel.prototype.unsubscribe = function(g) {
+    if (typeof g === "function") { g = g.observer_guid; }
+    this.handlers[g] = null;
+    delete this.handlers[g];
+};
+
+/**
+ * Calls all functions subscribed to this channel.
+ */
+PhoneGap.Channel.prototype.fire = function(e) {
+    if (this.enabled) {
+        var fail = false;
+        var item, handler, rv;
+        for (item in this.handlers) {
+            if (this.handlers.hasOwnProperty(item)) {
+                handler = this.handlers[item];
+                if (typeof handler === "function") {
+                    rv = (handler.apply(this, arguments) === false);
+                    fail = fail || rv;
+                }
+            }
+        }
+        this.fired = true;
+        this.fireArgs = arguments;
+        return !fail;
+    }
+    return true;
+};
+
+/**
+ * Calls the provided function only after all of the channels specified
+ * have been fired.
+ */
+PhoneGap.Channel.join = function(h, c) {
+    var i = c.length;
+    var f = function() {
+        if (!(--i)) {
+            h();
+        }
+    };
+    var len = i;
+    var j;
+    for (j=0; j<len; j++) {
+        if (!c[j].fired) {
+            c[j].subscribeOnce(f);
+        }
+        else {
+            i--;
+        }
+    }
+    if (!i) {
+        h();
+    }
+};
+
+/**
+ * Boolean flag indicating if the PhoneGap API is available and initialized.
+ */ // TODO: Remove this, it is unused here ... -jm
+PhoneGap.available = DeviceInfo.uuid !== undefined;
+
+/**
+ * Add an initialization function to a queue that ensures it will run and initialize
+ * application constructors only once PhoneGap has been initialized.
+ * @param {Function} func The function callback you want run once PhoneGap is initialized
+ */
+PhoneGap.addConstructor = function(func) {
+    PhoneGap.onPhoneGapInit.subscribeOnce(function() {
+        try {
+            func();
+        } catch(e) {
+            console.log("Failed to run constructor: " + e);
+        }
+    });
+};
+
+/**
+ * Plugins object
+ */
+if (!window.plugins) {
+    window.plugins = {};
+}
+
+/**
+ * Adds a plugin object to window.plugins.
+ * The plugin is accessed using window.plugins.<name>
+ *
+ * @param name          The plugin name
+ * @param obj           The plugin object
+ */
+PhoneGap.addPlugin = function(name, obj) {
+    if (!window.plugins[name]) {
+        window.plugins[name] = obj;
+    }
+    else {
+        console.log("Error: Plugin "+name+" already exists.");
+    }
+};
+
+/**
+ * onDOMContentLoaded channel is fired when the DOM content
+ * of the page has been parsed.
+ */
+PhoneGap.onDOMContentLoaded = new PhoneGap.Channel('onDOMContentLoaded');
+
+/**
+ * onNativeReady channel is fired when the PhoneGap native code
+ * has been initialized.
+ */
+PhoneGap.onNativeReady = new PhoneGap.Channel('onNativeReady');
+
+/**
+ * onPhoneGapInit channel is fired when the web page is fully loaded and
+ * PhoneGap native code has been initialized.
+ */
+PhoneGap.onPhoneGapInit = new PhoneGap.Channel('onPhoneGapInit');
+
+/**
+ * onPhoneGapReady channel is fired when the JS PhoneGap objects have been created.
+ */
+PhoneGap.onPhoneGapReady = new PhoneGap.Channel('onPhoneGapReady');
+
+/**
+ * onPhoneGapInfoReady channel is fired when the PhoneGap device properties
+ * has been set.
+ */
+PhoneGap.onPhoneGapInfoReady = new PhoneGap.Channel('onPhoneGapInfoReady');
+
+/**
+ * onPhoneGapConnectionReady channel is fired when the PhoneGap connection properties
+ * has been set.
+ */
+PhoneGap.onPhoneGapConnectionReady = new PhoneGap.Channel('onPhoneGapConnectionReady');
+
+/**
+ * onResume channel is fired when the PhoneGap native code
+ * resumes.
+ */
+PhoneGap.onResume = new PhoneGap.Channel('onResume');
+
+/**
+ * onPause channel is fired when the PhoneGap native code
+ * pauses.
+ */
+PhoneGap.onPause = new PhoneGap.Channel('onPause');
+
+/**
+ * onDestroy channel is fired when the PhoneGap native code
+ * is destroyed.  It is used internally.
+ * Window.onunload should be used by the user.
+ */
+PhoneGap.onDestroy = new PhoneGap.Channel('onDestroy');
+PhoneGap.onDestroy.subscribeOnce(function() {
+    PhoneGap.shuttingDown = true;
+});
+PhoneGap.shuttingDown = false;
+
+// _nativeReady is global variable that the native side can set
+// to signify that the native code is ready. It is a global since
+// it may be called before any PhoneGap JS is ready.
+if (typeof _nativeReady !== 'undefined') { PhoneGap.onNativeReady.fire(); }
+
+/**
+ * onDeviceReady is fired only after all PhoneGap objects are created and
+ * the device properties are set.
+ */
+PhoneGap.onDeviceReady = new PhoneGap.Channel('onDeviceReady');
+
+
+// Array of channels that must fire before "deviceready" is fired
+PhoneGap.deviceReadyChannelsArray = [ PhoneGap.onPhoneGapReady, PhoneGap.onPhoneGapInfoReady, PhoneGap.onPhoneGapConnectionReady];
+
+// Hashtable of user defined channels that must also fire before "deviceready" is fired
+PhoneGap.deviceReadyChannelsMap = {};
+
+/**
+ * Indicate that a feature needs to be initialized before it is ready to be used.
+ * This holds up PhoneGap's "deviceready" event until the feature has been initialized
+ * and PhoneGap.initComplete(feature) is called.
+ *
+ * @param feature {String}     The unique feature name
+ */
+PhoneGap.waitForInitialization = function(feature) {
+    if (feature) {
+        var channel = new PhoneGap.Channel(feature);
+        PhoneGap.deviceReadyChannelsMap[feature] = channel;
+        PhoneGap.deviceReadyChannelsArray.push(channel);
+    }
+};
+
+/**
+ * Indicate that initialization code has completed and the feature is ready to be used.
+ *
+ * @param feature {String}     The unique feature name
+ */
+PhoneGap.initializationComplete = function(feature) {
+    var channel = PhoneGap.deviceReadyChannelsMap[feature];
+    if (channel) {
+        channel.fire();
+    }
+};
+
+/**
+ * Create all PhoneGap objects once page has fully loaded and native side is ready.
+ */
+PhoneGap.Channel.join(function() {
+
+    // Start listening for XHR callbacks
+    setTimeout(function() {
+            if (PhoneGap.UsePolling) {
+                PhoneGap.JSCallbackPolling();
+            }
+            else {
+                var polling = prompt("usePolling", "gap_callbackServer:");
+                PhoneGap.UsePolling = polling;
+                if (polling == "true") {
+                    PhoneGap.UsePolling = true;
+                    PhoneGap.JSCallbackPolling();
+                }
+                else {
+                    PhoneGap.UsePolling = false;
+                    PhoneGap.JSCallback();
+                }
+            }
+        }, 1);
+
+    // Run PhoneGap constructors
+    PhoneGap.onPhoneGapInit.fire();
+
+    // Fire event to notify that all objects are created
+    PhoneGap.onPhoneGapReady.fire();
+
+    // Fire onDeviceReady event once all constructors have run and PhoneGap info has been
+    // received from native side, and any user defined initialization channels.
+    PhoneGap.Channel.join(function() {
+        PhoneGap.onDeviceReady.fire();
+
+        // Fire the onresume event, since first one happens before JavaScript is loaded
+        PhoneGap.onResume.fire();
+    }, PhoneGap.deviceReadyChannelsArray);
+
+}, [ PhoneGap.onDOMContentLoaded, PhoneGap.onNativeReady ]);
+
+// Listen for DOMContentLoaded and notify our channel subscribers
+document.addEventListener('DOMContentLoaded', function() {
+    PhoneGap.onDOMContentLoaded.fire();
+}, false);
+
+// Intercept calls to document.addEventListener and watch for deviceready
+PhoneGap.m_document_addEventListener = document.addEventListener;
+
+document.addEventListener = function(evt, handler, capture) {
+    var e = evt.toLowerCase();
+    if (e === 'deviceready') {
+        PhoneGap.onDeviceReady.subscribeOnce(handler);
+    } else if (e === 'resume') {
+        PhoneGap.onResume.subscribe(handler);
+        if (PhoneGap.onDeviceReady.fired) {
+            PhoneGap.onResume.fire();
+        }
+    } else if (e === 'pause') {
+        PhoneGap.onPause.subscribe(handler);
+    }
+    else {
+        // If subscribing to Android backbutton
+        if (e === 'backbutton') {
+            PhoneGap.exec(null, null, "App", "overrideBackbutton", [true]);
+        }
+
+        PhoneGap.m_document_addEventListener.call(document, evt, handler, capture);
+    }
+};
+
+// Intercept calls to document.removeEventListener and watch for events that
+// are generated by PhoneGap native code
+PhoneGap.m_document_removeEventListener = document.removeEventListener;
+
+document.removeEventListener = function(evt, handler, capture) {
+    var e = evt.toLowerCase();
+
+    // If unsubscribing to Android backbutton
+    if (e === 'backbutton') {
+        PhoneGap.exec(null, null, "App", "overrideBackbutton", [false]);
+    }
+
+    PhoneGap.m_document_removeEventListener.call(document, evt, handler, capture);
+};
+
+/**
+ * Method to fire event from native code
+ */
+PhoneGap.fireEvent = function(type) {
+    var e = document.createEvent('Events');
+    e.initEvent(type);
+    document.dispatchEvent(e);
+};
+
+/**
+ * If JSON not included, use our own stringify. (Android 1.6)
+ * The restriction on ours is that it must be an array of simple types.
+ *
+ * @param args
+ * @return {String}
+ */
+PhoneGap.stringify = function(args) {
+    if (typeof JSON === "undefined") {
+        var s = "[";
+        var i, type, start, name, nameType, a;
+        for (i = 0; i < args.length; i++) {
+            if (args[i] !== null) {
+                if (i > 0) {
+                    s = s + ",";
+                }
+                type = typeof args[i];
+                if ((type === "number") || (type === "boolean")) {
+                    s = s + args[i];
+                } else if (args[i] instanceof Array) {
+                    s = s + "[" + args[i] + "]";
+                } else if (args[i] instanceof Object) {
+                    start = true;
+                    s = s + '{';
+                    for (name in args[i]) {
+                        if (args[i][name] !== null) {
+                            if (!start) {
+                                s = s + ',';
+                            }
+                            s = s + '"' + name + '":';
+                            nameType = typeof args[i][name];
+                            if ((nameType === "number") || (nameType === "boolean")) {
+                                s = s + args[i][name];
+                            } else if ((typeof args[i][name]) === 'function') {
+                                // don't copy the functions
+                                s = s + '""';
+                            } else if (args[i][name] instanceof Object) {
+                                s = s + PhoneGap.stringify(args[i][name]);
+                            } else {
+                                s = s + '"' + args[i][name] + '"';
+                            }
+                            start = false;
+                        }
+                    }
+                    s = s + '}';
+                } else {
+                    a = args[i].replace(/\\/g, '\\\\');
+                    a = a.replace(/"/g, '\\"');
+                    s = s + '"' + a + '"';
+                }
+            }
+        }
+        s = s + "]";
+        return s;
+    } else {
+        return JSON.stringify(args);
+    }
+};
+
+/**
+ * Does a deep clone of the object.
+ *
+ * @param obj
+ * @return {Object}
+ */
+PhoneGap.clone = function(obj) {
+    var i, retVal;
+    if(!obj) { 
+        return obj;
+    }
+    
+    if(obj instanceof Array){
+        retVal = [];
+        for(i = 0; i < obj.length; ++i){
+            retVal.push(PhoneGap.clone(obj[i]));
+        }
+        return retVal;
+    }
+    
+    if (typeof obj === "function") {
+        return obj;
+    }
+    
+    if(!(obj instanceof Object)){
+        return obj;
+    }
+    
+    if (obj instanceof Date) {
+        return obj;
+    }
+    
+    retVal = {};
+    for(i in obj){
+        if(!(i in retVal) || retVal[i] !== obj[i]) {
+            retVal[i] = PhoneGap.clone(obj[i]);
+        }
+    }
+    return retVal;
+};
+
+PhoneGap.callbackId = 0;
+PhoneGap.callbacks = {};
+PhoneGap.callbackStatus = {
+    NO_RESULT: 0,
+    OK: 1,
+    CLASS_NOT_FOUND_EXCEPTION: 2,
+    ILLEGAL_ACCESS_EXCEPTION: 3,
+    INSTANTIATION_EXCEPTION: 4,
+    MALFORMED_URL_EXCEPTION: 5,
+    IO_EXCEPTION: 6,
+    INVALID_ACTION: 7,
+    JSON_EXCEPTION: 8,
+    ERROR: 9
+    };
+
+
+/**
+ * Execute a PhoneGap command.  It is up to the native side whether this action is synch or async.
+ * The native side can return:
+ *      Synchronous: PluginResult object as a JSON string
+ *      Asynchrounous: Empty string ""
+ * If async, the native side will PhoneGap.callbackSuccess or PhoneGap.callbackError,
+ * depending upon the result of the action.
+ *
+ * @param {Function} success    The success callback
+ * @param {Function} fail       The fail callback
+ * @param {String} service      The name of the service to use
+ * @param {String} action       Action to be run in PhoneGap
+ * @param {Array.<String>} [args]     Zero or more arguments to pass to the method
+ */
+PhoneGap.exec = function(success, fail, service, action, args) {
+    try {
+        var callbackId = service + PhoneGap.callbackId++;
+        if (success || fail) {
+            PhoneGap.callbacks[callbackId] = {success:success, fail:fail};
+        }
+
+        var r = prompt(PhoneGap.stringify(args), "gap:"+PhoneGap.stringify([service, action, callbackId, true]));
+
+        // If a result was returned
+        if (r.length > 0) {
+            eval("var v="+r+";");
+
+            // If status is OK, then return value back to caller
+            if (v.status === PhoneGap.callbackStatus.OK) {
+
+                // If there is a success callback, then call it now with
+                // returned value
+                if (success) {
+                    try {
+                        success(v.message);
+                    } catch (e) {
+                        console.log("Error in success callback: " + callbackId  + " = " + e);
+                    }
+
+                    // Clear callback if not expecting any more results
+                    if (!v.keepCallback) {
+                        delete PhoneGap.callbacks[callbackId];
+                    }
+                }
+                return v.message;
+            }
+
+            // If no result
+            else if (v.status === PhoneGap.callbackStatus.NO_RESULT) {
+
+                // Clear callback if not expecting any more results
+                if (!v.keepCallback) {
+                    delete PhoneGap.callbacks[callbackId];
+                }
+            }
+
+            // If error, then display error
+            else {
+                console.log("Error: Status="+v.status+" Message="+v.message);
+
+                // If there is a fail callback, then call it now with returned value
+                if (fail) {
+                    try {
+                        fail(v.message);
+                    }
+                    catch (e1) {
+                        console.log("Error in error callback: "+callbackId+" = "+e1);
+                    }
+
+                    // Clear callback if not expecting any more results
+                    if (!v.keepCallback) {
+                        delete PhoneGap.callbacks[callbackId];
+                    }
+                }
+                return null;
+            }
+        }
+    } catch (e2) {
+        console.log("Error: "+e2);
+    }
+};
+
+/**
+ * Called by native code when returning successful result from an action.
+ *
+ * @param callbackId
+ * @param args
+ */
+PhoneGap.callbackSuccess = function(callbackId, args) {
+    if (PhoneGap.callbacks[callbackId]) {
+
+        // If result is to be sent to callback
+        if (args.status === PhoneGap.callbackStatus.OK) {
+            try {
+                if (PhoneGap.callbacks[callbackId].success) {
+                    PhoneGap.callbacks[callbackId].success(args.message);
+                }
+            }
+            catch (e) {
+                console.log("Error in success callback: "+callbackId+" = "+e);
+            }
+        }
+
+        // Clear callback if not expecting any more results
+        if (!args.keepCallback) {
+            delete PhoneGap.callbacks[callbackId];
+        }
+    }
+};
+
+/**
+ * Called by native code when returning error result from an action.
+ *
+ * @param callbackId
+ * @param args
+ */
+PhoneGap.callbackError = function(callbackId, args) {
+    if (PhoneGap.callbacks[callbackId]) {
+        try {
+            if (PhoneGap.callbacks[callbackId].fail) {
+                PhoneGap.callbacks[callbackId].fail(args.message);
+            }
+        }
+        catch (e) {
+            console.log("Error in error callback: "+callbackId+" = "+e);
+        }
+
+        // Clear callback if not expecting any more results
+        if (!args.keepCallback) {
+            delete PhoneGap.callbacks[callbackId];
+        }
+    }
+};
+
+
+/**
+ * Internal function used to dispatch the request to PhoneGap.  It processes the
+ * command queue and executes the next command on the list.  If one of the
+ * arguments is a JavaScript object, it will be passed on the QueryString of the
+ * url, which will be turned into a dictionary on the other end.
+ * @private
+ */
+// TODO: Is this used?
+PhoneGap.run_command = function() {
+    if (!PhoneGap.available || !PhoneGap.queue.ready) {
+        return;
+    }
+    PhoneGap.queue.ready = false;
+
+    var args = PhoneGap.queue.commands.shift();
+    if (PhoneGap.queue.commands.length === 0) {
+        clearInterval(PhoneGap.queue.timer);
+        PhoneGap.queue.timer = null;
+    }
+
+    var uri = [];
+    var dict = null;
+    var i;
+    for (i = 1; i < args.length; i++) {
+        var arg = args[i];
+        if (arg === undefined || arg === null) {
+            arg = '';
+        }
+        if (typeof(arg) === 'object') {
+            dict = arg;
+        } else {
+            uri.push(encodeURIComponent(arg));
+        }
+    }
+    var url = "gap://" + args[0] + "/" + uri.join("/");
+    if (dict !== null) {
+        var name;
+        var query_args = [];
+        for (name in dict) {
+            if (dict.hasOwnProperty(name) && (typeof (name) === 'string')) {
+                query_args.push(encodeURIComponent(name) + "=" + encodeURIComponent(dict[name]));
+            }
+        }
+        if (query_args.length > 0) {
+            url += "?" + query_args.join("&");
+        }
+    }
+    document.location = url;
+
+};
+
+PhoneGap.JSCallbackPort = null;
+PhoneGap.JSCallbackToken = null;
+
+/**
+ * This is only for Android.
+ *
+ * Internal function that uses XHR to call into PhoneGap Java code and retrieve
+ * any JavaScript code that needs to be run.  This is used for callbacks from
+ * Java to JavaScript.
+ */
+PhoneGap.JSCallback = function() {
+
+    // Exit if shutting down app
+    if (PhoneGap.shuttingDown) {
+        return;
+    }
+
+    // If polling flag was changed, start using polling from now on
+    if (PhoneGap.UsePolling) {
+        PhoneGap.JSCallbackPolling();
+        return;
+    }
+
+    var xmlhttp = new XMLHttpRequest();
+
+    // Callback function when XMLHttpRequest is ready
+    xmlhttp.onreadystatechange=function(){
+        if(xmlhttp.readyState === 4){
+
+            // Exit if shutting down app
+            if (PhoneGap.shuttingDown) {
+                return;
+            }
+
+            // If callback has JavaScript statement to execute
+            if (xmlhttp.status === 200) {
+
+                // Need to url decode the response
+                var msg = decodeURIComponent(xmlhttp.responseText);
+                setTimeout(function() {
+                    try {
+                        var t = eval(msg);
+                    }
+                    catch (e) {
+                        // If we're getting an error here, seeing the message will help in debugging
+                        console.log("JSCallback: Message from Server: " + msg);
+                        console.log("JSCallback Error: "+e);
+                    }
+                }, 1);
+                setTimeout(PhoneGap.JSCallback, 1);
+            }
+
+            // If callback ping (used to keep XHR request from timing out)
+            else if (xmlhttp.status === 404) {
+                setTimeout(PhoneGap.JSCallback, 10);
+            }
+
+            // If security error
+            else if (xmlhttp.status === 403) {
+                console.log("JSCallback Error: Invalid token.  Stopping callbacks.");
+            }
+
+            // If server is stopping
+            else if (xmlhttp.status === 503) {
+                console.log("JSCallback Error: Service unavailable.  Stopping callbacks.");
+            }
+
+            // If request wasn't GET
+            else if (xmlhttp.status === 400) {
+                console.log("JSCallback Error: Bad request.  Stopping callbacks.");
+            }
+
+            // If error, revert to polling
+            else {
+                console.log("JSCallback Error: Request failed.");
+                PhoneGap.UsePolling = true;
+                PhoneGap.JSCallbackPolling();
+            }
+        }
+    };
+
+    if (PhoneGap.JSCallbackPort === null) {
+        PhoneGap.JSCallbackPort = prompt("getPort", "gap_callbackServer:");
+    }
+    if (PhoneGap.JSCallbackToken === null) {
+        PhoneGap.JSCallbackToken = prompt("getToken", "gap_callbackServer:");
+    }
+    xmlhttp.open("GET", "http://127.0.0.1:"+PhoneGap.JSCallbackPort+"/"+PhoneGap.JSCallbackToken , true);
+    xmlhttp.send();
+};
+
+/**
+ * The polling period to use with JSCallbackPolling.
+ * This can be changed by the application.  The default is 50ms.
+ */
+PhoneGap.JSCallbackPollingPeriod = 50;
+
+/**
+ * Flag that can be set by the user to force polling to be used or force XHR to be used.
+ */
+PhoneGap.UsePolling = false;    // T=use polling, F=use XHR
+
+/**
+ * This is only for Android.
+ *
+ * Internal function that uses polling to call into PhoneGap Java code and retrieve
+ * any JavaScript code that needs to be run.  This is used for callbacks from
+ * Java to JavaScript.
+ */
+PhoneGap.JSCallbackPolling = function() {
+
+    // Exit if shutting down app
+    if (PhoneGap.shuttingDown) {
+        return;
+    }
+
+    // If polling flag was changed, stop using polling from now on
+    if (!PhoneGap.UsePolling) {
+        PhoneGap.JSCallback();
+        return;
+    }
+
+    var msg = prompt("", "gap_poll:");
+    if (msg) {
+        setTimeout(function() {
+            try {
+                var t = eval(""+msg);
+            }
+            catch (e) {
+                console.log("JSCallbackPolling: Message from Server: " + msg);
+                console.log("JSCallbackPolling Error: "+e);
+            }
+        }, 1);
+        setTimeout(PhoneGap.JSCallbackPolling, 1);
+    }
+    else {
+        setTimeout(PhoneGap.JSCallbackPolling, PhoneGap.JSCallbackPollingPeriod);
+    }
+};
+
+/**
+ * Create a UUID
+ *
+ * @return {String}
+ */
+PhoneGap.createUUID = function() {
+    return PhoneGap.UUIDcreatePart(4) + '-' +
+        PhoneGap.UUIDcreatePart(2) + '-' +
+        PhoneGap.UUIDcreatePart(2) + '-' +
+        PhoneGap.UUIDcreatePart(2) + '-' +
+        PhoneGap.UUIDcreatePart(6);
+};
+
+PhoneGap.UUIDcreatePart = function(length) {
+    var uuidpart = "";
+    var i, uuidchar;
+    for (i=0; i<length; i++) {
+        uuidchar = parseInt((Math.random() * 256),0).toString(16);
+        if (uuidchar.length === 1) {
+            uuidchar = "0" + uuidchar;
+        }
+        uuidpart += uuidchar;
+    }
+    return uuidpart;
+};
+
+PhoneGap.close = function(context, func, params) {
+    if (typeof params === 'undefined') {
+        return function() {
+            return func.apply(context, arguments);
+        };
+    } else {
+        return function() {
+            return func.apply(context, params);
+        };
+    }
+};
+
+/**
+ * Load a JavaScript file after page has loaded.
+ *
+ * @param {String} jsfile               The url of the JavaScript file to load.
+ * @param {Function} successCallback    The callback to call when the file has been loaded.
+ */
+PhoneGap.includeJavascript = function(jsfile, successCallback) {
+    var id = document.getElementsByTagName("head")[0];
+    var el = document.createElement('script');
+    el.type = 'text/javascript';
+    if (typeof successCallback === 'function') {
+        el.onload = successCallback;
+    }
+    el.src = jsfile;
+    id.appendChild(el);
+};
+
+}
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("accelerometer")) {
+PhoneGap.addResource("accelerometer");
+
+/** @constructor */
+var Acceleration = function(x, y, z) {
+  this.x = x;
+  this.y = y;
+  this.z = z;
+  this.timestamp = new Date().getTime();
+};
+
+/**
+ * This class provides access to device accelerometer data.
+ * @constructor
+ */
+var Accelerometer = function() {
+
+    /**
+     * The last known acceleration.  type=Acceleration()
+     */
+    this.lastAcceleration = null;
+
+    /**
+     * List of accelerometer watch timers
+     */
+    this.timers = {};
+};
+
+Accelerometer.ERROR_MSG = ["Not running", "Starting", "", "Failed to start"];
+
+/**
+ * Asynchronously aquires the current acceleration.
+ *
+ * @param {Function} successCallback    The function to call when the acceleration data is available
+ * @param {Function} errorCallback      The function to call when there is an error getting the acceleration data. (OPTIONAL)
+ * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL)
+ */
+Accelerometer.prototype.getCurrentAcceleration = function(successCallback, errorCallback, options) {
+
+    // successCallback required
+    if (typeof successCallback !== "function") {
+        console.log("Accelerometer Error: successCallback is not a function");
+        return;
+    }
+
+    // errorCallback optional
+    if (errorCallback && (typeof errorCallback !== "function")) {
+        console.log("Accelerometer Error: errorCallback is not a function");
+        return;
+    }
+
+    // Get acceleration
+    PhoneGap.exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []);
+};
+
+/**
+ * Asynchronously aquires the acceleration repeatedly at a given interval.
+ *
+ * @param {Function} successCallback    The function to call each time the acceleration data is available
+ * @param {Function} errorCallback      The function to call when there is an error getting the acceleration data. (OPTIONAL)
+ * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL)
+ * @return String                       The watch id that must be passed to #clearWatch to stop watching.
+ */
+Accelerometer.prototype.watchAcceleration = function(successCallback, errorCallback, options) {
+
+    // Default interval (10 sec)
+    var frequency = (options !== undefined)? options.frequency : 10000;
+
+    // successCallback required
+    if (typeof successCallback !== "function") {
+        console.log("Accelerometer Error: successCallback is not a function");
+        return;
+    }
+
+    // errorCallback optional
+    if (errorCallback && (typeof errorCallback !== "function")) {
+        console.log("Accelerometer Error: errorCallback is not a function");
+        return;
+    }
+
+    // Make sure accelerometer timeout > frequency + 10 sec
+    PhoneGap.exec(
+        function(timeout) {
+            if (timeout < (frequency + 10000)) {
+                PhoneGap.exec(null, null, "Accelerometer", "setTimeout", [frequency + 10000]);
+            }
+        },
+        function(e) { }, "Accelerometer", "getTimeout", []);
+
+    // Start watch timer
+    var id = PhoneGap.createUUID();
+    navigator.accelerometer.timers[id] = setInterval(function() {
+        PhoneGap.exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []);
+    }, (frequency ? frequency : 1));
+
+    return id;
+};
+
+/**
+ * Clears the specified accelerometer watch.
+ *
+ * @param {String} id       The id of the watch returned from #watchAcceleration.
+ */
+Accelerometer.prototype.clearWatch = function(id) {
+
+    // Stop javascript timer & remove from timer list
+    if (id && navigator.accelerometer.timers[id] !== undefined) {
+        clearInterval(navigator.accelerometer.timers[id]);
+        delete navigator.accelerometer.timers[id];
+    }
+};
+
+PhoneGap.addConstructor(function() {
+    if (typeof navigator.accelerometer === "undefined") {
+        navigator.accelerometer = new Accelerometer();
+    }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("app")) {
+PhoneGap.addResource("app");
+(function() {
+
+/**
+ * Constructor
+ * @constructor
+ */
+var App = function() {};
+
+/**
+ * Clear the resource cache.
+ */
+App.prototype.clearCache = function() {
+    PhoneGap.exec(null, null, "App", "clearCache", []);
+};
+
+/**
+ * Load the url into the webview.
+ *
+ * @param url           The URL to load
+ * @param props         Properties that can be passed in to the activity:
+ *      wait: int                           => wait msec before loading URL
+ *      loadingDialog: "Title,Message"      => display a native loading dialog
+ *      hideLoadingDialogOnPage: boolean    => hide loadingDialog when page loaded instead of when deviceready event occurs.
+ *      loadInWebView: boolean              => cause all links on web page to be loaded into existing web view, instead of being loaded into new browser.
+ *      loadUrlTimeoutValue: int            => time in msec to wait before triggering a timeout error
+ *      errorUrl: URL                       => URL to load if there's an error loading specified URL with loadUrl().  Should be a local URL such as file:///android_asset/www/error.html");
+ *      keepRunning: boolean                => enable app to keep running in background
+ *
+ * Example:
+ *      App app = new App();
+ *      app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000});
+ */
+App.prototype.loadUrl = function(url, props) {
+    PhoneGap.exec(null, null, "App", "loadUrl", [url, props]);
+};
+
+/**
+ * Cancel loadUrl that is waiting to be loaded.
+ */
+App.prototype.cancelLoadUrl = function() {
+    PhoneGap.exec(null, null, "App", "cancelLoadUrl", []);
+};
+
+/**
+ * Clear web history in this web view.
+ * Instead of BACK button loading the previous web page, it will exit the app.
+ */
+App.prototype.clearHistory = function() {
+    PhoneGap.exec(null, null, "App", "clearHistory", []);
+};
+
+/**
+ * Override the default behavior of the Android back button.
+ * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
+ *
+ * Note: The user should not have to call this method.  Instead, when the user
+ *       registers for the "backbutton" event, this is automatically done.
+ *
+ * @param override             T=override, F=cancel override
+ */
+App.prototype.overrideBackbutton = function(override) {
+    PhoneGap.exec(null, null, "App", "overrideBackbutton", [override]);
+};
+
+/**
+ * Exit and terminate the application.
+ */
+App.prototype.exitApp = function() {
+       return PhoneGap.exec(null, null, "App", "exitApp", []);
+};
+
+PhoneGap.addConstructor(function() {
+    navigator.app = new App();
+});
+}());
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("camera")) {
+PhoneGap.addResource("camera");
+
+/**
+ * This class provides access to the device camera.
+ *
+ * @constructor
+ */
+var Camera = function() {
+    this.successCallback = null;
+    this.errorCallback = null;
+    this.options = null;
+};
+
+/**
+ * Format of image that returned from getPicture.
+ *
+ * Example: navigator.camera.getPicture(success, fail,
+ *              { quality: 80,
+ *                destinationType: Camera.DestinationType.DATA_URL,
+ *                sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
+ */
+Camera.DestinationType = {
+    DATA_URL: 0,                // Return base64 encoded string
+    FILE_URI: 1                 // Return file uri (content://media/external/images/media/2 for Android)
+};
+Camera.prototype.DestinationType = Camera.DestinationType;
+
+/**
+ * Encoding of image returned from getPicture.
+ *
+ * Example: navigator.camera.getPicture(success, fail,
+ *              { quality: 80,
+ *                destinationType: Camera.DestinationType.DATA_URL,
+ *                sourceType: Camera.PictureSourceType.CAMERA,
+ *                encodingType: Camera.EncodingType.PNG})
+*/
+Camera.EncodingType = {
+    JPEG: 0,                    // Return JPEG encoded image
+    PNG: 1                      // Return PNG encoded image
+};
+Camera.prototype.EncodingType = Camera.EncodingType;
+
+/**
+ * Source to getPicture from.
+ *
+ * Example: navigator.camera.getPicture(success, fail,
+ *              { quality: 80,
+ *                destinationType: Camera.DestinationType.DATA_URL,
+ *                sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
+ */
+Camera.PictureSourceType = {
+    PHOTOLIBRARY : 0,           // Choose image from picture library (same as SAVEDPHOTOALBUM for Android)
+    CAMERA : 1,                 // Take picture from camera
+    SAVEDPHOTOALBUM : 2         // Choose image from picture library (same as PHOTOLIBRARY for Android)
+};
+Camera.prototype.PictureSourceType = Camera.PictureSourceType;
+
+/**
+ * Gets a picture from source defined by "options.sourceType", and returns the
+ * image as defined by the "options.destinationType" option.
+
+ * The defaults are sourceType=CAMERA and destinationType=DATA_URL.
+ *
+ * @param {Function} successCallback
+ * @param {Function} errorCallback
+ * @param {Object} options
+ */
+Camera.prototype.getPicture = function(successCallback, errorCallback, options) {
+
+    // successCallback required
+    if (typeof successCallback !== "function") {
+        console.log("Camera Error: successCallback is not a function");
+        return;
+    }
+
+    // errorCallback optional
+    if (errorCallback && (typeof errorCallback !== "function")) {
+        console.log("Camera Error: errorCallback is not a function");
+        return;
+    }
+
+    this.options = options;
+    var quality = 80;
+    if (options.quality) {
+        quality = this.options.quality;
+    }
+    
+    var maxResolution = 0;
+    if (options.maxResolution) {
+       maxResolution = this.options.maxResolution;
+    }
+    
+    var destinationType = Camera.DestinationType.DATA_URL;
+    if (this.options.destinationType) {
+        destinationType = this.options.destinationType;
+    }
+    var sourceType = Camera.PictureSourceType.CAMERA;
+    if (typeof this.options.sourceType === "number") {
+        sourceType = this.options.sourceType;
+    }
+    var encodingType = Camera.EncodingType.JPEG;
+    if (typeof options.encodingType == "number") {
+        encodingType = this.options.encodingType;
+    }
+    
+    var targetWidth = -1;
+    if (typeof options.targetWidth == "number") {
+        targetWidth = options.targetWidth;
+    } else if (typeof options.targetWidth == "string") {
+        var width = new Number(options.targetWidth);
+        if (isNaN(width) === false) {
+            targetWidth = width.valueOf();
+        }
+    }
+
+    var targetHeight = -1;
+    if (typeof options.targetHeight == "number") {
+        targetHeight = options.targetHeight;
+    } else if (typeof options.targetHeight == "string") {
+        var height = new Number(options.targetHeight);
+        if (isNaN(height) === false) {
+            targetHeight = height.valueOf();
+        }
+    }
+    
+    PhoneGap.exec(successCallback, errorCallback, "Camera", "takePicture", [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType]);
+};
+
+PhoneGap.addConstructor(function() {
+    if (typeof navigator.camera === "undefined") {
+        navigator.camera = new Camera();
+    }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("capture")) {
+PhoneGap.addResource("capture");
+       
+/**
+ * Represents a single file.
+ *
+ * name {DOMString} name of the file, without path information
+ * fullPath {DOMString} the full path of the file, including the name
+ * type {DOMString} mime type
+ * lastModifiedDate {Date} last modified date
+ * size {Number} size of the file in bytes
+ */
+var MediaFile = function(name, fullPath, type, lastModifiedDate, size){
+       this.name = name || null;
+       this.fullPath = fullPath || null;
+       this.type = type || null;
+       this.lastModifiedDate = lastModifiedDate || null;
+       this.size = size || 0;
+};
+
+/**
+ * Launch device camera application for recording video(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ */
+MediaFile.prototype.getFormatData = function(successCallback, errorCallback){
+       PhoneGap.exec(successCallback, errorCallback, "Capture", "getFormatData", [this.fullPath, this.type]);
+};
+
+/**
+ * MediaFileData encapsulates format information of a media file.
+ *
+ * @param {DOMString} codecs
+ * @param {long} bitrate
+ * @param {long} height
+ * @param {long} width
+ * @param {float} duration
+ */
+var MediaFileData = function(codecs, bitrate, height, width, duration){
+       this.codecs = codecs || null;
+       this.bitrate = bitrate || 0;
+       this.height = height || 0;
+       this.width = width || 0;
+       this.duration = duration || 0;
+};
+
+/**
+ * The CaptureError interface encapsulates all errors in the Capture API.
+ */
+var CaptureError = function(){
+       this.code = null;
+};
+
+// Capture error codes
+CaptureError.CAPTURE_INTERNAL_ERR = 0;
+CaptureError.CAPTURE_APPLICATION_BUSY = 1;
+CaptureError.CAPTURE_INVALID_ARGUMENT = 2;
+CaptureError.CAPTURE_NO_MEDIA_FILES = 3;
+CaptureError.CAPTURE_NOT_SUPPORTED = 20;
+
+/**
+ * The Capture interface exposes an interface to the camera and microphone of the hosting device.
+ */
+var Capture = function(){
+       this.supportedAudioModes = [];
+       this.supportedImageModes = [];
+       this.supportedVideoModes = [];
+};
+
+/**
+ * Launch audio recorder application for recording audio clip(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ * @param {CaptureAudioOptions} options
+ */
+Capture.prototype.captureAudio = function(successCallback, errorCallback, options){
+       PhoneGap.exec(successCallback, errorCallback, "Capture", "captureAudio", [options]);
+};
+
+/**
+ * Launch camera application for taking image(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ * @param {CaptureImageOptions} options
+ */
+Capture.prototype.captureImage = function(successCallback, errorCallback, options){
+       PhoneGap.exec(successCallback, errorCallback, "Capture", "captureImage", [options]);
+};
+
+/**
+ * Launch camera application for taking image(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ * @param {CaptureImageOptions} options
+ */
+Capture.prototype._castMediaFile = function(pluginResult){
+       var mediaFiles = [];
+       var i;
+       for (i = 0; i < pluginResult.message.length; i++) {
+               var mediaFile = new MediaFile();
+               mediaFile.name = pluginResult.message[i].name;
+               mediaFile.fullPath = pluginResult.message[i].fullPath;
+               mediaFile.type = pluginResult.message[i].type;
+               mediaFile.lastModifiedDate = pluginResult.message[i].lastModifiedDate;
+               mediaFile.size = pluginResult.message[i].size;
+               mediaFiles.push(mediaFile);
+       }
+       pluginResult.message = mediaFiles;
+       return pluginResult;
+};
+
+/**
+ * Launch device camera application for recording video(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ * @param {CaptureVideoOptions} options
+ */
+Capture.prototype.captureVideo = function(successCallback, errorCallback, options){
+       PhoneGap.exec(successCallback, errorCallback, "Capture", "captureVideo", [options]);
+};
+
+/**
+ * Encapsulates a set of parameters that the capture device supports.
+ */
+var ConfigurationData = function(){
+       // The ASCII-encoded string in lower case representing the media type. 
+       this.type = null;
+       // The height attribute represents height of the image or video in pixels. 
+       // In the case of a sound clip this attribute has value 0. 
+       this.height = 0;
+       // The width attribute represents width of the image or video in pixels. 
+       // In the case of a sound clip this attribute has value 0
+       this.width = 0;
+};
+
+/**
+ * Encapsulates all image capture operation configuration options.
+ */
+var CaptureImageOptions = function(){
+       // Upper limit of images user can take. Value must be equal or greater than 1.
+       this.limit = 1;
+       // The selected image mode. Must match with one of the elements in supportedImageModes array.
+       this.mode = null;
+};
+
+/**
+ * Encapsulates all video capture operation configuration options.
+ */
+var CaptureVideoOptions = function(){
+       // Upper limit of videos user can record. Value must be equal or greater than 1.
+       this.limit = 1;
+       // Maximum duration of a single video clip in seconds.
+       this.duration = 0;
+       // The selected video mode. Must match with one of the elements in supportedVideoModes array.
+       this.mode = null;
+};
+
+/**
+ * Encapsulates all audio capture operation configuration options.
+ */
+var CaptureAudioOptions = function(){
+       // Upper limit of sound clips user can record. Value must be equal or greater than 1.
+       this.limit = 1;
+       // Maximum duration of a single sound clip in seconds.
+       this.duration = 0;
+       // The selected audio mode. Must match with one of the elements in supportedAudioModes array.
+       this.mode = null;
+};
+
+PhoneGap.addConstructor(function(){
+       if (typeof navigator.device === "undefined") {
+               navigator.device = window.device = new Device();
+       }
+       if (typeof navigator.device.capture === "undefined") {
+               navigator.device.capture = window.device.capture = new Capture();
+       }
+});
+}
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("compass")) {
+PhoneGap.addResource("compass");
+
+/**
+ * This class provides access to device Compass data.
+ * @constructor
+ */
+var Compass = function() {
+    /**
+     * The last known Compass position.
+     */
+    this.lastHeading = null;
+
+    /**
+     * List of compass watch timers
+     */
+    this.timers = {};
+};
+
+Compass.ERROR_MSG = ["Not running", "Starting", "", "Failed to start"];
+
+/**
+ * Asynchronously aquires the current heading.
+ *
+ * @param {Function} successCallback The function to call when the heading data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
+ * @param {PositionOptions} options The options for getting the heading data such as timeout. (OPTIONAL)
+ */
+Compass.prototype.getCurrentHeading = function(successCallback, errorCallback, options) {
+
+    // successCallback required
+    if (typeof successCallback !== "function") {
+        console.log("Compass Error: successCallback is not a function");
+        return;
+    }
+
+    // errorCallback optional
+    if (errorCallback && (typeof errorCallback !== "function")) {
+        console.log("Compass Error: errorCallback is not a function");
+        return;
+    }
+
+    // Get heading
+    PhoneGap.exec(successCallback, errorCallback, "Compass", "getHeading", []);
+};
+
+/**
+ * Asynchronously aquires the heading repeatedly at a given interval.
+ *
+ * @param {Function} successCallback    The function to call each time the heading data is available
+ * @param {Function} errorCallback      The function to call when there is an error getting the heading data. (OPTIONAL)
+ * @param {HeadingOptions} options      The options for getting the heading data such as timeout and the frequency of the watch. (OPTIONAL)
+ * @return String                       The watch id that must be passed to #clearWatch to stop watching.
+ */
+Compass.prototype.watchHeading= function(successCallback, errorCallback, options) {
+
+    // Default interval (100 msec)
+    var frequency = (options !== undefined) ? options.frequency : 100;
+
+    // successCallback required
+    if (typeof successCallback !== "function") {
+        console.log("Compass Error: successCallback is not a function");
+        return;
+    }
+
+    // errorCallback optional
+    if (errorCallback && (typeof errorCallback !== "function")) {
+        console.log("Compass Error: errorCallback is not a function");
+        return;
+    }
+
+    // Make sure compass timeout > frequency + 10 sec
+    PhoneGap.exec(
+        function(timeout) {
+            if (timeout < (frequency + 10000)) {
+                PhoneGap.exec(null, null, "Compass", "setTimeout", [frequency + 10000]);
+            }
+        },
+        function(e) { }, "Compass", "getTimeout", []);
+
+    // Start watch timer to get headings
+    var id = PhoneGap.createUUID();
+    navigator.compass.timers[id] = setInterval(
+        function() {
+            PhoneGap.exec(successCallback, errorCallback, "Compass", "getHeading", []);
+        }, (frequency ? frequency : 1));
+
+    return id;
+};
+
+
+/**
+ * Clears the specified heading watch.
+ *
+ * @param {String} id       The ID of the watch returned from #watchHeading.
+ */
+Compass.prototype.clearWatch = function(id) {
+
+    // Stop javascript timer & remove from timer list
+    if (id && navigator.compass.timers[id]) {
+        clearInterval(navigator.compass.timers[id]);
+        delete navigator.compass.timers[id];
+    }
+};
+
+PhoneGap.addConstructor(function() {
+    if (typeof navigator.compass === "undefined") {
+        navigator.compass = new Compass();
+    }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("contact")) {
+PhoneGap.addResource("contact");
+
+/**
+* Contains information about a single contact.
+* @constructor
+* @param {DOMString} id unique identifier
+* @param {DOMString} displayName
+* @param {ContactName} name
+* @param {DOMString} nickname
+* @param {Array.<ContactField>} phoneNumbers array of phone numbers
+* @param {Array.<ContactField>} emails array of email addresses
+* @param {Array.<ContactAddress>} addresses array of addresses
+* @param {Array.<ContactField>} ims instant messaging user ids
+* @param {Array.<ContactOrganization>} organizations
+* @param {DOMString} birthday contact's birthday
+* @param {DOMString} note user notes about contact
+* @param {Array.<ContactField>} photos
+* @param {Array.<ContactField>} categories
+* @param {Array.<ContactField>} urls contact's web sites
+*/
+var Contact = function (id, displayName, name, nickname, phoneNumbers, emails, addresses,
+    ims, organizations, birthday, note, photos, categories, urls) {
+    this.id = id || null;
+    this.rawId = null;
+    this.displayName = displayName || null;
+    this.name = name || null; // ContactName
+    this.nickname = nickname || null;
+    this.phoneNumbers = phoneNumbers || null; // ContactField[]
+    this.emails = emails || null; // ContactField[]
+    this.addresses = addresses || null; // ContactAddress[]
+    this.ims = ims || null; // ContactField[]
+    this.organizations = organizations || null; // ContactOrganization[]
+    this.birthday = birthday || null;
+    this.note = note || null;
+    this.photos = photos || null; // ContactField[]
+    this.categories = categories || null; // ContactField[]
+    this.urls = urls || null; // ContactField[]
+};
+
+/**
+ *  ContactError.
+ *  An error code assigned by an implementation when an error has occurreds
+ * @constructor
+ */
+var ContactError = function() {
+    this.code=null;
+};
+
+/**
+ * Error codes
+ */
+ContactError.UNKNOWN_ERROR = 0;
+ContactError.INVALID_ARGUMENT_ERROR = 1;
+ContactError.TIMEOUT_ERROR = 2;
+ContactError.PENDING_OPERATION_ERROR = 3;
+ContactError.IO_ERROR = 4;
+ContactError.NOT_SUPPORTED_ERROR = 5;
+ContactError.PERMISSION_DENIED_ERROR = 20;
+
+/**
+* Removes contact from device storage.
+* @param successCB success callback
+* @param errorCB error callback
+*/
+Contact.prototype.remove = function(successCB, errorCB) {
+    if (this.id === null) {
+        var errorObj = new ContactError();
+        errorObj.code = ContactError.UNKNOWN_ERROR;
+        errorCB(errorObj);
+    }
+    else {
+        PhoneGap.exec(successCB, errorCB, "Contacts", "remove", [this.id]);
+    }
+};
+
+/**
+* Creates a deep copy of this Contact.
+* With the contact ID set to null.
+* @return copy of this Contact
+*/
+Contact.prototype.clone = function() {
+    var clonedContact = PhoneGap.clone(this);
+    var i;
+    clonedContact.id = null;
+    clonedContact.rawId = null;
+    // Loop through and clear out any id's in phones, emails, etc.
+    if (clonedContact.phoneNumbers) {
+        for (i = 0; i < clonedContact.phoneNumbers.length; i++) {
+            clonedContact.phoneNumbers[i].id = null;
+        }
+    }
+    if (clonedContact.emails) {
+        for (i = 0; i < clonedContact.emails.length; i++) {
+            clonedContact.emails[i].id = null;
+        }
+    }
+    if (clonedContact.addresses) {
+        for (i = 0; i < clonedContact.addresses.length; i++) {
+            clonedContact.addresses[i].id = null;
+        }
+    }
+    if (clonedContact.ims) {
+        for (i = 0; i < clonedContact.ims.length; i++) {
+            clonedContact.ims[i].id = null;
+        }
+    }
+    if (clonedContact.organizations) {
+        for (i = 0; i < clonedContact.organizations.length; i++) {
+            clonedContact.organizations[i].id = null;
+        }
+    }
+    if (clonedContact.tags) {
+        for (i = 0; i < clonedContact.tags.length; i++) {
+            clonedContact.tags[i].id = null;
+        }
+    }
+    if (clonedContact.photos) {
+        for (i = 0; i < clonedContact.photos.length; i++) {
+            clonedContact.photos[i].id = null;
+        }
+    }
+    if (clonedContact.urls) {
+        for (i = 0; i < clonedContact.urls.length; i++) {
+            clonedContact.urls[i].id = null;
+        }
+    }
+    return clonedContact;
+};
+
+/**
+* Persists contact to device storage.
+* @param successCB success callback
+* @param errorCB error callback
+*/
+Contact.prototype.save = function(successCB, errorCB) {
+    PhoneGap.exec(successCB, errorCB, "Contacts", "save", [this]);
+};
+
+/**
+* Contact name.
+* @constructor
+* @param formatted
+* @param familyName
+* @param givenName
+* @param middle
+* @param prefix
+* @param suffix
+*/
+var ContactName = function(formatted, familyName, givenName, middle, prefix, suffix) {
+    this.formatted = formatted || null;
+    this.familyName = familyName || null;
+    this.givenName = givenName || null;
+    this.middleName = middle || null;
+    this.honorificPrefix = prefix || null;
+    this.honorificSuffix = suffix || null;
+};
+
+/**
+* Generic contact field.
+* @constructor
+* @param {DOMString} id unique identifier, should only be set by native code
+* @param type
+* @param value
+* @param pref
+*/
+var ContactField = function(type, value, pref) {
+       this.id = null;
+    this.type = type || null;
+    this.value = value || null;
+    this.pref = pref || null;
+};
+
+/**
+* Contact address.
+* @constructor
+* @param {DOMString} id unique identifier, should only be set by native code
+* @param formatted
+* @param streetAddress
+* @param locality
+* @param region
+* @param postalCode
+* @param country
+*/
+var ContactAddress = function(pref, type, formatted, streetAddress, locality, region, postalCode, country) {
+       this.id = null;
+    this.pref = pref || null;
+    this.type = type || null;
+    this.formatted = formatted || null;
+    this.streetAddress = streetAddress || null;
+    this.locality = locality || null;
+    this.region = region || null;
+    this.postalCode = postalCode || null;
+    this.country = country || null;
+};
+
+/**
+* Contact organization.
+* @constructor
+* @param {DOMString} id unique identifier, should only be set by native code
+* @param name
+* @param dept
+* @param title
+* @param startDate
+* @param endDate
+* @param location
+* @param desc
+*/
+var ContactOrganization = function(pref, type, name, dept, title) {
+       this.id = null;
+    this.pref = pref || null;
+    this.type = type || null;
+    this.name = name || null;
+    this.department = dept || null;
+    this.title = title || null;
+};
+
+/**
+* Represents a group of Contacts.
+* @constructor
+*/
+var Contacts = function() {
+    this.inProgress = false;
+    this.records = [];
+};
+/**
+* Returns an array of Contacts matching the search criteria.
+* @param fields that should be searched
+* @param successCB success callback
+* @param errorCB error callback
+* @param {ContactFindOptions} options that can be applied to contact searching
+* @return array of Contacts matching search criteria
+*/
+Contacts.prototype.find = function(fields, successCB, errorCB, options) {
+    if (successCB === null) {
+        throw new TypeError("You must specify a success callback for the find command.");
+    }
+    if (fields === null || fields === "undefined" || fields.length === "undefined" || fields.length <= 0) {
+        if (typeof errorCB === "function") {
+            errorCB({"code": ContactError.INVALID_ARGUMENT_ERROR});
+        }
+    } else {
+        PhoneGap.exec(successCB, errorCB, "Contacts", "search", [fields, options]);        
+    }
+};
+
+/**
+* This function creates a new contact, but it does not persist the contact
+* to device storage. To persist the contact to device storage, invoke
+* contact.save().
+* @param properties an object who's properties will be examined to create a new Contact
+* @returns new Contact object
+*/
+Contacts.prototype.create = function(properties) {
+    var i;
+       var contact = new Contact();
+    for (i in properties) {
+        if (contact[i] !== 'undefined') {
+            contact[i] = properties[i];
+        }
+    }
+    return contact;
+};
+
+/**
+* This function returns and array of contacts.  It is required as we need to convert raw
+* JSON objects into concrete Contact objects.  Currently this method is called after
+* navigator.contacts.find but before the find methods success call back.
+*
+* @param jsonArray an array of JSON Objects that need to be converted to Contact objects.
+* @returns an array of Contact objects
+*/
+Contacts.prototype.cast = function(pluginResult) {
+       var contacts = [];
+       var i;
+       for (i=0; i<pluginResult.message.length; i++) {
+               contacts.push(navigator.contacts.create(pluginResult.message[i]));
+       }
+       pluginResult.message = contacts;
+       return pluginResult;
+};
+
+/**
+ * ContactFindOptions.
+ * @constructor
+ * @param filter used to match contacts against
+ * @param multiple boolean used to determine if more than one contact should be returned
+ */
+var ContactFindOptions = function(filter, multiple) {
+    this.filter = filter || '';
+    this.multiple = multiple || false;
+};
+
+/**
+ * Add the contact interface into the browser.
+ */
+PhoneGap.addConstructor(function() {
+    if(typeof navigator.contacts === "undefined") {
+        navigator.contacts = new Contacts();
+    }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+// TODO: Needs to be commented
+
+if (!PhoneGap.hasResource("crypto")) {
+PhoneGap.addResource("crypto");
+
+/**
+* @constructor
+*/
+var Crypto = function() {
+};
+
+Crypto.prototype.encrypt = function(seed, string, callback) {
+    this.encryptWin = callback;
+    PhoneGap.exec(null, null, "Crypto", "encrypt", [seed, string]);
+};
+
+Crypto.prototype.decrypt = function(seed, string, callback) {
+    this.decryptWin = callback;
+    PhoneGap.exec(null, null, "Crypto", "decrypt", [seed, string]);
+};
+
+Crypto.prototype.gotCryptedString = function(string) {
+    this.encryptWin(string);
+};
+
+Crypto.prototype.getPlainString = function(string) {
+    this.decryptWin(string);
+};
+
+PhoneGap.addConstructor(function() {
+    if (typeof navigator.Crypto === "undefined") {
+        navigator.Crypto = new Crypto();
+    }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("device")) {
+PhoneGap.addResource("device");
+
+/**
+ * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the
+ * phone, etc.
+ * @constructor
+ */
+var Device = function() {
+    this.available = PhoneGap.available;
+    this.platform = null;
+    this.version = null;
+    this.name = null;
+    this.uuid = null;
+    this.phonegap = null;
+
+    var me = this;
+    this.getInfo(
+        function(info) {
+            me.available = true;
+            me.platform = info.platform;
+            me.version = info.version;
+            me.name = info.name;
+            me.uuid = info.uuid;
+            me.phonegap = info.phonegap;
+            PhoneGap.onPhoneGapInfoReady.fire();
+        },
+        function(e) {
+            me.available = false;
+            console.log("Error initializing PhoneGap: " + e);
+            alert("Error initializing PhoneGap: "+e);
+        });
+};
+
+/**
+ * Get device info
+ *
+ * @param {Function} successCallback The function to call when the heading data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
+ */
+Device.prototype.getInfo = function(successCallback, errorCallback) {
+
+    // successCallback required
+    if (typeof successCallback !== "function") {
+        console.log("Device Error: successCallback is not a function");
+        return;
+    }
+
+    // errorCallback optional
+    if (errorCallback && (typeof errorCallback !== "function")) {
+        console.log("Device Error: errorCallback is not a function");
+        return;
+    }
+
+    // Get info
+    PhoneGap.exec(successCallback, errorCallback, "Device", "getDeviceInfo", []);
+};
+
+/*
+ * DEPRECATED
+ * This is only for Android.
+ *
+ * You must explicitly override the back button.
+ */
+Device.prototype.overrideBackButton = function() {
+       console.log("Device.overrideBackButton() is deprecated.  Use App.overrideBackbutton(true).");
+       navigator.app.overrideBackbutton(true);
+};
+
+/*
+ * DEPRECATED
+ * This is only for Android.
+ *
+ * This resets the back button to the default behaviour
+ */
+Device.prototype.resetBackButton = function() {
+       console.log("Device.resetBackButton() is deprecated.  Use App.overrideBackbutton(false).");
+       navigator.app.overrideBackbutton(false);
+};
+
+/*
+ * DEPRECATED
+ * This is only for Android.
+ *
+ * This terminates the activity!
+ */
+Device.prototype.exitApp = function() {
+       console.log("Device.exitApp() is deprecated.  Use App.exitApp().");
+       navigator.app.exitApp();
+};
+
+PhoneGap.addConstructor(function() {
+    if (typeof navigator.device === "undefined") {
+        navigator.device = window.device = new Device();
+    }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("file")) {
+PhoneGap.addResource("file");
+
+/**
+ * This class provides some useful information about a file.
+ * This is the fields returned when navigator.fileMgr.getFileProperties()
+ * is called.
+ * @constructor
+ */
+var FileProperties = function(filePath) {
+    this.filePath = filePath;
+    this.size = 0;
+    this.lastModifiedDate = null;
+};
+
+/**
+ * Represents a single file.
+ *
+ * @constructor
+ * @param name {DOMString} name of the file, without path information
+ * @param fullPath {DOMString} the full path of the file, including the name
+ * @param type {DOMString} mime type
+ * @param lastModifiedDate {Date} last modified date
+ * @param size {Number} size of the file in bytes
+ */
+var File = function(name, fullPath, type, lastModifiedDate, size) {
+       this.name = name || null;
+    this.fullPath = fullPath || null;
+       this.type = type || null;
+    this.lastModifiedDate = lastModifiedDate || null;
+    this.size = size || 0;
+};
+
+/** @constructor */
+var FileError = function() {
+   this.code = null;
+};
+
+// File error codes
+// Found in DOMException
+FileError.NOT_FOUND_ERR = 1;
+FileError.SECURITY_ERR = 2;
+FileError.ABORT_ERR = 3;
+
+// Added by this specification
+FileError.NOT_READABLE_ERR = 4;
+FileError.ENCODING_ERR = 5;
+FileError.NO_MODIFICATION_ALLOWED_ERR = 6;
+FileError.INVALID_STATE_ERR = 7;
+FileError.SYNTAX_ERR = 8;
+FileError.INVALID_MODIFICATION_ERR = 9;
+FileError.QUOTA_EXCEEDED_ERR = 10;
+FileError.TYPE_MISMATCH_ERR = 11;
+FileError.PATH_EXISTS_ERR = 12;
+
+//-----------------------------------------------------------------------------
+// File manager
+//-----------------------------------------------------------------------------
+
+/** @constructor */
+var FileMgr = function() {
+};
+
+FileMgr.prototype.getFileProperties = function(filePath) {
+    return PhoneGap.exec(null, null, "File", "getFileProperties", [filePath]);
+};
+
+FileMgr.prototype.getFileBasePaths = function() {
+};
+
+FileMgr.prototype.testSaveLocationExists = function(successCallback, errorCallback) {
+    return PhoneGap.exec(successCallback, errorCallback, "File", "testSaveLocationExists", []);
+};
+
+FileMgr.prototype.testFileExists = function(fileName, successCallback, errorCallback) {
+    return PhoneGap.exec(successCallback, errorCallback, "File", "testFileExists", [fileName]);
+};
+
+FileMgr.prototype.testDirectoryExists = function(dirName, successCallback, errorCallback) {
+    return PhoneGap.exec(successCallback, errorCallback, "File", "testDirectoryExists", [dirName]);
+};
+
+FileMgr.prototype.getFreeDiskSpace = function(successCallback, errorCallback) {
+    return PhoneGap.exec(successCallback, errorCallback, "File", "getFreeDiskSpace", []);
+};
+
+FileMgr.prototype.write = function(fileName, data, position, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "write", [fileName, data, position]);
+};
+
+FileMgr.prototype.truncate = function(fileName, size, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "truncate", [fileName, size]);
+};
+
+FileMgr.prototype.readAsText = function(fileName, encoding, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "readAsText", [fileName, encoding]);
+};
+
+FileMgr.prototype.readAsDataURL = function(fileName, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "readAsDataURL", [fileName]);
+};
+
+PhoneGap.addConstructor(function() {
+    if (typeof navigator.fileMgr === "undefined") {
+        navigator.fileMgr = new FileMgr();
+    }
+});
+
+//-----------------------------------------------------------------------------
+// File Reader
+//-----------------------------------------------------------------------------
+// TODO: All other FileMgr function operate on the SD card as root.  However,
+//       for FileReader & FileWriter the root is not SD card.  Should this be changed?
+
+/**
+ * This class reads the mobile device file system.
+ *
+ * For Android:
+ *      The root directory is the root of the file system.
+ *      To read from the SD card, the file name is "sdcard/my_file.txt"
+ * @constructor
+ */
+var FileReader = function() {
+    this.fileName = "";
+
+    this.readyState = 0;
+
+    // File data
+    this.result = null;
+
+    // Error
+    this.error = null;
+
+    // Event handlers
+    this.onloadstart = null;    // When the read starts.
+    this.onprogress = null;     // While reading (and decoding) file or fileBlob data, and reporting partial file data (progess.loaded/progress.total)
+    this.onload = null;         // When the read has successfully completed.
+    this.onerror = null;        // When the read has failed (see errors).
+    this.onloadend = null;      // When the request has completed (either in success or failure).
+    this.onabort = null;        // When the read has been aborted. For instance, by invoking the abort() method.
+};
+
+// States
+FileReader.EMPTY = 0;
+FileReader.LOADING = 1;
+FileReader.DONE = 2;
+
+/**
+ * Abort reading file.
+ */
+FileReader.prototype.abort = function() {
+    var evt;
+    this.readyState = FileReader.DONE;
+    this.result = null;
+
+    // set error
+    var error = new FileError();
+    error.code = error.ABORT_ERR;
+    this.error = error;
+
+    // If error callback
+    if (typeof this.onerror === "function") {
+        this.onerror({"type":"error", "target":this});
+    }
+    // If abort callback
+    if (typeof this.onabort === "function") {
+        this.onabort({"type":"abort", "target":this});
+    }
+    // If load end callback
+    if (typeof this.onloadend === "function") {
+        this.onloadend({"type":"loadend", "target":this});
+    }
+};
+
+/**
+ * Read text file.
+ *
+ * @param file          {File} File object containing file properties
+ * @param encoding      [Optional] (see http://www.iana.org/assignments/character-sets)
+ */
+FileReader.prototype.readAsText = function(file, encoding) {
+    this.fileName = "";
+       if (typeof file.fullPath === "undefined") {
+               this.fileName = file;
+       } else {
+               this.fileName = file.fullPath;
+       }
+
+    // LOADING state
+    this.readyState = FileReader.LOADING;
+
+    // If loadstart callback
+    if (typeof this.onloadstart === "function") {
+        this.onloadstart({"type":"loadstart", "target":this});
+    }
+
+    // Default encoding is UTF-8
+    var enc = encoding ? encoding : "UTF-8";
+
+    var me = this;
+
+    // Read file
+    navigator.fileMgr.readAsText(this.fileName, enc,
+
+        // Success callback
+        function(r) {
+            var evt;
+
+            // If DONE (cancelled), then don't do anything
+            if (me.readyState === FileReader.DONE) {
+                return;
+            }
+
+            // Save result
+            me.result = r;
+
+            // If onload callback
+            if (typeof me.onload === "function") {
+                me.onload({"type":"load", "target":me});
+            }
+
+            // DONE state
+            me.readyState = FileReader.DONE;
+
+            // If onloadend callback
+            if (typeof me.onloadend === "function") {
+                me.onloadend({"type":"loadend", "target":me});
+            }
+        },
+
+        // Error callback
+        function(e) {
+            var evt;
+            // If DONE (cancelled), then don't do anything
+            if (me.readyState === FileReader.DONE) {
+                return;
+            }
+
+            // Save error
+                   me.error = e;
+
+            // If onerror callback
+            if (typeof me.onerror === "function") {
+                me.onerror({"type":"error", "target":me});
+            }
+
+            // DONE state
+            me.readyState = FileReader.DONE;
+
+            // If onloadend callback
+            if (typeof me.onloadend === "function") {
+                me.onloadend({"type":"loadend", "target":me});
+            }
+        }
+        );
+};
+
+
+/**
+ * Read file and return data as a base64 encoded data url.
+ * A data url is of the form:
+ *      data:[<mediatype>][;base64],<data>
+ *
+ * @param file          {File} File object containing file properties
+ */
+FileReader.prototype.readAsDataURL = function(file) {
+       this.fileName = "";
+    if (typeof file.fullPath === "undefined") {
+        this.fileName = file;
+    } else {
+        this.fileName = file.fullPath;
+    }
+
+    // LOADING state
+    this.readyState = FileReader.LOADING;
+
+    // If loadstart callback
+    if (typeof this.onloadstart === "function") {
+        this.onloadstart({"type":"loadstart", "target":this});
+    }
+
+    var me = this;
+
+    // Read file
+    navigator.fileMgr.readAsDataURL(this.fileName,
+
+        // Success callback
+        function(r) {
+            var evt;
+
+            // If DONE (cancelled), then don't do anything
+            if (me.readyState === FileReader.DONE) {
+                return;
+            }
+
+            // Save result
+            me.result = r;
+
+            // If onload callback
+            if (typeof me.onload === "function") {
+                me.onload({"type":"load", "target":me});
+            }
+
+            // DONE state
+            me.readyState = FileReader.DONE;
+
+            // If onloadend callback
+            if (typeof me.onloadend === "function") {
+                me.onloadend({"type":"loadend", "target":me});
+            }
+        },
+
+        // Error callback
+        function(e) {
+            var evt;
+            // If DONE (cancelled), then don't do anything
+            if (me.readyState === FileReader.DONE) {
+                return;
+            }
+
+            // Save error
+            me.error = e;
+
+            // If onerror callback
+            if (typeof me.onerror === "function") {
+                me.onerror({"type":"error", "target":me});
+            }
+
+            // DONE state
+            me.readyState = FileReader.DONE;
+
+            // If onloadend callback
+            if (typeof me.onloadend === "function") {
+                me.onloadend({"type":"loadend", "target":me});
+            }
+        }
+        );
+};
+
+/**
+ * Read file and return data as a binary data.
+ *
+ * @param file          {File} File object containing file properties
+ */
+FileReader.prototype.readAsBinaryString = function(file) {
+    // TODO - Can't return binary data to browser.
+    this.fileName = file;
+};
+
+/**
+ * Read file and return data as a binary data.
+ *
+ * @param file          {File} File object containing file properties
+ */
+FileReader.prototype.readAsArrayBuffer = function(file) {
+    // TODO - Can't return binary data to browser.
+    this.fileName = file;
+};
+
+//-----------------------------------------------------------------------------
+// File Writer
+//-----------------------------------------------------------------------------
+
+/**
+ * This class writes to the mobile device file system.
+ *
+ * For Android:
+ *      The root directory is the root of the file system.
+ *      To write to the SD card, the file name is "sdcard/my_file.txt"
+ *
+ * @constructor
+ * @param file {File} File object containing file properties
+ * @param append if true write to the end of the file, otherwise overwrite the file
+ */
+var FileWriter = function(file) {
+    this.fileName = "";
+    this.length = 0;
+       if (file) {
+           this.fileName = file.fullPath || file;
+           this.length = file.size || 0;
+       }
+    // default is to write at the beginning of the file
+    this.position = 0;
+
+    this.readyState = 0; // EMPTY
+
+    this.result = null;
+
+    // Error
+    this.error = null;
+
+    // Event handlers
+    this.onwritestart = null;  // When writing starts
+    this.onprogress = null;            // While writing the file, and reporting partial file data
+    this.onwrite = null;               // When the write has successfully completed.
+    this.onwriteend = null;            // When the request has completed (either in success or failure).
+    this.onabort = null;               // When the write has been aborted. For instance, by invoking the abort() method.
+    this.onerror = null;               // When the write has failed (see errors).
+};
+
+// States
+FileWriter.INIT = 0;
+FileWriter.WRITING = 1;
+FileWriter.DONE = 2;
+
+/**
+ * Abort writing file.
+ */
+FileWriter.prototype.abort = function() {
+    // check for invalid state
+       if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) {
+               throw FileError.INVALID_STATE_ERR;
+       }
+
+    // set error
+    var error = new FileError(), evt;
+    error.code = error.ABORT_ERR;
+    this.error = error;
+
+    // If error callback
+    if (typeof this.onerror === "function") {
+        this.onerror({"type":"error", "target":this});
+    }
+    // If abort callback
+    if (typeof this.onabort === "function") {
+        this.onabort({"type":"abort", "target":this});
+    }
+
+    this.readyState = FileWriter.DONE;
+
+    // If write end callback
+    if (typeof this.onwriteend == "function") {
+        this.onwriteend({"type":"writeend", "target":this});
+    }
+};
+
+/**
+ * Writes data to the file
+ *
+ * @param text to be written
+ */
+FileWriter.prototype.write = function(text) {
+       // Throw an exception if we are already writing a file
+       if (this.readyState === FileWriter.WRITING) {
+               throw FileError.INVALID_STATE_ERR;
+       }
+
+    // WRITING state
+    this.readyState = FileWriter.WRITING;
+
+    var me = this;
+
+    // If onwritestart callback
+    if (typeof me.onwritestart === "function") {
+        me.onwritestart({"type":"writestart", "target":me});
+    }
+
+    // Write file
+    navigator.fileMgr.write(this.fileName, text, this.position,
+
+        // Success callback
+        function(r) {
+            var evt;
+            // If DONE (cancelled), then don't do anything
+            if (me.readyState === FileWriter.DONE) {
+                return;
+            }
+
+            // position always increases by bytes written because file would be extended
+            me.position += r;
+            // The length of the file is now where we are done writing.
+            me.length = me.position;
+
+            // If onwrite callback
+            if (typeof me.onwrite === "function") {
+                me.onwrite({"type":"write", "target":me});
+            }
+
+            // DONE state
+            me.readyState = FileWriter.DONE;
+
+            // If onwriteend callback
+            if (typeof me.onwriteend === "function") {
+                me.onwriteend({"type":"writeend", "target":me});
+            }
+        },
+
+        // Error callback
+        function(e) {
+            var evt;
+
+            // If DONE (cancelled), then don't do anything
+            if (me.readyState === FileWriter.DONE) {
+                return;
+            }
+
+            // Save error
+            me.error = e;
+
+            // If onerror callback
+            if (typeof me.onerror === "function") {
+                me.onerror({"type":"error", "target":me});
+            }
+
+            // DONE state
+            me.readyState = FileWriter.DONE;
+
+            // If onwriteend callback
+            if (typeof me.onwriteend === "function") {
+                me.onwriteend({"type":"writeend", "target":me});
+            }
+        }
+        );
+
+};
+
+/**
+ * Moves the file pointer to the location specified.
+ *
+ * If the offset is a negative number the position of the file
+ * pointer is rewound.  If the offset is greater than the file
+ * size the position is set to the end of the file.
+ *
+ * @param offset is the location to move the file pointer to.
+ */
+FileWriter.prototype.seek = function(offset) {
+    // Throw an exception if we are already writing a file
+    if (this.readyState === FileWriter.WRITING) {
+        throw FileError.INVALID_STATE_ERR;
+    }
+
+    if (!offset) {
+        return;
+    }
+
+    // See back from end of file.
+    if (offset < 0) {
+               this.position = Math.max(offset + this.length, 0);
+       }
+    // Offset is bigger then file size so set position
+    // to the end of the file.
+       else if (offset > this.length) {
+               this.position = this.length;
+       }
+    // Offset is between 0 and file size so set the position
+    // to start writing.
+       else {
+               this.position = offset;
+       }
+};
+
+/**
+ * Truncates the file to the size specified.
+ *
+ * @param size to chop the file at.
+ */
+FileWriter.prototype.truncate = function(size) {
+       // Throw an exception if we are already writing a file
+       if (this.readyState === FileWriter.WRITING) {
+               throw FileError.INVALID_STATE_ERR;
+       }
+
+    // WRITING state
+    this.readyState = FileWriter.WRITING;
+
+    var me = this;
+
+    // If onwritestart callback
+    if (typeof me.onwritestart === "function") {
+        me.onwritestart({"type":"writestart", "target":this});
+    }
+
+    // Write file
+    navigator.fileMgr.truncate(this.fileName, size,
+
+        // Success callback
+        function(r) {
+            var evt;
+            // If DONE (cancelled), then don't do anything
+            if (me.readyState === FileWriter.DONE) {
+                return;
+            }
+
+            // Update the length of the file
+            me.length = r;
+            me.position = Math.min(me.position, r);
+
+            // If onwrite callback
+            if (typeof me.onwrite === "function") {
+                me.onwrite({"type":"write", "target":me});
+            }
+
+            // DONE state
+            me.readyState = FileWriter.DONE;
+
+            // If onwriteend callback
+            if (typeof me.onwriteend === "function") {
+                me.onwriteend({"type":"writeend", "target":me});
+            }
+        },
+
+        // Error callback
+        function(e) {
+            var evt;
+            // If DONE (cancelled), then don't do anything
+            if (me.readyState === FileWriter.DONE) {
+                return;
+            }
+
+            // Save error
+            me.error = e;
+
+            // If onerror callback
+            if (typeof me.onerror === "function") {
+                me.onerror({"type":"error", "target":me});
+            }
+
+            // DONE state
+            me.readyState = FileWriter.DONE;
+
+            // If onwriteend callback
+            if (typeof me.onwriteend === "function") {
+                me.onwriteend({"type":"writeend", "target":me});
+            }
+        }
+    );
+};
+
+/**
+ * Information about the state of the file or directory
+ *
+ * @constructor
+ * {Date} modificationTime (readonly)
+ */
+var Metadata = function() {
+    this.modificationTime=null;
+};
+
+/**
+ * Supplies arguments to methods that lookup or create files and directories
+ *
+ * @constructor
+ * @param {boolean} create file or directory if it doesn't exist
+ * @param {boolean} exclusive if true the command will fail if the file or directory exists
+ */
+var Flags = function(create, exclusive) {
+    this.create = create || false;
+    this.exclusive = exclusive || false;
+};
+
+/**
+ * An interface representing a file system
+ *
+ * @constructor
+ * {DOMString} name the unique name of the file system (readonly)
+ * {DirectoryEntry} root directory of the file system (readonly)
+ */
+var FileSystem = function() {
+    this.name = null;
+    this.root = null;
+};
+
+/**
+ * An interface that lists the files and directories in a directory.
+ * @constructor
+ */
+var DirectoryReader = function(fullPath){
+    this.fullPath = fullPath || null;
+};
+
+/**
+ * Returns a list of entries from a directory.
+ *
+ * @param {Function} successCallback is called with a list of entries
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "readEntries", [this.fullPath]);
+};
+
+/**
+ * An interface representing a directory on the file system.
+ *
+ * @constructor
+ * {boolean} isFile always false (readonly)
+ * {boolean} isDirectory always true (readonly)
+ * {DOMString} name of the directory, excluding the path leading to it (readonly)
+ * {DOMString} fullPath the absolute full path to the directory (readonly)
+ * {FileSystem} filesystem on which the directory resides (readonly)
+ */
+var DirectoryEntry = function() {
+    this.isFile = false;
+    this.isDirectory = true;
+    this.name = null;
+    this.fullPath = null;
+    this.filesystem = null;
+};
+
+/**
+ * Copies a directory to a new location
+ *
+ * @param {DirectoryEntry} parent the directory to which to copy the entry
+ * @param {DOMString} newName the new name of the entry, defaults to the current name
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
+};
+
+/**
+ * Looks up the metadata of the entry
+ *
+ * @param {Function} successCallback is called with a Metadata object
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.getMetadata = function(successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
+};
+
+/**
+ * Gets the parent of the entry
+ *
+ * @param {Function} successCallback is called with a parent entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.getParent = function(successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
+};
+
+/**
+ * Moves a directory to a new location
+ *
+ * @param {DirectoryEntry} parent the directory to which to move the entry
+ * @param {DOMString} newName the new name of the entry, defaults to the current name
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
+};
+
+/**
+ * Removes the entry
+ *
+ * @param {Function} successCallback is called with no parameters
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.remove = function(successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
+};
+
+/**
+ * Returns a URI that can be used to identify this entry.
+ *
+ * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
+ * @return uri
+ */
+DirectoryEntry.prototype.toURI = function(mimeType) {
+    return "file://" + this.fullPath;
+};
+
+/**
+ * Creates a new DirectoryReader to read entries from this directory
+ */
+DirectoryEntry.prototype.createReader = function(successCallback, errorCallback) {
+    return new DirectoryReader(this.fullPath);
+};
+
+/**
+ * Creates or looks up a directory
+ *
+ * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory
+ * @param {Flags} options to create or excluively create the directory
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "getDirectory", [this.fullPath, path, options]);
+};
+
+/**
+ * Creates or looks up a file
+ *
+ * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file
+ * @param {Flags} options to create or excluively create the file
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "getFile", [this.fullPath, path, options]);
+};
+
+/**
+ * Deletes a directory and all of it's contents
+ *
+ * @param {Function} successCallback is called with no parameters
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "removeRecursively", [this.fullPath]);
+};
+
+/**
+ * An interface representing a directory on the file system.
+ *
+ * @constructor
+ * {boolean} isFile always true (readonly)
+ * {boolean} isDirectory always false (readonly)
+ * {DOMString} name of the file, excluding the path leading to it (readonly)
+ * {DOMString} fullPath the absolute full path to the file (readonly)
+ * {FileSystem} filesystem on which the directory resides (readonly)
+ */
+var FileEntry = function() {
+    this.isFile = true;
+    this.isDirectory = false;
+    this.name = null;
+    this.fullPath = null;
+    this.filesystem = null;
+};
+
+/**
+ * Copies a file to a new location
+ *
+ * @param {DirectoryEntry} parent the directory to which to copy the entry
+ * @param {DOMString} newName the new name of the entry, defaults to the current name
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
+};
+
+/**
+ * Looks up the metadata of the entry
+ *
+ * @param {Function} successCallback is called with a Metadata object
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.getMetadata = function(successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
+};
+
+/**
+ * Gets the parent of the entry
+ *
+ * @param {Function} successCallback is called with a parent entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.getParent = function(successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
+};
+
+/**
+ * Moves a directory to a new location
+ *
+ * @param {DirectoryEntry} parent the directory to which to move the entry
+ * @param {DOMString} newName the new name of the entry, defaults to the current name
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
+};
+
+/**
+ * Removes the entry
+ *
+ * @param {Function} successCallback is called with no parameters
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.remove = function(successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
+};
+
+/**
+ * Returns a URI that can be used to identify this entry.
+ *
+ * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
+ * @return uri
+ */
+FileEntry.prototype.toURI = function(mimeType) {
+    return "file://" + this.fullPath;
+};
+
+/**
+ * Creates a new FileWriter associated with the file that this FileEntry represents.
+ *
+ * @param {Function} successCallback is called with the new FileWriter
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.createWriter = function(successCallback, errorCallback) {
+    this.file(function(filePointer) {
+        var writer = new FileWriter(filePointer);
+    
+        if (writer.fileName === null || writer.fileName === "") {
+            if (typeof errorCallback == "function") {
+                errorCallback({
+                    "code": FileError.INVALID_STATE_ERR
+                });
+            }
+        }
+    
+        if (typeof successCallback == "function") {
+            successCallback(writer);
+        }       
+    }, errorCallback);
+};
+
+/**
+ * Returns a File that represents the current state of the file that this FileEntry represents.
+ *
+ * @param {Function} successCallback is called with the new File object
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.file = function(successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "getFileMetadata", [this.fullPath]);
+};
+
+/** @constructor */
+var LocalFileSystem = function() {
+};
+
+// File error codes
+LocalFileSystem.TEMPORARY = 0;
+LocalFileSystem.PERSISTENT = 1;
+LocalFileSystem.RESOURCE = 2;
+LocalFileSystem.APPLICATION = 3;
+
+/**
+ * Requests a filesystem in which to store application data.
+ *
+ * @param {int} type of file system being requested
+ * @param {Function} successCallback is called with the new FileSystem
+ * @param {Function} errorCallback is called with a FileError
+ */
+LocalFileSystem.prototype.requestFileSystem = function(type, size, successCallback, errorCallback) {
+    if (type < 0 || type > 3) {
+        if (typeof errorCallback == "function") {
+            errorCallback({
+                "code": FileError.SYNTAX_ERR
+            });
+        }
+    }
+    else {
+        PhoneGap.exec(successCallback, errorCallback, "File", "requestFileSystem", [type, size]);
+    }
+};
+
+/**
+ *
+ * @param {DOMString} uri referring to a local file in a filesystem
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+LocalFileSystem.prototype.resolveLocalFileSystemURI = function(uri, successCallback, errorCallback) {
+    PhoneGap.exec(successCallback, errorCallback, "File", "resolveLocalFileSystemURI", [uri]);
+};
+
+/**
+* This function returns and array of contacts.  It is required as we need to convert raw
+* JSON objects into concrete Contact objects.  Currently this method is called after
+* navigator.service.contacts.find but before the find methods success call back.
+*
+* @param a JSON Objects that need to be converted to DirectoryEntry or FileEntry objects.
+* @returns an entry
+*/
+LocalFileSystem.prototype._castFS = function(pluginResult) {
+    var entry = null;
+    entry = new DirectoryEntry();
+    entry.isDirectory = pluginResult.message.root.isDirectory;
+    entry.isFile = pluginResult.message.root.isFile;
+    entry.name = pluginResult.message.root.name;
+    entry.fullPath = pluginResult.message.root.fullPath;
+    pluginResult.message.root = entry;
+    return pluginResult;
+};
+
+LocalFileSystem.prototype._castEntry = function(pluginResult) {
+    var entry = null;
+    if (pluginResult.message.isDirectory) {
+        console.log("This is a dir");
+        entry = new DirectoryEntry();
+    }
+    else if (pluginResult.message.isFile) {
+        console.log("This is a file");
+        entry = new FileEntry();
+    }
+    entry.isDirectory = pluginResult.message.isDirectory;
+    entry.isFile = pluginResult.message.isFile;
+    entry.name = pluginResult.message.name;
+    entry.fullPath = pluginResult.message.fullPath;
+    pluginResult.message = entry;
+    return pluginResult;
+};
+
+LocalFileSystem.prototype._castEntries = function(pluginResult) {
+    var entries = pluginResult.message;
+    var retVal = [];
+    for (var i=0; i<entries.length; i++) {
+        retVal.push(window.localFileSystem._createEntry(entries[i]));
+    }
+    pluginResult.message = retVal;
+    return pluginResult;
+};
+
+LocalFileSystem.prototype._createEntry = function(castMe) {
+    var entry = null;
+    if (castMe.isDirectory) {
+        console.log("This is a dir");
+        entry = new DirectoryEntry();
+    }
+    else if (castMe.isFile) {
+        console.log("This is a file");
+        entry = new FileEntry();
+    }
+    entry.isDirectory = castMe.isDirectory;
+    entry.isFile = castMe.isFile;
+    entry.name = castMe.name;
+    entry.fullPath = castMe.fullPath;
+    return entry;
+};
+
+LocalFileSystem.prototype._castDate = function(pluginResult) {
+    if (pluginResult.message.modificationTime) {
+        var modTime = new Date(pluginResult.message.modificationTime);
+        pluginResult.message.modificationTime = modTime;
+    }
+    else if (pluginResult.message.lastModifiedDate) {
+        var file = new File();
+        file.size = pluginResult.message.size;
+        file.type = pluginResult.message.type;
+        file.name = pluginResult.message.name;
+        file.fullPath = pluginResult.message.fullPath;
+        file.lastModifiedDate = new Date(pluginResult.message.lastModifiedDate);
+        pluginResult.message = file;
+    }
+    return pluginResult;
+};
+
+/**
+ * Add the FileSystem interface into the browser.
+ */
+PhoneGap.addConstructor(function() {
+       var pgLocalFileSystem = new LocalFileSystem();
+       // Needed for cast methods
+    if(typeof window.localFileSystem == "undefined") window.localFileSystem  = pgLocalFileSystem;
+    if(typeof window.requestFileSystem == "undefined") window.requestFileSystem  = pgLocalFileSystem.requestFileSystem;
+    if(typeof window.resolveLocalFileSystemURI == "undefined") window.resolveLocalFileSystemURI = pgLocalFileSystem.resolveLocalFileSystemURI;
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("filetransfer")) {
+PhoneGap.addResource("filetransfer");
+
+/**
+ * FileTransfer uploads a file to a remote server.
+ * @constructor
+ */
+var FileTransfer = function() {};
+
+/**
+ * FileUploadResult
+ * @constructor
+ */
+var FileUploadResult = function() {
+    this.bytesSent = 0;
+    this.responseCode = null;
+    this.response = null;
+};
+
+/**
+ * FileTransferError
+ * @constructor
+ */
+var FileTransferError = function() {
+    this.code = null;
+};
+
+FileTransferError.FILE_NOT_FOUND_ERR = 1;
+FileTransferError.INVALID_URL_ERR = 2;
+FileTransferError.CONNECTION_ERR = 3;
+
+/**
+* Given an absolute file path, uploads a file on the device to a remote server
+* using a multipart HTTP request.
+* @param filePath {String}           Full path of the file on the device
+* @param server {String}             URL of the server to receive the file
+* @param successCallback (Function}  Callback to be invoked when upload has completed
+* @param errorCallback {Function}    Callback to be invoked upon error
+* @param options {FileUploadOptions} Optional parameters such as file name and mimetype
+*/
+FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, debug) {
+
+    // check for options
+    var fileKey = null;
+    var fileName = null;
+    var mimeType = null;
+    var params = null;
+    if (options) {
+        fileKey = options.fileKey;
+        fileName = options.fileName;
+        mimeType = options.mimeType;
+        if (options.params) {
+            params = options.params;
+        }
+        else {
+            params = {};
+        }
+    }
+
+    PhoneGap.exec(successCallback, errorCallback, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, debug]);
+};
+
+/**
+ * Options to customize the HTTP request used to upload files.
+ * @constructor
+ * @param fileKey {String}   Name of file request parameter.
+ * @param fileName {String}  Filename to be used by the server. Defaults to image.jpg.
+ * @param mimeType {String}  Mimetype of the uploaded file. Defaults to image/jpeg.
+ * @param params {Object}    Object with key: value params to send to the server.
+ */
+var FileUploadOptions = function(fileKey, fileName, mimeType, params) {
+    this.fileKey = fileKey || null;
+    this.fileName = fileName || null;
+    this.mimeType = mimeType || null;
+    this.params = params || null;
+};
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("geolocation")) {
+PhoneGap.addResource("geolocation");
+
+/**
+ * This class provides access to device GPS data.
+ * @constructor
+ */
+var Geolocation = function() {
+
+    // The last known GPS position.
+    this.lastPosition = null;
+
+    // Geolocation listeners
+    this.listeners = {};
+};
+
+/**
+ * Position error object
+ *
+ * @constructor
+ * @param code
+ * @param message
+ */
+var PositionError = function(code, message) {
+    this.code = code;
+    this.message = message;
+};
+
+PositionError.PERMISSION_DENIED = 1;
+PositionError.POSITION_UNAVAILABLE = 2;
+PositionError.TIMEOUT = 3;
+
+/**
+ * Asynchronously aquires the current position.
+ *
+ * @param {Function} successCallback    The function to call when the position data is available
+ * @param {Function} errorCallback      The function to call when there is an error getting the heading position. (OPTIONAL)
+ * @param {PositionOptions} options     The options for getting the position data. (OPTIONAL)
+ */
+Geolocation.prototype.getCurrentPosition = function(successCallback, errorCallback, options) {
+    if (navigator._geo.listeners.global) {
+        console.log("Geolocation Error: Still waiting for previous getCurrentPosition() request.");
+        try {
+            errorCallback(new PositionError(PositionError.TIMEOUT, "Geolocation Error: Still waiting for previous getCurrentPosition() request."));
+        } catch (e) {
+        }
+        return;
+    }
+    var maximumAge = 10000;
+    var enableHighAccuracy = false;
+    var timeout = 10000;
+    if (typeof options !== "undefined") {
+        if (typeof options.maximumAge !== "undefined") {
+            maximumAge = options.maximumAge;
+        }
+        if (typeof options.enableHighAccuracy !== "undefined") {
+            enableHighAccuracy = options.enableHighAccuracy;
+        }
+        if (typeof options.timeout !== "undefined") {
+            timeout = options.timeout;
+        }
+    }
+    navigator._geo.listeners.global = {"success" : successCallback, "fail" : errorCallback };
+    PhoneGap.exec(null, null, "Geolocation", "getCurrentLocation", [enableHighAccuracy, timeout, maximumAge]);
+};
+
+/**
+ * Asynchronously watches the geolocation for changes to geolocation.  When a change occurs,
+ * the successCallback is called with the new location.
+ *
+ * @param {Function} successCallback    The function to call each time the location data is available
+ * @param {Function} errorCallback      The function to call when there is an error getting the location data. (OPTIONAL)
+ * @param {PositionOptions} options     The options for getting the location data such as frequency. (OPTIONAL)
+ * @return String                       The watch id that must be passed to #clearWatch to stop watching.
+ */
+Geolocation.prototype.watchPosition = function(successCallback, errorCallback, options) {
+    var maximumAge = 10000;
+    var enableHighAccuracy = false;
+    var timeout = 10000;
+    if (typeof options !== "undefined") {
+        if (typeof options.frequency  !== "undefined") {
+            maximumAge = options.frequency;
+        }
+        if (typeof options.maximumAge !== "undefined") {
+            maximumAge = options.maximumAge;
+        }
+        if (typeof options.enableHighAccuracy !== "undefined") {
+            enableHighAccuracy = options.enableHighAccuracy;
+        }
+        if (typeof options.timeout !== "undefined") {
+            timeout = options.timeout;
+        }
+    }
+    var id = PhoneGap.createUUID();
+    navigator._geo.listeners[id] = {"success" : successCallback, "fail" : errorCallback };
+    PhoneGap.exec(null, null, "Geolocation", "start", [id, enableHighAccuracy, timeout, maximumAge]);
+    return id;
+};
+
+/*
+ * Native callback when watch position has a new position.
+ * PRIVATE METHOD
+ *
+ * @param {String} id
+ * @param {Number} lat
+ * @param {Number} lng
+ * @param {Number} alt
+ * @param {Number} altacc
+ * @param {Number} head
+ * @param {Number} vel
+ * @param {Number} stamp
+ */
+Geolocation.prototype.success = function(id, lat, lng, alt, altacc, head, vel, stamp) {
+    var coords = new Coordinates(lat, lng, alt, altacc, head, vel);
+    var loc = new Position(coords, stamp);
+    try {
+        if (lat === "undefined" || lng === "undefined") {
+            navigator._geo.listeners[id].fail(new PositionError(PositionError.POSITION_UNAVAILABLE, "Lat/Lng are undefined."));
+        }
+        else {
+            navigator._geo.lastPosition = loc;
+            navigator._geo.listeners[id].success(loc);
+        }
+    }
+    catch (e) {
+        console.log("Geolocation Error: Error calling success callback function.");
+    }
+
+    if (id === "global") {
+        delete navigator._geo.listeners.global;
+    }
+};
+
+/**
+ * Native callback when watch position has an error.
+ * PRIVATE METHOD
+ *
+ * @param {String} id       The ID of the watch
+ * @param {Number} code     The error code
+ * @param {String} msg      The error message
+ */
+Geolocation.prototype.fail = function(id, code, msg) {
+    try {
+        navigator._geo.listeners[id].fail(new PositionError(code, msg));
+    }
+    catch (e) {
+        console.log("Geolocation Error: Error calling error callback function.");
+    }
+};
+
+/**
+ * Clears the specified heading watch.
+ *
+ * @param {String} id       The ID of the watch returned from #watchPosition
+ */
+Geolocation.prototype.clearWatch = function(id) {
+    PhoneGap.exec(null, null, "Geolocation", "stop", [id]);
+    delete navigator._geo.listeners[id];
+};
+
+/**
+ * Force the PhoneGap geolocation to be used instead of built-in.
+ */
+Geolocation.usingPhoneGap = false;
+Geolocation.usePhoneGap = function() {
+    if (Geolocation.usingPhoneGap) {
+        return;
+    }
+    Geolocation.usingPhoneGap = true;
+
+    // Set built-in geolocation methods to our own implementations
+    // (Cannot replace entire geolocation, but can replace individual methods)
+    navigator.geolocation.setLocation = navigator._geo.setLocation;
+    navigator.geolocation.getCurrentPosition = navigator._geo.getCurrentPosition;
+    navigator.geolocation.watchPosition = navigator._geo.watchPosition;
+    navigator.geolocation.clearWatch = navigator._geo.clearWatch;
+    navigator.geolocation.start = navigator._geo.start;
+    navigator.geolocation.stop = navigator._geo.stop;
+};
+
+PhoneGap.addConstructor(function() {
+    navigator._geo = new Geolocation();
+
+    // No native geolocation object for Android 1.x, so use PhoneGap geolocation
+    if (typeof navigator.geolocation === 'undefined') {
+        navigator.geolocation = navigator._geo;
+        Geolocation.usingPhoneGap = true;
+    }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010, IBM Corporation
+ */
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("media")) {
+PhoneGap.addResource("media");
+
+/**
+ * This class provides access to the device media, interfaces to both sound and video
+ *
+ * @constructor
+ * @param src                   The file name or url to play
+ * @param successCallback       The callback to be called when the file is done playing or recording.
+ *                                  successCallback() - OPTIONAL
+ * @param errorCallback         The callback to be called if there is an error.
+ *                                  errorCallback(int errorCode) - OPTIONAL
+ * @param statusCallback        The callback to be called when media status has changed.
+ *                                  statusCallback(int statusCode) - OPTIONAL
+ * @param positionCallback      The callback to be called when media position has changed.
+ *                                  positionCallback(long position) - OPTIONAL
+ */
+var Media = function(src, successCallback, errorCallback, statusCallback, positionCallback) {
+
+    // successCallback optional
+    if (successCallback && (typeof successCallback !== "function")) {
+        console.log("Media Error: successCallback is not a function");
+        return;
+    }
+
+    // errorCallback optional
+    if (errorCallback && (typeof errorCallback !== "function")) {
+        console.log("Media Error: errorCallback is not a function");
+        return;
+    }
+
+    // statusCallback optional
+    if (statusCallback && (typeof statusCallback !== "function")) {
+        console.log("Media Error: statusCallback is not a function");
+        return;
+    }
+
+    // statusCallback optional
+    if (positionCallback && (typeof positionCallback !== "function")) {
+        console.log("Media Error: positionCallback is not a function");
+        return;
+    }
+
+    this.id = PhoneGap.createUUID();
+    PhoneGap.mediaObjects[this.id] = this;
+    this.src = src;
+    this.successCallback = successCallback;
+    this.errorCallback = errorCallback;
+    this.statusCallback = statusCallback;
+    this.positionCallback = positionCallback;
+    this._duration = -1;
+    this._position = -1;
+};
+
+// Media messages
+Media.MEDIA_STATE = 1;
+Media.MEDIA_DURATION = 2;
+Media.MEDIA_POSITION = 3;
+Media.MEDIA_ERROR = 9;
+
+// Media states
+Media.MEDIA_NONE = 0;
+Media.MEDIA_STARTING = 1;
+Media.MEDIA_RUNNING = 2;
+Media.MEDIA_PAUSED = 3;
+Media.MEDIA_STOPPED = 4;
+Media.MEDIA_MSG = ["None", "Starting", "Running", "Paused", "Stopped"];
+
+// TODO: Will MediaError be used?
+/**
+ * This class contains information about any Media errors.
+ * @constructor
+ */
+var MediaError = function() {
+    this.code = null;
+    this.message = "";
+};
+
+MediaError.MEDIA_ERR_ABORTED        = 1;
+MediaError.MEDIA_ERR_NETWORK        = 2;
+MediaError.MEDIA_ERR_DECODE         = 3;
+MediaError.MEDIA_ERR_NONE_SUPPORTED = 4;
+
+/**
+ * Start or resume playing audio file.
+ */
+Media.prototype.play = function() {
+    PhoneGap.exec(null, null, "Media", "startPlayingAudio", [this.id, this.src]);
+};
+
+/**
+ * Stop playing audio file.
+ */
+Media.prototype.stop = function() {
+    return PhoneGap.exec(null, null, "Media", "stopPlayingAudio", [this.id]);
+};
+
+/**
+ * Seek or jump to a new time in the track..
+ */
+Media.prototype.seekTo = function(milliseconds) {
+    PhoneGap.exec(null, null, "Media", "seekToAudio", [this.id, milliseconds]);
+};
+
+/**
+ * Pause playing audio file.
+ */
+Media.prototype.pause = function() {
+    PhoneGap.exec(null, null, "Media", "pausePlayingAudio", [this.id]);
+};
+
+/**
+ * Get duration of an audio file.
+ * The duration is only set for audio that is playing, paused or stopped.
+ *
+ * @return      duration or -1 if not known.
+ */
+Media.prototype.getDuration = function() {
+    return this._duration;
+};
+
+/**
+ * Get position of audio.
+ */
+Media.prototype.getCurrentPosition = function(success, fail) {
+    PhoneGap.exec(success, fail, "Media", "getCurrentPositionAudio", [this.id]);
+};
+
+/**
+ * Start recording audio file.
+ */
+Media.prototype.startRecord = function() {
+    PhoneGap.exec(null, null, "Media", "startRecordingAudio", [this.id, this.src]);
+};
+
+/**
+ * Stop recording audio file.
+ */
+Media.prototype.stopRecord = function() {
+    PhoneGap.exec(null, null, "Media", "stopRecordingAudio", [this.id]);
+};
+
+/**
+ * Release the resources.
+ */
+Media.prototype.release = function() {
+    PhoneGap.exec(null, null, "Media", "release", [this.id]);
+};
+
+/**
+ * List of media objects.
+ * PRIVATE
+ */
+PhoneGap.mediaObjects = {};
+
+/**
+ * Object that receives native callbacks.
+ * PRIVATE
+ * @constructor
+ */
+PhoneGap.Media = function() {};
+
+/**
+ * Get the media object.
+ * PRIVATE
+ *
+ * @param id            The media object id (string)
+ */
+PhoneGap.Media.getMediaObject = function(id) {
+    return PhoneGap.mediaObjects[id];
+};
+
+/**
+ * Audio has status update.
+ * PRIVATE
+ *
+ * @param id            The media object id (string)
+ * @param status        The status code (int)
+ * @param msg           The status message (string)
+ */
+PhoneGap.Media.onStatus = function(id, msg, value) {
+    var media = PhoneGap.mediaObjects[id];
+    // If state update
+    if (msg === Media.MEDIA_STATE) {
+        if (value === Media.MEDIA_STOPPED) {
+            if (media.successCallback) {
+                media.successCallback();
+            }
+        }
+        if (media.statusCallback) {
+            media.statusCallback(value);
+        }
+    }
+    else if (msg === Media.MEDIA_DURATION) {
+        media._duration = value;
+    }
+    else if (msg === Media.MEDIA_ERROR) {
+        if (media.errorCallback) {
+            media.errorCallback(value);
+        }
+    }
+    else if (msg == Media.MEDIA_POSITION) {
+        media._position = value;
+    }
+};
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("network")) {
+PhoneGap.addResource("network");
+
+/**
+ * This class contains information about the current network Connection.
+ * @constructor
+ */
+var Connection = function() {
+    this.type = null;
+    this._firstRun = true;
+    this._timer = null;
+    this.timeout = 500;
+
+    var me = this;
+    this.getInfo(
+        function(type) {
+            // Need to send events if we are on or offline
+            if (type == "none") {
+                // set a timer if still offline at the end of timer send the offline event
+                me._timer = setTimeout(function(){
+                    me.type = type;
+                    PhoneGap.fireEvent('offline');
+                    me._timer = null;
+                    }, me.timeout);
+            } else {
+                // If there is a current offline event pending clear it
+                if (me._timer != null) {
+                    clearTimeout(me._timer);
+                    me._timer = null;
+                }
+                me.type = type;
+                PhoneGap.fireEvent('online');
+            }
+            
+            // should only fire this once
+            if (me._firstRun) {
+                me._firstRun = false;
+                PhoneGap.onPhoneGapConnectionReady.fire();
+            }            
+        },
+        function(e) {
+            console.log("Error initializing Network Connection: " + e);
+        });
+};
+
+Connection.UNKNOWN = "unknown";
+Connection.ETHERNET = "ethernet";
+Connection.WIFI = "wifi";
+Connection.CELL_2G = "2g";
+Connection.CELL_3G = "3g";
+Connection.CELL_4G = "4g";
+Connection.NONE = "none";
+
+/**
+ * Get connection info
+ *
+ * @param {Function} successCallback The function to call when the Connection data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)
+ */
+Connection.prototype.getInfo = function(successCallback, errorCallback) {
+    // Get info
+    PhoneGap.exec(successCallback, errorCallback, "Network Status", "getConnectionInfo", []);
+};
+
+
+PhoneGap.addConstructor(function() {
+    if (typeof navigator.network === "undefined") {
+        navigator.network = new Object();
+    }
+    if (typeof navigator.network.connection === "undefined") {
+        navigator.network.connection = new Connection();
+    }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("notification")) {
+PhoneGap.addResource("notification");
+
+/**
+ * This class provides access to notifications on the device.
+ * @constructor
+ */
+var Notification = function() {
+};
+
+/**
+ * Open a native alert dialog, with a customizable title and button text.
+ *
+ * @param {String} message              Message to print in the body of the alert
+ * @param {Function} completeCallback   The callback that is called when user clicks on a button.
+ * @param {String} title                Title of the alert dialog (default: Alert)
+ * @param {String} buttonLabel          Label of the close button (default: OK)
+ */
+Notification.prototype.alert = function(message, completeCallback, title, buttonLabel) {
+    var _title = (title || "Alert");
+    var _buttonLabel = (buttonLabel || "OK");
+    PhoneGap.exec(completeCallback, null, "Notification", "alert", [message,_title,_buttonLabel]);
+};
+
+/**
+ * Open a native confirm dialog, with a customizable title and button text.
+ * The result that the user selects is returned to the result callback.
+ *
+ * @param {String} message              Message to print in the body of the alert
+ * @param {Function} resultCallback     The callback that is called when user clicks on a button.
+ * @param {String} title                Title of the alert dialog (default: Confirm)
+ * @param {String} buttonLabels         Comma separated list of the labels of the buttons (default: 'OK,Cancel')
+ */
+Notification.prototype.confirm = function(message, resultCallback, title, buttonLabels) {
+    var _title = (title || "Confirm");
+    var _buttonLabels = (buttonLabels || "OK,Cancel");
+    PhoneGap.exec(resultCallback, null, "Notification", "confirm", [message,_title,_buttonLabels]);
+};
+
+/**
+ * Start spinning the activity indicator on the statusbar
+ */
+Notification.prototype.activityStart = function() {
+    PhoneGap.exec(null, null, "Notification", "activityStart", ["Busy","Please wait..."]);
+};
+
+/**
+ * Stop spinning the activity indicator on the statusbar, if it's currently spinning
+ */
+Notification.prototype.activityStop = function() {
+    PhoneGap.exec(null, null, "Notification", "activityStop", []);
+};
+
+/**
+ * Display a progress dialog with progress bar that goes from 0 to 100.
+ *
+ * @param {String} title        Title of the progress dialog.
+ * @param {String} message      Message to display in the dialog.
+ */
+Notification.prototype.progressStart = function(title, message) {
+    PhoneGap.exec(null, null, "Notification", "progressStart", [title, message]);
+};
+
+/**
+ * Set the progress dialog value.
+ *
+ * @param {Number} value         0-100
+ */
+Notification.prototype.progressValue = function(value) {
+    PhoneGap.exec(null, null, "Notification", "progressValue", [value]);
+};
+
+/**
+ * Close the progress dialog.
+ */
+Notification.prototype.progressStop = function() {
+    PhoneGap.exec(null, null, "Notification", "progressStop", []);
+};
+
+/**
+ * Causes the device to blink a status LED.
+ *
+ * @param {Integer} count       The number of blinks.
+ * @param {String} colour       The colour of the light.
+ */
+Notification.prototype.blink = function(count, colour) {
+    // NOT IMPLEMENTED
+};
+
+/**
+ * Causes the device to vibrate.
+ *
+ * @param {Integer} mills       The number of milliseconds to vibrate for.
+ */
+Notification.prototype.vibrate = function(mills) {
+    PhoneGap.exec(null, null, "Notification", "vibrate", [mills]);
+};
+
+/**
+ * Causes the device to beep.
+ * On Android, the default notification ringtone is played "count" times.
+ *
+ * @param {Integer} count       The number of beeps.
+ */
+Notification.prototype.beep = function(count) {
+    PhoneGap.exec(null, null, "Notification", "beep", [count]);
+};
+
+PhoneGap.addConstructor(function() {
+    if (typeof navigator.notification === "undefined") {
+        navigator.notification = new Notification();
+    }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("position")) {
+PhoneGap.addResource("position");
+
+/**
+ * This class contains position information.
+ * @param {Object} lat
+ * @param {Object} lng
+ * @param {Object} acc
+ * @param {Object} alt
+ * @param {Object} altacc
+ * @param {Object} head
+ * @param {Object} vel
+ * @constructor
+ */
+var Position = function(coords, timestamp) {
+       this.coords = coords;
+       this.timestamp = (timestamp !== 'undefined') ? timestamp : new Date().getTime();
+};
+
+/** @constructor */
+var Coordinates = function(lat, lng, alt, acc, head, vel, altacc) {
+       /**
+        * The latitude of the position.
+        */
+       this.latitude = lat;
+       /**
+        * The longitude of the position,
+        */
+       this.longitude = lng;
+       /**
+        * The accuracy of the position.
+        */
+       this.accuracy = acc;
+       /**
+        * The altitude of the position.
+        */
+       this.altitude = alt;
+       /**
+        * The direction the device is moving at the position.
+        */
+       this.heading = head;
+       /**
+        * The velocity with which the device is moving at the position.
+        */
+       this.speed = vel;
+       /**
+        * The altitude accuracy of the position.
+        */
+       this.altitudeAccuracy = (altacc !== 'undefined') ? altacc : null;
+};
+
+/**
+ * This class specifies the options for requesting position data.
+ * @constructor
+ */
+var PositionOptions = function() {
+       /**
+        * Specifies the desired position accuracy.
+        */
+       this.enableHighAccuracy = true;
+       /**
+        * The timeout after which if position data cannot be obtained the errorCallback
+        * is called.
+        */
+       this.timeout = 10000;
+};
+
+/**
+ * This class contains information about any GSP errors.
+ * @constructor
+ */
+var PositionError = function() {
+       this.code = null;
+       this.message = "";
+};
+
+PositionError.UNKNOWN_ERROR = 0;
+PositionError.PERMISSION_DENIED = 1;
+PositionError.POSITION_UNAVAILABLE = 2;
+PositionError.TIMEOUT = 3;
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+/*
+ * This is purely for the Android 1.5/1.6 HTML 5 Storage
+ * I was hoping that Android 2.0 would deprecate this, but given the fact that
+ * most manufacturers ship with Android 1.5 and do not do OTA Updates, this is required
+ */
+
+if (!PhoneGap.hasResource("storage")) {
+PhoneGap.addResource("storage");
+
+/**
+ * SQL result set object
+ * PRIVATE METHOD
+ * @constructor
+ */
+var DroidDB_Rows = function() {
+    this.resultSet = [];    // results array
+    this.length = 0;        // number of rows
+};
+
+/**
+ * Get item from SQL result set
+ *
+ * @param row           The row number to return
+ * @return              The row object
+ */
+DroidDB_Rows.prototype.item = function(row) {
+    return this.resultSet[row];
+};
+
+/**
+ * SQL result set that is returned to user.
+ * PRIVATE METHOD
+ * @constructor
+ */
+var DroidDB_Result = function() {
+    this.rows = new DroidDB_Rows();
+};
+
+/**
+ * Storage object that is called by native code when performing queries.
+ * PRIVATE METHOD
+ * @constructor
+ */
+var DroidDB = function() {
+    this.queryQueue = {};
+};
+
+/**
+ * Callback from native code when query is complete.
+ * PRIVATE METHOD
+ *
+ * @param id                Query id
+ */
+DroidDB.prototype.completeQuery = function(id, data) {
+    var query = this.queryQueue[id];
+    if (query) {
+        try {
+            delete this.queryQueue[id];
+
+            // Get transaction
+            var tx = query.tx;
+
+            // If transaction hasn't failed
+            // Note: We ignore all query results if previous query
+            //       in the same transaction failed.
+            if (tx && tx.queryList[id]) {
+
+                // Save query results
+                var r = new DroidDB_Result();
+                r.rows.resultSet = data;
+                r.rows.length = data.length;
+                try {
+                    if (typeof query.successCallback === 'function') {
+                        query.successCallback(query.tx, r);
+                    }
+                } catch (ex) {
+                    console.log("executeSql error calling user success callback: "+ex);
+                }
+
+                tx.queryComplete(id);
+            }
+        } catch (e) {
+            console.log("executeSql error: "+e);
+        }
+    }
+};
+
+/**
+ * Callback from native code when query fails
+ * PRIVATE METHOD
+ *
+ * @param reason            Error message
+ * @param id                Query id
+ */
+DroidDB.prototype.fail = function(reason, id) {
+    var query = this.queryQueue[id];
+    if (query) {
+        try {
+            delete this.queryQueue[id];
+
+            // Get transaction
+            var tx = query.tx;
+
+            // If transaction hasn't failed
+            // Note: We ignore all query results if previous query
+            //       in the same transaction failed.
+            if (tx && tx.queryList[id]) {
+                tx.queryList = {};
+
+                try {
+                    if (typeof query.errorCallback === 'function') {
+                        query.errorCallback(query.tx, reason);
+                    }
+                } catch (ex) {
+                    console.log("executeSql error calling user error callback: "+ex);
+                }
+
+                tx.queryFailed(id, reason);
+            }
+
+        } catch (e) {
+            console.log("executeSql error: "+e);
+        }
+    }
+};
+
+/**
+ * SQL query object
+ * PRIVATE METHOD
+ *
+ * @constructor
+ * @param tx                The transaction object that this query belongs to
+ */
+var DroidDB_Query = function(tx) {
+
+    // Set the id of the query
+    this.id = PhoneGap.createUUID();
+
+    // Add this query to the queue
+    droiddb.queryQueue[this.id] = this;
+
+    // Init result
+    this.resultSet = [];
+
+    // Set transaction that this query belongs to
+    this.tx = tx;
+
+    // Add this query to transaction list
+    this.tx.queryList[this.id] = this;
+
+    // Callbacks
+    this.successCallback = null;
+    this.errorCallback = null;
+
+};
+
+/**
+ * Transaction object
+ * PRIVATE METHOD
+ * @constructor
+ */
+var DroidDB_Tx = function() {
+
+    // Set the id of the transaction
+    this.id = PhoneGap.createUUID();
+
+    // Callbacks
+    this.successCallback = null;
+    this.errorCallback = null;
+
+    // Query list
+    this.queryList = {};
+};
+
+/**
+ * Mark query in transaction as complete.
+ * If all queries are complete, call the user's transaction success callback.
+ *
+ * @param id                Query id
+ */
+DroidDB_Tx.prototype.queryComplete = function(id) {
+    delete this.queryList[id];
+
+    // If no more outstanding queries, then fire transaction success
+    if (this.successCallback) {
+        var count = 0;
+        var i;
+        for (i in this.queryList) {
+            if (this.queryList.hasOwnProperty(i)) {
+                count++;
+            }
+        }
+        if (count === 0) {
+            try {
+                this.successCallback();
+            } catch(e) {
+                console.log("Transaction error calling user success callback: " + e);
+            }
+        }
+    }
+};
+
+/**
+ * Mark query in transaction as failed.
+ *
+ * @param id                Query id
+ * @param reason            Error message
+ */
+DroidDB_Tx.prototype.queryFailed = function(id, reason) {
+
+    // The sql queries in this transaction have already been run, since
+    // we really don't have a real transaction implemented in native code.
+    // However, the user callbacks for the remaining sql queries in transaction
+    // will not be called.
+    this.queryList = {};
+
+    if (this.errorCallback) {
+        try {
+            this.errorCallback(reason);
+        } catch(e) {
+            console.log("Transaction error calling user error callback: " + e);
+        }
+    }
+};
+
+/**
+ * Execute SQL statement
+ *
+ * @param sql                   SQL statement to execute
+ * @param params                Statement parameters
+ * @param successCallback       Success callback
+ * @param errorCallback         Error callback
+ */
+DroidDB_Tx.prototype.executeSql = function(sql, params, successCallback, errorCallback) {
+
+    // Init params array
+    if (typeof params === 'undefined') {
+        params = [];
+    }
+
+    // Create query and add to queue
+    var query = new DroidDB_Query(this);
+    droiddb.queryQueue[query.id] = query;
+
+    // Save callbacks
+    query.successCallback = successCallback;
+    query.errorCallback = errorCallback;
+
+    // Call native code
+    PhoneGap.exec(null, null, "Storage", "executeSql", [sql, params, query.id]);
+};
+
+var DatabaseShell = function() {
+};
+
+/**
+ * Start a transaction.
+ * Does not support rollback in event of failure.
+ *
+ * @param process {Function}            The transaction function
+ * @param successCallback {Function}
+ * @param errorCallback {Function}
+ */
+DatabaseShell.prototype.transaction = function(process, errorCallback, successCallback) {
+    var tx = new DroidDB_Tx();
+    tx.successCallback = successCallback;
+    tx.errorCallback = errorCallback;
+    try {
+        process(tx);
+    } catch (e) {
+        console.log("Transaction error: "+e);
+        if (tx.errorCallback) {
+            try {
+                tx.errorCallback(e);
+            } catch (ex) {
+                console.log("Transaction error calling user error callback: "+e);
+            }
+        }
+    }
+};
+
+/**
+ * Open database
+ *
+ * @param name              Database name
+ * @param version           Database version
+ * @param display_name      Database display name
+ * @param size              Database size in bytes
+ * @return                  Database object
+ */
+var DroidDB_openDatabase = function(name, version, display_name, size) {
+    PhoneGap.exec(null, null, "Storage", "openDatabase", [name, version, display_name, size]);
+    var db = new DatabaseShell();
+    return db;
+};
+
+/**
+ * For browsers with no localStorage we emulate it with SQLite. Follows the w3c api.
+ * TODO: Do similar for sessionStorage.
+ */
+
+/**
+ * @constructor
+ */
+var CupcakeLocalStorage = function() {
+               try {
+
+                       this.db = openDatabase('localStorage', '1.0', 'localStorage', 2621440);
+                       var storage = {};
+                       this.length = 0;
+                       function setLength (length) {
+                               this.length = length;
+                               localStorage.length = length;
+                       }
+                       this.db.transaction(
+                               function (transaction) {
+                                   var i;
+                                       transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
+                                       transaction.executeSql('SELECT * FROM storage', [], function(tx, result) {
+                                               for(var i = 0; i < result.rows.length; i++) {
+                                                       storage[result.rows.item(i)['id']] =  result.rows.item(i)['body'];
+                                               }
+                                               setLength(result.rows.length);
+                                               PhoneGap.initializationComplete("cupcakeStorage");
+                                       });
+
+                               },
+                               function (err) {
+                                       alert(err.message);
+                               }
+                       );
+                       this.setItem = function(key, val) {
+                               if (typeof(storage[key])=='undefined') {
+                                       this.length++;
+                               }
+                               storage[key] = val;
+                               this.db.transaction(
+                                       function (transaction) {
+                                               transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
+                                               transaction.executeSql('REPLACE INTO storage (id, body) values(?,?)', [key,val]);
+                                       }
+                               );
+                       };
+                       this.getItem = function(key) {
+                               return storage[key];
+                       };
+                       this.removeItem = function(key) {
+                               delete storage[key];
+                               this.length--;
+                               this.db.transaction(
+                                       function (transaction) {
+                                               transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
+                                               transaction.executeSql('DELETE FROM storage where id=?', [key]);
+                                       }
+                               );
+                       };
+                       this.clear = function() {
+                               storage = {};
+                               this.length = 0;
+                               this.db.transaction(
+                                       function (transaction) {
+                                               transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
+                                               transaction.executeSql('DELETE FROM storage', []);
+                                       }
+                               );
+                       };
+                       this.key = function(index) {
+                               var i = 0;
+                               for (var j in storage) {
+                                       if (i==index) {
+                                               return j;
+                                       } else {
+                                               i++;
+                                       }
+                               }
+                               return null;
+                       };
+
+               } catch(e) {
+                       alert("Database error "+e+".");
+                   return;
+               }
+};
+
+PhoneGap.addConstructor(function() {
+    var setupDroidDB = function() {
+        navigator.openDatabase = window.openDatabase = DroidDB_openDatabase;
+        window.droiddb = new DroidDB();
+    }
+    if (typeof window.openDatabase === "undefined") {
+        setupDroidDB();
+    } else {
+        window.openDatabase_orig = window.openDatabase;
+        window.openDatabase = function(name, version, desc, size){
+            // Some versions of Android will throw a SECURITY_ERR so we need 
+            // to catch the exception and seutp our own DB handling.
+            var db = null;
+            try {
+                db = window.openDatabase_orig(name, version, desc, size);
+            } 
+            catch (ex) {
+                db = null;
+            }
+
+            if (db == null) {
+                setupDroidDB();
+                return DroidDB_openDatabase(name, version, desc, size);
+            }
+            else {
+                return db;
+            }
+        }
+    }
+    
+    if (typeof window.localStorage === "undefined") {
+        navigator.localStorage = window.localStorage = new CupcakeLocalStorage();
+        PhoneGap.waitForInitialization("cupcakeStorage");
+    }
+});
+}
+
+
diff --git a/assets/www/js/phonegap.0.9.4.js b/assets/www/js/phonegap.0.9.4.js
deleted file mode 100755 (executable)
index acff7de..0000000
+++ /dev/null
@@ -1,4229 +0,0 @@
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- * 
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010-2011, IBM Corporation
- */
-
-if (typeof PhoneGap === "undefined") {
-
-/**
- * The order of events during page load and PhoneGap startup is as follows:
- *
- * onDOMContentLoaded         Internal event that is received when the web page is loaded and parsed.
- * window.onload              Body onload event.
- * onNativeReady              Internal event that indicates the PhoneGap native side is ready.
- * onPhoneGapInit             Internal event that kicks off creation of all PhoneGap JavaScript objects (runs constructors).
- * onPhoneGapReady            Internal event fired when all PhoneGap JavaScript objects have been created
- * onPhoneGapInfoReady        Internal event fired when device properties are available
- * onDeviceReady              User event fired to indicate that PhoneGap is ready
- * onResume                   User event fired to indicate a start/resume lifecycle event
- * onPause                    User event fired to indicate a pause lifecycle event
- * onDestroy                  Internal event fired when app is being destroyed (User should use window.onunload event, not this one).
- *
- * The only PhoneGap events that user code should register for are:
- *      onDeviceReady
- *      onResume
- *
- * Listeners can be registered as:
- *      document.addEventListener("deviceready", myDeviceReadyListener, false);
- *      document.addEventListener("resume", myResumeListener, false);
- *      document.addEventListener("pause", myPauseListener, false);
- */
-
-if (typeof(DeviceInfo) !== 'object') {
-    DeviceInfo = {};
-}
-
-/**
- * This represents the PhoneGap API itself, and provides a global namespace for accessing
- * information about the state of PhoneGap.
- * @class
- */
-var PhoneGap = {
-    queue: {
-        ready: true,
-        commands: [],
-        timer: null
-    }
-};
-
-/**
- * List of resource files loaded by PhoneGap.
- * This is used to ensure JS and other files are loaded only once.
- */
-PhoneGap.resources = {base: true};
-
-/**
- * Determine if resource has been loaded by PhoneGap
- *
- * @param name
- * @return
- */
-PhoneGap.hasResource = function(name) {
-    return PhoneGap.resources[name];
-};
-
-/**
- * Add a resource to list of loaded resources by PhoneGap
- *
- * @param name
- */
-PhoneGap.addResource = function(name) {
-    PhoneGap.resources[name] = true;
-};
-
-/**
- * Custom pub-sub channel that can have functions subscribed to it
- */
-PhoneGap.Channel = function (type)
-{
-    this.type = type;
-    this.handlers = {};
-    this.guid = 0;
-    this.fired = false;
-    this.enabled = true;
-};
-
-/**
- * Subscribes the given function to the channel. Any time that 
- * Channel.fire is called so too will the function.
- * Optionally specify an execution context for the function
- * and a guid that can be used to stop subscribing to the channel.
- * Returns the guid.
- */
-PhoneGap.Channel.prototype.subscribe = function(f, c, g) {
-    // need a function to call
-    if (f === null) { return; }
-
-    var func = f;
-    if (typeof c === "object" && f instanceof Function) { func = PhoneGap.close(c, f); }
-
-    g = g || func.observer_guid || f.observer_guid || this.guid++;
-    func.observer_guid = g;
-    f.observer_guid = g;
-    this.handlers[g] = func;
-    return g;
-};
-
-/**
- * Like subscribe but the function is only called once and then it
- * auto-unsubscribes itself.
- */
-PhoneGap.Channel.prototype.subscribeOnce = function(f, c) {
-    var g = null;
-    var _this = this;
-    var m = function() {
-        f.apply(c || null, arguments);
-        _this.unsubscribe(g);
-    };
-    if (this.fired) {
-           if (typeof c === "object" && f instanceof Function) { f = PhoneGap.close(c, f); }
-        f.apply(this, this.fireArgs);
-    } else {
-        g = this.subscribe(m);
-    }
-    return g;
-};
-
-/** 
- * Unsubscribes the function with the given guid from the channel.
- */
-PhoneGap.Channel.prototype.unsubscribe = function(g) {
-    if (g instanceof Function) { g = g.observer_guid; }
-    this.handlers[g] = null;
-    delete this.handlers[g];
-};
-
-/** 
- * Calls all functions subscribed to this channel.
- */
-PhoneGap.Channel.prototype.fire = function(e) {
-    if (this.enabled) {
-        var fail = false;
-        var item, handler, rv;
-        for (item in this.handlers) {
-            if (this.handlers.hasOwnProperty(item)) {
-                handler = this.handlers[item];
-                if (handler instanceof Function) {
-                    rv = (handler.apply(this, arguments) === false);
-                    fail = fail || rv;
-                }
-            }
-        }
-        this.fired = true;
-        this.fireArgs = arguments;
-        return !fail;
-    }
-    return true;
-};
-
-/**
- * Calls the provided function only after all of the channels specified
- * have been fired.
- */
-PhoneGap.Channel.join = function(h, c) {
-    var i = c.length;
-    var f = function() {
-        if (!(--i)) {
-            h();
-        }
-    };
-    var len = i;
-    var j;
-    for (j=0; j<len; j++) {
-        if (!c[j].fired) {
-            c[j].subscribeOnce(f);
-        }
-        else {
-            i--;
-        }
-    }
-    if (!i) {
-        h();
-    }
-};
-
-/**
- * Boolean flag indicating if the PhoneGap API is available and initialized.
- */ // TODO: Remove this, it is unused here ... -jm
-PhoneGap.available = DeviceInfo.uuid !== undefined;
-
-/**
- * Add an initialization function to a queue that ensures it will run and initialize
- * application constructors only once PhoneGap has been initialized.
- * @param {Function} func The function callback you want run once PhoneGap is initialized
- */
-PhoneGap.addConstructor = function(func) {
-    PhoneGap.onPhoneGapInit.subscribeOnce(function() {
-        try {
-            func();
-        } catch(e) {
-            console.log("Failed to run constructor: " + e);
-        }
-    });
-};
-
-/**
- * Plugins object
- */
-if (!window.plugins) {
-    window.plugins = {};
-}
-
-/**
- * Adds a plugin object to window.plugins.
- * The plugin is accessed using window.plugins.<name>
- *
- * @param name          The plugin name
- * @param obj           The plugin object
- */
-PhoneGap.addPlugin = function(name, obj) {
-    if (!window.plugins[name]) {
-        window.plugins[name] = obj;
-    }
-    else {
-        console.log("Error: Plugin "+name+" already exists.");
-    }
-};
-
-/**
- * onDOMContentLoaded channel is fired when the DOM content 
- * of the page has been parsed.
- */
-PhoneGap.onDOMContentLoaded = new PhoneGap.Channel('onDOMContentLoaded');
-
-/**
- * onNativeReady channel is fired when the PhoneGap native code
- * has been initialized.
- */
-PhoneGap.onNativeReady = new PhoneGap.Channel('onNativeReady');
-
-/**
- * onPhoneGapInit channel is fired when the web page is fully loaded and
- * PhoneGap native code has been initialized.
- */
-PhoneGap.onPhoneGapInit = new PhoneGap.Channel('onPhoneGapInit');
-
-/**
- * onPhoneGapReady channel is fired when the JS PhoneGap objects have been created.
- */
-PhoneGap.onPhoneGapReady = new PhoneGap.Channel('onPhoneGapReady');
-
-/**
- * onPhoneGapInfoReady channel is fired when the PhoneGap device properties
- * has been set.
- */
-PhoneGap.onPhoneGapInfoReady = new PhoneGap.Channel('onPhoneGapInfoReady');
-
-/**
- * onResume channel is fired when the PhoneGap native code
- * resumes.
- */
-PhoneGap.onResume = new PhoneGap.Channel('onResume');
-
-/**
- * onPause channel is fired when the PhoneGap native code
- * pauses.
- */
-PhoneGap.onPause = new PhoneGap.Channel('onPause');
-
-/**
- * onDestroy channel is fired when the PhoneGap native code
- * is destroyed.  It is used internally.  
- * Window.onunload should be used by the user.
- */
-PhoneGap.onDestroy = new PhoneGap.Channel('onDestroy');
-PhoneGap.onDestroy.subscribeOnce(function() {
-    PhoneGap.shuttingDown = true;
-});
-PhoneGap.shuttingDown = false;
-
-// _nativeReady is global variable that the native side can set
-// to signify that the native code is ready. It is a global since 
-// it may be called before any PhoneGap JS is ready.
-if (typeof _nativeReady !== 'undefined') { PhoneGap.onNativeReady.fire(); }
-
-/**
- * onDeviceReady is fired only after all PhoneGap objects are created and
- * the device properties are set.
- */
-PhoneGap.onDeviceReady = new PhoneGap.Channel('onDeviceReady');
-
-
-// Array of channels that must fire before "deviceready" is fired
-PhoneGap.deviceReadyChannelsArray = [ PhoneGap.onPhoneGapReady, PhoneGap.onPhoneGapInfoReady];
-
-// Hashtable of user defined channels that must also fire before "deviceready" is fired
-PhoneGap.deviceReadyChannelsMap = {};
-
-/**
- * Indicate that a feature needs to be initialized before it is ready to be used.
- * This holds up PhoneGap's "deviceready" event until the feature has been initialized
- * and PhoneGap.initComplete(feature) is called.
- *
- * @param feature {String}     The unique feature name
- */
-PhoneGap.waitForInitialization = function(feature) {
-    if (feature) {
-        var channel = new PhoneGap.Channel(feature);
-        PhoneGap.deviceReadyChannelsMap[feature] = channel;
-        PhoneGap.deviceReadyChannelsArray.push(channel);
-    }
-};
-
-/**
- * Indicate that initialization code has completed and the feature is ready to be used.
- *
- * @param feature {String}     The unique feature name
- */ 
-PhoneGap.initializationComplete = function(feature) {
-    var channel = PhoneGap.deviceReadyChannelsMap[feature];
-    if (channel) {
-        channel.fire();
-    }
-};
-
-/**
- * Create all PhoneGap objects once page has fully loaded and native side is ready.
- */
-PhoneGap.Channel.join(function() {
-
-    // Start listening for XHR callbacks
-    setTimeout(function() {
-            if (PhoneGap.UsePolling) {
-                PhoneGap.JSCallbackPolling();
-            }
-            else {
-                var polling = prompt("usePolling", "gap_callbackServer:");
-                if (polling == "true") {
-                    PhoneGap.JSCallbackPolling();
-                }
-                else {
-                    PhoneGap.JSCallback();
-                }
-            }
-        }, 1);
-
-    // Run PhoneGap constructors
-    PhoneGap.onPhoneGapInit.fire();
-
-    // Fire event to notify that all objects are created
-    PhoneGap.onPhoneGapReady.fire();
-
-    // Fire onDeviceReady event once all constructors have run and PhoneGap info has been
-    // received from native side, and any user defined initialization channels.
-    PhoneGap.Channel.join(function() {
-    
-        // Turn off app loading dialog
-        navigator.notification.activityStop();
-
-        PhoneGap.onDeviceReady.fire();
-
-        // Fire the onresume event, since first one happens before JavaScript is loaded
-        PhoneGap.onResume.fire();
-    }, PhoneGap.deviceReadyChannelsArray);
-
-}, [ PhoneGap.onDOMContentLoaded, PhoneGap.onNativeReady ]);
-
-// Listen for DOMContentLoaded and notify our channel subscribers
-document.addEventListener('DOMContentLoaded', function() {
-    PhoneGap.onDOMContentLoaded.fire();
-}, false);
-
-// Intercept calls to document.addEventListener and watch for deviceready
-PhoneGap.m_document_addEventListener = document.addEventListener;
-
-document.addEventListener = function(evt, handler, capture) {
-    var e = evt.toLowerCase();
-    if (e === 'deviceready') {
-        PhoneGap.onDeviceReady.subscribeOnce(handler);
-    } else if (e === 'resume') {
-        PhoneGap.onResume.subscribe(handler);
-        if (PhoneGap.onDeviceReady.fired) {
-            PhoneGap.onResume.fire();
-        }
-    } else if (e === 'pause') {
-        PhoneGap.onPause.subscribe(handler);
-    }     
-    else {
-        // If subscribing to Android backbutton
-        if (e === 'backbutton') {
-            PhoneGap.exec(null, null, "App", "overrideBackbutton", [true]);
-        } 
-        
-        PhoneGap.m_document_addEventListener.call(document, evt, handler, capture);
-    }
-};
-
-// Intercept calls to document.removeEventListener and watch for events that 
-// are generated by PhoneGap native code
-PhoneGap.m_document_removeEventListener = document.removeEventListener;
-
-document.removeEventListener = function(evt, handler, capture) {
-    var e = evt.toLowerCase();
-
-    // If unsubscribing to Android backbutton
-    if (e === 'backbutton') {
-        PhoneGap.exec(null, null, "App", "overrideBackbutton", [false]);
-    } 
-
-    PhoneGap.m_document_removeEventListener.call(document, evt, handler, capture);
-};
-
-/**
- * Method to fire event from native code
- */
-PhoneGap.fireEvent = function(type) {
-    var e = document.createEvent('Events');
-    e.initEvent(type);
-    document.dispatchEvent(e);
-};
-
-/**
- * If JSON not included, use our own stringify. (Android 1.6)
- * The restriction on ours is that it must be an array of simple types.
- *
- * @param args
- * @return
- */
-PhoneGap.stringify = function(args) {
-    if (typeof JSON === "undefined") {
-        var s = "[";
-        var i, type, start, name, nameType, a;
-        for (i = 0; i < args.length; i++) {
-            if (args[i] != null) {
-                if (i > 0) {
-                    s = s + ",";
-                }
-                type = typeof args[i];
-                if ((type === "number") || (type === "boolean")) {
-                    s = s + args[i];
-                } else if (args[i] instanceof Array) {
-                    s = s + "[" + args[i] + "]";
-                } else if (args[i] instanceof Object) {
-                    start = true;
-                    s = s + '{';
-                    for (name in args[i]) {
-                        if (args[i][name] !== null) {
-                            if (!start) {
-                                s = s + ',';
-                            }
-                            s = s + '"' + name + '":';
-                            nameType = typeof args[i][name];
-                            if ((nameType === "number") || (nameType === "boolean")) {
-                                s = s + args[i][name];
-                            } else if ((typeof args[i][name]) === 'function') {
-                                // don't copy the functions
-                                s = s + '""';
-                            } else if (args[i][name] instanceof Object) {
-                                s = s + this.stringify(args[i][name]);
-                            } else {
-                                s = s + '"' + args[i][name] + '"';
-                            }
-                            start = false;
-                        }
-                    }
-                    s = s + '}';
-                } else {
-                    a = args[i].replace(/\\/g, '\\\\');
-                    a = encodeURIComponent(a).replace(/%([0-9A-F]{2})/g, "\\x$1");
-                    //a = a.replace(/\n/g, '\\n');
-                    //a = a.replace(/"/g, '\\"');
-                    s = s + '"' + a + '"';
-                }
-            }
-        }
-        s = s + "]";
-        return s;
-    } else {
-        return JSON.stringify(args);
-    }
-};
-
-/**
- * Does a deep clone of the object.
- *
- * @param obj
- * @return
- */
-PhoneGap.clone = function(obj) {
-    var i, retVal;
-       if(!obj) { 
-               return obj;
-       }
-       
-       if(obj instanceof Array){
-               retVal = [];
-               for(i = 0; i < obj.length; ++i){
-                       retVal.push(PhoneGap.clone(obj[i]));
-               }
-               return retVal;
-       }
-       
-       if (obj instanceof Function) {
-               return obj;
-       }
-       
-       if(!(obj instanceof Object)){
-               return obj;
-       }
-       
-    if (obj instanceof Date) {
-        return obj;
-    }
-    
-       retVal = {};
-       for(i in obj){
-               if(!(i in retVal) || retVal[i] !== obj[i]) {
-                       retVal[i] = PhoneGap.clone(obj[i]);
-               }
-       }
-       return retVal;
-};
-
-PhoneGap.callbackId = 0;
-PhoneGap.callbacks = {};
-PhoneGap.callbackStatus = {
-    NO_RESULT: 0,
-    OK: 1,
-    CLASS_NOT_FOUND_EXCEPTION: 2,
-    ILLEGAL_ACCESS_EXCEPTION: 3,
-    INSTANTIATION_EXCEPTION: 4,
-    MALFORMED_URL_EXCEPTION: 5,
-    IO_EXCEPTION: 6,
-    INVALID_ACTION: 7,
-    JSON_EXCEPTION: 8,
-    ERROR: 9
-    };
-
-
-/**
- * Execute a PhoneGap command.  It is up to the native side whether this action is synch or async.  
- * The native side can return:
- *      Synchronous: PluginResult object as a JSON string
- *      Asynchrounous: Empty string ""
- * If async, the native side will PhoneGap.callbackSuccess or PhoneGap.callbackError,
- * depending upon the result of the action.
- *
- * @param {Function} success    The success callback
- * @param {Function} fail       The fail callback
- * @param {String} service      The name of the service to use
- * @param {String} action       Action to be run in PhoneGap
- * @param {String[]} [args]     Zero or more arguments to pass to the method
- */
-PhoneGap.exec = function(success, fail, service, action, args) {
-    try {
-        var callbackId = service + PhoneGap.callbackId++;
-        if (success || fail) {
-            PhoneGap.callbacks[callbackId] = {success:success, fail:fail};
-        }
-        
-        var r = prompt(this.stringify(args), "gap:"+this.stringify([service, action, callbackId, true]));
-        
-        // If a result was returned
-        if (r.length > 0) {
-            eval("var v="+r+";");
-        
-            // If status is OK, then return value back to caller
-            if (v.status === PhoneGap.callbackStatus.OK) {
-
-                // If there is a success callback, then call it now with
-                // returned value
-                if (success) {
-                    try {
-                        success(v.message);
-                    } catch (e) {
-                        console.log("Error in success callback: " + callbackId  + " = " + e);
-                    }
-
-                    // Clear callback if not expecting any more results
-                    if (!v.keepCallback) {
-                        delete PhoneGap.callbacks[callbackId];
-                    }
-                }
-                return v.message;
-            }
-
-            // If no result
-            else if (v.status === PhoneGap.callbackStatus.NO_RESULT) {
-                    
-                // Clear callback if not expecting any more results
-                if (!v.keepCallback) {
-                    delete PhoneGap.callbacks[callbackId];
-                }
-            }
-
-            // If error, then display error
-            else {
-                console.log("Error: Status="+v.status+" Message="+v.message);
-
-                // If there is a fail callback, then call it now with returned value
-                if (fail) {
-                    try {
-                        fail(v.message);
-                    }
-                    catch (e1) {
-                        console.log("Error in error callback: "+callbackId+" = "+e1);
-                    }
-
-                    // Clear callback if not expecting any more results
-                    if (!v.keepCallback) {
-                        delete PhoneGap.callbacks[callbackId];
-                    }
-                }
-                return null;
-            }
-        }
-    } catch (e2) {
-        console.log("Error: "+e2);
-    }
-};
-
-/**
- * Called by native code when returning successful result from an action.
- *
- * @param callbackId
- * @param args
- */
-PhoneGap.callbackSuccess = function(callbackId, args) {
-    if (PhoneGap.callbacks[callbackId]) {
-
-        // If result is to be sent to callback
-        if (args.status === PhoneGap.callbackStatus.OK) {
-            try {
-                if (PhoneGap.callbacks[callbackId].success) {
-                    PhoneGap.callbacks[callbackId].success(args.message);
-                }
-            }
-            catch (e) {
-                console.log("Error in success callback: "+callbackId+" = "+e);
-            }
-        }
-    
-        // Clear callback if not expecting any more results
-        if (!args.keepCallback) {
-            delete PhoneGap.callbacks[callbackId];
-        }
-    }
-};
-
-/**
- * Called by native code when returning error result from an action.
- *
- * @param callbackId
- * @param args
- */
-PhoneGap.callbackError = function(callbackId, args) {
-    if (PhoneGap.callbacks[callbackId]) {
-        try {
-            if (PhoneGap.callbacks[callbackId].fail) {
-                PhoneGap.callbacks[callbackId].fail(args.message);
-            }
-        }
-        catch (e) {
-            console.log("Error in error callback: "+callbackId+" = "+e);
-        }
-        
-        // Clear callback if not expecting any more results
-        if (!args.keepCallback) {
-            delete PhoneGap.callbacks[callbackId];
-        }
-    }
-};
-
-
-/**
- * Internal function used to dispatch the request to PhoneGap.  It processes the
- * command queue and executes the next command on the list.  If one of the
- * arguments is a JavaScript object, it will be passed on the QueryString of the
- * url, which will be turned into a dictionary on the other end.
- * @private
- */
-// TODO: Is this used?
-PhoneGap.run_command = function() {
-    if (!PhoneGap.available || !PhoneGap.queue.ready) {
-        return;
-    }
-    PhoneGap.queue.ready = false;
-
-    var args = PhoneGap.queue.commands.shift();
-    if (PhoneGap.queue.commands.length === 0) {
-        clearInterval(PhoneGap.queue.timer);
-        PhoneGap.queue.timer = null;
-    }
-
-    var uri = [];
-    var dict = null;
-    var i;
-    for (i = 1; i < args.length; i++) {
-        var arg = args[i];
-        if (arg === undefined || arg === null) {
-            arg = '';
-        }
-        if (typeof(arg) === 'object') {
-            dict = arg;
-        } else {
-            uri.push(encodeURIComponent(arg));
-        }
-    }
-    var url = "gap://" + args[0] + "/" + uri.join("/");
-    if (dict !== null) {
-        var name;
-        var query_args = [];
-        for (name in dict) {
-            if (dict.hasOwnProperty(name) && (typeof (name) === 'string')) {
-                query_args.push(encodeURIComponent(name) + "=" + encodeURIComponent(dict[name]));
-            }
-        }
-        if (query_args.length > 0) {
-            url += "?" + query_args.join("&");
-        }
-    }
-    document.location = url;
-
-};
-
-PhoneGap.JSCallbackPort = null;
-PhoneGap.JSCallbackToken = null;
-
-/**
- * This is only for Android.
- *
- * Internal function that uses XHR to call into PhoneGap Java code and retrieve 
- * any JavaScript code that needs to be run.  This is used for callbacks from
- * Java to JavaScript.
- */
-PhoneGap.JSCallback = function() {
-
-    // Exit if shutting down app
-    if (PhoneGap.shuttingDown) {
-        return;
-    }
-
-    // If polling flag was changed, start using polling from now on
-    if (PhoneGap.UsePolling) {
-        PhoneGap.JSCallbackPolling();
-        return;
-    }
-
-    var xmlhttp = new XMLHttpRequest();
-
-    // Callback function when XMLHttpRequest is ready
-    xmlhttp.onreadystatechange=function(){
-        if(xmlhttp.readyState === 4){
-            
-            // Exit if shutting down app
-            if (PhoneGap.shuttingDown) {
-                return;
-            }
-
-            // If callback has JavaScript statement to execute
-            if (xmlhttp.status === 200) {
-
-                var msg = xmlhttp.responseText;
-                setTimeout(function() {
-                    try {
-                        var t = eval(msg);
-                    }
-                    catch (e) {
-                        // If we're getting an error here, seeing the message will help in debugging
-                        console.log("JSCallback: Message from Server: " + msg);
-                        console.log("JSCallback Error: "+e);
-                    }
-                }, 1);
-                setTimeout(PhoneGap.JSCallback, 1);
-            }
-
-            // If callback ping (used to keep XHR request from timing out)
-            else if (xmlhttp.status === 404) {
-                setTimeout(PhoneGap.JSCallback, 10);
-            }
-
-            // If security error
-            else if (xmlhttp.status === 403) {
-                console.log("JSCallback Error: Invalid token.  Stopping callbacks.");
-            }
-
-            // If server is stopping
-            else if (xmlhttp.status === 503) {
-                console.log("JSCallback Error: Service unavailable.  Stopping callbacks.");
-            }
-
-            // If request wasn't GET
-            else if (xmlhttp.status === 400) {
-                console.log("JSCallback Error: Bad request.  Stopping callbacks.");
-            }
-
-            // If error, restart callback server
-            else {
-                console.log("JSCallback Error: Request failed.");
-                prompt("restartServer", "gap_callbackServer:");
-                PhoneGap.JSCallbackPort = null;
-                PhoneGap.JSCallbackToken = null;
-                setTimeout(PhoneGap.JSCallback, 100);
-            }
-        }
-    };
-
-    if (PhoneGap.JSCallbackPort === null) {
-        PhoneGap.JSCallbackPort = prompt("getPort", "gap_callbackServer:");
-    }
-    if (PhoneGap.JSCallbackToken === null) {
-        PhoneGap.JSCallbackToken = prompt("getToken", "gap_callbackServer:");
-    }
-    xmlhttp.open("GET", "http://127.0.0.1:"+PhoneGap.JSCallbackPort+"/"+PhoneGap.JSCallbackToken , true);
-    xmlhttp.send();
-};
-
-/**
- * The polling period to use with JSCallbackPolling.
- * This can be changed by the application.  The default is 50ms.
- */
-PhoneGap.JSCallbackPollingPeriod = 50;
-
-/**
- * Flag that can be set by the user to force polling to be used or force XHR to be used.
- */
-PhoneGap.UsePolling = false;    // T=use polling, F=use XHR
-
-/**
- * This is only for Android.
- *
- * Internal function that uses polling to call into PhoneGap Java code and retrieve 
- * any JavaScript code that needs to be run.  This is used for callbacks from
- * Java to JavaScript.
- */
-PhoneGap.JSCallbackPolling = function() {
-
-    // Exit if shutting down app
-    if (PhoneGap.shuttingDown) {
-        return;
-    }
-
-    // If polling flag was changed, stop using polling from now on
-    if (!PhoneGap.UsePolling) {
-        PhoneGap.JSCallback();
-        return;
-    }
-
-    var msg = prompt("", "gap_poll:");
-    if (msg) {
-        setTimeout(function() {
-            try {
-                var t = eval(""+msg);
-            }
-            catch (e) {
-                console.log("JSCallbackPolling: Message from Server: " + msg);
-                console.log("JSCallbackPolling Error: "+e);
-            }
-        }, 1);
-        setTimeout(PhoneGap.JSCallbackPolling, 1);
-    }
-    else {
-        setTimeout(PhoneGap.JSCallbackPolling, PhoneGap.JSCallbackPollingPeriod);
-    }
-};
-
-/**
- * Create a UUID
- *
- * @return
- */
-PhoneGap.createUUID = function() {
-    return PhoneGap.UUIDcreatePart(4) + '-' +
-        PhoneGap.UUIDcreatePart(2) + '-' +
-        PhoneGap.UUIDcreatePart(2) + '-' +
-        PhoneGap.UUIDcreatePart(2) + '-' +
-        PhoneGap.UUIDcreatePart(6);
-};
-
-PhoneGap.UUIDcreatePart = function(length) {
-    var uuidpart = "";
-    var i, uuidchar;
-    for (i=0; i<length; i++) {
-        uuidchar = parseInt((Math.random() * 256),0).toString(16);
-        if (uuidchar.length === 1) {
-            uuidchar = "0" + uuidchar;
-        }
-        uuidpart += uuidchar;
-    }
-    return uuidpart;
-};
-
-PhoneGap.close = function(context, func, params) {
-    if (typeof params === 'undefined') {
-        return function() {
-            return func.apply(context, arguments);
-        };
-    } else {
-        return function() {
-            return func.apply(context, params);
-        };
-    }
-};
-
-/**
- * Load a JavaScript file after page has loaded.
- *
- * @param {String} jsfile               The url of the JavaScript file to load.
- * @param {Function} successCallback    The callback to call when the file has been loaded.
- */
-PhoneGap.includeJavascript = function(jsfile, successCallback) {
-    var id = document.getElementsByTagName("head")[0];         
-    var el = document.createElement('script');
-    el.type = 'text/javascript';
-    if (typeof successCallback === 'function') {
-        el.onload = successCallback;
-    }
-    el.src = jsfile;
-    id.appendChild(el);
-};
-
-
-/**
- * This class is provided to bridge the gap between the way plugins were setup in 0.9.3 and 0.9.4.  
- * Users should be calling navigator.add.addService() instead of PluginManager.addService().
- * @class
- * @deprecated
- */
-var PluginManager = {
-    addService: function(serviceType, className) {
-        navigator.app.addService(serviceType, className);   
-    }
-};
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("accelerometer")) {
-PhoneGap.addResource("accelerometer");
-
-Acceleration = function(x, y, z) {
-  this.x = x;
-  this.y = y;
-  this.z = z;
-  this.timestamp = new Date().getTime();
-}
-
-/**
- * This class provides access to device accelerometer data.
- * @constructor
- */
-Accelerometer = function() {
-
-    /**
-     * The last known acceleration.  type=Acceleration()
-     */
-    this.lastAcceleration = null;
-
-    /**
-     * List of accelerometer watch timers
-     */
-    this.timers = {};
-}
-
-Accelerometer.ERROR_MSG = ["Not running", "Starting", "", "Failed to start"];
-
-/**
- * Asynchronously aquires the current acceleration.
- *
- * @param {Function} successCallback    The function to call when the acceleration data is available
- * @param {Function} errorCallback      The function to call when there is an error getting the acceleration data. (OPTIONAL)
- * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL)
- */
-Accelerometer.prototype.getCurrentAcceleration = function(successCallback, errorCallback, options) {
-
-    // successCallback required
-    if (typeof successCallback !== "function") {
-        console.log("Accelerometer Error: successCallback is not a function");
-        return;
-    }
-
-    // errorCallback optional
-    if (errorCallback && (typeof errorCallback !== "function")) {
-        console.log("Accelerometer Error: errorCallback is not a function");
-        return;
-    }
-
-    // Get acceleration
-    PhoneGap.exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []);
-};
-
-/**
- * Asynchronously aquires the acceleration repeatedly at a given interval.
- *
- * @param {Function} successCallback    The function to call each time the acceleration data is available
- * @param {Function} errorCallback      The function to call when there is an error getting the acceleration data. (OPTIONAL)
- * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL)
- * @return String                       The watch id that must be passed to #clearWatch to stop watching.
- */
-Accelerometer.prototype.watchAcceleration = function(successCallback, errorCallback, options) {
-
-    // Default interval (10 sec)
-    var frequency = (options !== undefined)? options.frequency : 10000;
-
-    // successCallback required
-    if (typeof successCallback !== "function") {
-        console.log("Accelerometer Error: successCallback is not a function");
-        return;
-    }
-
-    // errorCallback optional
-    if (errorCallback && (typeof errorCallback !== "function")) {
-        console.log("Accelerometer Error: errorCallback is not a function");
-        return;
-    }
-
-    // Make sure accelerometer timeout > frequency + 10 sec
-    PhoneGap.exec(
-        function(timeout) {
-            if (timeout < (frequency + 10000)) {
-                PhoneGap.exec(null, null, "Accelerometer", "setTimeout", [frequency + 10000]);
-            }
-        },
-        function(e) { }, "Accelerometer", "getTimeout", []);
-
-    // Start watch timer
-    var id = PhoneGap.createUUID();
-    navigator.accelerometer.timers[id] = setInterval(function() {
-        PhoneGap.exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []);
-    }, (frequency ? frequency : 1));
-
-    return id;
-};
-
-/**
- * Clears the specified accelerometer watch.
- *
- * @param {String} id       The id of the watch returned from #watchAcceleration.
- */
-Accelerometer.prototype.clearWatch = function(id) {
-
-    // Stop javascript timer & remove from timer list
-    if (id && navigator.accelerometer.timers[id] !== undefined) {
-        clearInterval(navigator.accelerometer.timers[id]);
-        delete navigator.accelerometer.timers[id];
-    }
-};
-
-PhoneGap.addConstructor(function() {
-    if (typeof navigator.accelerometer === "undefined") {
-        navigator.accelerometer = new Accelerometer();
-    }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010-2011, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("app")) {
-PhoneGap.addResource("app");
-
-/**
- * Constructor
- */
-App = function() {};
-
-/**
- * Clear the resource cache.
- */
-App.prototype.clearCache = function() {
-    PhoneGap.exec(null, null, "App", "clearCache", []);
-};
-
-/**
- * Load the url into the webview.
- * 
- * @param url           The URL to load
- * @param props         Properties that can be passed in to the activity:
- *      wait: int                           => wait msec before loading URL
- *      loadingDialog: "Title,Message"      => display a native loading dialog
- *      hideLoadingDialogOnPage: boolean    => hide loadingDialog when page loaded instead of when deviceready event occurs.
- *      loadInWebView: boolean              => cause all links on web page to be loaded into existing web view, instead of being loaded into new browser.
- *      loadUrlTimeoutValue: int            => time in msec to wait before triggering a timeout error
- *      errorUrl: URL                       => URL to load if there's an error loading specified URL with loadUrl().  Should be a local URL such as file:///android_asset/www/error.html");
- *      keepRunning: boolean                => enable app to keep running in background
- * 
- * Example:
- *      App app = new App();
- *      app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000});
- */
-App.prototype.loadUrl = function(url, props) {
-    PhoneGap.exec(null, null, "App", "loadUrl", [url, props]);
-};
-
-/**
- * Cancel loadUrl that is waiting to be loaded.
- */
-App.prototype.cancelLoadUrl = function() {
-    PhoneGap.exec(null, null, "App", "cancelLoadUrl", []);
-};
-
-/**
- * Clear web history in this web view.
- * Instead of BACK button loading the previous web page, it will exit the app.
- */
-App.prototype.clearHistory = function() {
-    PhoneGap.exec(null, null, "App", "clearHistory", []);
-};
-
-/**
- * Add a class that implements a service.
- * 
- * @param serviceType
- * @param className
- */
-App.prototype.addService = function(serviceType, className) {
-       PhoneGap.exec(null, null, "App", "addService", [serviceType, className]);
-};
-
-/**
- * Override the default behavior of the Android back button.
- * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
- * 
- * Note: The user should not have to call this method.  Instead, when the user
- *       registers for the "backbutton" event, this is automatically done.
- * 
- * @param override             T=override, F=cancel override
- */
-App.prototype.overrideBackbutton = function(override) {
-    PhoneGap.exec(null, null, "App", "overrideBackbutton", [override]);
-};
-
-/**
- * Exit and terminate the application.
- */
-App.prototype.exitApp = function() {
-       return PhoneGap.exec(null, null, "App", "exitApp", []);
-};
-
-PhoneGap.addConstructor(function() {
-    navigator.app = window.app = new App();
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("camera")) {
-PhoneGap.addResource("camera");
-
-/**
- * This class provides access to the device camera.
- *
- * @constructor
- */
-Camera = function() {
-    this.successCallback = null;
-    this.errorCallback = null;
-    this.options = null;
-};
-
-/**
- * Format of image that returned from getPicture.
- *
- * Example: navigator.camera.getPicture(success, fail,
- *              { quality: 80,
- *                destinationType: Camera.DestinationType.DATA_URL,
- *                sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
- */
-Camera.DestinationType = {
-    DATA_URL: 0,                // Return base64 encoded string
-    FILE_URI: 1                 // Return file uri (content://media/external/images/media/2 for Android)
-};
-Camera.prototype.DestinationType = Camera.DestinationType;
-
-/**
- * Source to getPicture from.
- *
- * Example: navigator.camera.getPicture(success, fail,
- *              { quality: 80,
- *                destinationType: Camera.DestinationType.DATA_URL,
- *                sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
- */
-Camera.PictureSourceType = {
-    PHOTOLIBRARY : 0,           // Choose image from picture library (same as SAVEDPHOTOALBUM for Android)
-    CAMERA : 1,                 // Take picture from camera
-    SAVEDPHOTOALBUM : 2         // Choose image from picture library (same as PHOTOLIBRARY for Android)
-};
-Camera.prototype.PictureSourceType = Camera.PictureSourceType;
-
-/**
- * Gets a picture from source defined by "options.sourceType", and returns the
- * image as defined by the "options.destinationType" option.
-
- * The defaults are sourceType=CAMERA and destinationType=DATA_URL.
- *
- * @param {Function} successCallback
- * @param {Function} errorCallback
- * @param {Object} options
- */
-Camera.prototype.getPicture = function(successCallback, errorCallback, options) {
-
-    // successCallback required
-    if (typeof successCallback !== "function") {
-        console.log("Camera Error: successCallback is not a function");
-        return;
-    }
-
-    // errorCallback optional
-    if (errorCallback && (typeof errorCallback !== "function")) {
-        console.log("Camera Error: errorCallback is not a function");
-        return;
-    }
-
-    this.options = options;
-    var quality = 80;
-    if (options.quality) {
-        quality = this.options.quality;
-    }
-    var destinationType = Camera.DestinationType.DATA_URL;
-    if (this.options.destinationType) {
-        destinationType = this.options.destinationType;
-    }
-    var sourceType = Camera.PictureSourceType.CAMERA;
-    if (typeof this.options.sourceType === "number") {
-        sourceType = this.options.sourceType;
-    }
-    PhoneGap.exec(successCallback, errorCallback, "Camera", "takePicture", [quality, destinationType, sourceType]);
-};
-
-PhoneGap.addConstructor(function() {
-    if (typeof navigator.camera === "undefined") {
-        navigator.camera = new Camera();
-    }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010-2011, IBM Corporation
- */
-
-/**
- * The CaptureError interface encapsulates all errors in the Capture API.
- */
-function CaptureError() {
-   this.code = null;
-};
-
-// Capture error codes
-CaptureError.CAPTURE_INTERNAL_ERR = 0;
-CaptureError.CAPTURE_APPLICATION_BUSY = 1;
-CaptureError.CAPTURE_INVALID_ARGUMENT = 2;
-CaptureError.CAPTURE_NO_MEDIA_FILES = 3;
-CaptureError.CAPTURE_NOT_SUPPORTED = 20;
-
-/**
- * The Capture interface exposes an interface to the camera and microphone of the hosting device.
- */
-function Capture() {
-       this.supportedAudioFormats = [];
-       this.supportedImageFormats = [];
-       this.supportedVideoFormats = [];
-};
-
-/**
- * Launch audio recorder application for recording audio clip(s).
- * 
- * @param {Function} successCB
- * @param {Function} errorCB
- * @param {CaptureAudioOptions} options
- */
-Capture.prototype.captureAudio = function(successCallback, errorCallback, options) {
-    PhoneGap.exec(successCallback, errorCallback, "Capture", "captureAudio", [options]);
-};
-
-/**
- * Launch camera application for taking image(s).
- * 
- * @param {Function} successCB
- * @param {Function} errorCB
- * @param {CaptureImageOptions} options
- */
-Capture.prototype.captureImage = function(successCallback, errorCallback, options) {
-    PhoneGap.exec(successCallback, errorCallback, "Capture", "captureImage", [options]);
-};
-
-/**
- * Launch camera application for taking image(s).
- * 
- * @param {Function} successCB
- * @param {Function} errorCB
- * @param {CaptureImageOptions} options
- */
-Capture.prototype._castMediaFile = function(pluginResult) {
-    var mediaFiles = [];
-    var i;
-    for (i=0; i<pluginResult.message.length; i++) {
-        var mediaFile = new MediaFile();
-           mediaFile.name = pluginResult.message[i].name;
-           mediaFile.fullPath = pluginResult.message[i].fullPath;
-           mediaFile.type = pluginResult.message[i].type;
-           mediaFile.lastModifiedDate = pluginResult.message[i].lastModifiedDate;
-           mediaFile.size = pluginResult.message[i].size;
-        mediaFiles.push(mediaFile);
-    }
-    pluginResult.message = mediaFiles;
-    return pluginResult;
-};
-
-/**
- * Launch device camera application for recording video(s).
- * 
- * @param {Function} successCB
- * @param {Function} errorCB
- * @param {CaptureVideoOptions} options
- */
-Capture.prototype.captureVideo = function(successCallback, errorCallback, options) {
-    PhoneGap.exec(successCallback, errorCallback, "Capture", "captureVideo", [options]);
-};
-
-/**
- * Encapsulates a set of parameters that the capture device supports.
- */
-function ConfigurationData() {
-    // The ASCII-encoded string in lower case representing the media type. 
-    this.type; 
-    // The height attribute represents height of the image or video in pixels. 
-    // In the case of a sound clip this attribute has value 0. 
-    this.height = 0;
-    // The width attribute represents width of the image or video in pixels. 
-    // In the case of a sound clip this attribute has value 0
-    this.width = 0;
-};
-
-/**
- * Encapsulates all image capture operation configuration options.
- */
-function CaptureImageOptions() {
-    // Upper limit of images user can take. Value must be equal or greater than 1.
-    this.limit = 1; 
-    // The selected image mode. Must match with one of the elements in supportedImageModes array.
-    this.mode; 
-};
-
-/**
- * Encapsulates all video capture operation configuration options.
- */
-function CaptureVideoOptions() {
-    // Upper limit of videos user can record. Value must be equal or greater than 1.
-    this.limit;
-    // Maximum duration of a single video clip in seconds.
-    this.duration;
-    // The selected video mode. Must match with one of the elements in supportedVideoModes array.
-    this.mode;
-};
-
-/**
- * Encapsulates all audio capture operation configuration options.
- */
-function CaptureAudioOptions() {
-    // Upper limit of sound clips user can record. Value must be equal or greater than 1.
-    this.limit;
-    // Maximum duration of a single sound clip in seconds.
-    this.duration;
-    // The selected audio mode. Must match with one of the elements in supportedAudioModes array.
-    this.mode;
-};
-
-/**
- * Represents a single file.
- * 
- * name {DOMString} name of the file, without path information
- * fullPath {DOMString} the full path of the file, including the name
- * type {DOMString} mime type
- * lastModifiedDate {Date} last modified date
- * size {Number} size of the file in bytes
- */
-function MediaFile(name, fullPath, type, lastModifiedDate, size) {
-    this.name = name || null;
-    this.fullPath = fullPath || null;
-    this.type = type || null;
-    this.lastModifiedDate = lastModifiedDate || null;
-    this.size = size || 0;
-}
-
-/**
- * Launch device camera application for recording video(s).
- * 
- * @param {Function} successCB
- * @param {Function} errorCB
- */
-MediaFile.prototype.getFormatData = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "Capture", "getFormatData", [this.fullPath, this.type]);     
-};
-
-/**
- * MediaFileData encapsulates format information of a media file.
- * 
- * @param {DOMString} codecs
- * @param {long} bitrate
- * @param {long} height
- * @param {long} width
- * @param {float} duration
- */
-function MediaFileData(codecs, bitrate, height, width, duration) {
-    this.codecs = codecs || null;
-    this.bitrate = bitrate || 0;
-    this.height = height || 0;
-    this.width = width || 0;
-    this.duration = duration || 0;
-}
-
-PhoneGap.addConstructor(function() {
-    if (typeof navigator.device === "undefined") {
-        navigator.device = window.device = new Device();
-    }
-    if (typeof navigator.device.capture === "undefined") {
-        navigator.device.capture = window.device.capture = new Capture();
-    }
-});
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("compass")) {
-PhoneGap.addResource("compass");
-
-/**
- * This class provides access to device Compass data.
- * @constructor
- */
-Compass = function() {
-    /**
-     * The last known Compass position.
-     */
-    this.lastHeading = null;
-
-    /**
-     * List of compass watch timers
-     */
-    this.timers = {};
-};
-
-Compass.ERROR_MSG = ["Not running", "Starting", "", "Failed to start"];
-
-/**
- * Asynchronously aquires the current heading.
- *
- * @param {Function} successCallback The function to call when the heading data is available
- * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
- * @param {PositionOptions} options The options for getting the heading data such as timeout. (OPTIONAL)
- */
-Compass.prototype.getCurrentHeading = function(successCallback, errorCallback, options) {
-
-    // successCallback required
-    if (typeof successCallback !== "function") {
-        console.log("Compass Error: successCallback is not a function");
-        return;
-    }
-
-    // errorCallback optional
-    if (errorCallback && (typeof errorCallback !== "function")) {
-        console.log("Compass Error: errorCallback is not a function");
-        return;
-    }
-
-    // Get heading
-    PhoneGap.exec(successCallback, errorCallback, "Compass", "getHeading", []);
-};
-
-/**
- * Asynchronously aquires the heading repeatedly at a given interval.
- *
- * @param {Function} successCallback    The function to call each time the heading data is available
- * @param {Function} errorCallback      The function to call when there is an error getting the heading data. (OPTIONAL)
- * @param {HeadingOptions} options      The options for getting the heading data such as timeout and the frequency of the watch. (OPTIONAL)
- * @return String                       The watch id that must be passed to #clearWatch to stop watching.
- */
-Compass.prototype.watchHeading= function(successCallback, errorCallback, options) {
-
-    // Default interval (100 msec)
-    var frequency = (options !== undefined) ? options.frequency : 100;
-
-    // successCallback required
-    if (typeof successCallback !== "function") {
-        console.log("Compass Error: successCallback is not a function");
-        return;
-    }
-
-    // errorCallback optional
-    if (errorCallback && (typeof errorCallback !== "function")) {
-        console.log("Compass Error: errorCallback is not a function");
-        return;
-    }
-
-    // Make sure compass timeout > frequency + 10 sec
-    PhoneGap.exec(
-        function(timeout) {
-            if (timeout < (frequency + 10000)) {
-                PhoneGap.exec(null, null, "Compass", "setTimeout", [frequency + 10000]);
-            }
-        },
-        function(e) { }, "Compass", "getTimeout", []);
-
-    // Start watch timer to get headings
-    var id = PhoneGap.createUUID();
-    navigator.compass.timers[id] = setInterval(
-        function() {
-            PhoneGap.exec(successCallback, errorCallback, "Compass", "getHeading", []);
-        }, (frequency ? frequency : 1));
-
-    return id;
-};
-
-
-/**
- * Clears the specified heading watch.
- *
- * @param {String} id       The ID of the watch returned from #watchHeading.
- */
-Compass.prototype.clearWatch = function(id) {
-
-    // Stop javascript timer & remove from timer list
-    if (id && navigator.compass.timers[id]) {
-        clearInterval(navigator.compass.timers[id]);
-        delete navigator.compass.timers[id];
-    }
-};
-
-PhoneGap.addConstructor(function() {
-    if (typeof navigator.compass === "undefined") {
-        navigator.compass = new Compass();
-    }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("contact")) {
-PhoneGap.addResource("contact");
-
-/**
-* Contains information about a single contact.
-* @param {DOMString} id unique identifier
-* @param {DOMString} displayName
-* @param {ContactName} name
-* @param {DOMString} nickname
-* @param {ContactField[]} phoneNumbers array of phone numbers
-* @param {ContactField[]} emails array of email addresses
-* @param {ContactAddress[]} addresses array of addresses
-* @param {ContactField[]} ims instant messaging user ids
-* @param {ContactOrganization[]} organizations
-* @param {DOMString} revision date contact was last updated
-* @param {DOMString} birthday contact's birthday
-* @param {DOMString} gender contact's gender
-* @param {DOMString} note user notes about contact
-* @param {ContactField[]} photos
-* @param {ContactField[]} categories
-* @param {ContactField[]} urls contact's web sites
-* @param {DOMString} timezone the contacts time zone
-*/
-var Contact = function (id, displayName, name, nickname, phoneNumbers, emails, addresses,
-    ims, organizations, revision, birthday, gender, note, photos, categories, urls, timezone) {
-    this.id = id || null;
-    this.rawId = null;
-    this.displayName = displayName || null;
-    this.name = name || null; // ContactName
-    this.nickname = nickname || null;
-    this.phoneNumbers = phoneNumbers || null; // ContactField[]
-    this.emails = emails || null; // ContactField[]
-    this.addresses = addresses || null; // ContactAddress[]
-    this.ims = ims || null; // ContactField[]
-    this.organizations = organizations || null; // ContactOrganization[]
-    this.revision = revision || null;
-    this.birthday = birthday || null;
-    this.gender = gender || null;
-    this.note = note || null;
-    this.photos = photos || null; // ContactField[]
-    this.categories = categories || null; // ContactField[]
-    this.urls = urls || null; // ContactField[]
-    this.timezone = timezone || null;
-};
-
-/**
- *  ContactError.
- *  An error code assigned by an implementation when an error has occurred
- */
-var ContactError = function() {
-    this.code=null;
-};
-
-/**
- * Error codes
- */
-ContactError.UNKNOWN_ERROR = 0;
-ContactError.INVALID_ARGUMENT_ERROR = 1;
-ContactError.NOT_FOUND_ERROR = 2;
-ContactError.TIMEOUT_ERROR = 3;
-ContactError.PENDING_OPERATION_ERROR = 4;
-ContactError.IO_ERROR = 5;
-ContactError.NOT_SUPPORTED_ERROR = 6;
-ContactError.PERMISSION_DENIED_ERROR = 20;
-
-/**
-* Removes contact from device storage.
-* @param successCB success callback
-* @param errorCB error callback
-*/
-Contact.prototype.remove = function(successCB, errorCB) {
-    if (this.id === null) {
-        var errorObj = new ContactError();
-        errorObj.code = ContactError.NOT_FOUND_ERROR;
-        errorCB(errorObj);
-    }
-    else {
-        PhoneGap.exec(successCB, errorCB, "Contacts", "remove", [this.id]);
-    }
-};
-
-/**
-* Creates a deep copy of this Contact.
-* With the contact ID set to null.
-* @return copy of this Contact
-*/
-Contact.prototype.clone = function() {
-    var clonedContact = PhoneGap.clone(this);
-    var i;
-    clonedContact.id = null;
-    clonedContact.rawId = null;
-    // Loop through and clear out any id's in phones, emails, etc.
-    if (clonedContact.phoneNumbers) {
-        for (i = 0; i < clonedContact.phoneNumbers.length; i++) {
-            clonedContact.phoneNumbers[i].id = null;
-        }
-    }
-    if (clonedContact.emails) {
-        for (i = 0; i < clonedContact.emails.length; i++) {
-            clonedContact.emails[i].id = null;
-        }
-    }
-    if (clonedContact.addresses) {
-        for (i = 0; i < clonedContact.addresses.length; i++) {
-            clonedContact.addresses[i].id = null;
-        }
-    }
-    if (clonedContact.ims) {
-        for (i = 0; i < clonedContact.ims.length; i++) {
-            clonedContact.ims[i].id = null;
-        }
-    }
-    if (clonedContact.organizations) {
-        for (i = 0; i < clonedContact.organizations.length; i++) {
-            clonedContact.organizations[i].id = null;
-        }
-    }
-    if (clonedContact.tags) {
-        for (i = 0; i < clonedContact.tags.length; i++) {
-            clonedContact.tags[i].id = null;
-        }
-    }
-    if (clonedContact.photos) {
-        for (i = 0; i < clonedContact.photos.length; i++) {
-            clonedContact.photos[i].id = null;
-        }
-    }
-    if (clonedContact.urls) {
-        for (i = 0; i < clonedContact.urls.length; i++) {
-            clonedContact.urls[i].id = null;
-        }
-    }
-    return clonedContact;
-};
-
-/**
-* Persists contact to device storage.
-* @param successCB success callback
-* @param errorCB error callback
-*/
-Contact.prototype.save = function(successCB, errorCB) {
-    PhoneGap.exec(successCB, errorCB, "Contacts", "save", [this]);
-};
-
-/**
-* Contact name.
-* @param formatted
-* @param familyName
-* @param givenName
-* @param middle
-* @param prefix
-* @param suffix
-*/
-var ContactName = function(formatted, familyName, givenName, middle, prefix, suffix) {
-    this.formatted = formatted || null;
-    this.familyName = familyName || null;
-    this.givenName = givenName || null;
-    this.middleName = middle || null;
-    this.honorificPrefix = prefix || null;
-    this.honorificSuffix = suffix || null;
-};
-
-/**
-* Generic contact field.
-* @param {DOMString} id unique identifier, should only be set by native code
-* @param type
-* @param value
-* @param pref
-*/
-var ContactField = function(type, value, pref) {
-       this.id = null;
-    this.type = type || null;
-    this.value = value || null;
-    this.pref = pref || null;
-};
-
-/**
-* Contact address.
-* @param {DOMString} id unique identifier, should only be set by native code
-* @param formatted
-* @param streetAddress
-* @param locality
-* @param region
-* @param postalCode
-* @param country
-*/
-var ContactAddress = function(formatted, streetAddress, locality, region, postalCode, country) {
-       this.id = null;
-    this.formatted = formatted || null;
-    this.streetAddress = streetAddress || null;
-    this.locality = locality || null;
-    this.region = region || null;
-    this.postalCode = postalCode || null;
-    this.country = country || null;
-};
-
-/**
-* Contact organization.
-* @param {DOMString} id unique identifier, should only be set by native code
-* @param name
-* @param dept
-* @param title
-* @param startDate
-* @param endDate
-* @param location
-* @param desc
-*/
-var ContactOrganization = function(name, dept, title) {
-       this.id = null;
-    this.name = name || null;
-    this.department = dept || null;
-    this.title = title || null;
-};
-
-/**
-* Represents a group of Contacts.
-*/
-var Contacts = function() {
-    this.inProgress = false;
-    this.records = [];
-};
-/**
-* Returns an array of Contacts matching the search criteria.
-* @param fields that should be searched
-* @param successCB success callback
-* @param errorCB error callback
-* @param {ContactFindOptions} options that can be applied to contact searching
-* @return array of Contacts matching search criteria
-*/
-Contacts.prototype.find = function(fields, successCB, errorCB, options) {
-    PhoneGap.exec(successCB, errorCB, "Contacts", "search", [fields, options]);
-};
-
-/**
-* This function creates a new contact, but it does not persist the contact
-* to device storage. To persist the contact to device storage, invoke
-* contact.save().
-* @param properties an object who's properties will be examined to create a new Contact
-* @returns new Contact object
-*/
-Contacts.prototype.create = function(properties) {
-    var i;
-       var contact = new Contact();
-    for (i in properties) {
-        if (contact[i] !== 'undefined') {
-            contact[i] = properties[i];
-        }
-    }
-    return contact;
-};
-
-/**
-* This function returns and array of contacts.  It is required as we need to convert raw 
-* JSON objects into concrete Contact objects.  Currently this method is called after 
-* navigator.service.contacts.find but before the find methods success call back.
-* 
-* @param jsonArray an array of JSON Objects that need to be converted to Contact objects.
-* @returns an array of Contact objects
-*/
-Contacts.prototype.cast = function(pluginResult) {
-       var contacts = [];
-       var i;
-       for (i=0; i<pluginResult.message.length; i++) {
-               contacts.push(navigator.service.contacts.create(pluginResult.message[i]));
-       }
-       pluginResult.message = contacts;
-       return pluginResult;
-};
-
-/**
- * ContactFindOptions.
- * @param filter used to match contacts against
- * @param multiple boolean used to determine if more than one contact should be returned
- * @param updatedSince return only contact records that have been updated on or after the given time
- */
-var ContactFindOptions = function(filter, multiple, updatedSince) {
-    this.filter = filter || '';
-    this.multiple = multiple || true;
-    this.updatedSince = updatedSince || '';
-};
-
-/**
- * Add the contact interface into the browser.
- */
-PhoneGap.addConstructor(function() {
-    if(typeof navigator.service === "undefined") {
-        navigator.service = {};
-    }
-    if(typeof navigator.service.contacts === "undefined") {
-        navigator.service.contacts = new Contacts();
-    }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-// TODO: Needs to be commented
-
-if (!PhoneGap.hasResource("crypto")) {
-PhoneGap.addResource("crypto");
-
-var Crypto = function() {
-};
-
-Crypto.prototype.encrypt = function(seed, string, callback) {
-    this.encryptWin = callback;
-    PhoneGap.exec(null, null, "Crypto", "encrypt", [seed, string]);
-};
-
-Crypto.prototype.decrypt = function(seed, string, callback) {
-    this.decryptWin = callback;
-    PhoneGap.exec(null, null, "Crypto", "decrypt", [seed, string]);
-};
-
-Crypto.prototype.gotCryptedString = function(string) {
-    this.encryptWin(string);
-};
-
-Crypto.prototype.getPlainString = function(string) {
-    this.decryptWin(string);
-};
-
-PhoneGap.addConstructor(function() {
-    if (typeof navigator.Crypto === "undefined") {
-        navigator.Crypto = new Crypto();
-    }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010-2011, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("device")) {
-PhoneGap.addResource("device");
-
-/**
- * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the
- * phone, etc.
- * @constructor
- */
-Device = function() {
-    this.available = PhoneGap.available;
-    this.platform = null;
-    this.version = null;
-    this.name = null;
-    this.uuid = null;
-    this.phonegap = null;
-
-    var me = this;
-    this.getInfo(
-        function(info) {
-            me.available = true;
-            me.platform = info.platform;
-            me.version = info.version;
-            me.name = info.name;
-            me.uuid = info.uuid;
-            me.phonegap = info.phonegap;
-            PhoneGap.onPhoneGapInfoReady.fire();
-        },
-        function(e) {
-            me.available = false;
-            console.log("Error initializing PhoneGap: " + e);
-            alert("Error initializing PhoneGap: "+e);
-        });
-};
-
-/**
- * Get device info
- *
- * @param {Function} successCallback The function to call when the heading data is available
- * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
- */
-Device.prototype.getInfo = function(successCallback, errorCallback) {
-
-    // successCallback required
-    if (typeof successCallback !== "function") {
-        console.log("Device Error: successCallback is not a function");
-        return;
-    }
-
-    // errorCallback optional
-    if (errorCallback && (typeof errorCallback !== "function")) {
-        console.log("Device Error: errorCallback is not a function");
-        return;
-    }
-
-    // Get info
-    PhoneGap.exec(successCallback, errorCallback, "Device", "getDeviceInfo", []);
-};
-
-/*
- * DEPRECATED
- * This is only for Android.
- *
- * You must explicitly override the back button.
- */
-Device.prototype.overrideBackButton = function() {
-       console.log("Device.overrideBackButton() is deprecated.  Use App.overrideBackbutton(true).");
-       app.overrideBackbutton(true);
-};
-
-/*
- * DEPRECATED
- * This is only for Android.
- *
- * This resets the back button to the default behaviour
- */
-Device.prototype.resetBackButton = function() {
-       console.log("Device.resetBackButton() is deprecated.  Use App.overrideBackbutton(false).");
-       app.overrideBackbutton(false);
-};
-
-/*
- * DEPRECATED
- * This is only for Android.
- *
- * This terminates the activity!
- */
-Device.prototype.exitApp = function() {
-       console.log("Device.exitApp() is deprecated.  Use App.exitApp().");
-       app.exitApp();
-};
-
-PhoneGap.addConstructor(function() {
-    if (typeof navigator.device === "undefined") {
-        navigator.device = window.device = new Device();
-    }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("file")) {
-PhoneGap.addResource("file");
-
-/**
- * This class provides some useful information about a file.
- * This is the fields returned when navigator.fileMgr.getFileProperties() 
- * is called.
- */
-FileProperties = function(filePath) {
-    this.filePath = filePath;
-    this.size = 0;
-    this.lastModifiedDate = null;
-};
-
-/**
- * Represents a single file.
- * 
- * name {DOMString} name of the file, without path information
- * fullPath {DOMString} the full path of the file, including the name
- * type {DOMString} mime type
- * lastModifiedDate {Date} last modified date
- * size {Number} size of the file in bytes
- */
-File = function(name, fullPath, type, lastModifiedDate, size) {
-       this.name = name || null;
-    this.fullPath = fullPath || null;
-       this.type = type || null;
-    this.lastModifiedDate = lastModifiedDate || null;
-    this.size = size || 0;
-};
-
-FileError = function() {
-   this.code = null;
-};
-
-// File error codes
-// Found in DOMException
-FileError.NOT_FOUND_ERR = 1;
-FileError.SECURITY_ERR = 2;
-FileError.ABORT_ERR = 3;
-
-// Added by this specification
-FileError.NOT_READABLE_ERR = 4;
-FileError.ENCODING_ERR = 5;
-FileError.NO_MODIFICATION_ALLOWED_ERR = 6;
-FileError.INVALID_STATE_ERR = 7;
-FileError.SYNTAX_ERR = 8;
-FileError.INVALID_MODIFICATION_ERR = 9;
-FileError.QUOTA_EXCEEDED_ERR = 10;
-FileError.TYPE_MISMATCH_ERR = 11;
-FileError.PATH_EXISTS_ERR = 12;
-
-//-----------------------------------------------------------------------------
-// File manager
-//-----------------------------------------------------------------------------
-
-FileMgr = function() {
-};
-
-FileMgr.prototype.getFileProperties = function(filePath) {
-    return PhoneGap.exec(null, null, "File", "getFileProperties", [filePath]);
-};
-
-FileMgr.prototype.getFileBasePaths = function() {
-};
-
-FileMgr.prototype.testSaveLocationExists = function(successCallback, errorCallback) {
-    return PhoneGap.exec(successCallback, errorCallback, "File", "testSaveLocationExists", []);
-};
-
-FileMgr.prototype.testFileExists = function(fileName, successCallback, errorCallback) {
-    return PhoneGap.exec(successCallback, errorCallback, "File", "testFileExists", [fileName]);
-};
-
-FileMgr.prototype.testDirectoryExists = function(dirName, successCallback, errorCallback) {
-    return PhoneGap.exec(successCallback, errorCallback, "File", "testDirectoryExists", [dirName]);
-};
-
-FileMgr.prototype.getFreeDiskSpace = function(successCallback, errorCallback) {
-    return PhoneGap.exec(successCallback, errorCallback, "File", "getFreeDiskSpace", []);
-};
-
-FileMgr.prototype.writeAsText = function(fileName, data, append, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "writeAsText", [fileName, data, append]);
-};
-
-FileMgr.prototype.write = function(fileName, data, position, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "write", [fileName, data, position]);
-};
-
-FileMgr.prototype.truncate = function(fileName, size, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "truncate", [fileName, size]);
-};
-
-FileMgr.prototype.readAsText = function(fileName, encoding, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "readAsText", [fileName, encoding]);
-};
-
-FileMgr.prototype.readAsDataURL = function(fileName, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "readAsDataURL", [fileName]);
-};
-
-PhoneGap.addConstructor(function() {
-    if (typeof navigator.fileMgr === "undefined") {
-        navigator.fileMgr = new FileMgr();
-    }
-});
-
-//-----------------------------------------------------------------------------
-// File Reader
-//-----------------------------------------------------------------------------
-// TODO: All other FileMgr function operate on the SD card as root.  However,
-//       for FileReader & FileWriter the root is not SD card.  Should this be changed?
-
-/**
- * This class reads the mobile device file system.
- *
- * For Android:
- *      The root directory is the root of the file system.
- *      To read from the SD card, the file name is "sdcard/my_file.txt"
- */
-FileReader = function() {
-    this.fileName = "";
-
-    this.readyState = 0;
-
-    // File data
-    this.result = null;
-
-    // Error
-    this.error = null;
-
-    // Event handlers
-    this.onloadstart = null;    // When the read starts.
-    this.onprogress = null;     // While reading (and decoding) file or fileBlob data, and reporting partial file data (progess.loaded/progress.total)
-    this.onload = null;         // When the read has successfully completed.
-    this.onerror = null;        // When the read has failed (see errors).
-    this.onloadend = null;      // When the request has completed (either in success or failure).
-    this.onabort = null;        // When the read has been aborted. For instance, by invoking the abort() method.
-};
-
-// States
-FileReader.EMPTY = 0;
-FileReader.LOADING = 1;
-FileReader.DONE = 2;
-
-/**
- * Abort reading file.
- */
-FileReader.prototype.abort = function() {
-    var evt;
-    this.readyState = FileReader.DONE;
-    this.result = null;
-
-    // set error
-    var error = new FileError();
-    error.code = error.ABORT_ERR;
-    this.error = error;
-   
-    // If error callback
-    if (typeof this.onerror === "function") {
-        this.onerror({"type":"error", "target":this});
-    }
-    // If abort callback
-    if (typeof this.onabort === "function") {
-        this.oneabort({"type":"abort", "target":this});
-    }
-    // If load end callback
-    if (typeof this.onloadend === "function") {
-        this.onloadend({"type":"loadend", "target":this});
-    }
-};
-
-/**
- * Read text file.
- *
- * @param file          {File} File object containing file properties
- * @param encoding      [Optional] (see http://www.iana.org/assignments/character-sets)
- */
-FileReader.prototype.readAsText = function(file, encoding) {
-    this.fileName = "";
-       if (typeof file.fullPath === "undefined") {
-               this.fileName = file;
-       } else {
-               this.fileName = file.fullPath;
-       }
-
-    // LOADING state
-    this.readyState = FileReader.LOADING;
-
-    // If loadstart callback
-    if (typeof this.onloadstart === "function") {
-        this.onloadstart({"type":"loadstart", "target":this});
-    }
-
-    // Default encoding is UTF-8
-    var enc = encoding ? encoding : "UTF-8";
-
-    var me = this;
-
-    // Read file
-    navigator.fileMgr.readAsText(this.fileName, enc,
-
-        // Success callback
-        function(r) {
-            var evt;
-
-            // If DONE (cancelled), then don't do anything
-            if (me.readyState === FileReader.DONE) {
-                return;
-            }
-
-            // Save result
-            me.result = r;
-
-            // If onload callback
-            if (typeof me.onload === "function") {
-                me.onload({"type":"load", "target":me});
-            }
-
-            // DONE state
-            me.readyState = FileReader.DONE;
-
-            // If onloadend callback
-            if (typeof me.onloadend === "function") {
-                me.onloadend({"type":"loadend", "target":me});
-            }
-        },
-
-        // Error callback
-        function(e) {
-            var evt;
-            // If DONE (cancelled), then don't do anything
-            if (me.readyState === FileReader.DONE) {
-                return;
-            }
-
-            // Save error
-                   var fileError = new FileError();
-                   fileError.code = e;
-                   me.error = fileError;
-
-            // If onerror callback
-            if (typeof me.onerror === "function") {
-                me.onerror({"type":"error", "target":me});
-            }
-
-            // DONE state
-            me.readyState = FileReader.DONE;
-
-            // If onloadend callback
-            if (typeof me.onloadend === "function") {
-                me.onloadend({"type":"loadend", "target":me});
-            }
-        }
-        );
-};
-
-
-/**
- * Read file and return data as a base64 encoded data url.
- * A data url is of the form:
- *      data:[<mediatype>][;base64],<data>
- *
- * @param file          {File} File object containing file properties
- */
-FileReader.prototype.readAsDataURL = function(file) {
-       this.fileName = "";
-    if (typeof file.fullPath === "undefined") {
-        this.fileName = file;
-    } else {
-        this.fileName = file.fullPath;
-    }
-
-    // LOADING state
-    this.readyState = FileReader.LOADING;
-
-    // If loadstart callback
-    if (typeof this.onloadstart === "function") {
-        this.onloadstart({"type":"loadstart", "target":this});
-    }
-
-    var me = this;
-
-    // Read file
-    navigator.fileMgr.readAsDataURL(this.fileName,
-
-        // Success callback
-        function(r) {
-            var evt;
-
-            // If DONE (cancelled), then don't do anything
-            if (me.readyState === FileReader.DONE) {
-                return;
-            }
-
-            // Save result
-            me.result = r;
-
-            // If onload callback
-            if (typeof me.onload === "function") {
-                me.onload({"type":"load", "target":me});
-            }
-
-            // DONE state
-            me.readyState = FileReader.DONE;
-
-            // If onloadend callback
-            if (typeof me.onloadend === "function") {
-                me.onloadend({"type":"loadend", "target":me});
-            }
-        },
-
-        // Error callback
-        function(e) {
-            var evt;
-            // If DONE (cancelled), then don't do anything
-            if (me.readyState === FileReader.DONE) {
-                return;
-            }
-
-            // Save error
-            var fileError = new FileError();
-            fileError.code = e;
-            me.error = fileError;
-
-            // If onerror callback
-            if (typeof me.onerror === "function") {
-                me.onerror({"type":"error", "target":me});
-            }
-
-            // DONE state
-            me.readyState = FileReader.DONE;
-
-            // If onloadend callback
-            if (typeof me.onloadend === "function") {
-                me.onloadend({"type":"loadend", "target":me});
-            }
-        }
-        );
-};
-
-/**
- * Read file and return data as a binary data.
- *
- * @param file          {File} File object containing file properties
- */
-FileReader.prototype.readAsBinaryString = function(file) {
-    // TODO - Can't return binary data to browser.
-    this.fileName = file;
-};
-
-/**
- * Read file and return data as a binary data.
- *
- * @param file          {File} File object containing file properties
- */
-FileReader.prototype.readAsArrayBuffer = function(file) {
-    // TODO - Can't return binary data to browser.
-    this.fileName = file;
-};
-
-//-----------------------------------------------------------------------------
-// File Writer
-//-----------------------------------------------------------------------------
-
-/**
- * This class writes to the mobile device file system.
- *
- * For Android:
- *      The root directory is the root of the file system.
- *      To write to the SD card, the file name is "sdcard/my_file.txt"
- *      
- * @param file {File} File object containing file properties
- * @param append if true write to the end of the file, otherwise overwrite the file
- */
-FileWriter = function(file) {
-    this.fileName = "";
-    this.length = 0;
-       if (file) {
-           this.fileName = file.fullPath || file;
-           this.length = file.size || 0;
-       }
-    // default is to write at the beginning of the file
-    this.position = 0;
-
-    this.readyState = 0; // EMPTY
-
-    this.result = null;
-
-    // Error
-    this.error = null;
-
-    // Event handlers
-    this.onwritestart = null;  // When writing starts
-    this.onprogress = null;            // While writing the file, and reporting partial file data
-    this.onwrite = null;               // When the write has successfully completed.
-    this.onwriteend = null;            // When the request has completed (either in success or failure).
-    this.onabort = null;               // When the write has been aborted. For instance, by invoking the abort() method.
-    this.onerror = null;               // When the write has failed (see errors).
-};
-
-// States
-FileWriter.INIT = 0;
-FileWriter.WRITING = 1;
-FileWriter.DONE = 2;
-
-/**
- * Abort writing file.
- */
-FileWriter.prototype.abort = function() {
-    // check for invalid state
-       if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) {
-               throw FileError.INVALID_STATE_ERR;
-       } 
-
-    // set error
-    var error = new FileError(), evt;
-    error.code = error.ABORT_ERR;
-    this.error = error;
-    
-    // If error callback
-    if (typeof this.onerror === "function") {
-        this.onerror({"type":"error", "target":this});
-    }
-    // If abort callback
-    if (typeof this.onabort === "function") {
-        this.oneabort({"type":"abort", "target":this});
-    }
-    
-    this.readyState = FileWriter.DONE;
-
-    // If write end callback
-    if (typeof this.onwriteend == "function") {
-        this.onwriteend({"type":"writeend", "target":this});
-    }
-};
-
-/**
- * Writes data to the file
- *  
- * @param text to be written
- */
-FileWriter.prototype.write = function(text) {
-       // Throw an exception if we are already writing a file
-       if (this.readyState === FileWriter.WRITING) {
-               throw FileError.INVALID_STATE_ERR;
-       }
-
-    // WRITING state
-    this.readyState = FileWriter.WRITING;
-
-    var me = this;
-
-    // If onwritestart callback
-    if (typeof me.onwritestart === "function") {
-        me.onwritestart({"type":"writestart", "target":me});
-    }
-
-    // Write file
-    navigator.fileMgr.write(this.fileName, text, this.position,
-
-        // Success callback
-        function(r) {
-            var evt;
-            // If DONE (cancelled), then don't do anything
-            if (me.readyState === FileWriter.DONE) {
-                return;
-            }
-
-            // So if the user wants to keep appending to the file
-            me.length = Math.max(me.length, me.position + r);
-            // position always increases by bytes written because file would be extended
-            me.position += r;
-
-            // If onwrite callback
-            if (typeof me.onwrite === "function") {
-                me.onwrite({"type":"write", "target":me});
-            }
-
-            // DONE state
-            me.readyState = FileWriter.DONE;
-
-            // If onwriteend callback
-            if (typeof me.onwriteend === "function") {
-                me.onwriteend({"type":"writeend", "target":me});
-            }
-        },
-
-        // Error callback
-        function(e) {
-            var evt;
-
-            // If DONE (cancelled), then don't do anything
-            if (me.readyState === FileWriter.DONE) {
-                return;
-            }
-
-            // Save error
-            var fileError = new FileError();
-            fileError.code = e;
-            me.error = fileError;
-
-            // If onerror callback
-            if (typeof me.onerror === "function") {
-                me.onerror({"type":"error", "target":me});
-            }
-
-            // DONE state
-            me.readyState = FileWriter.DONE;
-
-            // If onwriteend callback
-            if (typeof me.onwriteend === "function") {
-                me.onwriteend({"type":"writeend", "target":me});
-            }
-        }
-        );
-
-};
-
-/** 
- * Moves the file pointer to the location specified.
- * 
- * If the offset is a negative number the position of the file 
- * pointer is rewound.  If the offset is greater than the file 
- * size the position is set to the end of the file.  
- * 
- * @param offset is the location to move the file pointer to.
- */
-FileWriter.prototype.seek = function(offset) {
-    // Throw an exception if we are already writing a file
-    if (this.readyState === FileWriter.WRITING) {
-        throw FileError.INVALID_STATE_ERR;
-    }
-
-    if (!offset) {
-        return;
-    }
-    
-    // See back from end of file.
-    if (offset < 0) {
-               this.position = Math.max(offset + this.length, 0);
-       }
-    // Offset is bigger then file size so set position 
-    // to the end of the file.
-       else if (offset > this.length) {
-               this.position = this.length;
-       }
-    // Offset is between 0 and file size so set the position
-    // to start writing.
-       else {
-               this.position = offset;
-       }       
-};
-
-/** 
- * Truncates the file to the size specified.
- * 
- * @param size to chop the file at.
- */
-FileWriter.prototype.truncate = function(size) {
-       // Throw an exception if we are already writing a file
-       if (this.readyState === FileWriter.WRITING) {
-               throw FileError.INVALID_STATE_ERR;
-       }
-
-    // WRITING state
-    this.readyState = FileWriter.WRITING;
-
-    var me = this;
-
-    // If onwritestart callback
-    if (typeof me.onwritestart === "function") {
-        me.onwritestart({"type":"writestart", "target":this});
-    }
-
-    // Write file
-    navigator.fileMgr.truncate(this.fileName, size,
-
-        // Success callback
-        function(r) {
-            var evt;
-            // If DONE (cancelled), then don't do anything
-            if (me.readyState === FileWriter.DONE) {
-                return;
-            }
-
-            // Update the length of the file
-            me.length = r;
-            me.position = Math.min(me.position, r);
-
-            // If onwrite callback
-            if (typeof me.onwrite === "function") {
-                me.onwrite({"type":"write", "target":me});
-            }
-
-            // DONE state
-            me.readyState = FileWriter.DONE;
-
-            // If onwriteend callback
-            if (typeof me.onwriteend === "function") {
-                me.onwriteend({"type":"writeend", "target":me});
-            }
-        },
-
-        // Error callback
-        function(e) {
-            var evt;
-            // If DONE (cancelled), then don't do anything
-            if (me.readyState === FileWriter.DONE) {
-                return;
-            }
-
-            // Save error
-            var fileError = new FileError();
-            fileError.code = e;
-            me.error = fileError;
-
-            // If onerror callback
-            if (typeof me.onerror === "function") {
-                me.onerror({"type":"error", "target":me});
-            }
-
-            // DONE state
-            me.readyState = FileWriter.DONE;
-
-            // If onwriteend callback
-            if (typeof me.onwriteend === "function") {
-                me.onwriteend({"type":"writeend", "target":me});
-            }
-        }
-    );
-};
-
-LocalFileSystem = function() {
-};
-
-// File error codes
-LocalFileSystem.TEMPORARY = 0;
-LocalFileSystem.PERSISTENT = 1;
-LocalFileSystem.RESOURCE = 2;
-LocalFileSystem.APPLICATION = 3;
-
-/**
- * Requests a filesystem in which to store application data.
- * 
- * @param {int} type of file system being requested
- * @param {Function} successCallback is called with the new FileSystem
- * @param {Function} errorCallback is called with a FileError
- */
-LocalFileSystem.prototype.requestFileSystem = function(type, size, successCallback, errorCallback) {
-       if (type < 0 || type > 3) {
-               if (typeof errorCallback == "function") {
-                       errorCallback({
-                               "code": FileError.SYNTAX_ERR
-                       });
-               }
-       }
-       else {
-               PhoneGap.exec(successCallback, errorCallback, "File", "requestFileSystem", [type, size]);
-       }
-};
-
-/**
- * 
- * @param {DOMString} uri referring to a local file in a filesystem
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-LocalFileSystem.prototype.resolveLocalFileSystemURI = function(uri, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "resolveLocalFileSystemURI", [uri]);
-};
-
-/**
-* This function returns and array of contacts.  It is required as we need to convert raw 
-* JSON objects into concrete Contact objects.  Currently this method is called after 
-* navigator.service.contacts.find but before the find methods success call back.
-* 
-* @param a JSON Objects that need to be converted to DirectoryEntry or FileEntry objects.
-* @returns an entry 
-*/
-LocalFileSystem.prototype._castFS = function(pluginResult) {
-    var entry = null;
-    entry = new DirectoryEntry();
-    entry.isDirectory = pluginResult.message.root.isDirectory;
-    entry.isFile = pluginResult.message.root.isFile;
-    entry.name = pluginResult.message.root.name;
-    entry.fullPath = pluginResult.message.root.fullPath;
-    pluginResult.message.root = entry;
-    return pluginResult;    
-}
-
-LocalFileSystem.prototype._castEntry = function(pluginResult) {
-    var entry = null;
-    if (pluginResult.message.isDirectory) {
-        console.log("This is a dir");
-        entry = new DirectoryEntry();
-    }
-    else if (pluginResult.message.isFile) {
-        console.log("This is a file");
-        entry = new FileEntry();
-    }
-    entry.isDirectory = pluginResult.message.isDirectory;
-    entry.isFile = pluginResult.message.isFile;
-    entry.name = pluginResult.message.name;
-    entry.fullPath = pluginResult.message.fullPath;
-    pluginResult.message = entry;
-    return pluginResult;    
-}
-
-LocalFileSystem.prototype._castEntries = function(pluginResult) {
-    var entries = pluginResult.message;
-       var retVal = []; 
-       for (i=0; i<entries.length; i++) {
-               retVal.push(window.localFileSystem._createEntry(entries[i]));
-       }
-    pluginResult.message = retVal;
-    return pluginResult;    
-}
-
-LocalFileSystem.prototype._createEntry = function(castMe) {
-       var entry = null;
-    if (castMe.isDirectory) {
-        console.log("This is a dir");
-        entry = new DirectoryEntry();
-    }
-    else if (castMe.isFile) {
-        console.log("This is a file");
-        entry = new FileEntry();
-    }
-    entry.isDirectory = castMe.isDirectory;
-    entry.isFile = castMe.isFile;
-    entry.name = castMe.name;
-    entry.fullPath = castMe.fullPath;
-    return entry;    
-       
-}
-
-LocalFileSystem.prototype._castDate = function(pluginResult) {
-       if (pluginResult.message.modificationTime) {
-           var modTime = new Date(pluginResult.message.modificationTime);
-           pluginResult.message.modificationTime = modTime;
-       }
-       else if (pluginResult.message.lastModifiedDate) {
-               var file = new File();
-        file.size = pluginResult.message.size;
-        file.type = pluginResult.message.type;
-        file.name = pluginResult.message.name;
-        file.fullPath = pluginResult.message.fullPath;
-               file.lastModifedDate = new Date(pluginResult.message.lastModifiedDate);
-           pluginResult.message = file;                
-       }
-       
-    return pluginResult;       
-}
-
-/**
- * Information about the state of the file or directory
- * 
- * {Date} modificationTime (readonly)
- */
-Metadata = function() {
-    this.modificationTime=null;
-};
-
-/**
- * Supplies arguments to methods that lookup or create files and directories
- * 
- * @param {boolean} create file or directory if it doesn't exist 
- * @param {boolean} exclusive if true the command will fail if the file or directory exists
- */
-Flags = function(create, exclusive) {
-    this.create = create || false;
-    this.exclusive = exclusive || false;
-};
-
-/**
- * An interface representing a file system
- * 
- * {DOMString} name the unique name of the file system (readonly)
- * {DirectoryEntry} root directory of the file system (readonly)
- */
-FileSystem = function() {
-    this.name = null;
-    this.root = null;
-};
-
-/**
- * An interface representing a directory on the file system.
- * 
- * {boolean} isFile always false (readonly)
- * {boolean} isDirectory always true (readonly)
- * {DOMString} name of the directory, excluding the path leading to it (readonly)
- * {DOMString} fullPath the absolute full path to the directory (readonly)
- * {FileSystem} filesystem on which the directory resides (readonly)
- */
-DirectoryEntry = function() {
-    this.isFile = false;
-    this.isDirectory = true;
-    this.name = null;
-    this.fullPath = null;
-    this.filesystem = null;
-};
-
-/**
- * Copies a directory to a new location
- * 
- * @param {DirectoryEntry} parent the directory to which to copy the entry
- * @param {DOMString} newName the new name of the entry, defaults to the current name
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
-};
-
-/**
- * Looks up the metadata of the entry
- * 
- * @param {Function} successCallback is called with a Metadata object
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.getMetadata = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
-};
-
-/**
- * Gets the parent of the entry
- * 
- * @param {Function} successCallback is called with a parent entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.getParent = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
-};
-
-/**
- * Moves a directory to a new location
- * 
- * @param {DirectoryEntry} parent the directory to which to move the entry
- * @param {DOMString} newName the new name of the entry, defaults to the current name
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
-};
-
-/**
- * Removes the entry
- * 
- * @param {Function} successCallback is called with no parameters
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.remove = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
-};
-
-/**
- * Returns a URI that can be used to identify this entry.
- * 
- * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
- * @return uri
- */
-DirectoryEntry.prototype.toURI = function(mimeType) {
-    return "file://" + this.fullPath;
-};
-
-/**
- * Creates a new DirectoryReader to read entries from this directory
- */
-DirectoryEntry.prototype.createReader = function(successCallback, errorCallback) {
-    return new DirectoryReader(this.fullPath);
-};
-
-/**
- * Creates or looks up a directory
- * 
- * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory
- * @param {Flags} options to create or excluively create the directory
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "getDirectory", [this.fullPath, path, options]);
-};
-
-/**
- * Creates or looks up a file
- * 
- * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file
- * @param {Flags} options to create or excluively create the file
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "getFile", [this.fullPath, path, options]);
-};
-
-/**
- * Deletes a directory and all of it's contents
- * 
- * @param {Function} successCallback is called with no parameters
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "removeRecursively", [this.fullPath]);
-};
-
-/**
- * An interface that lists the files and directories in a directory.
- */
-DirectoryReader = function(fullPath){
-       this.fullPath = fullPath || null;    
-};
-
-/**
- * Returns a list of entries from a directory.
- * 
- * @param {Function} successCallback is called with a list of entries
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "readEntries", [this.fullPath]);
-}
-/**
- * An interface representing a directory on the file system.
- * 
- * {boolean} isFile always true (readonly)
- * {boolean} isDirectory always false (readonly)
- * {DOMString} name of the file, excluding the path leading to it (readonly)
- * {DOMString} fullPath the absolute full path to the file (readonly)
- * {FileSystem} filesystem on which the directory resides (readonly)
- */
-FileEntry = function() {
-    this.isFile = true;
-    this.isDirectory = false;
-    this.name = null;
-    this.fullPath = null;
-    this.filesystem = null;
-};
-
-/**
- * Copies a file to a new location
- * 
- * @param {DirectoryEntry} parent the directory to which to copy the entry
- * @param {DOMString} newName the new name of the entry, defaults to the current name
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
-};
-
-/**
- * Looks up the metadata of the entry
- * 
- * @param {Function} successCallback is called with a Metadata object
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.getMetadata = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
-};
-
-/**
- * Gets the parent of the entry
- * 
- * @param {Function} successCallback is called with a parent entry
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.getParent = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
-};
-
-/**
- * Moves a directory to a new location
- * 
- * @param {DirectoryEntry} parent the directory to which to move the entry
- * @param {DOMString} newName the new name of the entry, defaults to the current name
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
-};
-
-/**
- * Removes the entry
- * 
- * @param {Function} successCallback is called with no parameters
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.remove = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
-};
-
-/**
- * Returns a URI that can be used to identify this entry.
- * 
- * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
- * @return uri
- */
-FileEntry.prototype.toURI = function(mimeType) {
-    return "file://" + this.fullPath;
-};
-
-/**
- * Creates a new FileWriter associated with the file that this FileEntry represents.
- * 
- * @param {Function} successCallback is called with the new FileWriter
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.createWriter = function(successCallback, errorCallback) {
-       var writer = new FileWriter(this.fullPath);
-
-    if (writer.fileName == null || writer.fileName == "") {
-               if (typeof errorCallback == "function") {
-                       errorCallback({
-                               "code": FileError.INVALID_STATE_ERR
-                       });
-               }
-       }
-       
-    if (typeof successCallback == "function") {
-        successCallback(writer);
-    }
-};
-
-/**
- * Returns a File that represents the current state of the file that this FileEntry represents.
- * 
- * @param {Function} successCallback is called with the new File object
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.file = function(successCallback, errorCallback) {
-    PhoneGap.exec(successCallback, errorCallback, "File", "getFileMetadata", [this.fullPath]);
-};
-
-/**
- * Add the FileSystem interface into the browser.
- */
-PhoneGap.addConstructor(function() {
-       var pgLocalFileSystem = new LocalFileSystem();
-       // Needed for cast methods
-    if(typeof window.localFileSystem == "undefined") window.localFileSystem  = pgLocalFileSystem;
-    if(typeof window.requestFileSystem == "undefined") window.requestFileSystem  = pgLocalFileSystem.requestFileSystem;
-    if(typeof window.resolveLocalFileSystemURI == "undefined") window.resolveLocalFileSystemURI = pgLocalFileSystem.resolveLocalFileSystemURI;
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *  
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("filetransfer")) {
-PhoneGap.addResource("filetransfer");
-
-/**
- * FileTransfer uploads a file to a remote server.
- */
-FileTransfer = function() {};
-
-/**
- * FileUploadResult
- */
-FileUploadResult = function() {
-    this.bytesSent = 0;
-    this.responseCode = null;
-    this.response = null;
-};
-
-/**
- * FileTransferError
- */
-FileTransferError = function() {
-    this.code = null;
-};
-
-FileTransferError.FILE_NOT_FOUND_ERR = 1;
-FileTransferError.INVALID_URL_ERR = 2;
-FileTransferError.CONNECTION_ERR = 3;
-
-/**
-* Given an absolute file path, uploads a file on the device to a remote server 
-* using a multipart HTTP request.
-* @param filePath {String}           Full path of the file on the device
-* @param server {String}             URL of the server to receive the file
-* @param successCallback (Function}  Callback to be invoked when upload has completed
-* @param errorCallback {Function}    Callback to be invoked upon error
-* @param options {FileUploadOptions} Optional parameters such as file name and mimetype           
-*/
-FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, debug) {
-
-    // check for options
-    var fileKey = null;
-    var fileName = null;
-    var mimeType = null;
-    var params = null;
-    if (options) {
-        fileKey = options.fileKey;
-        fileName = options.fileName;
-        mimeType = options.mimeType;
-        if (options.params) {
-            params = options.params;
-        }
-        else {
-            params = {};
-        }
-    }
-    
-    PhoneGap.exec(successCallback, errorCallback, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, debug]);
-};
-
-/**
- * Options to customize the HTTP request used to upload files.
- * @param fileKey {String}   Name of file request parameter.
- * @param fileName {String}  Filename to be used by the server. Defaults to image.jpg.
- * @param mimeType {String}  Mimetype of the uploaded file. Defaults to image/jpeg.
- * @param params {Object}    Object with key: value params to send to the server.
- */
-FileUploadOptions = function(fileKey, fileName, mimeType, params) {
-    this.fileKey = fileKey || null;
-    this.fileName = fileName || null;
-    this.mimeType = mimeType || null;
-    this.params = params || null;
-};
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("geolocation")) {
-PhoneGap.addResource("geolocation");
-
-/**
- * This class provides access to device GPS data.
- * @constructor
- */
-Geolocation = function() {
-
-    // The last known GPS position.
-    this.lastPosition = null;
-
-    // Geolocation listeners
-    this.listeners = {};
-};
-
-/**
- * Position error object
- *
- * @param code
- * @param message
- */
-PositionError = function(code, message) {
-    this.code = code;
-    this.message = message;
-};
-
-PositionError.PERMISSION_DENIED = 1;
-PositionError.POSITION_UNAVAILABLE = 2;
-PositionError.TIMEOUT = 3;
-
-/**
- * Asynchronously aquires the current position.
- *
- * @param {Function} successCallback    The function to call when the position data is available
- * @param {Function} errorCallback      The function to call when there is an error getting the heading position. (OPTIONAL)
- * @param {PositionOptions} options     The options for getting the position data. (OPTIONAL)
- */
-Geolocation.prototype.getCurrentPosition = function(successCallback, errorCallback, options) {
-    if (navigator._geo.listeners.global) {
-        console.log("Geolocation Error: Still waiting for previous getCurrentPosition() request.");
-        try {
-            errorCallback(new PositionError(PositionError.TIMEOUT, "Geolocation Error: Still waiting for previous getCurrentPosition() request."));
-        } catch (e) {
-        }
-        return;
-    }
-    var maximumAge = 10000;
-    var enableHighAccuracy = false;
-    var timeout = 10000;
-    if (typeof options !== "undefined") {
-        if (typeof options.maximumAge !== "undefined") {
-            maximumAge = options.maximumAge;
-        }
-        if (typeof options.enableHighAccuracy !== "undefined") {
-            enableHighAccuracy = options.enableHighAccuracy;
-        }
-        if (typeof options.timeout !== "undefined") {
-            timeout = options.timeout;
-        }
-    }
-    navigator._geo.listeners.global = {"success" : successCallback, "fail" : errorCallback };
-    PhoneGap.exec(null, null, "Geolocation", "getCurrentLocation", [enableHighAccuracy, timeout, maximumAge]);
-};
-
-/**
- * Asynchronously watches the geolocation for changes to geolocation.  When a change occurs,
- * the successCallback is called with the new location.
- *
- * @param {Function} successCallback    The function to call each time the location data is available
- * @param {Function} errorCallback      The function to call when there is an error getting the location data. (OPTIONAL)
- * @param {PositionOptions} options     The options for getting the location data such as frequency. (OPTIONAL)
- * @return String                       The watch id that must be passed to #clearWatch to stop watching.
- */
-Geolocation.prototype.watchPosition = function(successCallback, errorCallback, options) {
-    var maximumAge = 10000;
-    var enableHighAccuracy = false;
-    var timeout = 10000;
-    if (typeof options !== "undefined") {
-        if (typeof options.frequency  !== "undefined") {
-            maximumAge = options.frequency;
-        }
-        if (typeof options.maximumAge !== "undefined") {
-            maximumAge = options.maximumAge;
-        }
-        if (typeof options.enableHighAccuracy !== "undefined") {
-            enableHighAccuracy = options.enableHighAccuracy;
-        }
-        if (typeof options.timeout !== "undefined") {
-            timeout = options.timeout;
-        }
-    }
-    var id = PhoneGap.createUUID();
-    navigator._geo.listeners[id] = {"success" : successCallback, "fail" : errorCallback };
-    PhoneGap.exec(null, null, "Geolocation", "start", [id, enableHighAccuracy, timeout, maximumAge]);
-    return id;
-};
-
-/*
- * Native callback when watch position has a new position.
- * PRIVATE METHOD
- *
- * @param {String} id
- * @param {Number} lat
- * @param {Number} lng
- * @param {Number} alt
- * @param {Number} altacc
- * @param {Number} head
- * @param {Number} vel
- * @param {Number} stamp
- */
-Geolocation.prototype.success = function(id, lat, lng, alt, altacc, head, vel, stamp) {
-    var coords = new Coordinates(lat, lng, alt, altacc, head, vel);
-    var loc = new Position(coords, stamp);
-    try {
-        if (lat === "undefined" || lng === "undefined") {
-            navigator._geo.listeners[id].fail(new PositionError(PositionError.POSITION_UNAVAILABLE, "Lat/Lng are undefined."));
-        }
-        else {
-            navigator._geo.lastPosition = loc;
-            navigator._geo.listeners[id].success(loc);
-        }
-    }
-    catch (e) {
-        console.log("Geolocation Error: Error calling success callback function.");
-    }
-
-    if (id === "global") {
-        delete navigator._geo.listeners.global;
-    }
-};
-
-/**
- * Native callback when watch position has an error.
- * PRIVATE METHOD
- *
- * @param {String} id       The ID of the watch
- * @param {Number} code     The error code
- * @param {String} msg      The error message
- */
-Geolocation.prototype.fail = function(id, code, msg) {
-    try {
-        navigator._geo.listeners[id].fail(new PositionError(code, msg));
-    }
-    catch (e) {
-        console.log("Geolocation Error: Error calling error callback function.");
-    }
-};
-
-/**
- * Clears the specified heading watch.
- *
- * @param {String} id       The ID of the watch returned from #watchPosition
- */
-Geolocation.prototype.clearWatch = function(id) {
-    PhoneGap.exec(null, null, "Geolocation", "stop", [id]);
-    delete navigator._geo.listeners[id];
-};
-
-/**
- * Force the PhoneGap geolocation to be used instead of built-in.
- */
-Geolocation.usingPhoneGap = false;
-Geolocation.usePhoneGap = function() {
-    if (Geolocation.usingPhoneGap) {
-        return;
-    }
-    Geolocation.usingPhoneGap = true;
-
-    // Set built-in geolocation methods to our own implementations
-    // (Cannot replace entire geolocation, but can replace individual methods)
-    navigator.geolocation.setLocation = navigator._geo.setLocation;
-    navigator.geolocation.getCurrentPosition = navigator._geo.getCurrentPosition;
-    navigator.geolocation.watchPosition = navigator._geo.watchPosition;
-    navigator.geolocation.clearWatch = navigator._geo.clearWatch;
-    navigator.geolocation.start = navigator._geo.start;
-    navigator.geolocation.stop = navigator._geo.stop;
-};
-
-PhoneGap.addConstructor(function() {
-    navigator._geo = new Geolocation();
-
-    // No native geolocation object for Android 1.x, so use PhoneGap geolocation
-    if (typeof navigator.geolocation === 'undefined') {
-        navigator.geolocation = navigator._geo;
-        Geolocation.usingPhoneGap = true;
-    }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("media")) {
-PhoneGap.addResource("media");
-
-/**
- * List of media objects.
- * PRIVATE
- */
-PhoneGap.mediaObjects = {};
-
-/**
- * Object that receives native callbacks.
- * PRIVATE
- */
-PhoneGap.Media = function() {};
-
-/**
- * Get the media object.
- * PRIVATE
- *
- * @param id            The media object id (string)
- */
-PhoneGap.Media.getMediaObject = function(id) {
-    return PhoneGap.mediaObjects[id];
-};
-
-/**
- * Audio has status update.
- * PRIVATE
- *
- * @param id            The media object id (string)
- * @param status        The status code (int)
- * @param msg           The status message (string)
- */
-PhoneGap.Media.onStatus = function(id, msg, value) {
-    var media = PhoneGap.mediaObjects[id];
-
-    // If state update
-    if (msg === Media.MEDIA_STATE) {
-        if (value === Media.MEDIA_STOPPED) {
-            if (media.successCallback) {
-                media.successCallback();
-            }
-        }
-        if (media.statusCallback) {
-            media.statusCallback(value);
-        }
-    }
-    else if (msg === Media.MEDIA_DURATION) {
-        media._duration = value;
-    }
-    else if (msg === Media.MEDIA_ERROR) {
-        if (media.errorCallback) {
-            media.errorCallback(value);
-        }
-    }
-};
-
-/**
- * This class provides access to the device media, interfaces to both sound and video
- *
- * @param src                   The file name or url to play
- * @param successCallback       The callback to be called when the file is done playing or recording.
- *                                  successCallback() - OPTIONAL
- * @param errorCallback         The callback to be called if there is an error.
- *                                  errorCallback(int errorCode) - OPTIONAL
- * @param statusCallback        The callback to be called when media status has changed.
- *                                  statusCallback(int statusCode) - OPTIONAL
- * @param positionCallback      The callback to be called when media position has changed.
- *                                  positionCallback(long position) - OPTIONAL
- */
-Media = function(src, successCallback, errorCallback, statusCallback, positionCallback) {
-
-    // successCallback optional
-    if (successCallback && (typeof successCallback !== "function")) {
-        console.log("Media Error: successCallback is not a function");
-        return;
-    }
-
-    // errorCallback optional
-    if (errorCallback && (typeof errorCallback !== "function")) {
-        console.log("Media Error: errorCallback is not a function");
-        return;
-    }
-
-    // statusCallback optional
-    if (statusCallback && (typeof statusCallback !== "function")) {
-        console.log("Media Error: statusCallback is not a function");
-        return;
-    }
-
-    // statusCallback optional
-    if (positionCallback && (typeof positionCallback !== "function")) {
-        console.log("Media Error: positionCallback is not a function");
-        return;
-    }
-
-    this.id = PhoneGap.createUUID();
-    PhoneGap.mediaObjects[this.id] = this;
-    this.src = src;
-    this.successCallback = successCallback;
-    this.errorCallback = errorCallback;
-    this.statusCallback = statusCallback;
-    this.positionCallback = positionCallback;
-    this._duration = -1;
-    this._position = -1;
-};
-
-// Media messages
-Media.MEDIA_STATE = 1;
-Media.MEDIA_DURATION = 2;
-Media.MEDIA_ERROR = 9;
-
-// Media states
-Media.MEDIA_NONE = 0;
-Media.MEDIA_STARTING = 1;
-Media.MEDIA_RUNNING = 2;
-Media.MEDIA_PAUSED = 3;
-Media.MEDIA_STOPPED = 4;
-Media.MEDIA_MSG = ["None", "Starting", "Running", "Paused", "Stopped"];
-
-// TODO: Will MediaError be used?
-/**
- * This class contains information about any Media errors.
- * @constructor
- */
-MediaError = function() {
-    this.code = null;
-    this.message = "";
-};
-
-MediaError.MEDIA_ERR_ABORTED        = 1;
-MediaError.MEDIA_ERR_NETWORK        = 2;
-MediaError.MEDIA_ERR_DECODE         = 3;
-MediaError.MEDIA_ERR_NONE_SUPPORTED = 4;
-
-/**
- * Start or resume playing audio file.
- */
-Media.prototype.play = function() {
-    PhoneGap.exec(null, null, "Media", "startPlayingAudio", [this.id, this.src]);
-};
-
-/**
- * Stop playing audio file.
- */
-Media.prototype.stop = function() {
-    return PhoneGap.exec(null, null, "Media", "stopPlayingAudio", [this.id]);
-};
-
-/**
- * Pause playing audio file.
- */
-Media.prototype.pause = function() {
-    PhoneGap.exec(null, null, "Media", "pausePlayingAudio", [this.id]);
-};
-
-/**
- * Get duration of an audio file.
- * The duration is only set for audio that is playing, paused or stopped.
- *
- * @return      duration or -1 if not known.
- */
-Media.prototype.getDuration = function() {
-    return this._duration;
-};
-
-/**
- * Get position of audio.
- *
- * @return
- */
-Media.prototype.getCurrentPosition = function(success, fail) {
-    PhoneGap.exec(success, fail, "Media", "getCurrentPositionAudio", [this.id]);
-};
-
-/**
- * Start recording audio file.
- */
-Media.prototype.startRecord = function() {
-    PhoneGap.exec(null, null, "Media", "startRecordingAudio", [this.id, this.src]);
-};
-
-/**
- * Stop recording audio file.
- */
-Media.prototype.stopRecord = function() {
-    PhoneGap.exec(null, null, "Media", "stopRecordingAudio", [this.id]);
-};
-
-/**
- * Release the resources.
- */
-Media.prototype.release = function() {
-    PhoneGap.exec(null, null, "Media", "release", [this.id]);
-};
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("network")) {
-PhoneGap.addResource("network");
-
-/**
- * This class contains information about any NetworkStatus.
- * @constructor
- */
-NetworkStatus = function() {
-    //this.code = null;
-    //this.message = "";
-};
-
-NetworkStatus.NOT_REACHABLE = 0;
-NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK = 1;
-NetworkStatus.REACHABLE_VIA_WIFI_NETWORK = 2;
-
-/**
- * This class provides access to device Network data (reachability).
- * @constructor
- */
-Network = function() {
-    /**
-     * The last known Network status.
-     * { hostName: string, ipAddress: string,
-        remoteHostStatus: int(0/1/2), internetConnectionStatus: int(0/1/2), localWiFiConnectionStatus: int (0/2) }
-     */
-    this.lastReachability = null;
-};
-
-/**
- * Called by the geolocation framework when the reachability status has changed.
- * @param {Reachibility} reachability The current reachability status.
- */
-// TODO: Callback from native code not implemented for Android
-Network.prototype.updateReachability = function(reachability) {
-    this.lastReachability = reachability;
-};
-
-/**
- * Determine if a URI is reachable over the network.
-
- * @param {Object} uri
- * @param {Function} callback
- * @param {Object} options  (isIpAddress:boolean)
- */
-Network.prototype.isReachable = function(uri, callback, options) {
-    var isIpAddress = false;
-    if (options && options.isIpAddress) {
-        isIpAddress = options.isIpAddress;
-    }
-    PhoneGap.exec(callback, null, "Network Status", "isReachable", [uri, isIpAddress]);
-};
-
-PhoneGap.addConstructor(function() {
-    if (typeof navigator.network === "undefined") {
-        navigator.network = new Network();
-    }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("notification")) {
-PhoneGap.addResource("notification");
-
-/**
- * This class provides access to notifications on the device.
- */
-Notification = function() {
-};
-
-/**
- * Open a native alert dialog, with a customizable title and button text.
- *
- * @param {String} message              Message to print in the body of the alert
- * @param {Function} completeCallback   The callback that is called when user clicks on a button.
- * @param {String} title                Title of the alert dialog (default: Alert)
- * @param {String} buttonLabel          Label of the close button (default: OK)
- */
-Notification.prototype.alert = function(message, completeCallback, title, buttonLabel) {
-    var _title = (title || "Alert");
-    var _buttonLabel = (buttonLabel || "OK");
-    PhoneGap.exec(completeCallback, null, "Notification", "alert", [message,_title,_buttonLabel]);
-};
-
-/**
- * Open a native confirm dialog, with a customizable title and button text.
- * The result that the user selects is returned to the result callback.
- *
- * @param {String} message              Message to print in the body of the alert
- * @param {Function} resultCallback     The callback that is called when user clicks on a button.
- * @param {String} title                Title of the alert dialog (default: Confirm)
- * @param {String} buttonLabels         Comma separated list of the labels of the buttons (default: 'OK,Cancel')
- */
-Notification.prototype.confirm = function(message, resultCallback, title, buttonLabels) {
-    var _title = (title || "Confirm");
-    var _buttonLabels = (buttonLabels || "OK,Cancel");
-    PhoneGap.exec(resultCallback, null, "Notification", "confirm", [message,_title,_buttonLabels]);
-};
-
-/**
- * Start spinning the activity indicator on the statusbar
- */
-Notification.prototype.activityStart = function() {
-    PhoneGap.exec(null, null, "Notification", "activityStart", ["Busy","Please wait..."]);
-};
-
-/**
- * Stop spinning the activity indicator on the statusbar, if it's currently spinning
- */
-Notification.prototype.activityStop = function() {
-    PhoneGap.exec(null, null, "Notification", "activityStop", []);
-};
-
-/**
- * Display a progress dialog with progress bar that goes from 0 to 100.
- *
- * @param {String} title        Title of the progress dialog.
- * @param {String} message      Message to display in the dialog.
- */
-Notification.prototype.progressStart = function(title, message) {
-    PhoneGap.exec(null, null, "Notification", "progressStart", [title, message]);
-};
-
-/**
- * Set the progress dialog value.
- *
- * @param {Number} value         0-100
- */
-Notification.prototype.progressValue = function(value) {
-    PhoneGap.exec(null, null, "Notification", "progressValue", [value]);
-};
-
-/**
- * Close the progress dialog.
- */
-Notification.prototype.progressStop = function() {
-    PhoneGap.exec(null, null, "Notification", "progressStop", []);
-};
-
-/**
- * Causes the device to blink a status LED.
- *
- * @param {Integer} count       The number of blinks.
- * @param {String} colour       The colour of the light.
- */
-Notification.prototype.blink = function(count, colour) {
-    // NOT IMPLEMENTED
-};
-
-/**
- * Causes the device to vibrate.
- *
- * @param {Integer} mills       The number of milliseconds to vibrate for.
- */
-Notification.prototype.vibrate = function(mills) {
-    PhoneGap.exec(null, null, "Notification", "vibrate", [mills]);
-};
-
-/**
- * Causes the device to beep.
- * On Android, the default notification ringtone is played "count" times.
- *
- * @param {Integer} count       The number of beeps.
- */
-Notification.prototype.beep = function(count) {
-    PhoneGap.exec(null, null, "Notification", "beep", [count]);
-};
-
-PhoneGap.addConstructor(function() {
-    if (typeof navigator.notification === "undefined") {
-        navigator.notification = new Notification();
-    }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("position")) {
-PhoneGap.addResource("position");
-
-/**
- * This class contains position information.
- * @param {Object} lat
- * @param {Object} lng
- * @param {Object} acc
- * @param {Object} alt
- * @param {Object} altacc
- * @param {Object} head
- * @param {Object} vel
- * @constructor
- */
-Position = function(coords, timestamp) {
-       this.coords = coords;
-       this.timestamp = (timestamp !== 'undefined') ? timestamp : new Date().getTime();
-};
-
-Coordinates = function(lat, lng, alt, acc, head, vel, altacc) {
-       /**
-        * The latitude of the position.
-        */
-       this.latitude = lat;
-       /**
-        * The longitude of the position,
-        */
-       this.longitude = lng;
-       /**
-        * The accuracy of the position.
-        */
-       this.accuracy = acc;
-       /**
-        * The altitude of the position.
-        */
-       this.altitude = alt;
-       /**
-        * The direction the device is moving at the position.
-        */
-       this.heading = head;
-       /**
-        * The velocity with which the device is moving at the position.
-        */
-       this.speed = vel;
-       /**
-        * The altitude accuracy of the position.
-        */
-       this.altitudeAccuracy = (altacc !== 'undefined') ? altacc : null; 
-};
-
-/**
- * This class specifies the options for requesting position data.
- * @constructor
- */
-PositionOptions = function() {
-       /**
-        * Specifies the desired position accuracy.
-        */
-       this.enableHighAccuracy = true;
-       /**
-        * The timeout after which if position data cannot be obtained the errorCallback
-        * is called.
-        */
-       this.timeout = 10000;
-};
-
-/**
- * This class contains information about any GSP errors.
- * @constructor
- */
-PositionError = function() {
-       this.code = null;
-       this.message = "";
-};
-
-PositionError.UNKNOWN_ERROR = 0;
-PositionError.PERMISSION_DENIED = 1;
-PositionError.POSITION_UNAVAILABLE = 2;
-PositionError.TIMEOUT = 3;
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-/*
- * This is purely for the Android 1.5/1.6 HTML 5 Storage
- * I was hoping that Android 2.0 would deprecate this, but given the fact that
- * most manufacturers ship with Android 1.5 and do not do OTA Updates, this is required
- */
-
-if (!PhoneGap.hasResource("storage")) {
-PhoneGap.addResource("storage");
-
-/**
- * Storage object that is called by native code when performing queries.
- * PRIVATE METHOD
- */
-var DroidDB = function() {
-    this.queryQueue = {};
-};
-
-/**
- * Callback from native code when query is complete.
- * PRIVATE METHOD
- *
- * @param id                Query id
- */
-DroidDB.prototype.completeQuery = function(id, data) {
-    var query = this.queryQueue[id];
-    if (query) {
-        try {
-            delete this.queryQueue[id];
-
-            // Get transaction
-            var tx = query.tx;
-
-            // If transaction hasn't failed
-            // Note: We ignore all query results if previous query
-            //       in the same transaction failed.
-            if (tx && tx.queryList[id]) {
-
-                // Save query results
-                var r = new DroidDB_Result();
-                r.rows.resultSet = data;
-                r.rows.length = data.length;
-                try {
-                    if (typeof query.successCallback === 'function') {
-                        query.successCallback(query.tx, r);
-                    }
-                } catch (ex) {
-                    console.log("executeSql error calling user success callback: "+ex);
-                }
-
-                tx.queryComplete(id);
-            }
-        } catch (e) {
-            console.log("executeSql error: "+e);
-        }
-    }
-};
-
-/**
- * Callback from native code when query fails
- * PRIVATE METHOD
- *
- * @param reason            Error message
- * @param id                Query id
- */
-DroidDB.prototype.fail = function(reason, id) {
-    var query = this.queryQueue[id];
-    if (query) {
-        try {
-            delete this.queryQueue[id];
-
-            // Get transaction
-            var tx = query.tx;
-
-            // If transaction hasn't failed
-            // Note: We ignore all query results if previous query
-            //       in the same transaction failed.
-            if (tx && tx.queryList[id]) {
-                tx.queryList = {};
-
-                try {
-                    if (typeof query.errorCallback === 'function') {
-                        query.errorCallback(query.tx, reason);
-                    }
-                } catch (ex) {
-                    console.log("executeSql error calling user error callback: "+ex);
-                }
-
-                tx.queryFailed(id, reason);
-            }
-
-        } catch (e) {
-            console.log("executeSql error: "+e);
-        }
-    }
-};
-
-/**
- * Transaction object
- * PRIVATE METHOD
- */
-var DroidDB_Tx = function() {
-
-    // Set the id of the transaction
-    this.id = PhoneGap.createUUID();
-
-    // Callbacks
-    this.successCallback = null;
-    this.errorCallback = null;
-
-    // Query list
-    this.queryList = {};
-};
-
-
-var DatabaseShell = function() {
-};
-
-/**
- * Start a transaction.
- * Does not support rollback in event of failure.
- *
- * @param process {Function}            The transaction function
- * @param successCallback {Function}
- * @param errorCallback {Function}
- */
-DatabaseShell.prototype.transaction = function(process, errorCallback, successCallback) {
-    var tx = new DroidDB_Tx();
-    tx.successCallback = successCallback;
-    tx.errorCallback = errorCallback;
-    try {
-        process(tx);
-    } catch (e) {
-        console.log("Transaction error: "+e);
-        if (tx.errorCallback) {
-            try {
-                tx.errorCallback(e);
-            } catch (ex) {
-                console.log("Transaction error calling user error callback: "+e);
-            }
-        }
-    }
-};
-
-
-/**
- * Mark query in transaction as complete.
- * If all queries are complete, call the user's transaction success callback.
- *
- * @param id                Query id
- */
-DroidDB_Tx.prototype.queryComplete = function(id) {
-    delete this.queryList[id];
-
-    // If no more outstanding queries, then fire transaction success
-    if (this.successCallback) {
-        var count = 0;
-        var i;
-        for (i in this.queryList) {
-            if (this.queryList.hasOwnProperty(i)) {
-                count++;   
-            }
-        }
-        if (count === 0) {
-            try {
-                this.successCallback();
-            } catch(e) {
-                console.log("Transaction error calling user success callback: " + e);
-            }
-        }
-    }
-};
-
-/**
- * Mark query in transaction as failed.
- *
- * @param id                Query id
- * @param reason            Error message
- */
-DroidDB_Tx.prototype.queryFailed = function(id, reason) {
-
-    // The sql queries in this transaction have already been run, since
-    // we really don't have a real transaction implemented in native code.
-    // However, the user callbacks for the remaining sql queries in transaction
-    // will not be called.
-    this.queryList = {};
-
-    if (this.errorCallback) {
-        try {
-            this.errorCallback(reason);
-        } catch(e) {
-            console.log("Transaction error calling user error callback: " + e);
-        }
-    }
-};
-
-/**
- * SQL query object
- * PRIVATE METHOD
- *
- * @param tx                The transaction object that this query belongs to
- */
-var DroidDB_Query = function(tx) {
-
-    // Set the id of the query
-    this.id = PhoneGap.createUUID();
-
-    // Add this query to the queue
-    droiddb.queryQueue[this.id] = this;
-
-    // Init result
-    this.resultSet = [];
-
-    // Set transaction that this query belongs to
-    this.tx = tx;
-
-    // Add this query to transaction list
-    this.tx.queryList[this.id] = this;
-
-    // Callbacks
-    this.successCallback = null;
-    this.errorCallback = null;
-
-};
-
-/**
- * Execute SQL statement
- *
- * @param sql                   SQL statement to execute
- * @param params                Statement parameters
- * @param successCallback       Success callback
- * @param errorCallback         Error callback
- */
-DroidDB_Tx.prototype.executeSql = function(sql, params, successCallback, errorCallback) {
-
-    // Init params array
-    if (typeof params === 'undefined') {
-        params = [];
-    }
-
-    // Create query and add to queue
-    var query = new DroidDB_Query(this);
-    droiddb.queryQueue[query.id] = query;
-
-    // Save callbacks
-    query.successCallback = successCallback;
-    query.errorCallback = errorCallback;
-
-    // Call native code
-    PhoneGap.exec(null, null, "Storage", "executeSql", [sql, params, query.id]);
-};
-
-/**
- * SQL result set that is returned to user.
- * PRIVATE METHOD
- */
-DroidDB_Result = function() {
-    this.rows = new DroidDB_Rows();
-};
-
-/**
- * SQL result set object
- * PRIVATE METHOD
- */
-DroidDB_Rows = function() {
-    this.resultSet = [];    // results array
-    this.length = 0;        // number of rows
-};
-
-/**
- * Get item from SQL result set
- *
- * @param row           The row number to return
- * @return              The row object
- */
-DroidDB_Rows.prototype.item = function(row) {
-    return this.resultSet[row];
-};
-
-/**
- * Open database
- *
- * @param name              Database name
- * @param version           Database version
- * @param display_name      Database display name
- * @param size              Database size in bytes
- * @return                  Database object
- */
-DroidDB_openDatabase = function(name, version, display_name, size) {
-    PhoneGap.exec(null, null, "Storage", "openDatabase", [name, version, display_name, size]);
-    var db = new DatabaseShell();
-    return db;
-};
-
-
-/**
- * For browsers with no localStorage we emulate it with SQLite. Follows the w3c api. 
- * TODO: Do similar for sessionStorage. 
- */
-
-var CupcakeLocalStorage = function() {
-               try {
-
-                       this.db = openDatabase('localStorage', '1.0', 'localStorage', 2621440); 
-                       var storage = {};
-                       this.length = 0;
-                       function setLength (length) {
-                               this.length = length;
-                               localStorage.length = length;
-                       }
-                       this.db.transaction(
-                               function (transaction) {
-                                   var i;
-                                       transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
-                                       transaction.executeSql('SELECT * FROM storage', [], function(tx, result) {
-                                               for(var i = 0; i < result.rows.length; i++) {
-                                                       storage[result.rows.item(i)['id']] =  result.rows.item(i)['body'];
-                                               }
-                                               setLength(result.rows.length);
-                                               PhoneGap.initializationComplete("cupcakeStorage");
-                                       });
-                                       
-                               }, 
-                               function (err) {
-                                       alert(err.message);
-                               }
-                       );
-                       this.setItem = function(key, val) {
-                               if (typeof(storage[key])=='undefined') {
-                                       this.length++;
-                               }
-                               storage[key] = val;
-                               this.db.transaction(
-                                       function (transaction) {
-                                               transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
-                                               transaction.executeSql('REPLACE INTO storage (id, body) values(?,?)', [key,val]);
-                                       }
-                               );
-                       };
-                       this.getItem = function(key) {                  
-                               return storage[key];
-                       };
-                       this.removeItem = function(key) {
-                               delete storage[key];
-                               this.length--;
-                               this.db.transaction(
-                                       function (transaction) {
-                                               transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
-                                               transaction.executeSql('DELETE FROM storage where id=?', [key]);
-                                       }
-                               );
-                       };
-                       this.clear = function() {
-                               storage = {};
-                               this.length = 0;
-                               this.db.transaction(
-                                       function (transaction) {
-                                               transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
-                                               transaction.executeSql('DELETE FROM storage', []);
-                                       }
-                               );
-                       };
-                       this.key = function(index) {
-                               var i = 0;
-                               for (var j in storage) {
-                                       if (i==index) {
-                                               return j;
-                                       } else {
-                                               i++;
-                                       }
-                               }
-                               return null;
-                       }
-
-               } catch(e) {
-                       alert("Database error "+e+".");
-                   return;
-               }
-};
-PhoneGap.addConstructor(function() {
-    var setupDroidDB = function() {
-        navigator.openDatabase = window.openDatabase = DroidDB_openDatabase;
-        window.droiddb = new DroidDB();
-    }
-       if ((typeof window.openDatabase === "undefined") || (navigator.userAgent.indexOf("Android 3.0") != -1)) {
-        setupDroidDB();
-    } else {
-        window.openDatabase_orig = window.openDatabase;
-        window.openDatabase = function(name, version, desc, size) {
-            var db = window.openDatabase_orig(name, version, desc, size);
-            if (db == null) {
-                setupDroidDB();
-                return DroidDB_openDatabase(name, version, desc, size);
-            } else return db;
-        }
-    }
-    
-    if (typeof window.localStorage === "undefined") {
-        navigator.localStorage = window.localStorage = new CupcakeLocalStorage();
-        PhoneGap.waitForInitialization("cupcakeStorage");
-    }
-});
-};
diff --git a/assets/www/js/view.js b/assets/www/js/view.js
new file mode 100644 (file)
index 0000000..7106d4b
--- /dev/null
@@ -0,0 +1,441 @@
+var View = new function() {
+       var self = this;
+       //self.minOffset = 1000;
+       self.categories = {
+                       autor: 'Autorzy', 
+                       rodzaj: 'Rodzaje',
+                       gatunek: 'Gatunki',
+                       epoka: 'Epoki'
+       };
+       self.category_msc = {
+               autor: 'autorze',
+               rodzaj: 'rodzaju',
+               gatunek: 'gatunku',
+               epoka: 'epoce'
+       };
+       
+
+       self.init = function(success, error) {
+               console.log('View.init');
+
+               self._searchbox = document.getElementById("searchbox");
+               self._searchinput = document.getElementById("search");
+               self._content = document.getElementById("content");
+
+               self.current = '';
+               self.currentView = '';
+               self.currentPar = '';
+               self.currentTitle = '';
+
+               document.getElementById("cover").style.display = 'none';
+               self.enter('');
+
+               success && success();
+       };
+
+
+       this.sanitize = function(text) {
+               return text.replace(/&/g, "&amp;").replace(/</g, "&lt;");
+       };
+
+       this.showSearch = function() {
+               self._searchbox.style.display = "block";
+       };
+
+       this.hideSearch = function() {
+               self._searchbox.style.display = "none";
+       };
+
+       this.spinner = function(text) {
+               if (!text)
+                       text = "Ładowanie";
+               self._content.innerHTML = "<div class='spinner'><img src='img/spinner.gif' /><div id='spinnertext'>" + text +"</div></div>";
+               setOffset(0);
+       };
+
+       this.content = function(text, offset) {
+               console.log('content');
+
+               self._content.innerHTML = '';
+               self._content.innerHTML = text;
+               setOffset(offset);
+       }
+
+       this.enter = function(url, offset) {
+               console.log('View.enter: ' + url);
+
+               var view = 'Index';
+               var arg = null;
+
+               if (url.length) {
+                       var slash_index = url.indexOf('/');
+                       if (slash_index != -1) {
+                               view = url.substr(0, slash_index);
+                               arg = url.substr(slash_index + 1);
+                       }
+                       else {
+                               view = url;
+                       }
+               }
+               console.log('View.enter: ' + view + ' ' + arg);
+               self.current = url;
+               self.currentView = view;
+               self.currentPar = arg;
+               self['enter' + view](arg, offset);
+       }
+       
+       this.enterIndex = function(arg, offset) {
+               console.log('enterIndex');
+               Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+               self.showSearch();
+               self.currentTitle = "Początek";
+               var html = "";
+
+               html += "<div class='buttons'>";
+               html += Links.button('Last', '', 'Ostatnio czytane');
+               html += Links.button('Bookmarks', '', 'Zakładki');
+
+               for (category in self.categories)
+                       html += Links.button('Category', category, self.categories[category], 0);
+               html += "</div>";
+               
+               html += "</div>" +"";
+                               /*"<p id='logo'><img src='img/logo-wl-nq8.png' alt='Wolne Lektury' /><br/>\n" +
+                               "szkolna biblioteka internetowa" +
+                               "</p>";*/
+               self.content(html, offset);
+       };
+       
+       this.enterBook = function(id, offset) {
+               id = parseInt(id);
+               console.log('enterBook: ' + id);
+               Menu.setInfoButton("BookInfo", "Informacje o utworze", true);
+               self.showSearch();
+
+               Catalogue.withBook(id, function(book) {
+                       self.currentTitle = book.authors + ', ' + book.title;
+
+                       Catalogue.withChildren(id, function(children) {
+                               var html = "<h1><span class='subheader'>";
+                               html += book.authors;
+                               html += "</span>" + book.title + "</h1>\n";
+                               if (book.html_file) {
+                                       html += "<div class='buttons'>" + Links.button('BookText', id, "Czytaj tekst") + "</div>";
+                               }
+                               if (children.length) {
+                                       html += "<div class='buttons'>";
+                                       for (c in children) {
+                                               child = children[c];
+                                               html += Links.bookLink(child);
+                                       }
+                                       html += "</div>";
+                               }
+                               self.content(html, offset);                             
+                       });
+               }, function() {
+                       History.goBack();
+               });
+       };
+       
+       this.enterBookText = function(id, offset) {
+               self.hideSearch();
+               self.spinner("Otwieranie utworu");
+               console.log('enterBookText: ' + id);
+               Menu.setInfoButton("BookInfo", "Informacje o utworze", true);
+               id = parseInt(id);
+
+               setTimeout("History.addRead("+id+");", 0);
+               
+               FileRepo.withHtml(id, function(data) {
+                       self.content(data, offset);
+               }, function(err) {
+                       alert("Błąd pobierania: nie udało się pobrać treści utworu.");
+                       History.goBack();
+               });
+               Catalogue.withBook(id, function(book) {
+                       self.currentTitle = book.authors + ', ' + book.title;
+               });
+       };
+
+
+       this.enterLast = function(ignored, offset) {
+               console.log("enterLast");
+               self.showSearch();
+               Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+               self.currentTitle = 'Ostatnio czytane';
+               var html = "<h1><span class='subheader'>Ostatnio czytane</h1>\n";
+
+               var last_read = History.lastRead();
+               var some_books = false;
+
+               html += "<div class='buttons'>";
+               var add_books = function() {
+                       if (last_read.length) {
+                               var id = last_read.shift();
+                               Catalogue.withBook(id, function(book) {
+                                       html += Links.bookLink(book);
+                                       some_books = true;
+                                       add_books();
+                               }, function() {
+                                       add_books();
+                               });
+                       }
+                       else {
+                               if (!some_books) {
+                                       html += "<p>Nie przeczytano żadnych utworów.</p>";
+                               }
+                               html += "</div>";
+                               self.content(html, offset);
+                       }
+               };
+               add_books();
+       };
+
+
+       this.enterBookmarks = function(ignored, offset) {
+               console.log("enterBookmarks");
+               self.showSearch();
+               Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+               self.currentTitle = 'Zakładki';
+               var html = "<h1><span class='subheader'>Zakładki</h1>\n";
+
+               var bookmarks = History.bookmarks();
+               if (!bookmarks.length) {
+                       html += "<p>Nie utworzono żadnych zakładek.</p>";
+                       self.content(html, offset);
+                       return;
+               }
+
+               html += "<div class='buttons bookmarks'>";
+               for (i in bookmarks) {
+                       var bm = bookmarks[i];
+
+                       var text = bm.name;
+                       text += "<div class='sub'>" + bm.title + "</div>";
+                       html += Links.deleteButton(bm.id);
+                       html += Links.button(bm.view, bm.par, text, bm.offset);
+               }
+               html += "</div>";
+               self.content(html, offset);
+       };
+
+       this.onBookmarkChange = function() {
+               // TODO: preserve offset
+               if (self.currentView == 'Bookmarks') {
+                       self.enterBookmarks();
+               }
+       };
+
+       this.enterTag = function(id, offset) {
+               id = parseInt(id);
+               console.log('enterTag: ' + id);
+               Menu.setInfoButton("TagInfo", "Informacje o...", true);
+               self.showSearch();
+
+               self.spinner("Otwieranie listy utworów");
+
+               Catalogue.withTag(id, function(tag) {
+                       Menu.setInfoButton("TagInfo", "Informacje o " + self.category_msc[tag.category], true);
+                       self.currentTitle = tag.category + ': ' + tag.name;
+                       var html = "<h1><span class='subheader upper'>" + tag.category + ': </span>' + tag.name + "</h1>\n";
+                       html += "<div class='buttons'>";
+                       if (tag.books) {
+                               Catalogue.withBooks(tag.books, function(books) {
+                                       for (var i in books) {
+                                               var book = books[i];
+                                               html += Links.bookLink(book);
+                                       }
+                                       html += "</div>";
+                                       self.content(html, offset);
+                               });
+                       }
+               }, function() {
+                       History.goBack();
+               });
+       };
+
+
+       this.enterCategory = function(category, offset) {
+               console.log('enterCategory: ' + category);
+               Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+               self.spinner("Otwieranie katalogu");
+               self.showSearch();
+               self.currentTitle = self.categories[category];
+
+               Catalogue.withCategory(category, function(tags) {
+                       var html = "<h1>" + self.categories[category] + "</h1>\n";
+                       html += "<div class='buttons'>";
+                       for (i in tags) {
+                               tag = tags[i];
+                               html += Links.button('Tag', tag.id, tag.name);
+                       }
+                       html += "</div>";
+                       self.content(html, offset);
+               });
+       };
+
+
+       this.enterSearch = function(query, offset) {
+               console.log('enterSearch: ' + query);
+               Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+               self.currentTitle = 'Szukaj: ' + query;
+               self.showSearch();
+
+               var html = "<h1><span class='subheader'>Szukana fraza:</span>" + View.sanitize(query) + "</h1>\n";
+
+               if (query.length < 2) {
+                       html += "<p>Szukana fraza musi mieć co najmniej dwa znaki</p>";
+                       self.content(html, offset);
+                       return;
+               }
+
+               Catalogue.withSearch(query, function(results) {
+                       if (results.length == 1) {
+                           var result = results[0];
+                           if (result.view == 'Book' && result.item.html_file) {
+                               self.enter(Links.href('BookText', result.item.id));
+                           }
+                           else {
+                                       self.enter(Links.href(result.view, result.item.id));
+                               }
+                               return;
+                       }
+                       if (results.length == 0) {
+                               html += "<p>Brak wyników wyszukiwania</p>";
+                       }
+                       else {
+                               html += "<div class='buttons'>";
+                               for (var i in results) {
+                                       var result = results[i];
+                                       if (result.view == 'Book')
+                                               html += Links.bookLink(result.item)
+                                       else
+                                               html += Links.button(result.view, result.item.id, result.item.name+"<div class='sub'>"+result.item.category+"</div>");
+                               }
+                               html += "</div>";
+                       }
+                       self.content(html, offset);
+               });
+       };
+
+
+       /* info */
+
+       this.enterProjectInfo = function(arg, offset) {
+               console.log('enterProjectInfo');
+               Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", false);
+               self.hideSearch();
+               self.currentTitle = "Informacje o projekcie";
+
+               var html = "";
+
+               html += '<div class="info">';
+
+
+               html += "<p style='text-align:center'><img src='img/logo-wl.png' /></p>";
+               html += "<p>Biblioteka internetowa Wolne Lektury "+
+" udostępnia w swoich zbiorach lektury szkolne zalecane do użytku przez" + 
+" Ministerstwo Edukacji Narodowej i inne dzieła literatury.</p>";
+
+               html += "<p style='text-align:center'><img src='img/logo-fnp.png' /></p>";
+
+               html += "<img style='float:left;' src='img/procent.png' />" +
+                       "<p style='margin-left: 50px'>" + 
+                       "Przekaż 1% podatku na rozwój Wolnych Lektur.<br/>" +
+                       "Fundacja Nowoczesna Polska<br/>" +
+                       "KRS 0000070056</p>";
+
+               html += "<p>Większość pozycji w bibliotece należy do domeny publicznej "+
+                       "co oznacza, że nie są już chronione majatkowym prawem autorskim, "+
+                       "a więc można je swobodnie wykorzystywać, publikować i rozpowszechniać. "+
+                       "Publikujemy również kilka utworów, które autorzy udostępnili na wolnej licencji "+
+                       "<a href='http://creativecommons.org/licenses/by-sa/3.0/deed.pl'>"+
+                       "Creative Commons Uznanie Autorstwa - Na Tych Samych Warunkach 3.0.PL</a>.</p>";
+
+               html += "<p style='text-align:center'><img src='img/cc-by-sa.png' /></p>";
+
+               html += "<p>Więcej informacji o projekcie znajduje sie na stronie <a href='http://www.wolnelektury.pl'>http://www.wolnelektury.pl</a>.</p>";
+
+               html += '</div>';
+
+
+               self.content(html, offset);
+       };
+       
+       
+       this.enterBookInfo = function(id, offset) {
+               id = parseInt(id);
+               console.log('enterBookInfo: ' + id);
+               Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+               self.hideSearch();
+
+               Catalogue.withBook(id, function(book) {
+                       self.currentTitle = "Informacje o: " + book.title;
+
+                       var html = '<h2>' + book.authors + ', ' + book.title + '</h2>';
+
+                       var url = WL + '/api/book/' + id + '/info.html';
+
+                       var xhr = new XMLHttpRequest();
+                       xhr.open("GET", url);
+                       xhr.onload = function() {
+                               console.log('BookInfo: fetched by ajax: ' + url);
+
+                               html += '<div class="info">';
+                               html += xhr.responseText;
+                               html += '</div>';
+
+                               self.content(html, offset);
+                       }
+                       xhr.onerror = function(e) {
+                               self.content("Brak informacji.", offset);
+                       }
+                       xhr.send();
+               }, function() {
+                       History.goBack();
+               });
+       };
+
+
+       this.enterTagInfo = function(id, offset) {
+               id = parseInt(id);
+               console.log('enterTagInfo: ' + id);
+               Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+               self.hideSearch();
+
+               Catalogue.withTag(id, function(tag) {
+                       self.currentTitle = "Informacje o " + tag.name;
+                       var html = '<h2>' + tag.name + '</h2>';
+
+                       var url = WL + '/api/tag/' + id + '/info.html';
+
+                       var xhr = new XMLHttpRequest();
+                       xhr.open("GET", url);
+                       xhr.onload = function() {
+                               console.log('TagInfo: fetched by ajax: ' + url);
+
+                               html += '<div class="info">';
+                               html += xhr.responseText;
+                               html += '</div>';
+
+                               self.content(html, offset);
+                       }
+                       xhr.onerror = function(e) {
+                               self.content("Brak informacji.", offset);
+                       }
+                       xhr.send();
+               }, function() {
+                       History.goBack();
+               });
+       };
+
+
+       /* search form submit callback */
+       this.search = function() {
+               History.visit('Search/' + self._searchinput.value);
+               return false;
+       }
+       
+       
+
+}
index b74c488..46769a7 100644 (file)
@@ -8,4 +8,4 @@
 # project structure.
 
 # Project target.
-target=android-4
+target=android-7
index 49068ee..aab3d7c 100644 (file)
@@ -17,7 +17,10 @@ public final class R {
         public static final int main=0x7f030000;
     }
     public static final class string {
-        public static final int app_name=0x7f040001;
-        public static final int hello=0x7f040000;
+        public static final int app_name=0x7f050001;
+        public static final int hello=0x7f050000;
+    }
+    public static final class xml {
+        public static final int plugins=0x7f040000;
     }
 }
diff --git a/initial/initdb.py b/initial/initdb.py
deleted file mode 100755 (executable)
index fa88fe8..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import sqlite3
-import simplejson as j
-
-add_book = "INSERT INTO book (id, title, html_file, html_file_size, parent, parent_number) VALUES (:id, :title, :html, :html_size, :parent, :parent_number);"
-add_book_tag = "INSERT INTO book_tag (book, tag) VALUES (:book, :tag);"
-add_tag = "INSERT INTO tag (id, category, name, sort_key, _books) VALUES (:id, :category, :name, :sort_key, :_books);"
-
-
-
-dbs = sqlite3.connect('Databases.db')
-dbs.executescript("""
-CREATE TABLE Databases (guid INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT, name TEXT, displayName TEXT, estimatedSize INTEGER, path TEXT);
-CREATE TABLE Origins (origin TEXT UNIQUE ON CONFLICT REPLACE, quota INTEGER NOT NULL ON CONFLICT FAIL);
-INSERT INTO Databases VALUES (1, 'file__0', 'wolnelektury', 'Wolne Lektury', 500000, '0000000000000001.db');
-INSERT INTO Origins Values ('file__0', 1000000);
-""")
-dbs.commit()
-dbs.close()
-
-
-
-db1 = sqlite3.connect('wolnelektury.db')
-db2 = sqlite3.connect('0000000000000001.db')
-
-categories = {'author': 'autor',
-              'epoch': 'epoka', 
-              'genre': 'gatunek', 
-              'kind': 'rodzaj', 
-              'theme': 'motyw'
-              }
-
-schema = """
-CREATE TABLE book (
-    id INTEGER PRIMARY KEY, 
-    title VARCHAR, 
-    html_file VARCHAR, 
-    html_file_size INTEGER, 
-    parent INTEGER,
-    parent_number INTEGER
-    );
-CREATE INDEX IF NOT EXISTS book_title_index ON book (title);
-CREATE INDEX IF NOT EXISTS book_parent_index ON book (parent);
-
-CREATE TABLE tag (
-    id INTEGER PRIMARY KEY, 
-    name VARCHAR, 
-    category VARCHAR, 
-    sort_key VARCHAR, 
-    _books VARCHAR);
-CREATE INDEX IF NOT EXISTS tag_name_index ON tag (name);
-CREATE INDEX IF NOT EXISTS tag_category_index ON tag (category);
-CREATE INDEX IF NOT EXISTS tag_sort_key_index ON tag (sort_key);
-
-CREATE TABLE book_tag (book INTEGER, tag INTEGER);
-CREATE INDEX IF NOT EXISTS book_tag_book ON book_tag (book);
-CREATE INDEX IF NOT EXISTS book_tag_tag_index ON book_tag (tag);
-"""
-
-db1.executescript(schema)
-db2.executescript(schema)
-
-
-def utf8ize(d):
-    """ Convert every unicode field of d to unicode consisting
-        of its utf-8 representation bytes as characters.
-        Yes, this is weird and stupid, but it's what Android does."""
-
-    for f in d:
-        if isinstance(d[f], unicode):
-            d[f] = d[f].encode('utf-8').decode('latin1')
-
-with open('initial.json') as f:
-    data = j.load(f)
-
-books_by_id = {}
-tagged = {}
-
-for book in data['added']['books']:
-    books_by_id[book['id']] = book
-
-for book in data['added']['books']:
-    # gather parents' tags
-    parental = []
-    b = book
-    while 'parent' in b:
-        b = books_by_id[b['parent']]
-        parental += b['tags']
-    parental = set(parental)
-
-    for tag in book['tags']:
-        if tag not in parental:
-            tagged.setdefault(tag, []).append(book)
-
-del books_by_id
-
-
-for book in data['added']['books']:
-    if 'html' not in book:
-        book['html'] = None
-    if 'html_size' not in book:
-        book['html_size'] = None
-    if 'parent' not in book:
-        book['parent'] = None
-    if 'parent_number' not in book:
-        book['parent_number'] = None
-    for t in book['tags']:
-        db1.execute(add_book_tag, {"book": book['id'], "tag": t})
-        db2.execute(add_book_tag, {"book": book['id'], "tag": t})
-
-    db2.execute(add_book, book)
-    utf8ize(book)
-    db1.execute(add_book, book)
-
-for tag in data['added']['tags']:
-    tag['category'] = categories[tag['category']]
-    tag['_books'] = ",".join(str(book['id']) for book in sorted(tagged.get(tag['id'], []), key=lambda b: b['title']))
-
-    if tag['category'] == 'theme':
-        continue
-    
-    db2.execute(add_tag, tag)
-    utf8ize(tag)
-    db1.execute(add_tag, tag)
-
-
-db1.commit()
-db1.close()
-db2.commit()
-db2.close()
diff --git a/initial/initial.json b/initial/initial.json
deleted file mode 100644 (file)
index 1f22128..0000000
+++ /dev/null
@@ -1,22665 +0,0 @@
-{
-    "added": {
-        "books": [
-            {
-                "title": "[B\u00f3g mnie opu\u015bci\u0142...]", 
-                "html": "/media/lektura/napoj-cienisty-bog-mnie-opuscil.html", 
-                "html_size": 2113, 
-                "id": 1749, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "[Co\u015b tam mign\u0119\u0142o dalekiego...]", 
-                "html": "/media/lektura/napoj-cienisty-cos-tam-mignelo-dalekiego.html", 
-                "html_size": 1531, 
-                "id": 1753, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "[Dedykacja]", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 709, 
-                "html": "/media/lektura/but-w-butonierce-dedykacja_.html", 
-                "parent_number": 0, 
-                "id": 1357
-            }, 
-            {
-                "parent": 1459, 
-                "title": "[Dedykacja]", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 1599, 
-                "html": "/media/lektura/piesni-dedykacja_______.html", 
-                "parent_number": 1, 
-                "id": 1454
-            }, 
-            {
-                "parent": 1383, 
-                "title": "[Intermezzo (Czy widzieli\u015bcie...)]", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 593, 
-                "html": "/media/lektura/but-w-butonierce-intermezzo-czy-widzieliscie.html", 
-                "parent_number": 12, 
-                "id": 1360
-            }, 
-            {
-                "parent": 1383, 
-                "title": "[Intermezzo (Zielone s\u0105 r\u0119ce moje...)]", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 936, 
-                "html": "/media/lektura/but-w-butonierce-intermezzo-zielone-sa-rece-moje.html", 
-                "parent_number": 20, 
-                "id": 1382
-            }, 
-            {
-                "parent": 1383, 
-                "title": "[Jak introdukcja]", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 1227, 
-                "html": "/media/lektura/but-w-butonierce-jak-introdukcja.html", 
-                "parent_number": 1, 
-                "id": 1362
-            }, 
-            {
-                "parent": 2230, 
-                "title": "[Motto]", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 854, 
-                "html": "/media/lektura/motto.html", 
-                "parent_number": 0, 
-                "id": 2212
-            }, 
-            {
-                "title": "[M\u00f3dlmy si\u0119 \u015br\u00f3d drzew...]", 
-                "html": "/media/lektura/napoj-cienisty-modlmy-sie-srod-drzew.html", 
-                "html_size": 1155, 
-                "id": 1756, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "[Na bis]", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 3869, 
-                "html": "/media/lektura/but-w-butonierce-na-bis_.html", 
-                "parent_number": 26, 
-                "id": 1368
-            }, 
-            {
-                "parent": 1459, 
-                "title": "[Pie\u015bni - nota edytorska]", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7155, 
-                "html": "/media/lektura/piesni-nota-edytorska.html", 
-                "parent_number": 0, 
-                "id": 1456
-            }, 
-            {
-                "parent": 1481, 
-                "title": "[Treny - Motto i dedykacja]", 
-                "tags": [
-                    1991, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 6983, 
-                "html": "/media/lektura/treny-motto-i-dedykacja_______.html", 
-                "parent_number": 1, 
-                "id": 1479
-            }, 
-            {
-                "parent": 1481, 
-                "title": "[Treny - nota edytorska]", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 2404, 
-                "html": "/media/lektura/treny-nota-edytorska.html", 
-                "parent_number": 0, 
-                "id": 1480
-            }, 
-            {
-                "title": "[Uwi\u0119d\u0142y sad...]", 
-                "html": "/media/lektura/napoj-cienisty-uwiedly-sad.html", 
-                "html_size": 1167, 
-                "id": 1645, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "*** (Dobry wiecz\u00f3r, nazywam si\u0119 Mickiewicz...)", 
-                "html": "/media/lektura/dobry-wieczor-nazywam-sie-mickiewicz__.html", 
-                "html_size": 3649, 
-                "id": 969, 
-                "tags": [
-                    2137, 
-                    1, 
-                    121, 
-                    2138
-                ]
-            }, 
-            {
-                "title": "A c\u00f3\u017c z t\u0105 Dziecin\u0105...", 
-                "html": "/media/lektura/a-coz-z-ta-dziecina.html", 
-                "html_size": 9282, 
-                "id": 2014, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "title": "A jednak ja nie w\u0105tpi\u0119 - bo si\u0119 pora zbli\u017ca", 
-                "html": "/media/lektura/a-jednak-ja-nie-watpie-bo-sie-pora-zbliza.html", 
-                "html_size": 2858, 
-                "id": 1111, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "A kiedy b\u0119dziesz...", 
-                "html": "/media/lektura/a-kiedy-bedziesz.html", 
-                "html_size": 4317, 
-                "id": 2053, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Abuzei i Tair", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1112, 
-                "html": "/media/lektura/abuzei-i-tair_.html", 
-                "parent_number": 0, 
-                "id": 1239
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Ach, ju\u017c i w rodzicielskim domu...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 1786, 
-                "html": "/media/lektura/ach-juz-i-w-rodzicielskim-domu.html", 
-                "parent_number": 0, 
-                "id": 1862
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Ajudah", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 3056, 
-                "html": "/media/lektura/sonety-krymskie-ajudah_______.html", 
-                "parent_number": 18, 
-                "id": 1797
-            }, 
-            {
-                "title": "Akordy jesienne", 
-                "html": "/media/lektura/akordy-jesienne___.html", 
-                "html_size": 66171, 
-                "id": 1721, 
-                "tags": [
-                    339, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Akslop", 
-                "html": "/media/lektura/akslop__.html", 
-                "html_size": 1417, 
-                "id": 971, 
-                "tags": [
-                    2137, 
-                    1, 
-                    121, 
-                    2138
-                ]
-            }, 
-            {
-                "title": "Akteon", 
-                "html": "/media/lektura/napoj-cienisty-akteon.html", 
-                "html_size": 4874, 
-                "id": 1745, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Albatros", 
-                "html": "/media/lektura/albatros.html", 
-                "html_size": 2129, 
-                "id": 2127, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Alcabon", 
-                "html": "/media/lektura/napoj-cienisty-alcabon.html", 
-                "html_size": 6666, 
-                "id": 1737, 
-                "tags": [
-                    210, 
-                    337, 
-                    1, 
-                    128
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Alegoria", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2778, 
-                "html": "/media/lektura/alegoria-bajki-nowe_.html", 
-                "parent_number": 0, 
-                "id": 1279
-            }, 
-            {
-                "parent": 1798, 
-                "title": "A\u0142uszta w dzie\u0144", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 5310, 
-                "html": "/media/lektura/sonety-krymskie-aluszta-w-dzien_______.html", 
-                "parent_number": 11, 
-                "id": 1791
-            }, 
-            {
-                "parent": 1798, 
-                "title": "A\u0142uszta w nocy", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 2741, 
-                "html": "/media/lektura/sonety-krymskie-aluszta-w-nocy_______.html", 
-                "parent_number": 12, 
-                "id": 1779
-            }, 
-            {
-                "title": "Amor i czaszka", 
-                "html": "/media/lektura/amor-i-czaszka.html", 
-                "html_size": 2779, 
-                "id": 2128, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Ampu\u0142ki", 
-                "html": "/media/lektura/kamien-ampulki.html", 
-                "html_size": 4240, 
-                "id": 1683, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Anio\u0142", 
-                "html": "/media/lektura/aniol.html", 
-                "html_size": 9773, 
-                "id": 1571, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Anio\u0142", 
-                "html": "/media/lektura/napoj-cienisty-aniol.html", 
-                "html_size": 2619, 
-                "id": 1746, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Anio\u0142 ognisty - m\u00f3j anio\u0142 lewy", 
-                "html": "/media/lektura/aniol-ognisty-moj-aniol-lewy.html", 
-                "html_size": 2302, 
-                "id": 1068, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Anio\u0142y stoj\u0105 na rodzinnych polach", 
-                "html": "/media/lektura/anioly-stoja-na-rodzinnych-polach.html", 
-                "html_size": 2111, 
-                "id": 1617, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Antek", 
-                "html": "/media/lektura/antek.html", 
-                "html_size": 83986, 
-                "id": 959, 
-                "tags": [
-                    31, 
-                    54, 
-                    56, 
-                    1462
-                ]
-            }, 
-            {
-                "title": "Antygona", 
-                "html": "/media/lektura/antygona________.html", 
-                "html_size": 148913, 
-                "id": 26, 
-                "tags": [
-                    152, 
-                    176, 
-                    177, 
-                    175
-                ]
-            }, 
-            {
-                "title": "Antymonachomachia", 
-                "html": "/media/lektura/antymonachomachia_1.html", 
-                "html_size": 225640, 
-                "id": 2126, 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    4653
-                ]
-            }, 
-            {
-                "title": "Aptekarzowa", 
-                "html": "/media/lektura/aptekarzowa.html", 
-                "html_size": 16939, 
-                "id": 853, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "At\u0142as i kitaj", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2117, 
-                "html": "/media/lektura/atlas-i-kitaj_.html", 
-                "parent_number": 1, 
-                "id": 1240
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Bajdary", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 2959, 
-                "html": "/media/lektura/sonety-krymskie-bajdary_______.html", 
-                "parent_number": 10, 
-                "id": 1790
-            }, 
-            {
-                "title": "Bajki i przypowie\u015bci", 
-                "id": 1237, 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ]
-            }, 
-            {
-                "title": "Bajki nowe", 
-                "id": 1333, 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ]
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Bakczysaraj", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 5697, 
-                "html": "/media/lektura/sonety-krymskie-bakczysaraj_______.html", 
-                "parent_number": 6, 
-                "id": 1786
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Bakczysaraj w nocy", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 4634, 
-                "html": "/media/lektura/sonety-krymskie-bakczysaraj-w-nocy_______.html", 
-                "parent_number": 7, 
-                "id": 1787
-            }, 
-            {
-                "title": "Ballada z tamtej strony", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-ballada-z-tamtej-strony.html", 
-                "html_size": 3007, 
-                "id": 1671, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Ballady i romanse", 
-                "id": 291, 
-                "tags": [
-                    210, 
-                    1, 
-                    23, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Balladyna", 
-                "html": "/media/lektura/balladyna__.html", 
-                "html_size": 571999, 
-                "id": 1724, 
-                "tags": [
-                    152, 
-                    24, 
-                    189, 
-                    175
-                ]
-            }, 
-            {
-                "title": "Ba\u0142wan ze \u015bniegu", 
-                "html": "/media/lektura/napoj-cienisty-balwan-ze-sniegu.html", 
-                "html_size": 3104, 
-                "id": 1747, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Baran dany na ofiar\u0119", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1844, 
-                "html": "/media/lektura/baran-dany-na-ofiare.html", 
-                "parent_number": 3, 
-                "id": 1337
-            }, 
-            {
-                "title": "Baranki moje...", 
-                "html": "/media/lektura/baranki-moje.html", 
-                "html_size": 1545, 
-                "id": 1110, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Bartek zwyci\u0119zca", 
-                "html": "/media/lektura/bartek-zwyciezca.html", 
-                "html_size": 165197, 
-                "id": 1093, 
-                "tags": [
-                    31, 
-                    1517, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "title": "Ba\u015b\u0144 o rumaku zakl\u0119tym", 
-                "html": "/media/lektura/klechdy-sezamowe-basn-o-rumaku-zakletym.html", 
-                "html_size": 105098, 
-                "id": 1898, 
-                "tags": [
-                    312, 
-                    31, 
-                    337, 
-                    128
-                ]
-            }, 
-            {
-                "parent": 295, 
-                "title": "Bazyliszek", 
-                "tags": [
-                    31, 
-                    126, 
-                    128, 
-                    127
-                ], 
-                "html_size": 44931, 
-                "html": "/media/lektura/bazyliszek.html", 
-                "parent_number": 3, 
-                "id": 1602
-            }, 
-            {
-                "title": "B\u0105k i pi\u0142ka", 
-                "html": "/media/lektura/bak-i-pilka.html", 
-                "html_size": 9202, 
-                "id": 1572, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Beczka Amontillada", 
-                "html": "/media/lektura/beczka-amontillada.html", 
-                "html_size": 28197, 
-                "id": 1704, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Bema pami\u0119ci \u017ca\u0142obny rapsod", 
-                "html": "/media/lektura/bema-pamieci-zalobny-rapsod.html", 
-                "html_size": 5893, 
-                "id": 1619, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Beniowski", 
-                "id": 2194, 
-                "tags": [
-                    31, 
-                    5544, 
-                    24, 
-                    189
-                ]
-            }, 
-            {
-                "parent": 2194, 
-                "title": "Beniowski. Dalsze pie\u015bni", 
-                "tags": [
-                    31, 
-                    5544, 
-                    24, 
-                    189
-                ], 
-                "html_size": 658644, 
-                "html": "/media/lektura/beniowski-dalsze-piesni.html", 
-                "parent_number": 1, 
-                "id": 2193
-            }, 
-            {
-                "parent": 2194, 
-                "title": "Beniowski. Pi\u0119\u0107 pierwszych pie\u015bni", 
-                "tags": [
-                    31, 
-                    5544, 
-                    24, 
-                    189
-                ], 
-                "html_size": 548128, 
-                "html": "/media/lektura/beniowski-piec-pierwszych-piesni_1.html", 
-                "parent_number": 0, 
-                "id": 2190
-            }, 
-            {
-                "title": "Berenice", 
-                "html": "/media/lektura/berenice.html", 
-                "html_size": 36922, 
-                "id": 1766, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Betleem", 
-                "html": "/media/lektura/napoj-cienisty-betleem.html", 
-                "html_size": 4143, 
-                "id": 1748, 
-                "tags": [
-                    337, 
-                    1, 
-                    3035, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Bez nut", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-bez-nut.html", 
-                "html_size": 2871, 
-                "id": 1896, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Bezbronna istota", 
-                "html": "/media/lektura/bezbronna-istota.html", 
-                "html_size": 15631, 
-                "id": 854, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 295, 
-                "title": "Bia\u0142a Dama", 
-                "tags": [
-                    31, 
-                    126, 
-                    128, 
-                    127
-                ], 
-                "html_size": 12586, 
-                "html": "/media/lektura/legendy-warszawskie-biala-dama_______.html", 
-                "parent_number": 6, 
-                "id": 1605
-            }, 
-            {
-                "title": "Bia\u0142o\u015bnie\u017cka i R\u00f3\u017canka", 
-                "html": "/media/lektura/biaosniezka-i-rozanka.html", 
-                "html_size": 23374, 
-                "id": 2158, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Biedny m\u0142ynarczyk i kotek", 
-                "html": "/media/lektura/biedny-mynarczyk-i-kotek.html", 
-                "html_size": 20207, 
-                "id": 2159, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "B\u0142ogos\u0142awie\u0144stwo", 
-                "html": "/media/lektura/bogosawienstwo.html", 
-                "html_size": 9547, 
-                "id": 2129, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "B\u0142ogos\u0142awie\u0144stwo (z Petrarki)", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2475, 
-                "html": "/media/lektura/blogoslawienstwo-z-petrarki.html", 
-                "parent_number": 1, 
-                "id": 2224
-            }, 
-            {
-                "title": "Bo mi\u0119 matka moja mi\u0142a", 
-                "html": "/media/lektura/bo-mie-matka-moja-mila.html", 
-                "html_size": 966, 
-                "id": 1108, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Bo to jest wieszcza najja\u015bniejsza chwa\u0142a", 
-                "html": "/media/lektura/bo-to-jest-wieszcza-najjasniejsza-chwala.html", 
-                "html_size": 1259, 
-                "id": 1113, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Bocian i jele\u0144", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1223, 
-                "html": "/media/lektura/bocian-i-jelen-bajki-nowe.html", 
-                "parent_number": 1, 
-                "id": 1334
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Bogacz i \u017cebrak", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1749, 
-                "html": "/media/lektura/bogacz-i-zebrak_.html", 
-                "parent_number": 4, 
-                "id": 1212
-            }, 
-            {
-                "title": "Bogurodzica", 
-                "html": "/media/lektura/bogurodzica_2.html", 
-                "html_size": 21461, 
-                "id": 2013, 
-                "tags": [
-                    5148, 
-                    332, 
-                    1, 
-                    334
-                ]
-            }, 
-            {
-                "title": "Bo\u017ce, co\u015b Polsk\u0119...", 
-                "html": "/media/lektura/boze-cos-polske.html", 
-                "html_size": 17265, 
-                "id": 2107, 
-                "tags": [
-                    5279, 
-                    332, 
-                    1, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1614, 
-                "title": "B\u00f3g wie kto", 
-                "tags": [
-                    31, 
-                    54, 
-                    2294, 
-                    56
-                ], 
-                "html_size": 77728, 
-                "html": "/media/lektura/gloria-victis-bog-wie-kto.html", 
-                "parent_number": 3, 
-                "id": 1606
-            }, 
-            {
-                "title": "Bracia, patrzcie jeno...", 
-                "html": "/media/lektura/bracia-patrzcie-jeno.html", 
-                "html_size": 5486, 
-                "id": 2032, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Brat", 
-                "html": "/media/lektura/napoj-cienisty-brat.html", 
-                "html_size": 2032, 
-                "id": 1738, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Bro\u0144 mnie przed sob\u0105 samym...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 3629, 
-                "html": "/media/lektura/bron-mnie-przed-soba-samym.html", 
-                "parent_number": 1, 
-                "id": 1863
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Bry\u0142a lodu i kryszta\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1578, 
-                "html": "/media/lektura/bryla-lodu-i-krysztal_.html", 
-                "parent_number": 4, 
-                "id": 1226
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Brytan w obro\u017cy", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1461, 
-                "html": "/media/lektura/brytan-w-obrozy_.html", 
-                "parent_number": 5, 
-                "id": 1168
-            }, 
-            {
-                "title": "Brzydkie kacz\u0105tko", 
-                "html": "/media/lektura/brzydkie-kaczatko________.html", 
-                "html_size": 40407, 
-                "id": 82, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Burza", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 2255, 
-                "html": "/media/lektura/sonety-krymskie-burza_______.html", 
-                "parent_number": 4, 
-                "id": 1784
-            }, 
-            {
-                "parent": 1383, 
-                "title": "But w butonierce", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 2726, 
-                "html": "/media/lektura/but-w-butonierce-but-w-butonierce.html", 
-                "parent_number": 25, 
-                "id": 1356
-            }, 
-            {
-                "title": "But w butonierce (tomik)", 
-                "id": 1383, 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ]
-            }, 
-            {
-                "title": "By\u0142bym ci\u0119 odda\u0142...", 
-                "html": "/media/lektura/bylbym-cie-oddal_1.html", 
-                "html_size": 1912, 
-                "id": 2054, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Bywaj dziewcz\u0119 zdrowe...", 
-                "html": "/media/lektura/bywaj-dziewcze-zdrowe.html", 
-                "html_size": 2922, 
-                "id": 2104, 
-                "tags": [
-                    5148, 
-                    1, 
-                    2, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Cafe", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 2738, 
-                "html": "/media/lektura/but-w-butonierce-cafe.html", 
-                "parent_number": 5, 
-                "id": 1358
-            }, 
-            {
-                "title": "Calineczka", 
-                "html": "/media/lektura/calineczka.html", 
-                "html_size": 36656, 
-                "id": 1044, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Ca\u0142y \u015bwiat by\u015b \u015bci\u0105gn\u0119\u0142a...", 
-                "html": "/media/lektura/cay-swiat-bys-sciagnea.html", 
-                "html_size": 2981, 
-                "id": 2130, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Cesarz chi\u0144ski i syn jego", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2705, 
-                "html": "/media/lektura/cesarz-chinski-i-syn-jego-bajki-nowe_.html", 
-                "parent_number": 3, 
-                "id": 1335
-            }, 
-            {
-                "title": "Cha\u0142upa", 
-                "html": "/media/lektura/napoj-cienisty-chalupa.html", 
-                "html_size": 3039, 
-                "id": 1750, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Chart i kotka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 877, 
-                "html": "/media/lektura/chart-i-kotka_.html", 
-                "parent_number": 6, 
-                "id": 1130
-            }, 
-            {
-                "title": "Chata w lesie", 
-                "html": "/media/lektura/chata-w-lesie.html", 
-                "html_size": 21288, 
-                "id": 2160, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Chleb i szabla", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1454, 
-                "html": "/media/lektura/chleb-i-szabla_.html", 
-                "parent_number": 7, 
-                "id": 1207
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Ch\u0142op i ciel\u0119", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1487, 
-                "html": "/media/lektura/chlop-i-ciele-bajki-nowe_.html", 
-                "parent_number": 3, 
-                "id": 1330
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Ch\u0142op i Jowisz", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3477, 
-                "html": "/media/lektura/chlop-i-jowisz-bajki-nowe_.html", 
-                "parent_number": 4, 
-                "id": 1251
-            }, 
-            {
-                "title": "Ch\u0142opi", 
-                "id": 288, 
-                "tags": [
-                    31, 
-                    128, 
-                    242, 
-                    243
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Chmiel", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2527, 
-                "html": "/media/lektura/chmiel-bajki-nowe_.html", 
-                "parent_number": 5, 
-                "id": 1270
-            }, 
-            {
-                "title": "Choinka", 
-                "html": "/media/lektura/choinka_.html", 
-                "html_size": 31713, 
-                "id": 1045, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Ch\u00f3r duch\u00f3w izraelskich", 
-                "html": "/media/lektura/chor-duchow-izraelskich.html", 
-                "html_size": 2580, 
-                "id": 1106, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 295, 
-                "title": "Chrystus Cudowny u Fary", 
-                "tags": [
-                    31, 
-                    126, 
-                    128, 
-                    127
-                ], 
-                "html_size": 20812, 
-                "html": "/media/lektura/legendy-warszawskie-chrystus-cudowny-u-fary_______.html", 
-                "parent_number": 4, 
-                "id": 1604
-            }, 
-            {
-                "title": "Cie\u0144", 
-                "html": "/media/lektura/cien.html", 
-                "html_size": 40777, 
-                "id": 1570, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Cierpienia m\u0142odego Wertera", 
-                "html": "/media/lektura/cierpienia-mlodego-wertera_________.html", 
-                "html_size": 420558, 
-                "id": 836, 
-                "tags": [
-                    31, 
-                    384, 
-                    383, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Cisza morska", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 5219, 
-                "html": "/media/lektura/sonety-krymskie-cisza-morska_______.html", 
-                "parent_number": 2, 
-                "id": 1782
-            }, 
-            {
-                "parent": 287, 
-                "title": "Cisza wieczorna", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 10513, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-tatr-cisza-wieczorna___.html", 
-                "parent_number": 4, 
-                "id": 765
-            }, 
-            {
-                "title": "Cmentarz", 
-                "html": "/media/lektura/napoj-cienisty-cmentarz.html", 
-                "html_size": 3050, 
-                "id": 1751, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Cnoty kardynalne", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2148, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-cnoty-kardynalne_.html", 
-                "parent_number": 3, 
-                "id": 1831
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Co kocha\u0107?", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2375, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-co-kochac_.html", 
-                "parent_number": 4, 
-                "id": 1832
-            }, 
-            {
-                "title": "Coda", 
-                "html": "/media/lektura/dzien-jak-co-dzien-coda__.html", 
-                "html_size": 2879, 
-                "id": 1549, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Co\u015b", 
-                "html": "/media/lektura/cos.html", 
-                "html_size": 23405, 
-                "id": 1573, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Co\u015b ty Atenom zrobi\u0142, Sokratesie", 
-                "html": "/media/lektura/cos-ty-atenom-zrobil-sokratesie.html", 
-                "html_size": 9717, 
-                "id": 1084, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "C\u00f3ra Albionu", 
-                "html": "/media/lektura/cora-albionu.html", 
-                "html_size": 11904, 
-                "id": 855, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "C\u00f3rka Cerery", 
-                "html": "/media/lektura/corka-cerery_.html", 
-                "html_size": 3686, 
-                "id": 1105, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Cuda mi\u0142o\u015bci (Karmi\u0119 frasunkiem mi\u0142o\u015b\u0107 i my\u015bleniem...)", 
-                "html": "/media/lektura/cuda-milosci-karmie-frasunkiem-milosc-i-mysleniem_______.html", 
-                "html_size": 4292, 
-                "id": 94, 
-                "tags": [
-                    123, 
-                    1, 
-                    122, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Cuda mi\u0142o\u015bci (Przeb\u00f3g! Jak \u017cyj\u0119, serca ju\u017c nie maj\u0105c?)", 
-                "html": "/media/lektura/cuda-milosci-przebog-jak-zyje-serca-juz-nie-majac_______.html", 
-                "html_size": 2662, 
-                "id": 228, 
-                "tags": [
-                    123, 
-                    1, 
-                    122, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Cyganie w podr\u00f3\u017cy", 
-                "html": "/media/lektura/cyganie-w-podrozy.html", 
-                "html_size": 2565, 
-                "id": 2131, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Czapla, ryby i rak", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 4963, 
-                "html": "/media/lektura/czapla-ryby-i-rak-bajki-nowe_.html", 
-                "parent_number": 6, 
-                "id": 1294
-            }, 
-            {
-                "title": "Czarny kot", 
-                "html": "/media/lektura/czarny-kot.html", 
-                "html_size": 35756, 
-                "id": 1629, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Czatyrdah", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 3835, 
-                "html": "/media/lektura/sonety-krymskie-czatyrdah_______.html", 
-                "parent_number": 13, 
-                "id": 1792
-            }, 
-            {
-                "title": "Czerwone buciki", 
-                "html": "/media/lektura/czerowne-buciki.html", 
-                "html_size": 19567, 
-                "id": 1048, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "id": 294, 
-                "title": "Cz\u0119\u015b\u0107 druga", 
-                "parent_number": 1, 
-                "parent": 300, 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ]
-            }, 
-            {
-                "id": 289, 
-                "title": "Cz\u0119\u015b\u0107 pierwsza", 
-                "parent_number": 0, 
-                "parent": 300, 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ]
-            }, 
-            {
-                "parent": 288, 
-                "title": "Cz\u0119\u015b\u0107 pierwsza - Jesie\u0144", 
-                "tags": [
-                    31, 
-                    128, 
-                    242, 
-                    243
-                ], 
-                "html_size": 842762, 
-                "html": "/media/lektura/chlopi-czesc-pierwsza-jesien_______.html", 
-                "parent_number": 0, 
-                "id": 1615
-            }, 
-            {
-                "parent": 710, 
-                "title": "Cz\u0142owiek bo\u017ce igrzysko", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1598, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-czlowiek-boze-igrzysko____.html", 
-                "parent_number": 0, 
-                "id": 640
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Cz\u0142owiek i go\u0142\u0119bie", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2208, 
-                "html": "/media/lektura/czlowiek-i-golebie-bajki-nowe_.html", 
-                "parent_number": 7, 
-                "id": 1298
-            }, 
-            {
-                "title": "Cz\u0142owiek i kamie\u0144", 
-                "html": "/media/lektura/czlowiek-i-kamien.html", 
-                "html_size": 1030, 
-                "id": 837, 
-                "tags": [
-                    1888, 
-                    31, 
-                    1889, 
-                    34
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Cz\u0142owiek i suknia", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1892, 
-                "html": "/media/lektura/czlowiek-i-suknia_.html", 
-                "parent_number": 8, 
-                "id": 1194
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Cz\u0142owiek i wilk", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1234, 
-                "html": "/media/lektura/czlowiek-i-wilk_.html", 
-                "parent_number": 9, 
-                "id": 1219
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Cz\u0142owiek i zdrowie", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2063, 
-                "html": "/media/lektura/czlowiek-i-zdrowie_.html", 
-                "parent_number": 10, 
-                "id": 1188
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Cz\u0142owiek i zwierciad\u0142a", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2796, 
-                "html": "/media/lektura/czlowiek-i-zwierciadla_.html", 
-                "parent_number": 11, 
-                "id": 1145
-            }, 
-            {
-                "parent": 294, 
-                "title": "Cz\u0142owiek i zwierz", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 16449, 
-                "html": "/media/lektura/satyry-czesc-druga-czlowiek-i-zwierz_______.html", 
-                "parent_number": 4, 
-                "id": 40
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Czym b\u0119d\u0119?", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2714, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-czym-bede_.html", 
-                "parent_number": 1, 
-                "id": 1833
-            }, 
-            {
-                "title": "\u0106my", 
-                "html": "/media/lektura/napoj-cienisty-cmy.html", 
-                "html_size": 1789, 
-                "id": 1752, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Dajcie mi tylko jedne ziemi mil\u0119", 
-                "html": "/media/lektura/dajcie-mi-tylko-jedne-ziemi-mile.html", 
-                "html_size": 3178, 
-                "id": 1112, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Daleko", 
-                "html": "/media/lektura/dzien-jak-co-dzien-daleko.html", 
-                "html_size": 2225, 
-                "id": 1526, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Damy", 
-                "html": "/media/lektura/damy.html", 
-                "html_size": 12286, 
-                "id": 856, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Danaidy", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2401, 
-                "html": "/media/lektura/danaidy.html", 
-                "parent_number": 2, 
-                "id": 2223
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Daremna praca", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2384, 
-                "html": "/media/lektura/daremna-praca_.html", 
-                "parent_number": 12, 
-                "id": 1221
-            }, 
-            {
-                "title": "Daremne \u017cale", 
-                "html": "/media/lektura/daremne-zale_______.html", 
-                "html_size": 1874, 
-                "id": 147, 
-                "tags": [
-                    329, 
-                    1, 
-                    56, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "D\u0105b i dynia", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1770, 
-                "html": "/media/lektura/dab-i-dynia_.html", 
-                "parent_number": 13, 
-                "id": 1191
-            }, 
-            {
-                "parent": 1237, 
-                "title": "D\u0105b i ma\u0142e drzewka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2262, 
-                "html": "/media/lektura/dab-i-male-drzewka_.html", 
-                "parent_number": 14, 
-                "id": 1216
-            }, 
-            {
-                "parent": 712, 
-                "title": "Dedykacja", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 519, 
-                "html": "/media/lektura/fraszki-dedykacja____.html", 
-                "parent_number": 0, 
-                "id": 628
-            }, 
-            {
-                "parent": 1234, 
-                "title": "Dedykacja", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1355, 
-                "html": "/media/lektura/dedykacja.html", 
-                "parent_number": 1, 
-                "id": 1243
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Derwisz i ucze\u0144", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2303, 
-                "html": "/media/lektura/derwisz-i-uczen_.html", 
-                "parent_number": 15, 
-                "id": 1220
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Deszcz", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 1867, 
-                "html": "/media/lektura/but-w-butonierce-deszcz.html", 
-                "parent_number": 10, 
-                "id": 1359
-            }, 
-            {
-                "title": "Deszcz w Concarneau", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-deszcz-w-concarneau.html", 
-                "html_size": 2439, 
-                "id": 1655, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Dewotka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1097, 
-                "html": "/media/lektura/dewotka_.html", 
-                "parent_number": 16, 
-                "id": 1136
-            }, 
-            {
-                "title": "Diabe\u0142 na wie\u017cy", 
-                "html": "/media/lektura/diabel-na-wiezy.html", 
-                "html_size": 39698, 
-                "id": 1755, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Dialog", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2769, 
-                "html": "/media/lektura/dialog-bajki-nowe_.html", 
-                "parent_number": 8, 
-                "id": 1296
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Diament i kryszta\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2492, 
-                "html": "/media/lektura/diament-i-krysztal_.html", 
-                "parent_number": 17, 
-                "id": 1159
-            }, 
-            {
-                "parent": 293, 
-                "title": "Dies Irae", 
-                "tags": [
-                    332, 
-                    339, 
-                    1, 
-                    128
-                ], 
-                "html_size": 43028, 
-                "html": "/media/lektura/hymny-dies-irae_______.html", 
-                "parent_number": 0, 
-                "id": 252
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Disce puer", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 5810, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-disce-puer_.html", 
-                "parent_number": 5, 
-                "id": 1834
-            }, 
-            {
-                "title": "D\u0142ugi j\u0119zyk", 
-                "html": "/media/lektura/dlugi-jezyk__.html", 
-                "html_size": 9607, 
-                "id": 857, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Dno", 
-                "html": "/media/lektura/dzien-jak-co-dzien-dno.html", 
-                "html_size": 5453, 
-                "id": 1527, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Do *** (Patrzysz mi w oczy)", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2128, 
-                "html": "/media/lektura/do-patrzysz-mi-w-oczy.html", 
-                "parent_number": 3, 
-                "id": 2222
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Anakreonta", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1255, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-anakreonta____.html", 
-                "parent_number": 0, 
-                "id": 632
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Andrzeja Trzecieskiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1837, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-andrzeja-trzecieskiego____.html", 
-                "parent_number": 1, 
-                "id": 536
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Anny (Kr\u00f3lowi r\u00f3wien, a je\u015bli si\u0119 godzi...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1478, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-anny-krolowi-rowien-a-jesli-sie-godz____.html", 
-                "parent_number": 2, 
-                "id": 565
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Anny (Wczora, czekaj\u0105c na twe obietnice...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1799, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-anny-wczora-czekajac-na-twe-obietnic____.html", 
-                "parent_number": 3, 
-                "id": 415
-            }, 
-            {
-                "title": "Do Anusie (Anusiu! by\u015b mie tem chcia\u0142a darowa\u0107...)", 
-                "html": "/media/lektura/do-anusie-anusiu-bys-mie-tem-chciala-darowac.html", 
-                "html_size": 3694, 
-                "id": 775, 
-                "tags": [
-                    123, 
-                    1564, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Do Anusie (Moja nadobna dzieweczko, moje kochanie!)", 
-                "html": "/media/lektura/do-anusie-moja-nadobna-dzieweczko-moje-kochanie.html", 
-                "html_size": 2947, 
-                "id": 776, 
-                "tags": [
-                    123, 
-                    11, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Do Anusie (Siebie musz\u0119, nie ciebie, w tej mierze winowa\u0107...)", 
-                "html": "/media/lektura/do-anusie-siebie-musze-nie-ciebie-w-tej-mierze-winowac.html", 
-                "html_size": 4386, 
-                "id": 777, 
-                "tags": [
-                    123, 
-                    11, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Do B. Z.", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 3253, 
-                "html": "/media/lektura/do-b-z.html", 
-                "parent_number": 2, 
-                "id": 1864
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Baltazera", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 673, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-baltazera_____.html", 
-                "parent_number": 0, 
-                "id": 515
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Bartosza", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 846, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-bartosza____.html", 
-                "parent_number": 4, 
-                "id": 663
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do boginiej", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1802, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-boginiej____.html", 
-                "parent_number": 5, 
-                "id": 482
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Chmury", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1036, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-chmury_____.html", 
-                "parent_number": 1, 
-                "id": 494
-            }, 
-            {
-                "title": "Do czytelnika", 
-                "html": "/media/lektura/kwiaty-zla-do-czytelnika.html", 
-                "html_size": 6533, 
-                "id": 1883, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Do D. D. (Wizyta)", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 3398, 
-                "html": "/media/lektura/do-d-d-wizyta.html", 
-                "parent_number": 11, 
-                "id": 2219
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Do D. D. Elegia", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 6987, 
-                "html": "/media/lektura/do-d-d-elegia.html", 
-                "parent_number": 4, 
-                "id": 2229
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do doktora (Arcydoktorem ci\u0119 zwa\u0107 ka\u017cdy mo\u017ce \u015bmiele...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 803, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-arcydoktorem-cie-zwac-kazdy-____.html", 
-                "parent_number": 6, 
-                "id": 426
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do doktora (Fraszka a doktor \u2014 to s\u0105 dwie rzeczy przeciwne...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1426, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-doktora-fraszka-a-doktor-to-sa-dwi____.html", 
-                "parent_number": 1, 
-                "id": 586
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do doktora (M\u00f3wi\u0142em ci, nie no\u015b mi tych fraszek, doktorze...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 695, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-mowilem-ci-nie-nos-mi-tych-f____.html", 
-                "parent_number": 7, 
-                "id": 670
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do doktora (Nie mam ci zacz dzi\u0119kowa\u0107, m\u00f3j mi\u0142y doktorze...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1251, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-nie-mam-ci-zacz-dziekowac-mo____.html", 
-                "parent_number": 8, 
-                "id": 610
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do doktora (Nie trzeba mi si\u0119 wiele dowiadowa\u0107...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1592, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-nie-trzeba-mi-sie-wiele-dowi____.html", 
-                "parent_number": 9, 
-                "id": 573
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do doktora (Nie wiem, podobno li to co ku rozumowi...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 897, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-nie-wiem-podobno-li-to-co-ku____.html", 
-                "parent_number": 10, 
-                "id": 468
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do doktora Montana", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1241, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-montana____.html", 
-                "parent_number": 11, 
-                "id": 576
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do dru\u017cby", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 4164, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-druzby____.html", 
-                "parent_number": 12, 
-                "id": 445
-            }, 
-            {
-                "parent": 1234, 
-                "title": "Do dzieci", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2916, 
-                "html": "/media/lektura/do-dzieci.html", 
-                "parent_number": 0, 
-                "id": 1244
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do dziewki (A co wiedzie\u0107, gdzie chodzisz, moja dziewko \u015bliczna...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 823, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-dziewki-a-co-wiedziec-gdzie-chodzisz____.html", 
-                "parent_number": 13, 
-                "id": 551
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do dziewki (Daj, czego\u0107 nie ub\u0119dzie, by\u015b nawi\u0119cej da\u0142a...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1661, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-dziewki-daj-czegoc-nie-ubedzie-bys-n____.html", 
-                "parent_number": 14, 
-                "id": 604
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do dziewki (Je\u015bli to rada widzisz, a \u017cyczysz mi tego...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2450, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-dziewki-jesli-to-rada-widzisz-a-zy____.html", 
-                "parent_number": 2, 
-                "id": 512
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do dziewki (Nie uciekaj przede mn\u0105, dziewko urodziwa...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2558, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-dziewki-nie-uciekaj-przede-mna-dzi____.html", 
-                "parent_number": 4, 
-                "id": 1717
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Franciszka", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3476, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-franciszka____.html", 
-                "parent_number": 15, 
-                "id": 697
-            }, 
-            {
-                "title": "Do Franciszka Szemiotha", 
-                "html": "/media/lektura/do-franciszka-szemiotha.html", 
-                "html_size": 3279, 
-                "id": 1103, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do fraszek (Fraszki moje, co\u015bcie mi dot\u0105d zachowa\u0142y...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1423, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-fraszek-fraszki-moje-coscie-mi-dotad____.html", 
-                "parent_number": 16, 
-                "id": 627
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do fraszek (Fraszki nieprzep\u0142acone, wdzi\u0119czne fraszki moje...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2973, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-fraszek-fraszki-nieprzeplacone-wdz____.html", 
-                "parent_number": 4, 
-                "id": 412
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do fraszek (Fraszki, za wszeteczne was ludzie poczytaj\u0105...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1297, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-fraszek-fraszki-za-wszeteczne-was-lu____.html", 
-                "parent_number": 17, 
-                "id": 498
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do gospodarza (Nie b\u0105d\u017a go\u015bciem u siebie, wiedz, co si\u0119 w ci\u0119 wleje...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 679, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-gospodarza-nie-badz-gosciem-u-sieb____.html", 
-                "parent_number": 5, 
-                "id": 420
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do gospodarza (Rad si\u0119 widz\u0119 u ciebie, gospodarzu mi\u0142y!)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 822, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-gospodarza-rad-sie-widze-u-ciebie-go____.html", 
-                "parent_number": 18, 
-                "id": 590
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do gospodyniej", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1493, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-gospodyniej_____.html", 
-                "parent_number": 0, 
-                "id": 1590
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do go\u015bcia (B\u0105d\u017a ptaka, b\u0105d\u017a zaj\u0105ca szukasz po tym boru...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 695, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-goscia-badz-ptaka-badz-zajaca-szukas____.html", 
-                "parent_number": 19, 
-                "id": 706
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do go\u015bcia (Go\u015bciu, tak jako\u015b pocz\u0105\u0142, ju\u017c do ko\u0144ca czytaj...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 818, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-goscia-gosciu-tak-jakos-poczal-juz____.html", 
-                "parent_number": 6, 
-                "id": 428
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do go\u015bcia (Go\u015bciu, w\u0142asn\u0105 twarz widzisz przewa\u017cnej Dydony...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2093, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-goscia-gosciu-wlasna-twarz-widzisz____.html", 
-                "parent_number": 7, 
-                "id": 666
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do go\u015bcia (Je\u015bli darmo masz te ksi\u0105\u017cki...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1694, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-goscia-jesli-darmo-masz-te-ksiazk_____.html", 
-                "parent_number": 4, 
-                "id": 548
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do go\u015bcia (Nie pie\u015b\u0107 si\u0119 d\u0142ugo z mymi ksi\u0105\u017ceczkami...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 549, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-goscia-nie-piesc-sie-dlugo-z-mymi_____.html", 
-                "parent_number": 5, 
-                "id": 559
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do g\u00f3r i las\u00f3w", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 5719, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-gor-i-lasow____.html", 
-                "parent_number": 8, 
-                "id": 675
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Hanny (Chybaby nie wiedzia\u0142a, co znaczy twarz blada...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 815, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-hanny-chybaby-nie-wiedziala-co-zn____.html", 
-                "parent_number": 6, 
-                "id": 679
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Hanny (Na palcu masz dyjament, w sercu twardy krzemie\u0144...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 685, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-hanny-na-palcu-masz-dyjament-w-sercu____.html", 
-                "parent_number": 20, 
-                "id": 474
-            }, 
-            {
-                "title": "Do Hr. Gustawa Ol(izara) podzi\u0119kowanie za wystrzy\u017cynk\u0119 z gwiazdeczk\u0105 i Krzemie\u0144cem", 
-                "html": "/media/lektura/do-hr-gustawa-olizara-podziekowanie-za-wystrzyzynke-z-gwiazdeczka-i-krzemiencem.html", 
-                "html_size": 2092, 
-                "id": 1114, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Jadama Konarskiego biskupa pozna\u0144skiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3251, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-jadama-konarskiego-biskupa-poznans____.html", 
-                "parent_number": 9, 
-                "id": 662
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Jadwigi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1150, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-jadwigi____.html", 
-                "parent_number": 21, 
-                "id": 643
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Jakuba", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 550, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-jakuba_____.html", 
-                "parent_number": 7, 
-                "id": 699
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Jana (Janie, cierp', jako mo\u017cesz! Przyjdzie ta godzina...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2675, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-jana-janie-cierp-jako-mozesz-przyj____.html", 
-                "parent_number": 10, 
-                "id": 514
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Jana (Janie, m\u00f3j dru\u017cba...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3268, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-jana-janie-moj-druzba____.html", 
-                "parent_number": 22, 
-                "id": 477
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Jana (Je\u015bli st\u0105d jak\u0105 rozkosz ma cz\u0142owiek cnotliwy...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3296, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-jana-jesli-stad-jaka-rozkosz-ma-cz____.html", 
-                "parent_number": 11, 
-                "id": 537
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Jana (Radz\u0119, Janie, daj pok\u00f3j przedsi\u0119wzi\u0119ciu swemu...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2030, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-jana-radze-janie-daj-pokoj-przeds____.html", 
-                "parent_number": 8, 
-                "id": 561
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do J\u0119drzeja (A c\u00f3\u017c radzisz, J\u0119drzeju? Wszak mog\u0119 w twe uszy...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2865, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-jedrzeja-a-coz-radzisz-jedrzeju-wsza____.html", 
-                "parent_number": 23, 
-                "id": 478
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do J\u0119drzeja (Kt\u00f3ry m\u00f3j nieprzyjaciel i cz\u0142owiek tak srogi...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2299, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-jedrzeja-ktory-moj-nieprzyjaciel-i-c____.html", 
-                "parent_number": 24, 
-                "id": 607
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do J\u0119drzeja Patrycego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 894, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-jedrzeja-patrycego____.html", 
-                "parent_number": 25, 
-                "id": 577
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do J\u00f3sta (Tw\u00f3j mi brat, J\u00f3stcie, powiada o tobie...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1980, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-josta-twoj-mi-brat-jostcie-powiada-o____.html", 
-                "parent_number": 26, 
-                "id": 513
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do J\u00f3sta (Wiesz, co\u015b mi winien; miej\u017ce si\u0119 do taszki...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1092, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-josta-wiesz-cos-mi-winien-miejze-____.html", 
-                "parent_number": 9, 
-                "id": 452
-            }, 
-            {
-                "title": "Do Justyny", 
-                "html": "/media/lektura/do-justyny.html", 
-                "html_size": 2789, 
-                "id": 838, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34
-                ]
-            }, 
-            {
-                "title": "Do Justyny (O wdzi\u0119czno\u015bci)", 
-                "html": "/media/lektura/do-justyny-o-wdziecznosci.html", 
-                "html_size": 2955, 
-                "id": 839, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Kachny (Cho\u0107 znasz uczynno\u015b\u0107 moj\u0119 i ch\u0119\u0107 praw\u0105 czujesz...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 688, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-kachny-choc-znasz-uczynnosc-moje-i____.html", 
-                "parent_number": 12, 
-                "id": 492
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Kachny (Pewnie ci\u0119 moje zwierciad\u0142o zawstydzi...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 536, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-kachny-pewnie-cie-moje-zwierciadl____.html", 
-                "parent_number": 10, 
-                "id": 449
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Kachny (Po sukni znam \u017ca\u0142ob\u0119, znam i po podwice...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1316, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-kachny-po-sukni-znam-zalobe-znam-i____.html", 
-                "parent_number": 13, 
-                "id": 528
-            }, 
-            {
-                "title": "Do Kasie (Im pilniej na twoje oblicze nadobne...)", 
-                "html": "/media/lektura/do-kasie-im-pilniej-na-twoje-oblicze-nadobne.html", 
-                "html_size": 4007, 
-                "id": 778, 
-                "tags": [
-                    123, 
-                    1564, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Do Kasie (Jako l\u00f3d taje przezroczysty z lekka...)", 
-                "html": "/media/lektura/do-kasie-jako-lod-taje-przezroczysty-z-lekka.html", 
-                "html_size": 11927, 
-                "id": 779, 
-                "tags": [
-                    123, 
-                    1564, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Do Kasie (Je\u015bli w\u0142adn\u0105 co nami b\u0142\u0105dz\u0105cych gwiazd si\u0142y...)", 
-                "html": "/media/lektura/do-kasie-jesli-wladna-co-nami-bladzacych-gwiazd-sily.html", 
-                "html_size": 3804, 
-                "id": 780, 
-                "tags": [
-                    123, 
-                    11, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Do Kasie (Mam nadziej\u0119, \u017ce si\u0119 nade mn\u0105 zlitujesz...)", 
-                "html": "/media/lektura/do-kasie-mam-nadzieje-ze-sie-nade-mna-zlitujesz_.html", 
-                "html_size": 3263, 
-                "id": 781, 
-                "tags": [
-                    123, 
-                    11, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do kaznodzieja", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1194, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-kaznodzieja____.html", 
-                "parent_number": 14, 
-                "id": 405
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do kogo\u015b", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 848, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-kogos____.html", 
-                "parent_number": 15, 
-                "id": 564
-            }, 
-            {
-                "title": "Do Kreolki", 
-                "html": "/media/lektura/do-kreolki.html", 
-                "html_size": 2234, 
-                "id": 2132, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "parent": 289, 
-                "title": "Do kr\u00f3la", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 27925, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-do-krola_______.html", 
-                "parent_number": 0, 
-                "id": 181
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Do Laury", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2482, 
-                "html": "/media/lektura/do-laury.html", 
-                "parent_number": 12, 
-                "id": 2218
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Lubomira", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2079, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-lubomira____.html", 
-                "parent_number": 16, 
-                "id": 533
-            }, 
-            {
-                "title": "Do Ludwiki Bobr\u00f3wny", 
-                "html": "/media/lektura/do-ludwiki-bobrowny.html", 
-                "html_size": 2849, 
-                "id": 1101, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do \u0141ask", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1018, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-lask____.html", 
-                "parent_number": 17, 
-                "id": 541
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Do M***", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 5033, 
-                "html": "/media/lektura/do-m.html", 
-                "parent_number": 7, 
-                "id": 2217
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Magdaleny", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1848, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-magdaleny____.html", 
-                "parent_number": 18, 
-                "id": 681
-            }, 
-            {
-                "title": "Do Malabarki", 
-                "html": "/media/lektura/do-malabarki.html", 
-                "html_size": 4289, 
-                "id": 2133, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Marcina (A wi\u0119c by ty, Marcinie, przed tym nie ugoni\u0142...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 694, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-marcina-a-wiec-by-ty-marcinie-prz____.html", 
-                "parent_number": 11, 
-                "id": 517
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Marcina (Filozofi, co nad nas uszy lepsze maj\u0105...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1399, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-marcina-filozofi-co-nad-nas-uszy-lep____.html", 
-                "parent_number": 27, 
-                "id": 438
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Do Marii P...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 1465, 
-                "html": "/media/lektura/do-marii-p.html", 
-                "parent_number": 8, 
-                "id": 2228
-            }, 
-            {
-                "title": "Do matki", 
-                "html": "/media/lektura/do-matki_______.html", 
-                "html_size": 2240, 
-                "id": 91, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Do Matki (\"W ciemno\u015bciach posta\u0107 mi stoi matczyna\")", 
-                "html": "/media/lektura/do-matki-w-ciemnosciach-postac-mi-stoi-matczyna.html", 
-                "html_size": 738, 
-                "id": 1100, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Do matki Polki", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 7839, 
-                "html": "/media/lektura/do-matki-polki.html", 
-                "parent_number": 9, 
-                "id": 2227
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Miko\u0142aja Firleja (Jesliby w moich ksi\u0105\u017ckach co takiego by\u0142o...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 844, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-mikolaja-firleja-jesliby-w-moich-____.html", 
-                "parent_number": 12, 
-                "id": 617
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Miko\u0142aja Firleja (Ma\u0142o na tym, \u017ce moje fraszki masz pisane...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1631, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-mikolaja-firleja-malo-na-tym-ze-mo____.html", 
-                "parent_number": 19, 
-                "id": 694
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Miko\u0142aja Mieleckiego (Na swe z\u0142e\u015b mi\u0119 upoi\u0142, m\u00f3j dobry starosta...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2343, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-mikolaja-mieleckiego-na-swe-zles-mie____.html", 
-                "parent_number": 28, 
-                "id": 545
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Miko\u0142aja Mieleckiego (Nie dar jaki kosztowny, ale co przemog\u0119...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1322, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-mikolaja-mieleckiego-nie-dar-jaki____.html", 
-                "parent_number": 13, 
-                "id": 439
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Miko\u0142aja Wolskiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3985, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-mikolaja-wolskiego____.html", 
-                "parent_number": 20, 
-                "id": 530
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do mi\u0142o\u015bci (Chyba w serce, Mi\u0142o\u015bci, prosz\u0119, nie uderzaj...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 679, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-milosci-chyba-w-serce-milosci-pro____.html", 
-                "parent_number": 14, 
-                "id": 703
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do mi\u0142o\u015bci (D\u0142ugo\u017c masz, o Mi\u0142o\u015bci, frasowa\u0107 me lata?)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2607, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-milosci-dlugoz-masz-o-milosci-fras____.html", 
-                "parent_number": 21, 
-                "id": 463
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do mi\u0142o\u015bci (Gdzie teraz ono jab\u0142ko i on klinot drogi...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2610, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-milosci-gdzie-teraz-ono-jablko-i-o____.html", 
-                "parent_number": 22, 
-                "id": 557
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do mi\u0142o\u015bci (Jam przegra\u0142, ja, Mi\u0142o\u015bci! \u2014 Ty\u015b plac otrzyma\u0142a...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 4676, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-milosci-jam-przegral-ja-milosci-ty____.html", 
-                "parent_number": 23, 
-                "id": 659
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do mi\u0142o\u015bci (Matko skrzydlatych Mi\u0142o\u015bci...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3823, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-milosci-matko-skrzydlatych-milosci____.html", 
-                "parent_number": 24, 
-                "id": 422
-            }, 
-            {
-                "title": "Do m\u0142odych", 
-                "html": "/media/lektura/do-mlodych.html", 
-                "html_size": 2571, 
-                "id": 852, 
-                "tags": [
-                    329, 
-                    1, 
-                    56, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Montana", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 685, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-montana____.html", 
-                "parent_number": 29, 
-                "id": 416
-            }, 
-            {
-                "title": "Do motyla", 
-                "html": "/media/lektura/do-motyla_______.html", 
-                "html_size": 2959, 
-                "id": 285, 
-                "tags": [
-                    123, 
-                    1, 
-                    122, 
-                    22
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Do Niemna", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 3782, 
-                "html": "/media/lektura/do-niemna.html", 
-                "parent_number": 10, 
-                "id": 2226
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do nieznajomego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 715, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-nieznajomego____.html", 
-                "parent_number": 30, 
-                "id": 410
-            }, 
-            {
-                "title": "Do Nieznajomej", 
-                "html": "/media/lektura/do-nieznajomej_1.html", 
-                "html_size": 4091, 
-                "id": 2055, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do opata", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1695, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-opata____.html", 
-                "parent_number": 25, 
-                "id": 453
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do pana (B\u00f3g tylko ludzkie my\u015bli wiedzie\u0107 mo\u017ce...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 986, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pana-bog-tylko-ludzkie-mysli-wiedz____.html", 
-                "parent_number": 26, 
-                "id": 501
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do pana (Panie, co dobrze, raczy da\u0107 z swej strony...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 659, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pana-panie-co-dobrze-raczy-dac-z-s____.html", 
-                "parent_number": 27, 
-                "id": 639
-            }, 
-            {
-                "title": "Do pani Joanny Bobrowej", 
-                "html": "/media/lektura/do-pani-joanny-bobrowej.html", 
-                "html_size": 5686, 
-                "id": 1099, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do paniej (Co usty m\u00f3wisz, by\u015b w sercu my\u015bli\u0142a...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 797, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-paniej-co-usty-mowisz-bys-w-sercu_____.html", 
-                "parent_number": 15, 
-                "id": 622
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do paniej (Imi\u0119 twe, pani, kt\u00f3re rad mianuj\u0119...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2709, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-paniej-imie-twe-pani-ktore-rad-mi_____.html", 
-                "parent_number": 16, 
-                "id": 479
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do paniej (Pani jako nadobna, tak te\u017c i uczciwa!)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 828, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-paniej-pani-jako-nadobna-tak-tez-_____.html", 
-                "parent_number": 17, 
-                "id": 682
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do paniej (S\u0142yszcie, pani! Te fraszki, co teraz czytacie...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 690, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-paniej-slyszcie-pani-te-fraszki-co-t____.html", 
-                "parent_number": 31, 
-                "id": 591
-            }, 
-            {
-                "title": "Do pastereczki siedz\u0105cej na druid\u00f3w kamieniach w Pornic nad oceanem", 
-                "html": "/media/lektura/do-pastereczki-siedzacej-na-druidow-kamieniach-w-pornic-nad-oceanem.html", 
-                "html_size": 6329, 
-                "id": 1941, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Pawe\u0142ka", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1326, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-pawelka_____.html", 
-                "parent_number": 18, 
-                "id": 519
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Paw\u0142a (Chcia\u0142em ci \u201epomagab\u00f3g\u201d kilkakro\u0107 powiedzie\u0107...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1204, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pawla-chcialem-ci-pomagabog-kilkak____.html", 
-                "parent_number": 28, 
-                "id": 470
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Paw\u0142a (Dobra to, Pawle, mo\u017cesz wierzy\u0107, szko\u0142a...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1013, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-pawla-dobra-to-pawle-mozesz-wierz_____.html", 
-                "parent_number": 19, 
-                "id": 520
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Paw\u0142a (Pawle, nie b\u0105d\u017a tak wielkim panem do swej \u015bmierci...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1574, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pawla-pawle-nie-badz-tak-wielkim-p____.html", 
-                "parent_number": 29, 
-                "id": 532
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Paw\u0142a (Pawle, rzecz pewna, u twego s\u0105siada...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1758, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-pawla-pawle-rzecz-pewna-u-twego-s_____.html", 
-                "parent_number": 20, 
-                "id": 524
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Paw\u0142a St\u0119powskiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1659, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-pawla-stepowskiego_____.html", 
-                "parent_number": 0, 
-                "id": 1585
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Petry\u0142a", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2397, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-petryla____.html", 
-                "parent_number": 32, 
-                "id": 1580
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Piotra K\u0142oczowskiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 4225, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-piotra-kloczowskiego____.html", 
-                "parent_number": 33, 
-                "id": 555
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Pluta", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1120, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-pluta____.html", 
-                "parent_number": 34, 
-                "id": 602
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do poet\u00f3w", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2934, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-poetow____.html", 
-                "parent_number": 30, 
-                "id": 408
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Do polskiego ch\u0142opi\u0119cia", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 8145, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-do-polskiego-chlopiecia_.html", 
-                "parent_number": 10, 
-                "id": 1835
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Do polskiej dzieweczki", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 6416, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-do-polskiej-dzieweczki_.html", 
-                "parent_number": 11, 
-                "id": 1836
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Pryszki", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1496, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pryszki____.html", 
-                "parent_number": 31, 
-                "id": 409
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do przyjaciela (Jednego chcie\u0107 i nie chcie\u0107 to spo\u0142eczno\u015b\u0107 prawa...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 708, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-przyjaciela-jednego-chciec-i-nie-chc____.html", 
-                "parent_number": 35, 
-                "id": 558
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do przyjaciela (Nie frasuj sobie, przyjacielu, g\u0142owy...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1308, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-przyjaciela-nie-frasuj-sobie-przyjac____.html", 
-                "parent_number": 36, 
-                "id": 702
-            }, 
-            {
-                "parent": 829, 
-                "title": "Do przyjaci\u00f3\u0142 Moskali", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 5197, 
-                "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-do-przyjaciol-moskali.html", 
-                "parent_number": 6, 
-                "id": 820
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do pszcz\u00f3\u0142", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 667, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-pszczol____.html", 
-                "parent_number": 38, 
-                "id": 454
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Reiny", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2272, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-reiny____.html", 
-                "parent_number": 32, 
-                "id": 611
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do s\u0105siada", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 911, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-sasiada____.html", 
-                "parent_number": 33, 
-                "id": 658
-            }, 
-            {
-                "title": "Do siostry", 
-                "html": "/media/lektura/napoj-cienisty-do-siostry.html", 
-                "html_size": 8919, 
-                "id": 1739, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do snu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2716, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-snu____.html", 
-                "parent_number": 39, 
-                "id": 526
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Stanis\u0142awa (Co mi Sybilla prorokuje ninie?)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1125, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-stanislawa-co-mi-sybilla-prorokuj____.html", 
-                "parent_number": 22, 
-                "id": 688
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Stanis\u0142awa (Kto pija do p\u00f3\u0142nocy, bracie Stanis\u0142awie...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1692, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-stanislawa-kto-pija-do-polnocy-bra____.html", 
-                "parent_number": 34, 
-                "id": 460
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Stanis\u0142awa (Powiedz mi, gdzie si\u0119 chowasz, bracie Stanis\u0142awie...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1194, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-stanislawa-powiedz-mi-gdzie-sie-chow____.html", 
-                "parent_number": 40, 
-                "id": 522
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Stanis\u0142awa Meglewskiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1444, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-stanislawa-meglewskiego____.html", 
-                "parent_number": 41, 
-                "id": 599
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Stanis\u0142awa Por\u0119bskiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1538, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-stanislawa-porebskiego____.html", 
-                "parent_number": 42, 
-                "id": 633
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Stanis\u0142awa Wapowskiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3596, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-stanislawa-wapowskiego____.html", 
-                "parent_number": 35, 
-                "id": 601
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do starosty", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1124, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-starosty____.html", 
-                "parent_number": 36, 
-                "id": 641
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do starosty muszy\u0144skiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3464, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-starosty-muszynskiego____.html", 
-                "parent_number": 37, 
-                "id": 487
-            }, 
-            {
-                "title": "Do swoich ksi\u0105\u017cek (Dok\u0105d si\u0119, moja lutni, napierasz skwapliwie?)", 
-                "html": "/media/lektura/do-swoich-ksiazek-dokad-sie-moja-lutni-napierasz-skwapliwie_______.html", 
-                "html_size": 6048, 
-                "id": 155, 
-                "tags": [
-                    123, 
-                    1, 
-                    122, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Do swoich ksi\u0105\u017cek (Hola! Ju\u017c dosy\u0107, dosy\u0107, moja ksi\u0119go!)", 
-                "html": "/media/lektura/do-swoich-ksiazek-hola-juz-dosyc-dosyc-moja-ksiego_______.html", 
-                "html_size": 4382, 
-                "id": 14, 
-                "tags": [
-                    123, 
-                    1, 
-                    122, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do swych rym\u00f3w", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1292, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-swych-rymow____.html", 
-                "parent_number": 43, 
-                "id": 529
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do teg\u00f3\u017c (Albo z nas szydzisz, albo sam wi\u0142ujesz...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1228, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-tegoz-albo-z-nas-szydzisz-albo-sam-w____.html", 
-                "parent_number": 37, 
-                "id": 584
-            }, 
-            {
-                "title": "Do Teodora De Banville", 
-                "html": "/media/lektura/do-teodora-de-banville.html", 
-                "html_size": 2862, 
-                "id": 2135, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Do Teofila Januszewskiego", 
-                "html": "/media/lektura/do-teofila-januszewskiego.html", 
-                "html_size": 17051, 
-                "id": 1942, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Do Tereski z Lisieux", 
-                "html": "/media/lektura/dzien-jak-co-dzien-do-tereski-z-lisieux.html", 
-                "html_size": 3586, 
-                "id": 1528, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Do trupa", 
-                "html": "/media/lektura/do-trupa_______.html", 
-                "html_size": 3820, 
-                "id": 267, 
-                "tags": [
-                    123, 
-                    1, 
-                    122, 
-                    22
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Wac\u0142awa Ostroroga", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1889, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-waclawa-ostroroga____.html", 
-                "parent_number": 38, 
-                "id": 431
-            }, 
-            {
-                "parent": 708, 
-                "title": "Do Walka", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 678, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-walka_____.html", 
-                "parent_number": 23, 
-                "id": 612
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Wenery", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1284, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-wenery____.html", 
-                "parent_number": 44, 
-                "id": 595
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do W\u0119dy", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 900, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-wedy____.html", 
-                "parent_number": 45, 
-                "id": 653
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Do wizytuj\u0105cych", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2776, 
-                "html": "/media/lektura/do-wizytujacych.html", 
-                "parent_number": 13, 
-                "id": 2216
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do wojewody (Nie s\u0105, wojewodo zacny, czasy po temu...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2106, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-wojewody-nie-sa-wojewodo-zacny-czasy____.html", 
-                "parent_number": 46, 
-                "id": 497
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do wojewody (Zamieszka\u0142em do sto\u0142u twego, wojewoda...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 829, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-wojewody-zamieszkalem-do-stolu-twe____.html", 
-                "parent_number": 39, 
-                "id": 647
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Wojtka (I owszem, mi\u0142y Wojtku, zjednaj si\u0119 z t\u0105 pani\u0105...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 913, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-wojtka-i-owszem-mily-wojtku-zjednaj-____.html", 
-                "parent_number": 47, 
-                "id": 597
-            }, 
-            {
-                "parent": 711, 
-                "title": "Do Wojtka (Pytasz, nie teszno li mi\u0119 tak samego siedzie\u0107?)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 559, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-do-wojtka-pytasz-nie-teszno-li-mie-tak-____.html", 
-                "parent_number": 48, 
-                "id": 443
-            }, 
-            {
-                "parent": 710, 
-                "title": "Do Zofijej", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2436, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-do-zofijej____.html", 
-                "parent_number": 40, 
-                "id": 434
-            }, 
-            {
-                "title": "Do Zosie (B\u0119d\u0119 si\u0119 zawsze dziwowa\u0142 twojej pikno\u015bci...)", 
-                "html": "/media/lektura/do-zosie-bede-sie-zawsze-dziwowal-twojej-piknosci.html", 
-                "html_size": 1802, 
-                "id": 782, 
-                "tags": [
-                    123, 
-                    1564, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Do Zosie (Nie psuj niepotrzebnemi \u0142zami wdzi\u0119cznych oczy!)", 
-                "html": "/media/lektura/do-zosie-nie-psuj-niepotrzebnemi-lzami-wdziecznych-oczy.html", 
-                "html_size": 4961, 
-                "id": 783, 
-                "tags": [
-                    123, 
-                    1564, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Do Zygmunta", 
-                "html": "/media/lektura/do-zygmunta.html", 
-                "html_size": 2950, 
-                "id": 1943, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Dobranoc", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2431, 
-                "html": "/media/lektura/dobranoc.html", 
-                "parent_number": 5, 
-                "id": 2221
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Dobroczynno\u015b\u0107", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1609, 
-                "html": "/media/lektura/dobroczynnosc_.html", 
-                "parent_number": 18, 
-                "id": 1214
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Dobry wiecz\u00f3r", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 1997, 
-                "html": "/media/lektura/dobry-wieczor.html", 
-                "parent_number": 6, 
-                "id": 2220
-            }, 
-            {
-                "title": "Doko\u0142a klombu", 
-                "html": "/media/lektura/napoj-cienisty-dokola-klombu.html", 
-                "html_size": 2591, 
-                "id": 1754, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Doktor", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 858, 
-                "html": "/media/lektura/doktor_.html", 
-                "parent_number": 19, 
-                "id": 1186
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Doktor i zdrowie", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1448, 
-                "html": "/media/lektura/doktor-i-zdrowie_.html", 
-                "parent_number": 20, 
-                "id": 1150
-            }, 
-            {
-                "title": "Doktor Piotr", 
-                "html": "/media/lektura/doktor-piotr_______.html", 
-                "html_size": 103844, 
-                "id": 133, 
-                "tags": [
-                    31, 
-                    128, 
-                    54, 
-                    293
-                ]
-            }, 
-            {
-                "title": "Dom \u015bwi\u0119tego Kazimierza", 
-                "html": "/media/lektura/nic-wiecej-dom-swietego-kazimierza.html", 
-                "html_size": 12427, 
-                "id": 1689, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Don Juan w piekle", 
-                "html": "/media/lektura/don-juan-w-piekle.html", 
-                "html_size": 4247, 
-                "id": 2134, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "Dorocie z Michowa, \u017cenie jego (Nie chcia\u0142am ci\u0119, m\u0119\u017cu m\u00f3j, zosta\u0107, twoja \u017cona...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1352, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-dorocie-z-michowa-zenie-jego-nie-chcial____.html", 
-                "parent_number": 63, 
-                "id": 510
-            }, 
-            {
-                "title": "Dramat", 
-                "html": "/media/lektura/dramat.html", 
-                "html_size": 16244, 
-                "id": 858, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 829, 
-                "title": "Droga do Rosji", 
-                "tags": [
-                    31, 
-                    23, 
-                    1660, 
-                    24
-                ], 
-                "html_size": 18742, 
-                "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-droga-do-rosji.html", 
-                "parent_number": 0, 
-                "id": 821
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Droga nad przepa\u015bci\u0105 w Czufut-Kale", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 4637, 
-                "html": "/media/lektura/sonety-krymskie-droga-nad-przepascia-w-czufut-kale_______.html", 
-                "parent_number": 15, 
-                "id": 1794
-            }, 
-            {
-                "parent": 710, 
-                "title": "Drugi (M\u0119\u017cu m\u00f3j, o m\u00f3j m\u0119\u017cu, \u015bmier\u0107 nieluto\u015bciwa)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1255, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-drugi-mezu-moj-o-moj-mezu-smierc-niel____.html", 
-                "parent_number": 54, 
-                "id": 417
-            }, 
-            {
-                "parent": 708, 
-                "title": "Drugie Temu\u017c (Hiszpany, W\u0142ochy i Niemce zwiedziwszy...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1440, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-drugie-temuz-hiszpany-wlochy-i-niemc____.html", 
-                "parent_number": 31, 
-                "id": 484
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Drzewo", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 716, 
-                "html": "/media/lektura/drzewo_.html", 
-                "parent_number": 21, 
-                "id": 1225
-            }, 
-            {
-                "title": "Duch we flaszce", 
-                "html": "/media/lektura/duch-we-flaszce.html", 
-                "html_size": 20454, 
-                "id": 2161, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Dudarz", 
-                "html": "/media/lektura/dudarz_1.html", 
-                "html_size": 21033, 
-                "id": 2189, 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Dudek", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2249, 
-                "html": "/media/lektura/dudek-bajki-nowe_.html", 
-                "parent_number": 9, 
-                "id": 1250
-            }, 
-            {
-                "title": "Duma o Wac\u0142awie Rzewuskim", 
-                "html": "/media/lektura/duma-o-waclawie-rzewuskim_1.html", 
-                "html_size": 27325, 
-                "id": 1987, 
-                "tags": [
-                    210, 
-                    1, 
-                    24, 
-                    189
-                ]
-            }, 
-            {
-                "title": "Dusio\u0142ek", 
-                "html": "/media/lektura/dusiolek________.html", 
-                "html_size": 7070, 
-                "id": 1384, 
-                "tags": [
-                    210, 
-                    31, 
-                    337, 
-                    3035
-                ]
-            }, 
-            {
-                "title": "Dusza si\u0119 moja zamy\u015bla g\u0142\u0119boko...", 
-                "html": "/media/lektura/dusza-sie-moja-zamysla-gleboko.html", 
-                "html_size": 2117, 
-                "id": 1945, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Dusza wina", 
-                "html": "/media/lektura/kwiaty-zla-dusza-wina.html", 
-                "html_size": 2918, 
-                "id": 1884, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Dwa psy", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1523, 
-                "html": "/media/lektura/dwa-psy_.html", 
-                "parent_number": 22, 
-                "id": 1233
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Dwa \u017c\u00f3\u0142wie", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1585, 
-                "html": "/media/lektura/bajki-i-przypowiesci-dwa-zolwie__.html", 
-                "parent_number": 23, 
-                "id": 1277
-            }, 
-            {
-                "title": "Dym", 
-                "html": "/media/lektura/dym.html", 
-                "html_size": 33131, 
-                "id": 850, 
-                "tags": [
-                    31, 
-                    55, 
-                    54, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Dyrektor pod kanap\u0105", 
-                "html": "/media/lektura/dyrektor-pod-kanapa.html", 
-                "html_size": 9516, 
-                "id": 859, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Dyskobol", 
-                "html": "/media/lektura/dyskobol_1.html", 
-                "html_size": 4322, 
-                "id": 2056, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "id": 829, 
-                "title": "Dziad\u00f3w cz\u0119\u015bci III Ust\u0119p", 
-                "parent_number": 2, 
-                "parent": 830, 
-                "tags": [
-                    31, 
-                    23, 
-                    1660, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Dziady", 
-                "id": 830, 
-                "tags": [
-                    152, 
-                    372, 
-                    23, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 828, 
-                "title": "Dziady, cz\u0119\u015b\u0107 II", 
-                "tags": [
-                    152, 
-                    372, 
-                    23, 
-                    24
-                ], 
-                "html_size": 76299, 
-                "html": "/media/lektura/dziady-dziady-poema-dziady-czesc-ii.html", 
-                "parent_number": 0, 
-                "id": 1355
-            }, 
-            {
-                "parent": 828, 
-                "title": "Dziady, cz\u0119\u015b\u0107 III", 
-                "tags": [
-                    152, 
-                    372, 
-                    23, 
-                    24
-                ], 
-                "html_size": 451133, 
-                "html": "/media/lektura/dziady-dziady-poema-dziady-czesc-iii.html", 
-                "parent_number": 3, 
-                "id": 833
-            }, 
-            {
-                "parent": 828, 
-                "title": "Dziady, cz\u0119\u015b\u0107 IV", 
-                "tags": [
-                    152, 
-                    372, 
-                    23, 
-                    24
-                ], 
-                "html_size": 183350, 
-                "html": "/media/lektura/dziady-dziady-poema-dziady-czesc-iv.html", 
-                "parent_number": 2, 
-                "id": 818
-            }, 
-            {
-                "id": 828, 
-                "title": "Dziady. Poema", 
-                "parent_number": 0, 
-                "parent": 830, 
-                "tags": [
-                    152, 
-                    372, 
-                    23, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 830, 
-                "title": "Dziady. Widowisko, cz\u0119\u015b\u0107 I", 
-                "tags": [
-                    152, 
-                    372, 
-                    23, 
-                    24
-                ], 
-                "html_size": 61905, 
-                "html": "/media/lektura/dziady-dziady-widowisko-czesc-i.html", 
-                "parent_number": 1, 
-                "id": 827
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Dzieci i \u017caby", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2113, 
-                "html": "/media/lektura/dzieci-i-zaby-bajki-nowe_.html", 
-                "parent_number": 10, 
-                "id": 1264
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Dzieci\u0119 i ojciec", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 905, 
-                "html": "/media/lektura/dziecie-i-ojciec_.html", 
-                "parent_number": 24, 
-                "id": 1166
-            }, 
-            {
-                "title": "Dzie\u0142o sztuki", 
-                "html": "/media/lektura/dzielo-sztuki.html", 
-                "html_size": 11625, 
-                "id": 860, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Dzie\u0144", 
-                "html": "/media/lektura/dzien-jak-co-dzien-dzien.html", 
-                "html_size": 3460, 
-                "id": 1529, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Dzie\u0144 dobry", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2174, 
-                "html": "/media/lektura/dzien-dobry.html", 
-                "parent_number": 14, 
-                "id": 2215
-            }, 
-            {
-                "title": "Dziewczyna", 
-                "html": "/media/lektura/dziewczyna________.html", 
-                "html_size": 6407, 
-                "id": 1385, 
-                "tags": [
-                    210, 
-                    31, 
-                    337, 
-                    3035
-                ]
-            }, 
-            {
-                "title": "Dziewczynka i lalka", 
-                "html": "/media/lektura/dziewczynka-i-lalka.html", 
-                "html_size": 14425, 
-                "id": 2162, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Dziewczynka z zapa\u0142kami", 
-                "html": "/media/lektura/dziewczynka-z-zapalkami.html", 
-                "html_size": 7979, 
-                "id": 1049, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Dzisiaj Verdun", 
-                "html": "/media/lektura/dzien-jak-co-dzien-dzisiaj-verdun.html", 
-                "html_size": 3399, 
-                "id": 1530, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Dzisiaj w Betlejem", 
-                "html": "/media/lektura/dzisiaj-w-betlejem_1.html", 
-                "html_size": 5491, 
-                "id": 2016, 
-                "tags": [
-                    5148, 
-                    123, 
-                    1, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 1614, 
-                "title": "Dziwna historia", 
-                "tags": [
-                    31, 
-                    54, 
-                    2294, 
-                    56
-                ], 
-                "html_size": 86480, 
-                "html": "/media/lektura/gloria-victis-dziwna-historia_.html", 
-                "parent_number": 5, 
-                "id": 1607
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Dzwon", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34, 
-                    1407
-                ], 
-                "html_size": 845, 
-                "html": "/media/lektura/dzwon_1.html", 
-                "parent_number": 25, 
-                "id": 1195
-            }, 
-            {
-                "title": "Dzwon", 
-                "html": "/media/lektura/dzwon_3.html", 
-                "html_size": 6526, 
-                "id": 2195, 
-                "tags": [
-                    1, 
-                    2, 
-                    5290, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Dzwony", 
-                "html": "/media/lektura/dzwony_.html", 
-                "html_size": 18587, 
-                "id": 1574, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Echa le\u015bne", 
-                "html": "/media/lektura/echa-lesne.html", 
-                "html_size": 42452, 
-                "id": 2188, 
-                "tags": [
-                    31, 
-                    54, 
-                    56, 
-                    293
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Ekskuza", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 3536, 
-                "html": "/media/lektura/ekskuza.html", 
-                "parent_number": 15, 
-                "id": 2214
-            }, 
-            {
-                "title": "Ekstaza", 
-                "html": "/media/lektura/ekstaza_1.html", 
-                "html_size": 3538, 
-                "id": 2057, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Elegia na \u015bmier\u0107 Czarnego Zawiszy", 
-                "html": "/media/lektura/elegia-na-smierc-czarnego-zawiszy.html", 
-                "html_size": 37305, 
-                "id": 2058, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Elegia niemocy", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-elegia-niemocy.html", 
-                "html_size": 4200, 
-                "id": 1672, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Elegia u\u015bpienia", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-elegia-uspienia.html", 
-                "html_size": 4721, 
-                "id": 1673, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Elegia \u017calu", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-elegia-zalu.html", 
-                "html_size": 4177, 
-                "id": 1674, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Epigraf na pot\u0119pion\u0105 ksi\u0105\u017ck\u0119", 
-                "html": "/media/lektura/epigraf-na-potepiona-ksiazke.html", 
-                "html_size": 2186, 
-                "id": 2136, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "Epitafium Andrzejowi Bzickiemu, kasztelanowi che\u0142mskiemu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2522, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-epitafium-andrzejowi-bzickiemu-kasztela____.html", 
-                "parent_number": 49, 
-                "id": 448
-            }, 
-            {
-                "parent": 708, 
-                "title": "Epitafium dzieci\u0119ciu (By\u0142em ojcem niedawno, dzi\u015b nie mam nikogo...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 868, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-dziecieciu-bylem-ojcem-nie_____.html", 
-                "parent_number": 24, 
-                "id": 687
-            }, 
-            {
-                "parent": 708, 
-                "title": "Epitafium dzieci\u0119ciu (Ojcze, nade mn\u0105 p\u0142aka\u0107 nie potrzeba...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 813, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-dziecieciu-ojcze-nade-mna-_____.html", 
-                "parent_number": 25, 
-                "id": 566
-            }, 
-            {
-                "parent": 710, 
-                "title": "Epitafium Erazmowi Kroczewskiemu kuchmistrzowi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1565, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-epitafium-erazmowi-kroczewskiemu-kuch____.html", 
-                "parent_number": 41, 
-                "id": 668
-            }, 
-            {
-                "parent": 710, 
-                "title": "Epitafium Grzegorzowi Podlodowskiemu, staro\u015bcie radomskiemu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1445, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-epitafium-grzegorzowi-podlodowskiemu-____.html", 
-                "parent_number": 42, 
-                "id": 493
-            }, 
-            {
-                "title": "Epitafium Hannie Kochanowskiej", 
-                "html": "/media/lektura/treny-epitafium-hannie-kochanowskiej_______.html", 
-                "html_size": 1289, 
-                "id": 1563, 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Epitafium J\u0119drzejowi \u017belis\u0142awskiemu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 815, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-jedrzejowi-zelislawskiemu_____.html", 
-                "parent_number": 26, 
-                "id": 654
-            }, 
-            {
-                "parent": 710, 
-                "title": "Epitafium J\u00f3stowi Glacowi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1743, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-epitafium-jostowi-glacowi____.html", 
-                "parent_number": 43, 
-                "id": 605
-            }, 
-            {
-                "parent": 708, 
-                "title": "Epitafium Kosowi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1790, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-kosowi_____.html", 
-                "parent_number": 27, 
-                "id": 516
-            }, 
-            {
-                "parent": 708, 
-                "title": "Epitafium Krysztofowi Sienie\u0144skiemu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 870, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-krysztofowi-sienienskiemu_____.html", 
-                "parent_number": 29, 
-                "id": 476
-            }, 
-            {
-                "parent": 711, 
-                "title": "Epitafium Sobiechowi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1337, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-epitafium-sobiechowi____.html", 
-                "parent_number": 51, 
-                "id": 616
-            }, 
-            {
-                "parent": 708, 
-                "title": "Epitafium Wojciechowi Kryskiemu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1284, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-wojciechowi-kryskiemu_____.html", 
-                "parent_number": 30, 
-                "id": 579
-            }, 
-            {
-                "parent": 708, 
-                "title": "Epitafium Wysockiemu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1191, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-wysockiemu_____.html", 
-                "parent_number": 32, 
-                "id": 692
-            }, 
-            {
-                "title": "Erotyk", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-erotyk.html", 
-                "html_size": 2131, 
-                "id": 1656, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Eviva l'arte!", 
-                "html": "/media/lektura/eviva-larte.html", 
-                "html_size": 4505, 
-                "id": 2059, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Fejerwerk", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2627, 
-                "html": "/media/lektura/fejerwerk-bajki-nowe_.html", 
-                "parent_number": 11, 
-                "id": 1332
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Fia\u0142ek i trawa", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1461, 
-                "html": "/media/lektura/fialek-i-trawa_.html", 
-                "parent_number": 28, 
-                "id": 1213
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Fia\u0142ki", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2524, 
-                "html": "/media/lektura/fialki-bajki-nowe_.html", 
-                "parent_number": 12, 
-                "id": 1722
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Filozof", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1699, 
-                "html": "/media/lektura/filozof_.html", 
-                "parent_number": 26, 
-                "id": 1122
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Filozof", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3428, 
-                "html": "/media/lektura/filozof-bajki-nowe_.html", 
-                "parent_number": 13, 
-                "id": 1268
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Filozof i ch\u0142op", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2457, 
-                "html": "/media/lektura/filozof-i-chlop-bajki-nowe_.html", 
-                "parent_number": 14, 
-                "id": 1295
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Filozof i orator", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2424, 
-                "html": "/media/lektura/filozof-i-orator_.html", 
-                "parent_number": 27, 
-                "id": 1140
-            }, 
-            {
-                "title": "Fortepian Chopina", 
-                "html": "/media/lektura/fortepian-chopina.html", 
-                "html_size": 18352, 
-                "id": 1085, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Fragment z \u00abFantazji\u00bb", 
-                "html": "/media/lektura/fragment-z-fantazji.html", 
-                "html_size": 2591, 
-                "id": 2060, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Fragmenta albo pozosta\u0142e pisma", 
-                "id": 1402, 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ]
-            }, 
-            {
-                "title": "Frasunk do Kasie", 
-                "html": "/media/lektura/frasunk-do-kasie.html", 
-                "html_size": 3179, 
-                "id": 784, 
-                "tags": [
-                    123, 
-                    11, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Fraszka do Anusie", 
-                "html": "/media/lektura/fraszka-do-anusie.html", 
-                "html_size": 1736, 
-                "id": 785, 
-                "tags": [
-                    123, 
-                    11, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Fraszka do Kasie", 
-                "html": "/media/lektura/fraszka-do-kasie.html", 
-                "html_size": 2296, 
-                "id": 786, 
-                "tags": [
-                    123, 
-                    11, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Fraszka do Zosie (B\u0105d\u017a mi oczkami pozwalasz \u0142askawemi...)", 
-                "html": "/media/lektura/fraszka-do-zosie-badz-mi-oczkami-pozwalasz-laskawemi.html", 
-                "html_size": 3048, 
-                "id": 787, 
-                "tags": [
-                    123, 
-                    11, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Fraszka do Zosie (S\u0142uchaj, gdy nie chcesz baczy\u0107, co si\u0119 ze mn\u0105 dzieje...)", 
-                "html": "/media/lektura/fraszka-do-zosie-sluchaj-gdy-nie-chcesz-baczyc-co-sie-ze-mna-dzieje.html", 
-                "html_size": 3205, 
-                "id": 788, 
-                "tags": [
-                    123, 
-                    1564, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Fraszka o Anusi i o Kasi", 
-                "html": "/media/lektura/fraszka-o-anusi-i-o-kasi.html", 
-                "html_size": 1546, 
-                "id": 789, 
-                "tags": [
-                    123, 
-                    1564, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Fraszki", 
-                "id": 712, 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ]
-            }, 
-            {
-                "id": 709, 
-                "title": "Fraszki dodane", 
-                "parent_number": 4, 
-                "parent": 712, 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ]
-            }, 
-            {
-                "title": "Front", 
-                "html": "/media/lektura/kamien-front.html", 
-                "html_size": 2670, 
-                "id": 1684, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Furman i motyl", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1112, 
-                "html": "/media/lektura/furman-i-motyl_.html", 
-                "parent_number": 29, 
-                "id": 1184
-            }, 
-            {
-                "parent": 710, 
-                "title": "Gadka", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1607, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-gadka____.html", 
-                "parent_number": 44, 
-                "id": 450
-            }, 
-            {
-                "title": "Gdy noc g\u0142\u0119boka wszystko u\u015bpi i oniemi...", 
-                "html": "/media/lektura/gdy-noc-gleboka-wszystko-uspi-i-oniemi.html", 
-                "html_size": 2863, 
-                "id": 1946, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Gdy si\u0119 Chrystus rodzi...", 
-                "html": "/media/lektura/gdy-sie-chrystus-rodzi_1.html", 
-                "html_size": 5656, 
-                "id": 2033, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Gdy \u015bliczna Panna...", 
-                "html": "/media/lektura/gdy-sliczna-panna.html", 
-                "html_size": 4421, 
-                "id": 2034, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Gdy tu m\u00f3j trup...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2161, 
-                "html": "/media/lektura/gdy-tu-moj-trup.html", 
-                "parent_number": 3, 
-                "id": 1865
-            }, 
-            {
-                "title": "Geniusze", 
-                "html": "/media/lektura/geniusze_2.html", 
-                "html_size": 1446, 
-                "id": 2061, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "G\u0119si", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2640, 
-                "html": "/media/lektura/gesi-bajki-nowe_.html", 
-                "parent_number": 15, 
-                "id": 1248
-            }, 
-            {
-                "title": "Giaur", 
-                "html": "/media/lektura/giaur.html", 
-                "html_size": 158614, 
-                "id": 834, 
-                "tags": [
-                    1757, 
-                    31, 
-                    1756, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1614, 
-                "title": "Gloria victis", 
-                "tags": [
-                    31, 
-                    54, 
-                    2294, 
-                    56
-                ], 
-                "html_size": 83383, 
-                "html": "/media/lektura/gloria-victis-gloria-victis.html", 
-                "parent_number": 4, 
-                "id": 1608
-            }, 
-            {
-                "title": "Gloria victis (tom opowiada\u0144)", 
-                "id": 1614, 
-                "tags": [
-                    31, 
-                    54, 
-                    2294, 
-                    56
-                ]
-            }, 
-            {
-                "title": "G\u0142os", 
-                "html": "/media/lektura/gos.html", 
-                "html_size": 5395, 
-                "id": 2137, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Godzina my\u015bli", 
-                "html": "/media/lektura/godzina-mysli.html", 
-                "html_size": 41725, 
-                "id": 1552, 
-                "tags": [
-                    1, 
-                    1756, 
-                    24, 
-                    189
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Go\u0142\u0119bie", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 10916, 
-                "html": "/media/lektura/golebie-bajki-nowe_.html", 
-                "parent_number": 16, 
-                "id": 1276
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Gospodarz i drzewa", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1628, 
-                "html": "/media/lektura/gospodarz-i-drzewa_.html", 
-                "parent_number": 30, 
-                "id": 1712
-            }, 
-            {
-                "parent": 1333, 
-                "title": "G\u00f3ra i dolina", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2658, 
-                "html": "/media/lektura/gora-i-dolina-bajki-nowe_.html", 
-                "parent_number": 17, 
-                "id": 1284
-            }, 
-            {
-                "parent": 1798, 
-                "title": "G\u00f3ra Kikineis", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 3693, 
-                "html": "/media/lektura/sonety-krymskie-gora-kikineis_______.html", 
-                "parent_number": 16, 
-                "id": 1795
-            }, 
-            {
-                "parent": 289, 
-                "title": "Gracz", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 26431, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-gracz_______.html", 
-                "parent_number": 11, 
-                "id": 85
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Groch przy drodze", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3380, 
-                "html": "/media/lektura/groch-przy-drodze_.html", 
-                "parent_number": 31, 
-                "id": 1222
-            }, 
-            {
-                "title": "Gr\u00f3b Agamemnona", 
-                "html": "/media/lektura/grob-agamemnona_______.html", 
-                "html_size": 30122, 
-                "id": 32, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Gr\u00f3b poety", 
-                "html": "/media/lektura/grob-poety_1.html", 
-                "html_size": 14070, 
-                "id": 2062, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Gr\u00f3b Potocki\u00e9j", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 3344, 
-                "html": "/media/lektura/sonety-krymskie-grob-potockiej_______.html", 
-                "parent_number": 8, 
-                "id": 1788
-            }, 
-            {
-                "title": "Hamlet", 
-                "html": "/media/lektura/hamlet__.html", 
-                "html_size": 602558, 
-                "id": 1716, 
-                "tags": [
-                    152, 
-                    4293, 
-                    4, 
-                    226
-                ]
-            }, 
-            {
-                "title": "Harmonia wieczorna", 
-                "html": "/media/lektura/harmonia-wieczorna.html", 
-                "html_size": 2588, 
-                "id": 2138, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Heautontimoroumenos", 
-                "html": "/media/lektura/heautontimoroumenos.html", 
-                "html_size": 4514, 
-                "id": 2139, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Hej w dzie\u0144 narodzenia...", 
-                "html": "/media/lektura/hej-w-dzien-narodzenia.html", 
-                "html_size": 6823, 
-                "id": 2035, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 1614, 
-                "title": "Hekuba", 
-                "tags": [
-                    31, 
-                    54, 
-                    2294, 
-                    56
-                ], 
-                "html_size": 362939, 
-                "html": "/media/lektura/gloria-victis-hekuba.html", 
-                "parent_number": 2, 
-                "id": 1609
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Hipokryt", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1400, 
-                "html": "/media/lektura/hipokryt_.html", 
-                "parent_number": 32, 
-                "id": 1208
-            }, 
-            {
-                "title": "Historia roku", 
-                "html": "/media/lektura/historia-roku.html", 
-                "html_size": 30183, 
-                "id": 1576, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Historia \u017c\u00f3\u0142tej ci\u017cemki", 
-                "html": "/media/lektura/historia-zoltej-cizemki_1.html", 
-                "html_size": 845444, 
-                "id": 1935, 
-                "tags": [
-                    4926, 
-                    338, 
-                    31, 
-                    242
-                ]
-            }, 
-            {
-                "title": "Ho\u0142d (Dwa sonety)", 
-                "html": "/media/lektura/hold-dwa-sonety.html", 
-                "html_size": 3266, 
-                "id": 970, 
-                "tags": [
-                    2137, 
-                    1, 
-                    22, 
-                    2138
-                ]
-            }, 
-            {
-                "title": "Hop-frog", 
-                "html": "/media/lektura/hop-frog.html", 
-                "html_size": 36182, 
-                "id": 1767, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Hymn (,,Bogarodzico, Dziewico!\")", 
-                "html": "/media/lektura/hymn-bogarodzico-dziewico.html", 
-                "html_size": 8355, 
-                "id": 1947, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Hymn do mi\u0142o\u015bci", 
-                "html": "/media/lektura/hymn-do-milosci_1.html", 
-                "html_size": 8938, 
-                "id": 2063, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Hymn do Nirwany", 
-                "html": "/media/lektura/hymn-do-nirwany_1.html", 
-                "html_size": 5045, 
-                "id": 2064, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Hymn do pi\u0119kna", 
-                "html": "/media/lektura/hymn-do-piekna.html", 
-                "html_size": 4373, 
-                "id": 2140, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 293, 
-                "title": "Hymn Marii Egipcjanki", 
-                "tags": [
-                    332, 
-                    339, 
-                    1, 
-                    128
-                ], 
-                "html_size": 39892, 
-                "html": "/media/lektura/hymny-hymn-marii-egipcjanki.html", 
-                "parent_number": 7, 
-                "id": 732
-            }, 
-            {
-                "title": "Hymn o zachodzie s\u0142o\u0144ca na morzu", 
-                "html": "/media/lektura/hymn-o-zachodzie-slonca-na-morzu_______.html", 
-                "html_size": 5051, 
-                "id": 120, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 293, 
-                "title": "Hymn \u015bw. Franciszka z Asy\u017cu", 
-                "tags": [
-                    332, 
-                    339, 
-                    1, 
-                    128
-                ], 
-                "html_size": 44280, 
-                "html": "/media/lektura/hymny-hymn-sw-franciszka-z-asyzu__.html", 
-                "parent_number": 5, 
-                "id": 728
-            }, 
-            {
-                "title": "Hymny", 
-                "id": 293, 
-                "tags": [
-                    332, 
-                    339, 
-                    1, 
-                    128
-                ]
-            }, 
-            {
-                "parent": 742, 
-                "title": "I (Miriamowi)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 41397, 
-                "html": "/media/lektura/nad-przepasciami-i-miriamowi.html", 
-                "parent_number": 0, 
-                "id": 739
-            }, 
-            {
-                "parent": 754, 
-                "title": "I (Wierzy\u0142em zawsze w \u015bwiat\u0142a moc...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 1922, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-i-wierzylem-zawsze-w-swiatla-moc_.html", 
-                "parent_number": 0, 
-                "id": 743
-            }, 
-            {
-                "title": "I wsta\u0142 Anhelli z grobu - za nim wszystkie duchy...", 
-                "html": "/media/lektura/i-wstal-anhelli-z-grobu-za-nim-wszystkie-duchy.html", 
-                "html_size": 3649, 
-                "id": 2004, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Idea\u0142", 
-                "html": "/media/lektura/idea.html", 
-                "html_size": 3573, 
-                "id": 2141, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 754, 
-                "title": "II (W ciemno\u015bci schodzi moja dusza...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2595, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-ii-w-ciemnosci-schodzi-moja-dusza_.html", 
-                "parent_number": 1, 
-                "id": 744
-            }, 
-            {
-                "parent": 742, 
-                "title": "II (Z motyw\u00f3w wedyckich)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 10851, 
-                "html": "/media/lektura/nad-przepasciami-ii-z-motywow-wedyckich.html", 
-                "parent_number": 1, 
-                "id": 740
-            }, 
-            {
-                "parent": 742, 
-                "title": "III (Waruno!...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    2
-                ], 
-                "html_size": 14115, 
-                "html": "/media/lektura/nad-przepasciami-iii-waruno.html", 
-                "parent_number": 2, 
-                "id": 741
-            }, 
-            {
-                "parent": 754, 
-                "title": "III (Zazdroszcz\u0119 nieraz tym, co w grobach le\u017c\u0105...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2420, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-iii-zazdroszcze-nieraz-tym-co-w-grobach-leza_.html", 
-                "parent_number": 2, 
-                "id": 745
-            }, 
-            {
-                "title": "Imieniny", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-imieniny.html", 
-                "html_size": 1417, 
-                "id": 1657, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Ipecacuana", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 4336, 
-                "html": "/media/lektura/but-w-butonierce-ipecacuara.html", 
-                "parent_number": 3, 
-                "id": 1361
-            }, 
-            {
-                "parent": 754, 
-                "title": "IV (O niezg\u0142\u0119biona duszy toni...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 3383, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-iv-o-niezglebiona-duszy-toni_.html", 
-                "parent_number": 3, 
-                "id": 746
-            }, 
-            {
-                "parent": 754, 
-                "title": "IX (Modlitwo moja, cicha i bez s\u0142\u00f3w...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 8669, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-ix-modlitwo-moja-cicha-i-bez-slow_.html", 
-                "parent_number": 8, 
-                "id": 751
-            }, 
-            {
-                "title": "Ja karabin", 
-                "html": "/media/lektura/dzien-jak-co-dzien-ja-karabin.html", 
-                "html_size": 1968, 
-                "id": 1531, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Jadwiga", 
-                "html": "/media/lektura/napoj-cienisty-jadwiga.html", 
-                "html_size": 6761, 
-                "id": 1740, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Jagni\u0119 i wilcy", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1774, 
-                "html": "/media/lektura/jagnie-i-wilcy_.html", 
-                "parent_number": 33, 
-                "id": 1154
-            }, 
-            {
-                "title": "Jan Bielecki", 
-                "html": "/media/lektura/jan-bielecki.html", 
-                "html_size": 68127, 
-                "id": 1553, 
-                "tags": [
-                    1, 
-                    1756, 
-                    24, 
-                    189
-                ]
-            }, 
-            {
-                "title": "Janko Muzykant", 
-                "html": "/media/lektura/janko-muzykant_______.html", 
-                "html_size": 22815, 
-                "id": 125, 
-                "tags": [
-                    31, 
-                    54, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Jastrz\u0105b i sok\u00f3\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2580, 
-                "html": "/media/lektura/jastrzab-i-sokol_.html", 
-                "parent_number": 34, 
-                "id": 1181
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Ja\u015b", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3548, 
-                "html": "/media/lektura/jas-bajki-nowe_.html", 
-                "parent_number": 18, 
-                "id": 1292
-            }, 
-            {
-                "title": "Jednakowo", 
-                "html": "/media/lektura/dzien-jak-co-dzien-jednakowo.html", 
-                "html_size": 2908, 
-                "id": 1532, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Jednooczka, Dwuoczka, Trzyoczka", 
-                "html": "/media/lektura/jednooczka-dwuoczka-trzyoczka.html", 
-                "html_size": 23826, 
-                "id": 2163, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Jedyna", 
-                "html": "/media/lektura/dzien-jak-co-dzien-jedyna.html", 
-                "html_size": 5462, 
-                "id": 1533, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Jesie\u0144", 
-                "html": "/media/lektura/dzien-jak-co-dzien-jesien.html", 
-                "html_size": 2133, 
-                "id": 1534, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Jeszcze jeden mazur dzisiaj...", 
-                "html": "/media/lektura/jeszcze-jeden-mazur-dzisiaj.html", 
-                "html_size": 5353, 
-                "id": 2112, 
-                "tags": [
-                    1, 
-                    2, 
-                    5287, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Jeszcze Polska nie zgin\u0119\u0142a...", 
-                "html": "/media/lektura/jeszcze-polska-nie-zginela-mazurek.html", 
-                "html_size": 4244, 
-                "id": 2123, 
-                "tags": [
-                    1, 
-                    2, 
-                    24, 
-                    5310
-                ]
-            }, 
-            {
-                "parent": 773, 
-                "title": "Jezioro Maerjelen", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 6727, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-alp-jezioro-maerjelen__.html", 
-                "parent_number": 5, 
-                "id": 757
-            }, 
-            {
-                "title": "Jezus malusie\u0144ki", 
-                "html": "/media/lektura/jezus-malusienki.html", 
-                "html_size": 8024, 
-                "id": 2020, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Je\u017celi ci pan nie zbuduje domu...", 
-                "html": "/media/lektura/jezeli-ci-pan-nie-zbuduje-domu.html", 
-                "html_size": 4624, 
-                "id": 1949, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Jod\u0142a i jab\u0142o\u0144", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2046, 
-                "html": "/media/lektura/jodla-i-jablon-bajki-nowe_.html", 
-                "parent_number": 19, 
-                "id": 1274
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Jowisz i owce", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1363, 
-                "html": "/media/lektura/jowisz-i-owce_.html", 
-                "parent_number": 35, 
-                "id": 1121
-            }, 
-            {
-                "parent": 293, 
-                "title": "Judasz", 
-                "tags": [
-                    332, 
-                    339, 
-                    1, 
-                    128
-                ], 
-                "html_size": 43422, 
-                "html": "/media/lektura/hymny-judasz.html", 
-                "parent_number": 6, 
-                "id": 730
-            }, 
-            {
-                "parent": 773, 
-                "title": "Jungfrau", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 10258, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-alp-jungfrau__.html", 
-                "parent_number": 2, 
-                "id": 758
-            }, 
-            {
-                "title": "Jutrzenka duszy", 
-                "html": "/media/lektura/jutrzenka-duszy.html", 
-                "html_size": 2032, 
-                "id": 2142, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Ju\u017c nie wiem, co poza mn\u0105 by\u0142o...", 
-                "html": "/media/lektura/juz-nie-wiem-co-poza-mna-bylo.html", 
-                "html_size": 3000, 
-                "id": 2065, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Ka\u0142amarz i pi\u00f3ro", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1532, 
-                "html": "/media/lektura/kalamarz-i-pioro_.html", 
-                "parent_number": 36, 
-                "id": 1210
-            }, 
-            {
-                "title": "Kameleon", 
-                "html": "/media/lektura/kameleon.html", 
-                "html_size": 9461, 
-                "id": 861, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Kamizelka", 
-                "html": "/media/lektura/kamizelka.html", 
-                "html_size": 36112, 
-                "id": 960, 
-                "tags": [
-                    31, 
-                    54, 
-                    56, 
-                    1462
-                ]
-            }, 
-            {
-                "title": "Kara pychy", 
-                "html": "/media/lektura/kara-pychy.html", 
-                "html_size": 2864, 
-                "id": 2143, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Kartownik", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 4093, 
-                "html": "/media/lektura/kartownik_.html", 
-                "parent_number": 37, 
-                "id": 1170
-            }, 
-            {
-                "title": "Katarynka", 
-                "html": "/media/lektura/katarynka_.html", 
-                "html_size": 59277, 
-                "id": 961, 
-                "tags": [
-                    31, 
-                    54, 
-                    56, 
-                    1462
-                ]
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Katechizm polskiego dziecka", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 3225, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-katechizm-polskiego-dziecka___.html", 
-                "parent_number": 0, 
-                "id": 1837
-            }, 
-            {
-                "title": "Katechizm polskiego dziecka (zbi\u00f3r)", 
-                "id": 1846, 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Kiedy prawdziwie Polacy powstan\u0105...", 
-                "html": "/media/lektura/kiedy-prawdziwie-polacy-powstana.html", 
-                "html_size": 4729, 
-                "id": 1988, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 294, 
-                "title": "Klatki", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 18439, 
-                "html": "/media/lektura/satyry-czesc-druga-klatki_______.html", 
-                "parent_number": 5, 
-                "id": 230
-            }, 
-            {
-                "title": "Knajpa", 
-                "html": "/media/lektura/kamien-knajpa.html", 
-                "html_size": 5333, 
-                "id": 1685, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Kochankowie", 
-                "html": "/media/lektura/napoj-cienisty-kochankowie.html", 
-                "html_size": 3339, 
-                "id": 1725, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Kocmo\u0142uch", 
-                "html": "/media/lektura/napoj-cienisty-kocmoluch.html", 
-                "html_size": 4514, 
-                "id": 1726, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Kogut", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2837, 
-                "html": "/media/lektura/kogut-bajki-nowe_.html", 
-                "parent_number": 20, 
-                "id": 1267
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Komar", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1627, 
-                "html": "/media/lektura/komar-bajki-nowe_.html", 
-                "parent_number": 21, 
-                "id": 1327
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Komar i mucha", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 869, 
-                "html": "/media/lektura/komar-i-mucha_.html", 
-                "parent_number": 38, 
-                "id": 1172
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Konie", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2506, 
-                "html": "/media/lektura/konie-bajki-nowe_.html", 
-                "parent_number": 22, 
-                "id": 1326
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Konie i furman", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1891, 
-                "html": "/media/lektura/konie-i-furman_.html", 
-                "parent_number": 39, 
-                "id": 1187
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Koniec", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2323, 
-                "html": "/media/lektura/koniec_.html", 
-                "parent_number": 40, 
-                "id": 1182
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Koniec", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2371, 
-                "html": "/media/lektura/koniec-bajki-nowe_.html", 
-                "parent_number": 23, 
-                "id": 1293
-            }, 
-            {
-                "title": "Koniec wieku", 
-                "html": "/media/lektura/koniec-wieku.html", 
-                "html_size": 5336, 
-                "id": 2066, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Konwersacja", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3965, 
-                "html": "/media/lektura/konwersacja-bajki-nowe_.html", 
-                "parent_number": 25, 
-                "id": 1317
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Ko\u0144 i wielb\u0142\u0105d", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 5474, 
-                "html": "/media/lektura/kon-i-wielblad-bajki-nowe_.html", 
-                "parent_number": 24, 
-                "id": 1328
-            }, 
-            {
-                "title": "Kopciuszek", 
-                "html": "/media/lektura/napoj-cienisty-kopciuszek.html", 
-                "html_size": 3926, 
-                "id": 1727, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Kopciuszek", 
-                "html": "/media/lektura/kopciuszek.html", 
-                "html_size": 23562, 
-                "id": 2164, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Kordian", 
-                "html": "/media/lektura/kordian.html", 
-                "html_size": 406477, 
-                "id": 881, 
-                "tags": [
-                    152, 
-                    372, 
-                    24, 
-                    189
-                ]
-            }, 
-            {
-                "parent": 295, 
-                "title": "Ko\u015bci\u00f3\u0142 Panny Marii", 
-                "tags": [
-                    31, 
-                    126, 
-                    128, 
-                    127
-                ], 
-                "html_size": 17267, 
-                "html": "/media/lektura/legendy-warszawskie-kosciol-panny-marii_______.html", 
-                "parent_number": 2, 
-                "id": 1603
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Kot i kogut", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 4364, 
-                "html": "/media/lektura/kot-i-kogut-bajki-nowe_.html", 
-                "parent_number": 26, 
-                "id": 1253
-            }, 
-            {
-                "title": "Krasnoludek", 
-                "html": "/media/lektura/krasnoludek.html", 
-                "html_size": 14239, 
-                "id": 1052, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Krasnoludki", 
-                "html": "/media/lektura/krasnoludki.html", 
-                "html_size": 4285, 
-                "id": 2165, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Kr\u00f3l Drozdobrody", 
-                "html": "/media/lektura/krol-drozdobrody.html", 
-                "html_size": 19588, 
-                "id": 2186, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Kr\u00f3l D\u017cumiec", 
-                "html": "/media/lektura/krol-dzumiec.html", 
-                "html_size": 47782, 
-                "id": 1768, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Kr\u00f3l Edyp", 
-                "html": "/media/lektura/krol-edyp_________.html", 
-                "html_size": 222337, 
-                "id": 250, 
-                "tags": [
-                    152, 
-                    176, 
-                    177, 
-                    175
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Kr\u00f3l i pisarze", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 862, 
-                "html": "/media/lektura/krol-i-pisarze_.html", 
-                "parent_number": 41, 
-                "id": 1227
-            }, 
-            {
-                "title": "Kr\u00f3l \u017cab", 
-                "html": "/media/lektura/krol-zab.html", 
-                "html_size": 15896, 
-                "id": 2187, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Kr\u00f3lowa \u015bniegu", 
-                "html": "/media/lektura/krolowa-sniegu________.html", 
-                "html_size": 101937, 
-                "id": 1353, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Kruk i lis", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2870, 
-                "html": "/media/lektura/kruk-i-lis-bajki-nowe_.html", 
-                "parent_number": 27, 
-                "id": 1273
-            }, 
-            {
-                "parent": 287, 
-                "title": "Krzak dzikiej r\u00f3\u017cy w Ciemnych Smreczynach", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 8725, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-tatr-krzak-dzikiej-rozy-w-ciemnych-smreczy_______.html", 
-                "parent_number": 3, 
-                "id": 113
-            }, 
-            {
-                "title": "Krzy\u017c i dziecko", 
-                "html": "/media/lektura/krzyz-i-dziecko.html", 
-                "html_size": 1704, 
-                "id": 1086, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Krzy\u017cacy", 
-                "id": 1928, 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "parent": 1928, 
-                "title": "Krzy\u017cacy, tom drugi", 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ], 
-                "html_size": 1965471, 
-                "html": "/media/lektura/krzyzacy-tom-drugi.html", 
-                "parent_number": 1, 
-                "id": 1927
-            }, 
-            {
-                "parent": 1928, 
-                "title": "Krzy\u017cacy, tom pierwszy", 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ], 
-                "html_size": 1701530, 
-                "html": "/media/lektura/krzyzacy-tom-pierwszy.html", 
-                "parent_number": 0, 
-                "id": 1926
-            }, 
-            {
-                "title": "Ksi\u0119ga d\u017cungli", 
-                "html": "/media/lektura/ksiega-dzungli.html", 
-                "html_size": 477768, 
-                "id": 1568, 
-                "tags": [
-                    31, 
-                    2304, 
-                    242, 
-                    2138
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Ksi\u0119gi", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2772, 
-                "html": "/media/lektura/ksiegi_.html", 
-                "parent_number": 42, 
-                "id": 1200
-            }, 
-            {
-                "id": 708, 
-                "title": "Ksi\u0119gi pierwsze", 
-                "parent_number": 1, 
-                "parent": 712, 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ]
-            }, 
-            {
-                "id": 1455, 
-                "title": "Ksi\u0119gi pierwsze", 
-                "parent_number": 2, 
-                "parent": 1459, 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ]
-            }, 
-            {
-                "id": 710, 
-                "title": "Ksi\u0119gi trzecie", 
-                "parent_number": 3, 
-                "parent": 712, 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ]
-            }, 
-            {
-                "id": 711, 
-                "title": "Ksi\u0119gi wt\u00f3re", 
-                "parent_number": 2, 
-                "parent": 712, 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ]
-            }, 
-            {
-                "id": 1458, 
-                "title": "Ksi\u0119gi wt\u00f3re", 
-                "parent_number": 3, 
-                "parent": 1459, 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ]
-            }, 
-            {
-                "title": "Kt\u00f3\u017c nam powr\u00f3ci...", 
-                "html": "/media/lektura/ktoz-nam-powroci_1.html", 
-                "html_size": 3288, 
-                "id": 2067, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "Ku Muzom", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2064, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-ku-muzom____.html", 
-                "parent_number": 52, 
-                "id": 442
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Kuglarze", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 12973, 
-                "html": "/media/lektura/kuglarze-bajki-nowe_.html", 
-                "parent_number": 28, 
-                "id": 1309
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Kulawy i \u015blepy", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3008, 
-                "html": "/media/lektura/bajki-i-przypowiesci-kulawy-i-slepy__.html", 
-                "parent_number": 43, 
-                "id": 1331
-            }, 
-            {
-                "title": "Kulik", 
-                "html": "/media/lektura/kulik.html", 
-                "html_size": 10052, 
-                "id": 1070, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Kwiaty Idalki", 
-                "html": "/media/lektura/kwiaty-idalki.html", 
-                "html_size": 23983, 
-                "id": 1053, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Lalka", 
-                "id": 1493, 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    1462
-                ]
-            }, 
-            {
-                "title": "Lalka", 
-                "html": "/media/lektura/napoj-cienisty-lalka.html", 
-                "html_size": 7650, 
-                "id": 1728, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1493, 
-                "title": "Lalka, tom drugi", 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    1462
-                ], 
-                "html_size": 1793271, 
-                "html": "/media/lektura/lalka-tom-drugi.html", 
-                "parent_number": 2, 
-                "id": 1713
-            }, 
-            {
-                "parent": 1493, 
-                "title": "Lalka, tom pierwszy", 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    1462
-                ], 
-                "html_size": 1690941, 
-                "html": "/media/lektura/lalka-tom-pierwszy______________.html", 
-                "parent_number": 1, 
-                "id": 1491
-            }, 
-            {
-                "title": "Lambro", 
-                "html": "/media/lektura/lambro.html", 
-                "html_size": 165508, 
-                "id": 1557, 
-                "tags": [
-                    1, 
-                    1756, 
-                    24, 
-                    189
-                ]
-            }, 
-            {
-                "title": "Larwa", 
-                "html": "/media/lektura/larwa.html", 
-                "html_size": 3313, 
-                "id": 1087, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Latarnie", 
-                "html": "/media/lektura/latarnie.html", 
-                "html_size": 8936, 
-                "id": 2144, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Latarnik", 
-                "html": "/media/lektura/latarnik_______.html", 
-                "html_size": 42500, 
-                "id": 207, 
-                "tags": [
-                    31, 
-                    54, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "title": "Lato na Wo\u0142yniu", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-lato-na-wolyniu_.html", 
-                "html_size": 4152, 
-                "id": 1658, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Laura i Filon", 
-                "html": "/media/lektura/laura-i-filon_.html", 
-                "html_size": 28138, 
-                "id": 840, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34
-                ]
-            }, 
-            {
-                "title": "Leda", 
-                "html": "/media/lektura/leda_1.html", 
-                "html_size": 3646, 
-                "id": 2068, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Legenda", 
-                "html": "/media/lektura/dzien-jak-co-dzien-legenda.html", 
-                "html_size": 4282, 
-                "id": 1535, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Legenda o gar\u015bci ziemi polskiej", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 5579, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-legenda-o-garsci-ziemi-polskiej_.html", 
-                "parent_number": 14, 
-                "id": 1838
-            }, 
-            {
-                "title": "Legendy warszawskie", 
-                "id": 295, 
-                "tags": [
-                    31, 
-                    126, 
-                    128, 
-                    127
-                ]
-            }, 
-            {
-                "title": "Len", 
-                "html": "/media/lektura/len_.html", 
-                "html_size": 18678, 
-                "id": 1575, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Lew chory", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3706, 
-                "html": "/media/lektura/lew-chory-bajki-nowe_.html", 
-                "parent_number": 29, 
-                "id": 1291
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Lew i osie\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3813, 
-                "html": "/media/lektura/lew-i-osiel-bajki-nowe_.html", 
-                "parent_number": 30, 
-                "id": 1325
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Lew i zwierz\u0119ta", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2954, 
-                "html": "/media/lektura/bajki-i-przypowiesci-lew-i-zwierzeta___.html", 
-                "parent_number": 44, 
-                "id": 1265
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Lew i zwierz\u0119ta II", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2768, 
-                "html": "/media/lektura/lew-i-zwierzeta_.html", 
-                "parent_number": 45, 
-                "id": 1138
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Lew pokorny", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1485, 
-                "html": "/media/lektura/lew-pokorny_.html", 
-                "parent_number": 46, 
-                "id": 1215
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Lew, koza, owca i krowa", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2543, 
-                "html": "/media/lektura/lew-koza-owca-i-krowa-bajki-nowe_.html", 
-                "parent_number": 31, 
-                "id": 1300
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Lew, w\u00f3\u0142, lis", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2732, 
-                "html": "/media/lektura/lew-wol-i-lis-bajki-nowe_.html", 
-                "parent_number": 32, 
-                "id": 1299
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Lili nudzi si\u0119", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 6479, 
-                "html": "/media/lektura/but-w-butonierce-lili-nudzi-sie.html", 
-                "parent_number": 14, 
-                "id": 1363
-            }, 
-            {
-                "parent": 291, 
-                "title": "Lilje", 
-                "tags": [
-                    210, 
-                    1, 
-                    23, 
-                    24
-                ], 
-                "html_size": 30966, 
-                "html": "/media/lektura/ballady-i-romanse-lilje____.html", 
-                "parent_number": 0, 
-                "id": 1595
-            }, 
-            {
-                "title": "Liryki loza\u0144skie", 
-                "id": 1875, 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Lis i osie\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1121, 
-                "html": "/media/lektura/lis-i-osiel_.html", 
-                "parent_number": 47, 
-                "id": 1196
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Lis i wilk", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 953, 
-                "html": "/media/lektura/lis-i-wilk_.html", 
-                "parent_number": 48, 
-                "id": 1143
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Lis m\u0142ody i stary", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 747, 
-                "html": "/media/lektura/lis-mlody-i-stary_.html", 
-                "parent_number": 49, 
-                "id": 1151
-            }, 
-            {
-                "title": "List Hanusi", 
-                "html": "/media/lektura/list-hanusi_1.html", 
-                "html_size": 14775, 
-                "id": 2069, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Listek z nieba", 
-                "html": "/media/lektura/listek-z-nieba_.html", 
-                "html_size": 10174, 
-                "id": 1055, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Listy", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2063, 
-                "html": "/media/lektura/listy-bajki-nowe_.html", 
-                "parent_number": 33, 
-                "id": 1260
-            }, 
-            {
-                "title": "Lord Jim", 
-                "html": "/media/lektura/lord-jim.html", 
-                "html_size": 761191, 
-                "id": 1778, 
-                "tags": [
-                    4613, 
-                    338, 
-                    31, 
-                    242
-                ]
-            }, 
-            {
-                "title": "Los mi\u0119 ju\u017c \u017caden nie mo\u017ce zatrwo\u017cy\u0107...", 
-                "html": "/media/lektura/los-mie-juz-zaden-nie-moze-zatrwozyc.html", 
-                "html_size": 2456, 
-                "id": 1989, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Luba! ja wzdycham...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2115, 
-                "html": "/media/lektura/luba-ja-wzdycham_1.html", 
-                "parent_number": 16, 
-                "id": 2213
-            }, 
-            {
-                "title": "Lubi\u0119 tych nagich epok bawi\u0107 si\u0119 wspomnieniem...", 
-                "html": "/media/lektura/lubie-tych-nagich-epok-bawic-sie-wspomnieniem.html", 
-                "html_size": 5365, 
-                "id": 2145, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Lubi\u0119, kiedy kobieta...", 
-                "html": "/media/lektura/lubie-kiedy-kobieta_1.html", 
-                "html_size": 2549, 
-                "id": 2070, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Ludzie", 
-                "html": "/media/lektura/napoj-cienisty-ludzie.html", 
-                "html_size": 2248, 
-                "id": 1729, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Ludzie bezdomni", 
-                "id": 1490, 
-                "tags": [
-                    31, 
-                    128, 
-                    242, 
-                    293
-                ]
-            }, 
-            {
-                "parent": 1490, 
-                "title": "Ludzie bezdomni, tom drugi", 
-                "tags": [
-                    31, 
-                    128, 
-                    242, 
-                    293
-                ], 
-                "html_size": 515325, 
-                "html": "/media/lektura/ludzie-bezdomni-tom-drugi_______.html", 
-                "parent_number": 1, 
-                "id": 1488
-            }, 
-            {
-                "parent": 1490, 
-                "title": "Ludzie bezdomni, tom pierwszy", 
-                "tags": [
-                    31, 
-                    128, 
-                    242, 
-                    293
-                ], 
-                "html_size": 608133, 
-                "html": "/media/lektura/ludzie-bezdomni-tom-pierwszy_______.html", 
-                "parent_number": 0, 
-                "id": 1487
-            }, 
-            {
-                "title": "Ludzie miotaj\u0105 si\u0119, dr\u0119cz\u0105, cierpi\u0105...", 
-                "html": "/media/lektura/ludzie-miotaja-sie-drecza-cierpia.html", 
-                "html_size": 963, 
-                "id": 2071, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Lulaj\u017ce, Jezuniu...", 
-                "html": "/media/lektura/lulajze-jezuniu.html", 
-                "html_size": 4695, 
-                "id": 2036, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Lwica i maciora", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2353, 
-                "html": "/media/lektura/lwica-i-maciora-bajki-nowe_.html", 
-                "parent_number": 34, 
-                "id": 1321
-            }, 
-            {
-                "parent": 1237, 
-                "title": "\u0141akomy i zazdrosny", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2276, 
-                "html": "/media/lektura/lakomy-i-zazdrosny_.html", 
-                "parent_number": 50, 
-                "id": 1178
-            }, 
-            {
-                "title": "Magda", 
-                "html": "/media/lektura/napoj-cienisty-magda.html", 
-                "html_size": 2933, 
-                "id": 1730, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Malarze", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1054, 
-                "html": "/media/lektura/malarze-bajki-nowe_.html", 
-                "parent_number": 35, 
-                "id": 1306
-            }, 
-            {
-                "title": "Malcy", 
-                "html": "/media/lektura/malcy.html", 
-                "html_size": 19271, 
-                "id": 862, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Mali czarodzieje", 
-                "html": "/media/lektura/mali-czarodzieje.html", 
-                "html_size": 7520, 
-                "id": 2168, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "Ma\u0142emu wielkiej nadzieje Radziwi\u0142\u0142owi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3643, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-malemu-wielkiej-nadzieje-radziwillowi____.html", 
-                "parent_number": 45, 
-                "id": 539
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Ma\u0142py", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3659, 
-                "html": "/media/lektura/malpy-bajki-nowe_.html", 
-                "parent_number": 36, 
-                "id": 1285
-            }, 
-            {
-                "parent": 294, 
-                "title": "Ma\u0142\u017ce\u0144stwo", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 14507, 
-                "html": "/media/lektura/satyry-czesc-druga-malzenstwo_______.html", 
-                "parent_number": 0, 
-                "id": 1567
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Ma\u0142\u017ce\u0144stwo", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 863, 
-                "html": "/media/lektura/malzenstwo_.html", 
-                "parent_number": 51, 
-                "id": 1199
-            }, 
-            {
-                "title": "Marcin Swoboda", 
-                "html": "/media/lektura/napoj-cienisty-marcin-swoboda.html", 
-                "html_size": 3736, 
-                "id": 1731, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "Marcinowa powie\u015b\u0107", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2373, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-marcinowa-powiesc____.html", 
-                "parent_number": 46, 
-                "id": 464
-            }, 
-            {
-                "parent": 289, 
-                "title": "Marnotrawstwo", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 28561, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-marnotrawstwo_______.html", 
-                "parent_number": 4, 
-                "id": 240
-            }, 
-            {
-                "title": "Marsjanie", 
-                "html": "/media/lektura/napoj-cienisty-marsjanie.html", 
-                "html_size": 8644, 
-                "id": 1732, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Marsz", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 5746, 
-                "html": "/media/lektura/but-w-butonierce-marsz.html", 
-                "parent_number": 23, 
-                "id": 1364
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Marsz Skaut\u00f3w", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 4800, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-marsz-skautow_.html", 
-                "parent_number": 13, 
-                "id": 1839
-            }, 
-            {
-                "title": "Marsz strzelc\u00f3w", 
-                "html": "/media/lektura/marsz-strzelcow.html", 
-                "html_size": 6562, 
-                "id": 2101, 
-                "tags": [
-                    5268, 
-                    1, 
-                    2, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Marsz \u015blubny", 
-                "html": "/media/lektura/marsz-slubny.html", 
-                "html_size": 1908, 
-                "id": 841, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Marzenie ciekawego", 
-                "html": "/media/lektura/marzenie-ciekawego.html", 
-                "html_size": 1880, 
-                "id": 2146, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Marzenie paryskie", 
-                "html": "/media/lektura/marzenie-paryskie.html", 
-                "html_size": 6179, 
-                "id": 2147, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Maska", 
-                "html": "/media/lektura/kwiaty-zla-maska.html", 
-                "html_size": 4607, 
-                "id": 1885, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Maska \u015bmierci szkar\u0142atnej", 
-                "html": "/media/lektura/maska-smierci-szkarlatnej.html", 
-                "html_size": 20879, 
-                "id": 1633, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Mastodonty", 
-                "html": "/media/lektura/mastodonty_1.html", 
-                "html_size": 3325, 
-                "id": 2072, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Matedory", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2325, 
-                "html": "/media/lektura/matedory_.html", 
-                "parent_number": 52, 
-                "id": 1124
-            }, 
-            {
-                "title": "Matka", 
-                "html": "/media/lektura/matka_.html", 
-                "html_size": 17514, 
-                "id": 1056, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Matysek", 
-                "html": "/media/lektura/napoj-cienisty-matysek.html", 
-                "html_size": 4687, 
-                "id": 1741, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Mazurek", 
-                "html": "/media/lektura/mazurek.html", 
-                "html_size": 3101, 
-                "id": 842, 
-                "tags": [
-                    1564, 
-                    1889, 
-                    1, 
-                    34
-                ]
-            }, 
-            {
-                "title": "Mazurek D\u0105browskiego", 
-                "html": "/media/lektura/mazurek-dabrowskiego.html", 
-                "html_size": 15997, 
-                "id": 2124, 
-                "tags": [
-                    332, 
-                    1, 
-                    34, 
-                    5312
-                ]
-            }, 
-            {
-                "title": "Mazurek m\u0142odzie\u017cy", 
-                "html": "/media/lektura/mazurek-mlodziezy.html", 
-                "html_size": 3055, 
-                "id": 2113, 
-                "tags": [
-                    5148, 
-                    1, 
-                    128, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "M\u0105dry i g\u0142upi", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1397, 
-                "html": "/media/lektura/madry-i-glupi_.html", 
-                "parent_number": 53, 
-                "id": 1228
-            }, 
-            {
-                "parent": 1237, 
-                "title": "M\u0105dry i g\u0142upi II", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 865, 
-                "html": "/media/lektura/madry-i-glupi-ii_.html", 
-                "parent_number": 54, 
-                "id": 1192
-            }, 
-            {
-                "title": "Melancholia", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-melancholia.html", 
-                "html_size": 2086, 
-                "id": 1659, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Melodia mgie\u0142 nocnych", 
-                "html": "/media/lektura/melodia-mgiel-nocnych_1.html", 
-                "html_size": 3474, 
-                "id": 2073, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Mendel gda\u0144ski", 
-                "html": "/media/lektura/mendel-gdanski.html", 
-                "html_size": 77870, 
-                "id": 963, 
-                "tags": [
-                    31, 
-                    55, 
-                    54, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Metrzengerstein", 
-                "html": "/media/lektura/metrzengerstein.html", 
-                "html_size": 30167, 
-                "id": 1938, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "M\u0119drcy \u015bwiata...", 
-                "html": "/media/lektura/medrcy-swiata.html", 
-                "html_size": 6115, 
-                "id": 2012, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 294, 
-                "title": "M\u0119drek", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 18056, 
-                "html": "/media/lektura/satyry-czesc-druga-medrek_______.html", 
-                "parent_number": 6, 
-                "id": 12
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Miasto", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 21792, 
-                "html": "/media/lektura/but-w-butonierce-miasto.html", 
-                "parent_number": 19, 
-                "id": 1365
-            }, 
-            {
-                "title": "Mi\u0119dzy nami nic nie by\u0142o", 
-                "html": "/media/lektura/miedzy-nami-nic-nie-bylo_______.html", 
-                "html_size": 1949, 
-                "id": 102, 
-                "tags": [
-                    329, 
-                    1, 
-                    56, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Migo\u0144 i Jawrzon", 
-                "html": "/media/lektura/napoj-cienisty-migon-i-jawrzon.html", 
-                "html_size": 5600, 
-                "id": 1733, 
-                "tags": [
-                    210, 
-                    337, 
-                    1, 
-                    128
-                ]
-            }, 
-            {
-                "title": "Mi\u0142o\u015b\u0107", 
-                "html": "/media/lektura/dzien-jak-co-dzien-milosc.html", 
-                "html_size": 3351, 
-                "id": 1537, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Mi\u0142o\u015b\u0107 na aucie", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 2079, 
-                "html": "/media/lektura/but-w-butonierce-milosc-na-aucie.html", 
-                "parent_number": 7, 
-                "id": 1366
-            }, 
-            {
-                "title": "Mizerna, cicha...", 
-                "html": "/media/lektura/mizerna-cicha_1.html", 
-                "html_size": 8553, 
-                "id": 2022, 
-                "tags": [
-                    5177, 
-                    1, 
-                    2, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "M\u0142ot z kowad\u0142em", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2507, 
-                "html": "/media/lektura/mlot-z-kowadlem-bajki-nowe_.html", 
-                "parent_number": 37, 
-                "id": 1256
-            }, 
-            {
-                "parent": 1333, 
-                "title": "M\u0142ynarz, syn jego i osie\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 6877, 
-                "html": "/media/lektura/mlynarz-syn-jego-i-osiel-bajki-nowe_.html", 
-                "parent_number": 38, 
-                "id": 1249
-            }, 
-            {
-                "title": "Modlitwa", 
-                "html": "/media/lektura/napoj-cienisty-modlitwa.html", 
-                "html_size": 1989, 
-                "id": 1734, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "Modlitwa o deszcz", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2236, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-modlitwa-o-deszcz____.html", 
-                "parent_number": 47, 
-                "id": 649
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Modlitwa polskiego dziewcz\u0119cia", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 4331, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-modlitwa-polskiego-dziewczecia_.html", 
-                "parent_number": 9, 
-                "id": 1840
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Modlitwa za Ojczyzn\u0119", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2405, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-modlitwa-za-ojczyzne_.html", 
-                "parent_number": 8, 
-                "id": 1841
-            }, 
-            {
-                "title": "Moesta et errabunda", 
-                "html": "/media/lektura/moesta-et-errabunda.html", 
-                "html_size": 4425, 
-                "id": 2148, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Mogi\u0142a wykl\u0119tego poety", 
-                "html": "/media/lektura/mogia-wykletego-poety.html", 
-                "html_size": 1917, 
-                "id": 2156, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Mogi\u0142y haremu", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 5189, 
-                "html": "/media/lektura/sonety-krymskie-mogily-haremu_______.html", 
-                "parent_number": 9, 
-                "id": 1789
-            }, 
-            {
-                "title": "Moja ojczyzna", 
-                "html": "/media/lektura/moja-ojczyzna.html", 
-                "html_size": 3002, 
-                "id": 1933, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 293, 
-                "title": "Moja pie\u015b\u0144 wieczorna", 
-                "tags": [
-                    332, 
-                    339, 
-                    1, 
-                    128
-                ], 
-                "html_size": 42682, 
-                "html": "/media/lektura/hymny-moja-piesn-wieczorna_.html", 
-                "parent_number": 3, 
-                "id": 715
-            }, 
-            {
-                "title": "Moja piosnka", 
-                "html": "/media/lektura/moja-piosnka.html", 
-                "html_size": 3575, 
-                "id": 1088, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Monachomachia", 
-                "html": "/media/lektura/monachomachia.html", 
-                "html_size": 151430, 
-                "id": 1847, 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    4653
-                ]
-            }, 
-            {
-                "title": "Moralno\u015b\u0107 pani Dulskiej", 
-                "html": "/media/lektura/moralnosc-pani-dulskiej___________.html", 
-                "html_size": 346508, 
-                "id": 1555, 
-                "tags": [
-                    152, 
-                    128, 
-                    3337, 
-                    154
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Morga", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 4395, 
-                "html": "/media/lektura/but-w-butonierce-morga_.html", 
-                "parent_number": 4, 
-                "id": 1367
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Motto i dedykacja", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 2442, 
-                "html": "/media/lektura/sonety-krymskie-motto-i-dedykacja_______.html", 
-                "parent_number": 0, 
-                "id": 1780
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Motyl i chrz\u0105szcz", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1799, 
-                "html": "/media/lektura/motyl-i-chrzaszcz-bajki-nowe_.html", 
-                "parent_number": 39, 
-                "id": 1254
-            }, 
-            {
-                "title": "Motylek", 
-                "html": "/media/lektura/motylek_.html", 
-                "html_size": 8503, 
-                "id": 1057, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "M\u00f3j Adamito - widzisz, jak to trudne...", 
-                "html": "/media/lektura/moj-adamito-widzisz,-jak-to-trudne.html", 
-                "html_size": 3145, 
-                "id": 2005, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "M\u00f3wi\u0119 z sob\u0105...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2534, 
-                "html": "/media/lektura/mowie-z-soba.html", 
-                "parent_number": 17, 
-                "id": 2211
-            }, 
-            {
-                "title": "M\u00f3zg lat 12", 
-                "html": "/media/lektura/dzien-jak-co-dzien-mozg-lat-12.html", 
-                "html_size": 3799, 
-                "id": 1630, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Muza chora", 
-                "html": "/media/lektura/muza-chora_1.html", 
-                "html_size": 3014, 
-                "id": 2150, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Muza sprzedajna", 
-                "html": "/media/lektura/muza-sprzedajna.html", 
-                "html_size": 2358, 
-                "id": 2151, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Muzyka", 
-                "html": "/media/lektura/muzyka.html", 
-                "html_size": 1766, 
-                "id": 2152, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Mysi-kr\u00f3lik i nied\u017awied\u017a", 
-                "html": "/media/lektura/mysi-krolik-i-niedzwiedz.html", 
-                "html_size": 11214, 
-                "id": 2169, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Mysz i kot", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2168, 
-                "html": "/media/lektura/mysz-i-kot.html", 
-                "parent_number": 55, 
-                "id": 1339
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Myszy", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1851, 
-                "html": "/media/lektura/myszy-bajki-nowe_.html", 
-                "parent_number": 40, 
-                "id": 1261
-            }, 
-            {
-                "title": "Na Anio\u0142 Pa\u0144ski", 
-                "html": "/media/lektura/na-aniol-panski_1.html", 
-                "html_size": 10202, 
-                "id": 2074, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na Barbar\u0119", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 4455, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-barbare_____.html", 
-                "parent_number": 0, 
-                "id": 1586
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na butnego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 797, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-butnego_____.html", 
-                "parent_number": 34, 
-                "id": 588
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na Chmur\u0119", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1109, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-chmure____.html", 
-                "parent_number": 53, 
-                "id": 686
-            }, 
-            {
-                "parent": 710, 
-                "title": "Na dom w Czarnolesie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1577, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-na-dom-w-czarnolesie____.html", 
-                "parent_number": 48, 
-                "id": 655
-            }, 
-            {
-                "title": "Na drzewie zawis\u0142 w\u0105\u017c...", 
-                "html": "/media/lektura/na-drzewie-zawisl-waz.html", 
-                "html_size": 4666, 
-                "id": 1953, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na Fortun\u0119", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1710, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-fortune_____.html", 
-                "parent_number": 35, 
-                "id": 650
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na frasowne", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 831, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-frasowne_____.html", 
-                "parent_number": 36, 
-                "id": 674
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na frasownego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 678, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-frasownego_____.html", 
-                "parent_number": 37, 
-                "id": 547
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na fraszki", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 912, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-fraszki____.html", 
-                "parent_number": 54, 
-                "id": 570
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na gospodarza", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1379, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-gospodarza_____.html", 
-                "parent_number": 38, 
-                "id": 676
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na grzebie\u0144", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1023, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-grzebien_____.html", 
-                "parent_number": 39, 
-                "id": 456
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na hardego (Nie b\u0105d\u017a mi hardym, chocia\u015b wielkim panem...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 799, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-hardego-nie-badz-mi-hardym-chocia_____.html", 
-                "parent_number": 40, 
-                "id": 600
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na hardego (Nie chc\u0119 w tej mierze g\u0142owy psowa\u0107 sobie...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1019, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-hardego-nie-chce-w-tej-mierze-glo_____.html", 
-                "parent_number": 41, 
-                "id": 447
-            }, 
-            {
-                "parent": 710, 
-                "title": "Na heretyki", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2468, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-na-heretyki____.html", 
-                "parent_number": 60, 
-                "id": 556
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na historyj\u0105 troja\u0144sk\u0105", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1535, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-historyja-trojanska____.html", 
-                "parent_number": 64, 
-                "id": 581
-            }, 
-            {
-                "parent": 773, 
-                "title": "Na jeziorach w\u0142oskich", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 18866, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-alp-na-jeziorach-wloskich__.html", 
-                "parent_number": 8, 
-                "id": 1579
-            }, 
-            {
-                "parent": 773, 
-                "title": "Na jeziorze Czterech Kanton\u00f3w", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 21046, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-alp-na-jeziorze-czterech-kantonow__.html", 
-                "parent_number": 0, 
-                "id": 760
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na kogo\u015b", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 882, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-kogos_____.html", 
-                "parent_number": 42, 
-                "id": 574
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na Konrata", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 672, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-konrata_____.html", 
-                "parent_number": 43, 
-                "id": 441
-            }, 
-            {
-                "title": "Na krzy\u017cyk na piersiach jednej panny", 
-                "html": "/media/lektura/na-krzyzyk-na-piersiach-jednej-panny_______.html", 
-                "html_size": 1944, 
-                "id": 195, 
-                "tags": [
-                    123, 
-                    1, 
-                    122, 
-                    22
-                ]
-            }, 
-            {
-                "parent": 709, 
-                "title": "Na Leliw\u0119 Tarnowskich", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1194, 
-                "html": "/media/lektura/fraszki-fraszki-dodane-na-leliwe-tarnowskich____.html", 
-                "parent_number": 1, 
-                "id": 459
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na lip\u0119 (Go\u015bciu, si\u0105d\u017a pod mym li\u015bciem, a odpoczni sobie!)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1969, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-lipe-gosciu-siadz-pod-mym-lisciem-a-____.html", 
-                "parent_number": 65, 
-                "id": 698
-            }, 
-            {
-                "parent": 710, 
-                "title": "Na lip\u0119 (Przypatrz si\u0119, go\u015bciu, jako on list m\u00f3j zielony...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1046, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-na-lipe-przypatrz-sie-gosciu-jako-on-____.html", 
-                "parent_number": 61, 
-                "id": 582
-            }, 
-            {
-                "parent": 710, 
-                "title": "Na lip\u0119 (Uczony go\u015bciu! Je\u015bli spraw\u0105 mego cienia...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1839, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-na-lipe-uczony-gosciu-jesli-sprawa-me____.html", 
-                "parent_number": 62, 
-                "id": 613
-            }, 
-            {
-                "parent": 773, 
-                "title": "Na lodowcach Aletschu", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 6005, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-alp-na-lodowcach-aletschu__.html", 
-                "parent_number": 3, 
-                "id": 761
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na \u0142akome", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1182, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-lakome_____.html", 
-                "parent_number": 44, 
-                "id": 669
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na \u0142akomego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1052, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-lakomego____.html", 
-                "parent_number": 66, 
-                "id": 485
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na matematyka", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1527, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-matematyka_____.html", 
-                "parent_number": 0, 
-                "id": 1584
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na Matusza", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 562, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-matusza_____.html", 
-                "parent_number": 46, 
-                "id": 696
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na miernika", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1388, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-miernika_____.html", 
-                "parent_number": 0, 
-                "id": 1583
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na m\u0142odo\u015b\u0107", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 698, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-mlodosc_____.html", 
-                "parent_number": 0, 
-                "id": 1594
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na most warszewski", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2083, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-most-warszewski____.html", 
-                "parent_number": 67, 
-                "id": 594
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na nabo\u017cn\u0105", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 717, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-nabozna_____.html", 
-                "parent_number": 0, 
-                "id": 1593
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na nieodpowiedn\u0105", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 706, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-nieodpowiedna_____.html", 
-                "parent_number": 50, 
-                "id": 540
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na nies\u0142own\u0105", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1133, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-nieslowna_____.html", 
-                "parent_number": 51, 
-                "id": 462
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na nies\u0142ownego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 816, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-nieslownego_____.html", 
-                "parent_number": 52, 
-                "id": 465
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na obraz Andrzeja Patrycego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 552, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-obraz-andrzeja-patrycego____.html", 
-                "parent_number": 70, 
-                "id": 629
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na pany", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1493, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-pany_____.html", 
-                "parent_number": 53, 
-                "id": 507
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na pieszczone ziemiany", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 798, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-pieszczone-ziemiany_____.html", 
-                "parent_number": 54, 
-                "id": 615
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na pijanego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1440, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-pijanego_____.html", 
-                "parent_number": 55, 
-                "id": 550
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na Piotra", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 715, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-piotra____.html", 
-                "parent_number": 71, 
-                "id": 678
-            }, 
-            {
-                "title": "Na poddaszu", 
-                "html": "/media/lektura/napoj-cienisty-na-poddaszu.html", 
-                "html_size": 2014, 
-                "id": 1759, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na poduszk\u0119", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2077, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-poduszke_____.html", 
-                "parent_number": 0, 
-                "id": 1587
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na pos\u0142a papieskiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1581, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-posla-papieskiego_____.html", 
-                "parent_number": 57, 
-                "id": 583
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na pszczo\u0142y budziwiskie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1265, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-pszczoly-budziwiskie____.html", 
-                "parent_number": 72, 
-                "id": 635
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na r\u00f3\u017c\u0105", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1013, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-roza____.html", 
-                "parent_number": 73, 
-                "id": 690
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na rym nierozmy\u015blny", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 550, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-rym-nierozmyslny____.html", 
-                "parent_number": 74, 
-                "id": 467
-            }, 
-            {
-                "parent": 709, 
-                "title": "Na s\u0142ownik M\u0105czy\u0144skiego", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1153, 
-                "html": "/media/lektura/fraszki-fraszki-dodane-na-slownik-maczynskiego____.html", 
-                "parent_number": 2, 
-                "id": 671
-            }, 
-            {
-                "parent": 710, 
-                "title": "Na s\u0142up kamienny", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1595, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-na-slup-kamienny____.html", 
-                "parent_number": 63, 
-                "id": 677
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na Sokalskie mogi\u0142y", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1225, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-sokalskie-mogily_____.html", 
-                "parent_number": 58, 
-                "id": 535
-            }, 
-            {
-                "title": "Na sprowadzenie proch\u00f3w Napoleona", 
-                "html": "/media/lektura/na-sprowadzenie-prochow-napoleona.html", 
-                "html_size": 6483, 
-                "id": 1954, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na star\u0105", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1704, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-stara_____.html", 
-                "parent_number": 59, 
-                "id": 534
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na staro\u015b\u0107", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 657, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-starosc_____.html", 
-                "parent_number": 60, 
-                "id": 623
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na stryja", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1644, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-stryja_____.html", 
-                "parent_number": 61, 
-                "id": 430
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na swoje ksi\u0119gi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2613, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-swoje-ksiegi_____.html", 
-                "parent_number": 62, 
-                "id": 427
-            }, 
-            {
-                "parent": 287, 
-                "title": "Na szczycie", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2280, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-tatr-na-szczycie_.html", 
-                "parent_number": 0, 
-                "id": 772
-            }, 
-            {
-                "parent": 710, 
-                "title": "Na \u015bklenic\u0119", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1065, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-na-sklenice____.html", 
-                "parent_number": 64, 
-                "id": 665
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na \u015alas\u0119", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1020, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-slase_____.html", 
-                "parent_number": 63, 
-                "id": 471
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na \u015bmier\u0107", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 677, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-smierc_____.html", 
-                "parent_number": 64, 
-                "id": 626
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na \u015awi\u0119tego Ojca", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1106, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-swietego-ojca_____.html", 
-                "parent_number": 65, 
-                "id": 638
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na ten\u017ce (Nie wo\u0142a dzi\u015b przewo\u017anik: \u201eWsiadaj, kto ma wsiada\u0107!)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1824, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-tenze-nie-wola-dzis-przewoznik-wsiad____.html", 
-                "parent_number": 68, 
-                "id": 407
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na ten\u017ce (To jest on brzeg szcz\u0119\u015bliwy, gdzie na czasy wieczne...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1897, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-tenze-to-jest-on-brzeg-szczesliwy-gd____.html", 
-                "parent_number": 69, 
-                "id": 645
-            }, 
-            {
-                "parent": 773, 
-                "title": "Na Teufelsbruecke", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 6453, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-alp-na-teufelsbruecke__.html", 
-                "parent_number": 1, 
-                "id": 762
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na to\u017c (G\u0142adko\u015b\u0107 od ciebie, Wenus, ale nie trwa w mierze...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1126, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-toz-gladkosc-od-ciebie-wenus-ale-nie____.html", 
-                "parent_number": 81, 
-                "id": 511
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na uczt\u0119", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1638, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-uczte_____.html", 
-                "parent_number": 0, 
-                "id": 1591
-            }, 
-            {
-                "parent": 708, 
-                "title": "Na utratne", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1451, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-utratne_____.html", 
-                "parent_number": 67, 
-                "id": 689
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na wieniec", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 822, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-wieniec____.html", 
-                "parent_number": 75, 
-                "id": 423
-            }, 
-            {
-                "title": "Na wsi", 
-                "html": "/media/lektura/dzien-jak-co-dzien-na-wsi.html", 
-                "html_size": 3294, 
-                "id": 1539, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Na Wzg\u00f3rzu \u015amierci", 
-                "html": "/media/lektura/na-wzgorzu-smierci.html", 
-                "html_size": 141154, 
-                "id": 774, 
-                "tags": [
-                    152, 
-                    1562, 
-                    339, 
-                    128
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "Na zachowanie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1482, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-na-zachowanie____.html", 
-                "parent_number": 76, 
-                "id": 424
-            }, 
-            {
-                "parent": 710, 
-                "title": "Na zdrowie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2362, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-na-zdrowie____.html", 
-                "parent_number": 65, 
-                "id": 661
-            }, 
-            {
-                "title": "Na zegarek ciek\u0105cy", 
-                "html": "/media/lektura/na-zegarek-ciekacy_______.html", 
-                "html_size": 1376, 
-                "id": 45, 
-                "tags": [
-                    123, 
-                    234, 
-                    1, 
-                    122
-                ]
-            }, 
-            {
-                "title": "Nad Niemnem", 
-                "id": 1500, 
-                "tags": [
-                    31, 
-                    2294, 
-                    242, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 1500, 
-                "title": "Nad Niemnem, tom drugi", 
-                "tags": [
-                    31, 
-                    2294, 
-                    242, 
-                    56
-                ], 
-                "html_size": 577080, 
-                "html": "/media/lektura/nad-niemnem-tom-drugi_.html", 
-                "parent_number": 1, 
-                "id": 1498
-            }, 
-            {
-                "parent": 1500, 
-                "title": "Nad Niemnem, tom pierwszy", 
-                "tags": [
-                    31, 
-                    2294, 
-                    242, 
-                    56
-                ], 
-                "html_size": 533496, 
-                "html": "/media/lektura/nad-niemnem-tom-pierwszy.html", 
-                "parent_number": 0, 
-                "id": 1485
-            }, 
-            {
-                "parent": 1500, 
-                "title": "Nad Niemnem, tom trzeci", 
-                "tags": [
-                    31, 
-                    2294, 
-                    242, 
-                    56
-                ], 
-                "html_size": 677234, 
-                "html": "/media/lektura/nad-niemnem-tom-trzeci.html", 
-                "parent_number": 2, 
-                "id": 1499
-            }, 
-            {
-                "title": "Nad przepa\u015bciami", 
-                "id": 742, 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Nad ranem", 
-                "html": "/media/lektura/napoj-cienisty-nad-ranem.html", 
-                "html_size": 2322, 
-                "id": 1757, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Nad wod\u0105 wielk\u0105 i czyst\u0105...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2926, 
-                "html": "/media/lektura/nad-woda-wielka-i-czysta.html", 
-                "parent_number": 4, 
-                "id": 1866
-            }, 
-            {
-                "title": "Nadgrobek Perlisi", 
-                "html": "/media/lektura/nadgrobek-perlisi_______.html", 
-                "html_size": 6969, 
-                "id": 13, 
-                "tags": [
-                    123, 
-                    1, 
-                    122, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Nadzieja i boja\u017a\u0144", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2828, 
-                "html": "/media/lektura/nadzieja-i-bojazn-bajki-nowe_.html", 
-                "parent_number": 41, 
-                "id": 1318
-            }, 
-            {
-                "parent": 711, 
-                "title": "Nagrobek Adrianowi doktorowi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 715, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-adrianowi-doktorowi____.html", 
-                "parent_number": 55, 
-                "id": 521
-            }, 
-            {
-                "parent": 711, 
-                "title": "Nagrobek Annie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1899, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-annie____.html", 
-                "parent_number": 56, 
-                "id": 637
-            }, 
-            {
-                "parent": 710, 
-                "title": "Nagrobek dwiema braciej", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1202, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-dwiema-braciej____.html", 
-                "parent_number": 49, 
-                "id": 619
-            }, 
-            {
-                "parent": 710, 
-                "title": "Nagrobek G\u0105sce", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3854, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-gasce____.html", 
-                "parent_number": 50, 
-                "id": 664
-            }, 
-            {
-                "parent": 710, 
-                "title": "Nagrobek Hannie Spinkowej od m\u0119\u017ca", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1633, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-hannie-spinkowej-od-meza____.html", 
-                "parent_number": 52, 
-                "id": 418
-            }, 
-            {
-                "parent": 710, 
-                "title": "Nagrobek jej M. P. wojewodzinej lubelskiej", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1723, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-jej-m-p-wojewodzinej-lubelsk____.html", 
-                "parent_number": 53, 
-                "id": 636
-            }, 
-            {
-                "parent": 710, 
-                "title": "Nagrobek koniowi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1882, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-koniowi____.html", 
-                "parent_number": 55, 
-                "id": 504
-            }, 
-            {
-                "parent": 710, 
-                "title": "Nagrobek kotowi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1857, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-kotowi____.html", 
-                "parent_number": 56, 
-                "id": 634
-            }, 
-            {
-                "parent": 711, 
-                "title": "Nagrobek m\u0119\u017cowi od \u017cony", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 831, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-mezowi-od-zony____.html", 
-                "parent_number": 57, 
-                "id": 525
-            }, 
-            {
-                "parent": 711, 
-                "title": "Nagrobek Miko\u0142ajowi Trzebuchowskiemu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 723, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-mikolajowi-trzebuchowskiemu____.html", 
-                "parent_number": 58, 
-                "id": 700
-            }, 
-            {
-                "parent": 711, 
-                "title": "Nagrobek opi\u0142ej babie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1315, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-opilej-babie____.html", 
-                "parent_number": 60, 
-                "id": 642
-            }, 
-            {
-                "parent": 711, 
-                "title": "Nagrobek Paw\u0142owi Chmielowskiemu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1454, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-pawlowi-chmielowskiemu____.html", 
-                "parent_number": 61, 
-                "id": 538
-            }, 
-            {
-                "parent": 710, 
-                "title": "Nagrobek Piotrowi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 917, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-piotrowi____.html", 
-                "parent_number": 57, 
-                "id": 603
-            }, 
-            {
-                "parent": 710, 
-                "title": "Nagrobek R\u00f3zynie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 790, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-rozynie____.html", 
-                "parent_number": 58, 
-                "id": 691
-            }, 
-            {
-                "parent": 709, 
-                "title": "Nagrobek Stanis\u0142awowi Grzepskiemu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1644, 
-                "html": "/media/lektura/fraszki-fraszki-dodane-nagrobek-stanislawowi-grzepskiemu____.html", 
-                "parent_number": 0, 
-                "id": 458
-            }, 
-            {
-                "parent": 710, 
-                "title": "Nagrobek Stanis\u0142awowi Strusowi", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1676, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-stanislawowi-strusowi____.html", 
-                "parent_number": 59, 
-                "id": 598
-            }, 
-            {
-                "parent": 711, 
-                "title": "Nagrobek Stanis\u0142awowi Zaklice z Czy\u017cowa", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1641, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-stanislawowi-zaklice-z-czyzowa____.html", 
-                "parent_number": 62, 
-                "id": 707
-            }, 
-            {
-                "title": "Namowa", 
-                "html": "/media/lektura/napoj-cienisty-namowa.html", 
-                "html_size": 3865, 
-                "id": 1758, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Narodzie m\u00f3j...", 
-                "html": "/media/lektura/narodzie-moj.html", 
-                "html_size": 7591, 
-                "id": 1955, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Narodziny Afrodyty", 
-                "html": "/media/lektura/narodziny-afrodyty_1.html", 
-                "html_size": 8120, 
-                "id": 2075, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Narodziny wiosny", 
-                "html": "/media/lektura/narodziny-wiosny_1.html", 
-                "html_size": 5516, 
-                "id": 2076, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Narzeczona", 
-                "html": "/media/lektura/dzien-jak-co-dzien-narzeczona.html", 
-                "html_size": 3587, 
-                "id": 1538, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Nasza szkapa", 
-                "html": "/media/lektura/nasza-szkapa_______.html", 
-                "html_size": 120583, 
-                "id": 11, 
-                "tags": [
-                    31, 
-                    55, 
-                    54, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Nic", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 304, 
-                "html": "/media/lektura/but-w-butonierce-nic.html", 
-                "parent_number": 22, 
-                "id": 1369
-            }, 
-            {
-                "title": "Nie uda\u0142o si\u0119", 
-                "html": "/media/lektura/nie-udalo-sie.html", 
-                "html_size": 6513, 
-                "id": 880, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Nie wierz\u0119 w nic...", 
-                "html": "/media/lektura/nie-wierze-w-nic.html", 
-                "html_size": 3787, 
-                "id": 2077, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Nie-Boska komedia", 
-                "html": "/media/lektura/nie-boska-komedia_______.html", 
-                "html_size": 423298, 
-                "id": 206, 
-                "tags": [
-                    152, 
-                    372, 
-                    373, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Niedawno jeszcze - kiedym spoczywa\u0142 u\u015bpiony...", 
-                "html": "/media/lektura/niedawno-jeszcze-kiedym-spoczywal-uspiony.html", 
-                "html_size": 2745, 
-                "id": 2010, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Niedawno jeszcze wasze mogi\u0142y...", 
-                "html": "/media/lektura/niedawno-jeszcze-wasze-mogily.html", 
-                "html_size": 2332, 
-                "id": 1957, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Niedziela", 
-                "html": "/media/lektura/napoj-cienisty-niedziela.html", 
-                "html_size": 3813, 
-                "id": 1760, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Nied\u017awied\u017a i liszka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1400, 
-                "html": "/media/lektura/niedzwiedz-i-liszka_.html", 
-                "parent_number": 56, 
-                "id": 1137
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Niepewno\u015b\u0107", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 5806, 
-                "html": "/media/lektura/niepewnosc.html", 
-                "parent_number": 19, 
-                "id": 2225
-            }, 
-            {
-                "title": "Niepowrotne", 
-                "html": "/media/lektura/niepowrotne.html", 
-                "html_size": 6279, 
-                "id": 2153, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Niestatek (Oczy s\u0105 ogie\u0144, czo\u0142o jest zwierciad\u0142em...)", 
-                "html": "/media/lektura/niestatek-oczy-sa-ogien-czolo-jest-zwierciadlem_______.html", 
-                "html_size": 3034, 
-                "id": 49, 
-                "tags": [
-                    123, 
-                    234, 
-                    1, 
-                    122
-                ]
-            }, 
-            {
-                "title": "Niestatek (Pr\u0119dzej kto wiatr w w\u00f3r zamknie, pr\u0119dzej i promieni...)", 
-                "html": "/media/lektura/niestatek-predzej-kto-wiatr-w-wor-zamknie-predzej-i-promieni_______.html", 
-                "html_size": 3539, 
-                "id": 201, 
-                "tags": [
-                    123, 
-                    234, 
-                    1, 
-                    122
-                ]
-            }, 
-            {
-                "title": "Nieszcz\u0119\u015bcie", 
-                "html": "/media/lektura/nieszczescie.html", 
-                "html_size": 1759, 
-                "id": 2154, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Nieuczona twa posta\u0107...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 3465, 
-                "html": "/media/lektura/nieuczona-twa-postac.html", 
-                "parent_number": 18, 
-                "id": 2210
-            }, 
-            {
-                "title": "Niewiara", 
-                "html": "/media/lektura/napoj-cienisty-niewiara.html", 
-                "html_size": 2509, 
-                "id": 1761, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Niewidzialni", 
-                "html": "/media/lektura/napoj-cienisty-niewidzialni.html", 
-                "html_size": 2563, 
-                "id": 1762, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Niewiedza", 
-                "html": "/media/lektura/napoj-cienisty-niewiedza.html", 
-                "html_size": 1812, 
-                "id": 1765, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Niewierny", 
-                "html": "/media/lektura/niewierny.html", 
-                "html_size": 4003, 
-                "id": 2078, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Noc", 
-                "html": "/media/lektura/napoj-cienisty-noc.html", 
-                "html_size": 2287, 
-                "id": 1763, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Noc\u0105", 
-                "html": "/media/lektura/napoj-cienisty-noca.html", 
-                "html_size": 2704, 
-                "id": 1764, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Nocni str\u00f3\u017ce", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2602, 
-                "html": "/media/lektura/nocni-stroze_.html", 
-                "parent_number": 57, 
-                "id": 1126
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Noga i but", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2109, 
-                "html": "/media/lektura/noga-i-but-bajki-nowe_.html", 
-                "parent_number": 42, 
-                "id": 1314
-            }, 
-            {
-                "parent": 711, 
-                "title": "O Aleksandrzech", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2104, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-aleksandrzech____.html", 
-                "parent_number": 77, 
-                "id": 571
-            }, 
-            {
-                "parent": 711, 
-                "title": "O Bekwarku", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 625, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-bekwarku____.html", 
-                "parent_number": 78, 
-                "id": 667
-            }, 
-            {
-                "parent": 710, 
-                "title": "O b\u0142a\u017anie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 549, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-blaznie____.html", 
-                "parent_number": 66, 
-                "id": 488
-            }, 
-            {
-                "parent": 1846, 
-                "title": "O celu Polaka", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2098, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-o-celu-polaka_.html", 
-                "parent_number": 2, 
-                "id": 1842
-            }, 
-            {
-                "parent": 708, 
-                "title": "O ch\u0142opcu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1143, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-chlopcu_____.html", 
-                "parent_number": 68, 
-                "id": 481
-            }, 
-            {
-                "parent": 708, 
-                "title": "O chmielu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1130, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-chmielu_____.html", 
-                "parent_number": 69, 
-                "id": 695
-            }, 
-            {
-                "parent": 708, 
-                "title": "O dobrym panie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1029, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-dobrym-panie_____.html", 
-                "parent_number": 70, 
-                "id": 575
-            }, 
-            {
-                "parent": 708, 
-                "title": "O Doktorze Hiszpanie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2803, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-doktorze-hiszpanie_____.html", 
-                "parent_number": 71, 
-                "id": 523
-            }, 
-            {
-                "parent": 711, 
-                "title": "O drugim (Co si\u0119 wam widzi ten drugi?)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1150, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-drugim-co-sie-wam-widzi-ten-drugi____.html", 
-                "parent_number": 88, 
-                "id": 473
-            }, 
-            {
-                "parent": 710, 
-                "title": "O duszy", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1461, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-duszy____.html", 
-                "parent_number": 67, 
-                "id": 506
-            }, 
-            {
-                "parent": 710, 
-                "title": "O flisie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1980, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-flisie____.html", 
-                "parent_number": 68, 
-                "id": 483
-            }, 
-            {
-                "parent": 710, 
-                "title": "O fraszkach (Fraszki tu niepowa\u017cne z statkiem si\u0119 zmiesza\u0142y...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1048, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-fraszkach-fraszki-tu-niepowazne-z-s____.html", 
-                "parent_number": 69, 
-                "id": 480
-            }, 
-            {
-                "parent": 708, 
-                "title": "O fraszkach (Komu sto fraszek zda si\u0119 przeczy\u015b\u0107 ma\u0142o...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 865, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-fraszkach-komu-sto-fraszek-zda-sie_____.html", 
-                "parent_number": 73, 
-                "id": 563
-            }, 
-            {
-                "parent": 708, 
-                "title": "O fraszkach (Najdziesz tu fraszk\u0119 dobr\u0105, najdziesz z\u0142\u0105 i \u015brzedni\u0105...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 705, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-fraszkach-najdziesz-tu-fraszke-dob______.html", 
-                "parent_number": 74, 
-                "id": 631
-            }, 
-            {
-                "parent": 711, 
-                "title": "O fraszkach (Pr\u00f3\u017cno mnie do dziewi\u0105ci lat swe fraszki chowa\u0107...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1267, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-fraszkach-prozno-mnie-do-dziewiaci-la____.html", 
-                "parent_number": 84, 
-                "id": 562
-            }, 
-            {
-                "parent": 711, 
-                "title": "O G\u0105sce", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1570, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-gasce____.html", 
-                "parent_number": 85, 
-                "id": 684
-            }, 
-            {
-                "parent": 708, 
-                "title": "O gospodyniej (Proszono jednej wielkimi pro\u015bbami...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 6722, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-gospodyniej-proszono-jednej-wielki________.html", 
-                "parent_number": 75, 
-                "id": 457
-            }, 
-            {
-                "parent": 708, 
-                "title": "O gospodyniej (Starosta jednej paniej rozkaza\u0142 objawi\u0107...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1048, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-gospodyniej-starosta-jednej-paniej_____.html", 
-                "parent_number": 76, 
-                "id": 455
-            }, 
-            {
-                "parent": 711, 
-                "title": "O go\u015bciu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 929, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-gosciu____.html", 
-                "parent_number": 86, 
-                "id": 490
-            }, 
-            {
-                "parent": 708, 
-                "title": "O Hannie (Serce mi zbieg\u0142o, a nie wiem inaczej...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1316, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-hannie-serce-mi-zbieglo-a-nie-wiem_______.html", 
-                "parent_number": 77, 
-                "id": 469
-            }, 
-            {
-                "parent": 708, 
-                "title": "O Hannie (Tu g\u00f3ra drzewy natkniona...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1363, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-hannie-tu-gora-drzewy-natkniona_____.html", 
-                "parent_number": 78, 
-                "id": 685
-            }, 
-            {
-                "parent": 710, 
-                "title": "O Hektorze", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1689, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-hektorze____.html", 
-                "parent_number": 70, 
-                "id": 413
-            }, 
-            {
-                "parent": 708, 
-                "title": "O J\u0119drzeju", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1906, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-jedrzeju_____.html", 
-                "parent_number": 0, 
-                "id": 1588
-            }, 
-            {
-                "parent": 708, 
-                "title": "O Kachnie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1296, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-kachnie_____.html", 
-                "parent_number": 0, 
-                "id": 1589
-            }, 
-            {
-                "parent": 711, 
-                "title": "O kapelanie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1037, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-kapelanie____.html", 
-                "parent_number": 87, 
-                "id": 425
-            }, 
-            {
-                "parent": 710, 
-                "title": "O kap\u0142anie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 827, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-kaplanie____.html", 
-                "parent_number": 71, 
-                "id": 630
-            }, 
-            {
-                "parent": 711, 
-                "title": "O kaznodziei", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1045, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-kaznodziei____.html", 
-                "parent_number": 89, 
-                "id": 499
-            }, 
-            {
-                "parent": 708, 
-                "title": "O kocie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1293, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-kocie_____.html", 
-                "parent_number": 81, 
-                "id": 429
-            }, 
-            {
-                "parent": 710, 
-                "title": "O ko\u0142nierzu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1003, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-kolnierzu____.html", 
-                "parent_number": 72, 
-                "id": 620
-            }, 
-            {
-                "parent": 710, 
-                "title": "O ko\u017ale", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2073, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-kozle____.html", 
-                "parent_number": 73, 
-                "id": 500
-            }, 
-            {
-                "parent": 711, 
-                "title": "O Ko\u017ale", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1713, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-kozle____.html", 
-                "parent_number": 90, 
-                "id": 505
-            }, 
-            {
-                "parent": 708, 
-                "title": "O ksi\u0119dzu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1713, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-ksiedzu_____.html", 
-                "parent_number": 0, 
-                "id": 1581
-            }, 
-            {
-                "parent": 708, 
-                "title": "O li\u015bcie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 938, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-liscie_____.html", 
-                "parent_number": 83, 
-                "id": 592
-            }, 
-            {
-                "parent": 711, 
-                "title": "O \u0142azarzowych ksi\u0119gach", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 5847, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-lazarzowych-ksiegach____.html", 
-                "parent_number": 91, 
-                "id": 644
-            }, 
-            {
-                "parent": 708, 
-                "title": "O \u0141azickim a Barzym", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1568, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-lazickim-a-barzym_____.html", 
-                "parent_number": 0, 
-                "id": 1582
-            }, 
-            {
-                "parent": 710, 
-                "title": "O \u0142aziebnikach", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 666, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-laziebnikach____.html", 
-                "parent_number": 74, 
-                "id": 496
-            }, 
-            {
-                "parent": 710, 
-                "title": "O Marku", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 807, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-marku____.html", 
-                "parent_number": 75, 
-                "id": 618
-            }, 
-            {
-                "title": "O matce", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-o-matce.html", 
-                "html_size": 2913, 
-                "id": 1660, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 710, 
-                "title": "O m\u0105dro\u015bci", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 852, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-madrosci____.html", 
-                "parent_number": 76, 
-                "id": 672
-            }, 
-            {
-                "parent": 710, 
-                "title": "O Mikoszu", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1882, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-mikoszu____.html", 
-                "parent_number": 77, 
-                "id": 554
-            }, 
-            {
-                "parent": 710, 
-                "title": "O mi\u0142o\u015bci (G\u0142\u00f3d a praca mi\u0142o\u015b\u0107 kazi...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 736, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-milosci-glod-a-praca-milosc-kazi____.html", 
-                "parent_number": 78, 
-                "id": 549
-            }, 
-            {
-                "parent": 711, 
-                "title": "O mi\u0142o\u015bci (Kto naprz\u00f3d pocz\u0105\u0142 Mi\u0142o\u015b\u0107 dzieci\u0119ciem malowa\u0107...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2502, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-milosci-kto-naprzod-poczal-milosc-dzi____.html", 
-                "parent_number": 92, 
-                "id": 683
-            }, 
-            {
-                "parent": 710, 
-                "title": "O mi\u0142o\u015bci (Ma ju\u017c pok\u00f3j Prometeus, lecz ja miasto niego...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2533, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-milosci-ma-juz-pokoj-prometeus-lecz____.html", 
-                "parent_number": 80, 
-                "id": 503
-            }, 
-            {
-                "parent": 708, 
-                "title": "O mi\u0142o\u015bci (Pr\u00f3\u017cno uciec, pr\u00f3\u017cno si\u0119 przed mi\u0142o\u015bci\u0105 schroni\u0107...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 674, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-milosci-prozno-uciec-prozno-sie-pr____.html", 
-                "parent_number": 85, 
-                "id": 553
-            }, 
-            {
-                "parent": 710, 
-                "title": "O Necie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1051, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-necie____.html", 
-                "parent_number": 81, 
-                "id": 614
-            }, 
-            {
-                "title": "O niebie", 
-                "html": "/media/lektura/kamien-o-niebie.html", 
-                "html_size": 2561, 
-                "id": 1686, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "O nowych fraszkach", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2155, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-nowych-fraszkach____.html", 
-                "parent_number": 93, 
-                "id": 531
-            }, 
-            {
-                "parent": 711, 
-                "title": "O Pelopie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3111, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-pelopie____.html", 
-                "parent_number": 94, 
-                "id": 648
-            }, 
-            {
-                "title": "O Polsko moja! Ty\u015b pierwsza \u015bwiatu...", 
-                "html": "/media/lektura/o-polsko-moja-tys-pierwsza-swiatu.html", 
-                "html_size": 4135, 
-                "id": 1998, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "O pra\u0142acie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2769, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-pralacie_____.html", 
-                "parent_number": 86, 
-                "id": 608
-            }, 
-            {
-                "parent": 711, 
-                "title": "O proporcyjej", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 670, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-proporcyjej____.html", 
-                "parent_number": 95, 
-                "id": 656
-            }, 
-            {
-                "parent": 711, 
-                "title": "O rozkoszy", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 663, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-rozkoszy____.html", 
-                "parent_number": 96, 
-                "id": 444
-            }, 
-            {
-                "parent": 711, 
-                "title": "O rozwodzie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2374, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-rozwodzie____.html", 
-                "parent_number": 97, 
-                "id": 414
-            }, 
-            {
-                "parent": 711, 
-                "title": "O Rzymie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1387, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-rzymie____.html", 
-                "parent_number": 98, 
-                "id": 527
-            }, 
-            {
-                "parent": 708, 
-                "title": "O sobie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1160, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-sobie_____.html", 
-                "parent_number": 87, 
-                "id": 621
-            }, 
-            {
-                "title": "O sonecie", 
-                "html": "/media/lektura/o-sonecie_1.html", 
-                "html_size": 2883, 
-                "id": 2079, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "O starym", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1615, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-o-starym____.html", 
-                "parent_number": 99, 
-                "id": 543
-            }, 
-            {
-                "parent": 708, 
-                "title": "O Staszku", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 665, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-staszku_____.html", 
-                "parent_number": 88, 
-                "id": 646
-            }, 
-            {
-                "parent": 710, 
-                "title": "O swych rymiech", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1427, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-swych-rymiech____.html", 
-                "parent_number": 82, 
-                "id": 421
-            }, 
-            {
-                "parent": 708, 
-                "title": "O \u015blachcicu polskim", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 889, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-slachcicu-polskim_____.html", 
-                "parent_number": 89, 
-                "id": 580
-            }, 
-            {
-                "parent": 708, 
-                "title": "O \u015bmierci", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1174, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-smierci_____.html", 
-                "parent_number": 90, 
-                "id": 589
-            }, 
-            {
-                "parent": 710, 
-                "title": "O tej\u017ce (Jako ogie\u0144 a woda r\u00f3\u017cno siebie chodz\u0105...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2586, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-o-tejze-jako-ogien-a-woda-rozno-siebi____.html", 
-                "parent_number": 79, 
-                "id": 436
-            }, 
-            {
-                "parent": 708, 
-                "title": "O tym\u017ce (Wczora pi\u0142 z nami, a dzi\u015b go chowamy...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1191, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-tymze-wczora-pil-z-nami-a-dzis-go-_____.html", 
-                "parent_number": 28, 
-                "id": 624
-            }, 
-            {
-                "parent": 708, 
-                "title": "O tym\u017ce (Wierz\u0119, od pocz\u0105tku \u015bwiata...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1005, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-tymze-wierze-od-poczatku-swiata_____.html", 
-                "parent_number": 2, 
-                "id": 657
-            }, 
-            {
-                "parent": 708, 
-                "title": "O zazdro\u015bci", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1496, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-zazdrosci_____.html", 
-                "parent_number": 91, 
-                "id": 544
-            }, 
-            {
-                "parent": 708, 
-                "title": "O \u017cywocie ludzkim (Fraszki to wszytko, cokolwiek my\u015blemy...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3196, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-zywocie-ludzkim-fraszki-to-wszytko_____.html", 
-                "parent_number": 92, 
-                "id": 411
-            }, 
-            {
-                "parent": 708, 
-                "title": "O \u017cywocie ludzkim (Wieczna My\u015bli, kt\u00f3ra\u015b jest dalej ni\u017c od wieka...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2829, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-zywocie-ludzkim-wieczna-mysli-ktor_____.html", 
-                "parent_number": 93, 
-                "id": 552
-            }, 
-            {
-                "title": "O! Nieszcz\u0119\u015bliwa! O! Uciemi\u0119\u017cona...", 
-                "html": "/media/lektura/o-nieszczesliwa-o-uciemiezona.html", 
-                "html_size": 918, 
-                "id": 1999, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Obrona Sokratesa", 
-                "html": "/media/lektura/obrona-sokratesa.html", 
-                "html_size": 85341, 
-                "id": 2231, 
-                "tags": [
-                    5923, 
-                    31, 
-                    5922, 
-                    177
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Ocean i Tagus rzeka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1925, 
-                "html": "/media/lektura/ocean-i-tagus-rzeka_.html", 
-                "parent_number": 58, 
-                "id": 1224
-            }, 
-            {
-                "title": "Oda do m\u0142odo\u015bci", 
-                "html": "/media/lektura/oda-do-mlodosci_______.html", 
-                "html_size": 7231, 
-                "id": 143, 
-                "tags": [
-                    1, 
-                    23, 
-                    352, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Oda do wolno\u015bci", 
-                "html": "/media/lektura/oda-do-wolnosci.html", 
-                "html_size": 21725, 
-                "id": 1960, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Odd\u017awi\u0119ki", 
-                "html": "/media/lektura/oddzwieki.html", 
-                "html_size": 1809, 
-                "id": 2155, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "parent": 711, 
-                "title": "Odpowied\u017a", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 548, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-odpowiedz____.html", 
-                "parent_number": 79, 
-                "id": 406
-            }, 
-            {
-                "title": "Odpowied\u017a na \"Psalmy przysz\u0142o\u015bci\"", 
-                "html": "/media/lektura/odpowiedz-na-psalmy-przyszlosci_______.html", 
-                "html_size": 13037, 
-                "id": 202, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Odprawa pos\u0142\u00f3w greckich", 
-                "html": "/media/lektura/odprawa-poslow-greckich_______.html", 
-                "html_size": 101508, 
-                "id": 1620, 
-                "tags": [
-                    152, 
-                    3, 
-                    4, 
-                    175
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Ofiara (\u0141uk i sajdak tw\u00f3j, Febe, niech b\u0119dzie, lecz strza\u0142y...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1138, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-ofiara-luk-i-sajdak-twoj-febe-niech-____.html", 
-                "parent_number": 72, 
-                "id": 578
-            }, 
-            {
-                "parent": 711, 
-                "title": "Ofiara (Pafijej swe zwierciad\u0142o Lais po\u015bwi\u0119ci\u0142a...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1148, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-ofiara-pafijej-swe-zwierciadlo-lais-pos____.html", 
-                "parent_number": 80, 
-                "id": 518
-            }, 
-            {
-                "parent": 711, 
-                "title": "Ofiara (Ten pas Greta, podstarzawszy sobie...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 633, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-ofiara-ten-pas-greta-podstarzawszy-sobi____.html", 
-                "parent_number": 82, 
-                "id": 546
-            }, 
-            {
-                "parent": 711, 
-                "title": "Ofiara (T\u0119 sie\u0107 Miko\u0142aj \u015bwi\u0119tym ofiaruje...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 812, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-ofiara-te-siec-mikolaj-swietym-ofiaruje____.html", 
-                "parent_number": 83, 
-                "id": 680
-            }, 
-            {
-                "parent": 1614, 
-                "title": "Oficer", 
-                "tags": [
-                    31, 
-                    54, 
-                    2294, 
-                    56
-                ], 
-                "html_size": 195413, 
-                "html": "/media/lektura/gloria-victis-oficer.html", 
-                "parent_number": 1, 
-                "id": 1610
-            }, 
-            {
-                "title": "Ogniem i mieczem", 
-                "id": 1774, 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "parent": 1774, 
-                "title": "Ogniem i mieczem, tom drugi", 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ], 
-                "html_size": 1669133, 
-                "html": "/media/lektura/ogniem-i-mieczem-tom-drugi.html", 
-                "parent_number": 1, 
-                "id": 1773
-            }, 
-            {
-                "parent": 1774, 
-                "title": "Ogniem i mieczem, tom pierwszy", 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ], 
-                "html_size": 2074388, 
-                "html": "/media/lektura/ogniem-i-mieczem-tom-pierwszy__.html", 
-                "parent_number": 0, 
-                "id": 1772
-            }, 
-            {
-                "title": "Oj Malu\u015bki, Malu\u015bki...", 
-                "html": "/media/lektura/oj-maluski-maluski.html", 
-                "html_size": 9707, 
-                "id": 2024, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Ojciec Goriot", 
-                "html": "/media/lektura/ojciec-goriot__.html", 
-                "html_size": 764033, 
-                "id": 835, 
-                "tags": [
-                    1812, 
-                    31, 
-                    242, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Ojciec \u0142akomy", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 977, 
-                "html": "/media/lektura/ojciec-lakomy_.html", 
-                "parent_number": 59, 
-                "id": 1164
-            }, 
-            {
-                "parent": 1562, 
-                "title": "Ojciec zad\u017cumionych", 
-                "tags": [
-                    1, 
-                    1756, 
-                    24, 
-                    189
-                ], 
-                "html_size": 51190, 
-                "html": "/media/lektura/trzy-poemata-ojciec-zadzumionych.html", 
-                "parent_number": 0, 
-                "id": 1559
-            }, 
-            {
-                "title": "Olbrzymka", 
-                "html": "/media/lektura/kwiaty-zla-olbrzymka.html", 
-                "html_size": 2158, 
-                "id": 1899, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 829, 
-                "title": "Oleszkiewicz", 
-                "tags": [
-                    31, 
-                    23, 
-                    1660, 
-                    24
-                ], 
-                "html_size": 15096, 
-                "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-oleszkiewicz.html", 
-                "parent_number": 5, 
-                "id": 822
-            }, 
-            {
-                "parent": 1614, 
-                "title": "Oni", 
-                "tags": [
-                    31, 
-                    54, 
-                    2294, 
-                    56
-                ], 
-                "html_size": 152480, 
-                "html": "/media/lektura/gloria-victis-oni.html", 
-                "parent_number": 0, 
-                "id": 1611
-            }, 
-            {
-                "title": "Opowiadanie", 
-                "html": "/media/lektura/nuta-czlowiecza-opowiadanie.html", 
-                "html_size": 4290, 
-                "id": 1694, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Oracze i Jowisz", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1222, 
-                "html": "/media/lektura/oracze-i-jowisz_.html", 
-                "parent_number": 60, 
-                "id": 1157
-            }, 
-            {
-                "title": "Order", 
-                "html": "/media/lektura/order.html", 
-                "html_size": 9623, 
-                "id": 863, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 287, 
-                "title": "Orze\u0142", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2876, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-tatr-orzel__.html", 
-                "parent_number": 1, 
-                "id": 1631
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Orze\u0142 i jastrz\u0105b", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1592, 
-                "html": "/media/lektura/orzel-i-jastrzab_.html", 
-                "parent_number": 61, 
-                "id": 1120
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Orze\u0142 i sowa", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1207, 
-                "html": "/media/lektura/orzel-i-sowa_.html", 
-                "parent_number": 62, 
-                "id": 1162
-            }, 
-            {
-                "title": "Orze\u0142 i sroka", 
-                "html": "/media/lektura/orzel-i-sroka.html", 
-                "html_size": 1126, 
-                "id": 843, 
-                "tags": [
-                    1888, 
-                    31, 
-                    1889, 
-                    34
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Osie\u0142 i baran", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1195, 
-                "html": "/media/lektura/osiel-i-baran_.html", 
-                "parent_number": 63, 
-                "id": 1201
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Osie\u0142 i w\u00f3\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1547, 
-                "html": "/media/lektura/osiel-i-wol_.html", 
-                "parent_number": 64, 
-                "id": 1123
-            }, 
-            {
-                "title": "Ostatni despotyzm", 
-                "html": "/media/lektura/ostatni-despotyzm.html", 
-                "html_size": 3865, 
-                "id": 1089, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Ostatnie wspomnienie. Do Laury", 
-                "html": "/media/lektura/ostatnie-wspomnienie-do-laury.html", 
-                "html_size": 10746, 
-                "id": 1961, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 289, 
-                "title": "Oszcz\u0119dno\u015b\u0107", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 25616, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-oszczednosc_______.html", 
-                "parent_number": 5, 
-                "id": 179
-            }, 
-            {
-                "title": "Otch\u0142a\u0144", 
-                "html": "/media/lektura/kwiaty-zla-otchlan.html", 
-                "html_size": 3126, 
-                "id": 1900, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Oto B\u00f3g, kt\u00f3ry \u0142ona tajemnic odmyka...", 
-                "html": "/media/lektura/oto-bog-ktory-lona-tajemnic-odmyka.html", 
-                "html_size": 9650, 
-                "id": 1962, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Owieczka i pasterz", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1537, 
-                "html": "/media/lektura/owieczka-i-pasterz_.html", 
-                "parent_number": 65, 
-                "id": 1169
-            }, 
-            {
-                "parent": 289, 
-                "title": "Palinodia", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 25239, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-palinodia_______.html", 
-                "parent_number": 12, 
-                "id": 237
-            }, 
-            {
-                "title": "Pami\u0119ci zniknionego", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-pamieci-zniknionego.html", 
-                "html_size": 4501, 
-                "id": 1661, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Pami\u0119\u0107 --- to cmentarz...", 
-                "html": "/media/lektura/pamiec-to-cmentarz_1.html", 
-                "html_size": 6766, 
-                "id": 2080, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Pan Grubas", 
-                "html": "/media/lektura/pan-grubas.html", 
-                "html_size": 5621, 
-                "id": 2170, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Pan i kotka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1424, 
-                "html": "/media/lektura/pan-i-kotka_.html", 
-                "parent_number": 66, 
-                "id": 1163
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Pan i pies", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1202, 
-                "html": "/media/lektura/pan-i-pies_.html", 
-                "parent_number": 67, 
-                "id": 1190
-            }, 
-            {
-                "parent": 289, 
-                "title": "Pan niewart s\u0142ugi", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 25533, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-pan-niewart-slugi_______.html", 
-                "parent_number": 10, 
-                "id": 123
-            }, 
-            {
-                "title": "Pan Tadeusz, czyli ostatni zajazd na Litwie", 
-                "html": "/media/lektura/pan-tadeusz.html", 
-                "html_size": 1216606, 
-                "id": 1936, 
-                "tags": [
-                    31, 
-                    4982, 
-                    23, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Pan Wo\u0142odyjowski", 
-                "html": "/media/lektura/pan-wolodyjowski.html", 
-                "html_size": 1941361, 
-                "id": 1777, 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "parent": 291, 
-                "title": "Pani Twardowska", 
-                "tags": [
-                    210, 
-                    1, 
-                    23, 
-                    24
-                ], 
-                "html_size": 15990, 
-                "html": "/media/lektura/ballady-i-romanse-pani-twardowska_______.html", 
-                "parent_number": 0, 
-                "id": 1596
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Panienki w lesie", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 1604, 
-                "html": "/media/lektura/but-w-butonierce-panienki-w-lesie.html", 
-                "parent_number": 6, 
-                "id": 1370
-            }, 
-            {
-                "parent": 1614, 
-                "title": "Panna R\u00f3\u017ca", 
-                "tags": [
-                    31, 
-                    54, 
-                    2294, 
-                    56
-                ], 
-                "html_size": 91403, 
-                "html": "/media/lektura/gloria-victis-panna-roza.html", 
-                "parent_number": 7, 
-                "id": 1612
-            }, 
-            {
-                "title": "Pannie Jadwidze Tar\u00f3\u0142wnie kwoli", 
-                "html": "/media/lektura/pannie-jadwidze-tarolwnie-kwoli.html", 
-                "html_size": 12618, 
-                "id": 790, 
-                "tags": [
-                    123, 
-                    1, 
-                    1565, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Papuga i wiewi\u00f3rka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3041, 
-                "html": "/media/lektura/papuga-i-wiewiorka_.html", 
-                "parent_number": 68, 
-                "id": 1147
-            }, 
-            {
-                "title": "Parodia \u017cycia", 
-                "html": "/media/lektura/parodia-zycia_1.html", 
-                "html_size": 1775, 
-                "id": 2081, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Pary\u017c", 
-                "html": "/media/lektura/paryz.html", 
-                "html_size": 15120, 
-                "id": 1963, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Pasterz i morze", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 5490, 
-                "html": "/media/lektura/pasterz-i-morze-bajki-nowe_.html", 
-                "parent_number": 43, 
-                "id": 1308
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Pasterz i owce", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2340, 
-                "html": "/media/lektura/pasterz-i-owce-bajki-nowe_.html", 
-                "parent_number": 44, 
-                "id": 1304
-            }, 
-            {
-                "title": "Pastuszek", 
-                "html": "/media/lektura/pastuszek.html", 
-                "html_size": 5150, 
-                "id": 2171, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Pastuszka g\u0119si", 
-                "html": "/media/lektura/pastuszka-gesi.html", 
-                "html_size": 13064, 
-                "id": 2172, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Paw i orze\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2320, 
-                "html": "/media/lektura/paw-i-orzel_.html", 
-                "parent_number": 69, 
-                "id": 1229
-            }, 
-            {
-                "title": "Pejza\u017c wsp\u00f3\u0142czesny", 
-                "html": "/media/lektura/napoj-cienisty-pejzaz-wspolczesny.html", 
-                "html_size": 6563, 
-                "id": 1742, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 709, 
-                "title": "Pe\u0142na prze zdrowie", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2003, 
-                "html": "/media/lektura/fraszki-fraszki-dodane-pelna-prze-zdrowie____.html", 
-                "parent_number": 3, 
-                "id": 567
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Perche?", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    121
-                ], 
-                "html_size": 3878, 
-                "html": "/media/lektura/but-w-butonierce-perche.html", 
-                "parent_number": 8, 
-                "id": 1371
-            }, 
-            {
-                "parent": 829, 
-                "title": "Petersburg", 
-                "tags": [
-                    31, 
-                    23, 
-                    1660, 
-                    24
-                ], 
-                "html_size": 24851, 
-                "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-petersburg.html", 
-                "parent_number": 2, 
-                "id": 823
-            }, 
-            {
-                "title": "P\u0119kni\u0119ty dzwon", 
-                "html": "/media/lektura/kwiaty-zla-pekniety-dzwon.html", 
-                "html_size": 2181, 
-                "id": 1901, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Pielgrzym", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 3262, 
-                "html": "/media/lektura/sonety-krymskie-pielgrzym_______.html", 
-                "parent_number": 14, 
-                "id": 1793
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Pieniacze", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2741, 
-                "html": "/media/lektura/pieniacze_.html", 
-                "parent_number": 70, 
-                "id": 1211
-            }, 
-            {
-                "title": "Pier\u015bcie\u0144 Wielkiej Damy", 
-                "html": "/media/lektura/pierscien-wielkiej-damy.html", 
-                "html_size": 334414, 
-                "id": 1715, 
-                "tags": [
-                    152, 
-                    2308, 
-                    24, 
-                    175
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Pierwszy raz jam niewolnik...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2461, 
-                "html": "/media/lektura/pierwszy-raz-jam-niewolnik.html", 
-                "parent_number": 20, 
-                "id": 2209
-            }, 
-            {
-                "title": "Pies Baskerville'\u00f3w", 
-                "html": "/media/lektura/pies-baskervilleow_1.html", 
-                "html_size": 429047, 
-                "id": 2197, 
-                "tags": [
-                    5650, 
-                    31, 
-                    128, 
-                    242
-                ]
-            }, 
-            {
-                "title": "Pies i wr\u00f3bel", 
-                "html": "/media/lektura/pies-i-wrobel.html", 
-                "html_size": 16008, 
-                "id": 2173, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Pie\u015bni", 
-                "id": 1459, 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144", 
-                "html": "/media/lektura/piesn.html", 
-                "html_size": 5865, 
-                "id": 791, 
-                "tags": [
-                    123, 
-                    1564, 
-                    1, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-piesn.html", 
-                "html_size": 4204, 
-                "id": 1718, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 (Czego chcesz od nas, Panie, za Twe hojne dary?)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5429, 
-                "html": "/media/lektura/fragmenta-piesn-czego-chcesz-od-nas-panie.html", 
-                "parent_number": 0, 
-                "id": 1403
-            }, 
-            {
-                "title": "Pie\u015b\u0144 filaret\u00f3w", 
-                "html": "/media/lektura/piesn-filaretow.html", 
-                "html_size": 5473, 
-                "id": 735, 
-                "tags": [
-                    1, 
-                    23, 
-                    2, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 I (By\u015b wszystko z\u0142oto posiad\u0142, kt\u00f3re - powiadaj\u0105...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 21904, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-i_.html", 
-                "parent_number": 0, 
-                "id": 1407
-            }, 
-            {
-                "title": "Pie\u015b\u0144 I (Na psalm Dawid\u00f3w XIX)", 
-                "html": "/media/lektura/piesn-i-na-psalm-dawidow-xix.html", 
-                "html_size": 9941, 
-                "id": 792, 
-                "tags": [
-                    123, 
-                    1, 
-                    1583, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 I (O bo\u017cej opatrzno\u015bci na \u015bwiecie)", 
-                "html": "/media/lektura/piesn-i-o-bozej-opatrznosci-na-swiecie.html", 
-                "html_size": 3975, 
-                "id": 793, 
-                "tags": [
-                    123, 
-                    1, 
-                    2, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 I (O Fridruszu)", 
-                "html": "/media/lektura/piesn-i-o-fridruszu.html", 
-                "html_size": 6398, 
-                "id": 794, 
-                "tags": [
-                    123, 
-                    1, 
-                    2, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 I (Pewienem tego, a nic sie nie myl\u0119...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7363, 
-                "html": "/media/lektura/fragmenta-piesn-i-pewienem-tego-a-nic-sie-nie-myle.html", 
-                "parent_number": 1, 
-                "id": 1391
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 I (Przeciwne chmury s\u0142o\u0144ce nam zakry\u0142y...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 13575, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-i_.html", 
-                "parent_number": 0, 
-                "id": 1432
-            }, 
-            {
-                "title": "Pie\u015b\u0144 II (Na psalm Dawid\u00f3w LII)", 
-                "html": "/media/lektura/piesn-ii-na-psalm-dawidow-lii.html", 
-                "html_size": 5113, 
-                "id": 795, 
-                "tags": [
-                    123, 
-                    1, 
-                    1583, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 II (Nie dbam, aby zimne ska\u0142y...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 9741, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-ii.html", 
-                "parent_number": 1, 
-                "id": 1431
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 II (Nie ma \u015bwiat nic trwa\u0142ego, a to barzo k rzeczy...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4427, 
-                "html": "/media/lektura/fragmenta-piesn-ii-nie-ma-swiat-nic-trwalego-a-to-barzo-k-rzeczy.html", 
-                "parent_number": 2, 
-                "id": 1392
-            }, 
-            {
-                "title": "Pie\u015b\u0144 II (O rz\u0105dzie bo\u017cym na \u015bwiecie)", 
-                "html": "/media/lektura/piesn-ii-o-rzadzie-bozym-na-swiecie.html", 
-                "html_size": 4283, 
-                "id": 796, 
-                "tags": [
-                    123, 
-                    1, 
-                    2, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 II (O Strusie)", 
-                "html": "/media/lektura/piesn-ii-o-strusie.html", 
-                "html_size": 6199, 
-                "id": 797, 
-                "tags": [
-                    123, 
-                    1, 
-                    2, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 II (Serce ro\u015bcie patrz\u0105c na te czasy!)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7111, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-ii.html", 
-                "parent_number": 1, 
-                "id": 1406
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 III (Dzbanie m\u00f3j pisany...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5341, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-iii.html", 
-                "parent_number": 2, 
-                "id": 1405
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 III (Nie wierz Fortunie, co siedzisz wysoko...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7025, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-iii.html", 
-                "parent_number": 2, 
-                "id": 1430
-            }, 
-            {
-                "title": "Pie\u015b\u0144 III (O wielmo\u017cno\u015bci bo\u017cej)", 
-                "html": "/media/lektura/piesn-iii-o-wielmoznosci-bozej.html", 
-                "html_size": 3711, 
-                "id": 798, 
-                "tags": [
-                    123, 
-                    1, 
-                    2, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 III (Oko \u015bmiertelne Boga nie widzia\u0142o...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 9466, 
-                "html": "/media/lektura/fragmenta-piesn-iii-oko-smiertelne-boga-nie-widzialo.html", 
-                "parent_number": 3, 
-                "id": 1393
-            }, 
-            {
-                "title": "Pie\u015b\u0144 III (Psalmu LVI Paraphrasis)", 
-                "html": "/media/lektura/piesn-iii-psalmu-lvi-paraphrasis.html", 
-                "html_size": 6996, 
-                "id": 799, 
-                "tags": [
-                    123, 
-                    1, 
-                    1583, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 III (Stefanowi Batoremu, kr\u00f3lowi polskiemu)", 
-                "html": "/media/lektura/piesn-iii-stefanowi-batoremu-krolowi-polskiemu.html", 
-                "html_size": 6273, 
-                "id": 800, 
-                "tags": [
-                    123, 
-                    1, 
-                    2, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 IV (Kiedy by kogo B\u00f3g by\u0142 swymi s\u0142owy...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5065, 
-                "html": "/media/lektura/fragmenta-piesn-iv-kiedy-by-kogo-bog-byl-swymi-slowy.html", 
-                "parent_number": 4, 
-                "id": 1394
-            }, 
-            {
-                "title": "Pie\u015b\u0144 IV (O cnocie szlacheckiej)", 
-                "html": "/media/lektura/piesn-iv-o-cnocie-szlacheckiej.html", 
-                "html_size": 4443, 
-                "id": 801, 
-                "tags": [
-                    123, 
-                    1, 
-                    2, 
-                    1565
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 IV (Psalmu CXXVI paraphrasis)", 
-                "html": "/media/lektura/piesn-iv-psalmu-cxxvi-paraphrasis.html", 
-                "html_size": 4037, 
-                "id": 802, 
-                "tags": [
-                    123, 
-                    1, 
-                    1583, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 IV (W twardej kamiennej wie\u017cy i za troistemi...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 13408, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-iv.html", 
-                "parent_number": 3, 
-                "id": 1433
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 IV (Z\u0142ota to strza\u0142a i krom wszego jadu by\u0142a...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4571, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-iv.html", 
-                "parent_number": 3, 
-                "id": 1408
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 IX (Chcemy sobie by\u0107 radzi?)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 10179, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-ix.html", 
-                "parent_number": 8, 
-                "id": 1409
-            }, 
-            {
-                "title": "Pie\u015b\u0144 IX (I\u017c pr\u00f3\u017cne cz\u0142owiecze staranie bez Bo\u017cej pomocy)", 
-                "html": "/media/lektura/piesn-ix-iz-prozne-czlowiecze-staranie-bez-bozej-pomocy.html", 
-                "html_size": 3363, 
-                "id": 806, 
-                "tags": [
-                    123, 
-                    1, 
-                    2, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 IX (Kto mi wiary da\u0107 nie chce, daj j\u0105 oku swemu...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4974, 
-                "html": "/media/lektura/fragmenta-piesn-ix-kto-mi-wiary-dac-nie-chce-daj-ja-oku-swemu.html", 
-                "parent_number": 9, 
-                "id": 1399
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 IX (Nie porzucaj nadzieje...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5397, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-ix.html", 
-                "parent_number": 8, 
-                "id": 1434
-            }, 
-            {
-                "title": "Pie\u015b\u0144 jesienna", 
-                "html": "/media/lektura/kwiaty-zla-piesn-jesienna.html", 
-                "html_size": 6044, 
-                "id": 1903, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 Legion\u00f3w Polskich we W\u0142oszech", 
-                "html": "/media/lektura/piesn-legionow-polskich-we-wloszech.html", 
-                "html_size": 18279, 
-                "id": 2125, 
-                "tags": [
-                    1, 
-                    34, 
-                    2, 
-                    5312
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 o Ja\u015bku zb\u00f3jniku", 
-                "html": "/media/lektura/piesn-o-jasku-zbojniku_1.html", 
-                "html_size": 25204, 
-                "id": 2082, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 o Narodzeniu Pa\u0144skim (B\u00f3g si\u0119 rodzi...)", 
-                "html": "/media/lektura/piesn-o-narodzeniu-panskim-bog-sie-rodzi.html", 
-                "html_size": 7547, 
-                "id": 2021, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 od ziemi naszej", 
-                "html": "/media/lektura/piesn-od-ziemi-naszej_.html", 
-                "html_size": 14271, 
-                "id": 1090, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 przyjacielska", 
-                "html": "/media/lektura/piesn-przyjacielska.html", 
-                "html_size": 2534, 
-                "id": 844, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Pie\u015b\u0144 \u015bwi\u0119toja\u0144ska o Sob\u00f3tce", 
-                "html": "/media/lektura/piesn-swietojanska-o-sobotce_______.html", 
-                "html_size": 83399, 
-                "id": 1404, 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ]
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 V (Kto ma swego chleba...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7873, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-v.html", 
-                "parent_number": 4, 
-                "id": 1413
-            }, 
-            {
-                "title": "Pie\u015b\u0144 V (Na kszta\u0142t psalmu LXX)", 
-                "html": "/media/lektura/piesn-v-na-ksztalt-psalmu-lxx.html", 
-                "html_size": 4082, 
-                "id": 803, 
-                "tags": [
-                    123, 
-                    1, 
-                    1583, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 V (Panie, jako barzo b\u0142\u0105dz\u0105...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7645, 
-                "html": "/media/lektura/fragmenta-piesn-v-panie-jako-barzo-bladza.html", 
-                "parent_number": 5, 
-                "id": 1395
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 V (Wieczna sromota i nienagrodzona...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 14069, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-v.html", 
-                "parent_number": 4, 
-                "id": 1438
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 VI (Acz mi\u0119 twa droga, mi\u0142a, barzo boli...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 11902, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-vi.html", 
-                "parent_number": 5, 
-                "id": 1412
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 VI (Co by ty, urodziwa Hanno, na to da\u0142a...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 25020, 
-                "html": "/media/lektura/fragmenta-piesn-vi-co-by-ty-urodziwa-hanno-na-to-dala.html", 
-                "parent_number": 6, 
-                "id": 1396
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 VI (Kr\u00f3lewno lutnie z\u0142otej i rym\u00f3w pociesznych...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7781, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-vi.html", 
-                "parent_number": 5, 
-                "id": 1437
-            }, 
-            {
-                "title": "Pie\u015b\u0144 VI (Na kszta\u0142t psalmu CXX)", 
-                "html": "/media/lektura/piesn-vi-na-ksztalt-psalmu-cxx.html", 
-                "html_size": 3464, 
-                "id": 804, 
-                "tags": [
-                    123, 
-                    1, 
-                    1583, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 VII (Bodaj ci z\u0142e dni!)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5814, 
-                "html": "/media/lektura/fragmenta-piesn-vii-bodaj-ci-zle-dni.html", 
-                "parent_number": 7, 
-                "id": 1397
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 VII (S\u0142o\u0144ce pali, a ziemia idzie w popi\u00f3\u0142 prawie...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4684, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-vii.html", 
-                "parent_number": 6, 
-                "id": 1436
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 VII (Trudna rada w tej mierze, przyjdzie sie rozjecha\u0107...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5724, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-vii.html", 
-                "parent_number": 6, 
-                "id": 1411
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 VIII (Gdzie\u015bkolwiek jest, Bo\u017ce\u0107 po\u015bli dobr\u0105 godzin\u0119...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5042, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-viii.html", 
-                "parent_number": 7, 
-                "id": 1410
-            }, 
-            {
-                "title": "Pie\u015b\u0144 VIII (I\u017c rozum cz\u0142owiekowi potrzebniejszy, ni\u017c skarby)", 
-                "html": "/media/lektura/piesn-viii-iz-rozum-czlowiekowi-potrzebniejszy-niz-skarby.html", 
-                "html_size": 3845, 
-                "id": 805, 
-                "tags": [
-                    123, 
-                    1, 
-                    2, 
-                    1565
-                ]
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 VIII (Kiedy sie rane zapalaj\u0105 zorza...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 9653, 
-                "html": "/media/lektura/fragmenta-piesn-viii-kiedy-sie-rane-zapalaja-zorza.html", 
-                "parent_number": 8, 
-                "id": 1398
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 VIII (Nie frasuj sobie, Miko\u0142aju, g\u0142owy...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7316, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-viii.html", 
-                "parent_number": 7, 
-                "id": 1435
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 X (Juno, porzu\u0107 sw\u00f3j gniew d\u0142ugi...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4028, 
-                "html": "/media/lektura/fragmenta-piesn-x-juno-porzuc-swoj-gniew-dlugi.html", 
-                "parent_number": 10, 
-                "id": 1400
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 X (Kto mi da\u0142 skrzyd\u0142a, kto mi\u0119 odzia\u0142 pi\u00f3ry...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 14305, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-x.html", 
-                "parent_number": 9, 
-                "id": 1419
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 X (Mo\u017ce kto r\u0119k\u0105 s\u0142awy dosta\u0107 w boju...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4925, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-x.html", 
-                "parent_number": 9, 
-                "id": 1444
-            }, 
-            {
-                "parent": 1402, 
-                "title": "Pie\u015b\u0144 XI (Pr\u00f3zna twa ch\u0142uba, nie kochaj sie w sobie...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 6078, 
-                "html": "/media/lektura/fragmenta-piesn-xi-prozna-twa-chluba-nie-kochaj-sie-w-sobie.html", 
-                "parent_number": 11, 
-                "id": 1401
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XI (Stateczny umys\u0142 pami\u0119taj zachowa\u0107...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 6586, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xi.html", 
-                "parent_number": 10, 
-                "id": 1441
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XI (Stronisz przede mn\u0105, Neto nie tykana...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4314, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xi.html", 
-                "parent_number": 10, 
-                "id": 1416
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XII (Musz\u0119 wyzna\u0107, bo sie ju\u017c nie masz na co chowa\u0107...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5387, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xii.html", 
-                "parent_number": 11, 
-                "id": 1415
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XII (Nie masz, i po drugi raz nie masz w\u0105tpliwo\u015bci...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 6262, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xii.html", 
-                "parent_number": 11, 
-                "id": 1440
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XIII (O pi\u0119kna nocy nad zwyczaj tych czas\u00f3w...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 6528, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xiii.html", 
-                "parent_number": 12, 
-                "id": 1414
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XIII (Panu dzi\u0119ki oddawajmy...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 13302, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xiii.html", 
-                "parent_number": 12, 
-                "id": 1439
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XIV (Patrzaj, jako \u015bnieg po g\u00f3rach sie bieli...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5206, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xiv.html", 
-                "parent_number": 13, 
-                "id": 1417
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XIV (Wy, kt\u00f3rzy Pospolit\u0105 Rzecz\u0105 w\u0142adacie...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4883, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xiv_.html", 
-                "parent_number": 13, 
-                "id": 1442
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XIX (Jest kto, co by wzgardziwszy te doczesne rzeczy...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7596, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xix.html", 
-                "parent_number": 18, 
-                "id": 1443
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XIX (\u017bal mi ci\u0119, niebogo...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 9062, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xix.html", 
-                "parent_number": 18, 
-                "id": 1418
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XV (Nie za staraniem ani prze m\u0105 spraw\u0119...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 6299, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xv.html", 
-                "parent_number": 14, 
-                "id": 1423
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XV (Nie zaw\u017cdy Apollo strzela)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 6249, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xv_.html", 
-                "parent_number": 14, 
-                "id": 1448
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XVI (Kr\u00f3lom moc na poddane i zwierzchno\u015b\u0107 dana...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 8007, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xvi.html", 
-                "parent_number": 15, 
-                "id": 1422
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XVI (Nic po tych zbytnich potrawach, nic po tym...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5296, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xvi.html", 
-                "parent_number": 15, 
-                "id": 1447
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XVII (Niegodzien tego ten \u015bwiat zawik\u0142any...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5460, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xvii.html", 
-                "parent_number": 16, 
-                "id": 1446
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XVII (S\u0142o\u0144ce ju\u017c pad\u0142o, ciemna noc nadchodzi...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 12250, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xvii.html", 
-                "parent_number": 16, 
-                "id": 1421
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XVIII (Czo\u0142em za cze\u015b\u0107, \u0142askawy m\u00f3j panie s\u0105siedzie...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 16330, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xviii_.html", 
-                "parent_number": 17, 
-                "id": 1420
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XVIII (Ucieszna lutni, w kt\u00f3rej s\u0142odkie strony)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 14343, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xviii_.html", 
-                "parent_number": 17, 
-                "id": 1445
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XX (Jak\u0105, rozumiesz, zazdro\u015b\u0107 zjedna\u0142e\u015b sobie...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 10331, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xx.html", 
-                "parent_number": 19, 
-                "id": 1453
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XX (Mi\u0142o szale\u0107, kiedy czas po temu...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 6915, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xx.html", 
-                "parent_number": 19, 
-                "id": 1428
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XXI (Srogie \u0142a\u0144cuchy na swym sercu czuj\u0119...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 3801, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xxi.html", 
-                "parent_number": 20, 
-                "id": 1451
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XXI (Ty spisz, a ja sam na dworze...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 10676, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxi.html", 
-                "parent_number": 20, 
-                "id": 1426
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XXII (Prosz\u0119, jesli sie z tob\u0105 co \u015bpiewa\u0142o...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 5312, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xxii.html", 
-                "parent_number": 21, 
-                "id": 1450
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XXII (Rozumie m\u00f3j, pr\u00f3zno sie masz frasowa\u0107...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4139, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxii.html", 
-                "parent_number": 21, 
-                "id": 1425
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XXIII (Nie zaw\u017cdy, pi\u0119kna Zofija...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 2418, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xxiii.html", 
-                "parent_number": 22, 
-                "id": 1449
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XXIII (Nie\u017ale czasem zamilcze\u0107, co cz\u0142owieka boli...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 4909, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxiii.html", 
-                "parent_number": 22, 
-                "id": 1424
-            }, 
-            {
-                "parent": 1458, 
-                "title": "Pie\u015b\u0144 XXIV (Niezwyk\u0142ym i nie leda pi\u00f3rem opatrzony...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 7166, 
-                "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xxiv.html", 
-                "parent_number": 23, 
-                "id": 1452
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XXIV (Zegar, s\u0142ysz\u0119, wybija...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 6655, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxiv_.html", 
-                "parent_number": 23, 
-                "id": 1427
-            }, 
-            {
-                "parent": 1455, 
-                "title": "Pie\u015b\u0144 XXV (U\u017ca\u0142uj sie, kto dobry, a pot\u0142ucz zawiasy...)", 
-                "tags": [
-                    3, 
-                    1, 
-                    2, 
-                    4
-                ], 
-                "html_size": 15408, 
-                "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxv.html", 
-                "parent_number": 24, 
-                "id": 1429
-            }, 
-            {
-                "title": "Pi\u0119kna nasza Polska ca\u0142a...", 
-                "html": "/media/lektura/piekna-nasza-polska-cala.html", 
-                "html_size": 4235, 
-                "id": 2114, 
-                "tags": [
-                    1, 
-                    2, 
-                    5290, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Pi\u0119kno", 
-                "html": "/media/lektura/kwiaty-zla-piekno.html", 
-                "html_size": 2269, 
-                "id": 1902, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Pijak", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 851, 
-                "html": "/media/lektura/pijak_.html", 
-                "parent_number": 71, 
-                "id": 1167
-            }, 
-            {
-                "parent": 289, 
-                "title": "Pija\u0144stwo", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 17433, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-pijanstwo_______.html", 
-                "parent_number": 6, 
-                "id": 46
-            }, 
-            {
-                "title": "Pi\u0142sudski", 
-                "html": "/media/lektura/dzien-jak-co-dzien-pilsudski.html", 
-                "html_size": 6344, 
-                "id": 1540, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Piosenka czeski domek", 
-                "html": "/media/lektura/nuta-czlowiecza-piosenka-czeski-domek.html", 
-                "html_size": 2519, 
-                "id": 1695, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Platon", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2910, 
-                "html": "/media/lektura/platon-bajki-nowe_.html", 
-                "parent_number": 45, 
-                "id": 1316
-            }, 
-            {
-                "title": "Po ciemku", 
-                "html": "/media/lektura/po-ciemku_.html", 
-                "html_size": 14905, 
-                "id": 864, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Po pniu i po bocianie...", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1428, 
-                "html": "/media/lektura/po-pniu-i-po-bocianie_.html", 
-                "parent_number": 72, 
-                "id": 1173
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Pochodnia i \u015bwieca", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1271, 
-                "html": "/media/lektura/pochodnia-i-swieca-bajki-nowe_.html", 
-                "parent_number": 46, 
-                "id": 1246
-            }, 
-            {
-                "parent": 294, 
-                "title": "Pochwa\u0142a g\u0142upstwa", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 20704, 
-                "html": "/media/lektura/satyry-czesc-druga-pochwala-glupstwa_______.html", 
-                "parent_number": 2, 
-                "id": 243
-            }, 
-            {
-                "parent": 294, 
-                "title": "Pochwa\u0142a wieku", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 26575, 
-                "html": "/media/lektura/satyry-czesc-druga-pochwala-wieku_______.html", 
-                "parent_number": 1, 
-                "id": 273
-            }, 
-            {
-                "parent": 294, 
-                "title": "Pochwa\u0142y milczenia", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 34262, 
-                "html": "/media/lektura/satyry-czesc-druga-pochwaly-milczenia_______.html", 
-                "parent_number": 0, 
-                "id": 269
-            }, 
-            {
-                "title": "Pod dworcem g\u0142\u00f3wnym w Warszawie", 
-                "html": "/media/lektura/nuta-czlowiecza-pod-dworcem-glownym-w-warszawie.html", 
-                "html_size": 3967, 
-                "id": 1696, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Pod popio\u0142em", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-pod-popiolem.html", 
-                "html_size": 3097, 
-                "id": 1675, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Pod star\u0105 wierzb\u0105", 
-                "html": "/media/lektura/pod-stara-wierzba.html", 
-                "html_size": 39602, 
-                "id": 1058, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Pod wra\u017ceniem", 
-                "html": "/media/lektura/pod-wrazeniem_1.html", 
-                "html_size": 2139, 
-                "id": 2083, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Podczas burzy", 
-                "html": "/media/lektura/podczas-burzy_1.html", 
-                "html_size": 2370, 
-                "id": 2084, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 294, 
-                "title": "Podr\u00f3\u017c", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 17239, 
-                "html": "/media/lektura/satyry-czesc-druga-podroz_______.html", 
-                "parent_number": 8, 
-                "id": 203
-            }, 
-            {
-                "title": "Podr\u00f3\u017c", 
-                "html": "/media/lektura/kwiaty-zla-podroz.html", 
-                "html_size": 21365, 
-                "id": 1904, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Podr\u00f3\u017cniczki", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 3089, 
-                "html": "/media/lektura/but-w-butonierce-podrozniczki.html", 
-                "parent_number": 21, 
-                "id": 1372
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Podr\u00f3\u017cny", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1576, 
-                "html": "/media/lektura/podrozny_.html", 
-                "parent_number": 73, 
-                "id": 1118
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Podr\u00f3\u017cny", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1713, 
-                "html": "/media/lektura/podrozny-bajki-nowe_.html", 
-                "parent_number": 47, 
-                "id": 1320
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Podr\u00f3\u017cny i kaleka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1077, 
-                "html": "/media/lektura/podrozny-i-kaleka_.html", 
-                "parent_number": 74, 
-                "id": 1139
-            }, 
-            {
-                "title": "Podrzutek", 
-                "html": "/media/lektura/podrzutek.html", 
-                "html_size": 13213, 
-                "id": 865, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Poeta", 
-                "html": "/media/lektura/poeta________.html", 
-                "html_size": 5466, 
-                "id": 1386, 
-                "tags": [
-                    337, 
-                    1, 
-                    3035, 
-                    336
-                ]
-            }, 
-            {
-                "title": "Poeta i natchnienie", 
-                "html": "/media/lektura/poeta-i-natchnienie.html", 
-                "html_size": 72030, 
-                "id": 1554, 
-                "tags": [
-                    1, 
-                    1756, 
-                    24, 
-                    189
-                ]
-            }, 
-            {
-                "title": "Pogrzeb kapitana Meyznera", 
-                "html": "/media/lektura/pogrzeb-kapitana-meyznera.html", 
-                "html_size": 8001, 
-                "id": 1964, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Polacy", 
-                "html": "/media/lektura/nuta-czlowiecza-polacy.html", 
-                "html_size": 6038, 
-                "id": 1697, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Pola\u0142y si\u0119 \u0142zy...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 1015, 
-                "html": "/media/lektura/polaly-sie-lzy.html", 
-                "parent_number": 5, 
-                "id": 1867
-            }, 
-            {
-                "title": "Polny kwiatek", 
-                "html": "/media/lektura/polny-kwiatek.html", 
-                "html_size": 12944, 
-                "id": 1059, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Polska mowa", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 5029, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-polska-mowa_.html", 
-                "parent_number": 6, 
-                "id": 1843
-            }, 
-            {
-                "parent": 829, 
-                "title": "Pomnik Piotra Wielkiego", 
-                "tags": [
-                    31, 
-                    23, 
-                    1660, 
-                    24
-                ], 
-                "html_size": 9587, 
-                "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-pomnik-piotra-wielkiego.html", 
-                "parent_number": 3, 
-                "id": 824
-            }, 
-            {
-                "title": "Pontorson", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-pontorson_.html", 
-                "html_size": 3294, 
-                "id": 1632, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Portret owalny", 
-                "html": "/media/lektura/portret-owalny.html", 
-                "html_size": 13431, 
-                "id": 1770, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Po\u015bmiertne \u017cale", 
-                "html": "/media/lektura/kwiaty-zla-posmiertne-zale.html", 
-                "html_size": 2465, 
-                "id": 1905, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Pot\u0119pi nas \u015bwi\u0119toszek...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2743, 
-                "html": "/media/lektura/potepi-nas-swietoszek.html", 
-                "parent_number": 21, 
-                "id": 2208
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Potok i rzeka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1425, 
-                "html": "/media/lektura/potok-i-rzeka_.html", 
-                "parent_number": 75, 
-                "id": 1165
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Potok i rzeka II", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1178, 
-                "html": "/media/lektura/potok-i-rzeka-ii_.html", 
-                "parent_number": 76, 
-                "id": 1180
-            }, 
-            {
-                "title": "Potop", 
-                "id": 1925, 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "parent": 1925, 
-                "title": "Potop, tom drugi", 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ], 
-                "html_size": 2093081, 
-                "html": "/media/lektura/potop-tom-drugi_1.html", 
-                "parent_number": 1, 
-                "id": 1923
-            }, 
-            {
-                "parent": 1925, 
-                "title": "Potop, tom pierwszy", 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ], 
-                "html_size": 1643792, 
-                "html": "/media/lektura/potop-tom-pierwszy.html", 
-                "parent_number": 0, 
-                "id": 1776
-            }, 
-            {
-                "parent": 1925, 
-                "title": "Potop, tom trzeci", 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ], 
-                "html_size": 1486603, 
-                "html": "/media/lektura/potop-tom-trzeci.html", 
-                "parent_number": 2, 
-                "id": 1924
-            }, 
-            {
-                "title": "Potwarz", 
-                "html": "/media/lektura/potwarz.html", 
-                "html_size": 11516, 
-                "id": 866, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Powracaj\u0105ca fala", 
-                "html": "/media/lektura/powracajaca-fala_.html", 
-                "html_size": 255452, 
-                "id": 1095, 
-                "tags": [
-                    31, 
-                    1517, 
-                    56, 
-                    1462
-                ]
-            }, 
-            {
-                "title": "Powr\u00f3t pos\u0142a", 
-                "html": "/media/lektura/powrot-posla.html", 
-                "html_size": 249165, 
-                "id": 1937, 
-                "tags": [
-                    152, 
-                    153, 
-                    4997, 
-                    34
-                ]
-            }, 
-            {
-                "parent": 291, 
-                "title": "Powr\u00f3t taty", 
-                "tags": [
-                    210, 
-                    1, 
-                    23, 
-                    24
-                ], 
-                "html_size": 9802, 
-                "html": "/media/lektura/ballady-i-romanse-powrot-taty_______.html", 
-                "parent_number": 0, 
-                "id": 1597
-            }, 
-            {
-                "title": "Powr\u00f3t z Warszawy na wie\u015b", 
-                "html": "/media/lektura/powrot-z-warszawy-na-wies_.html", 
-                "html_size": 12104, 
-                "id": 851, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Po\u017cegnanie (Do D. D.)", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 3606, 
-                "html": "/media/lektura/pozegnanie-do-d-d.html", 
-                "parent_number": 22, 
-                "id": 2207
-            }, 
-            {
-                "title": "Po\u017cegnanie z Lindor\u0105 w g\u00f3rach", 
-                "html": "/media/lektura/pozegnanie-z-lindora-w-gorach_.html", 
-                "html_size": 4481, 
-                "id": 846, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34
-                ]
-            }, 
-            {
-                "title": "P\u00f3jd\u017amy wszyscy do stajenki...", 
-                "html": "/media/lektura/pojdzmy-wszyscy-do-stajenki_1.html", 
-                "html_size": 6815, 
-                "id": 2037, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "title": "P\u00f3\u0142noc ju\u017c by\u0142a...", 
-                "html": "/media/lektura/polnoc-juz-byla.html", 
-                "html_size": 12635, 
-                "id": 2026, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Praca", 
-                "html": "/media/lektura/praca.html", 
-                "html_size": 10710, 
-                "id": 1929, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Prawda, satyryk i panegirysta", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2176, 
-                "html": "/media/lektura/prawda-satyryk-i-panegirysta_.html", 
-                "parent_number": 77, 
-                "id": 1153
-            }, 
-            {
-                "title": "Prawdziwy opis wypadku z p. Waldemarem", 
-                "html": "/media/lektura/prawdziwy-opis-wypadku-z-p-waldemarem.html", 
-                "html_size": 35619, 
-                "id": 1735, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Preludium", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-preludium.html", 
-                "html_size": 3143, 
-                "id": 1663, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Prometeusz", 
-                "html": "/media/lektura/prometeusz_1.html", 
-                "html_size": 6465, 
-                "id": 2085, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Proroctwo", 
-                "html": "/media/lektura/proroctwo.html", 
-                "html_size": 3601, 
-                "id": 1965, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Prowadzi\u0142 mnie na bardzo ciemne w\u0119\u017cowisko...", 
-                "html": "/media/lektura/prowadzil-mnie-na-bardzo-ciemne-wezowisko.html", 
-                "html_size": 1710, 
-                "id": 1966, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Prowincja noc", 
-                "html": "/media/lektura/dzien-jak-co-dzien-prowincja-noc.html", 
-                "html_size": 5371, 
-                "id": 1541, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Prozowierszem", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 3839, 
-                "html": "/media/lektura/but-w-butonierce-prozowierszem.html", 
-                "parent_number": 16, 
-                "id": 1373
-            }, 
-            {
-                "title": "Pr\u00f3\u017cno w swej duszy...", 
-                "html": "/media/lektura/prozno-w-swej-duszy_1.html", 
-                "html_size": 2881, 
-                "id": 2086, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Przebudzenie Jehowy", 
-                "html": "/media/lektura/przebudzenie-jehowy_1.html", 
-                "html_size": 4574, 
-                "id": 2087, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Przeczucia", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-przeczucia.html", 
-                "html_size": 3842, 
-                "id": 1664, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 829, 
-                "title": "Przedmie\u015bcia stolicy", 
-                "tags": [
-                    31, 
-                    23, 
-                    1660, 
-                    24
-                ], 
-                "html_size": 8556, 
-                "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-przedmiescia-stolicy.html", 
-                "parent_number": 1, 
-                "id": 825
-            }, 
-            {
-                "title": "Przed\u015bwit", 
-                "html": "/media/lektura/nuta-czlowiecza-przedswit.html", 
-                "html_size": 3700, 
-                "id": 1698, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Przedwio\u015bnie", 
-                "html": "/media/lektura/przedwiosnie________.html", 
-                "html_size": 1003960, 
-                "id": 1714, 
-                "tags": [
-                    338, 
-                    31, 
-                    242, 
-                    293
-                ]
-            }, 
-            {
-                "parent": 829, 
-                "title": "Przegl\u0105d wojska", 
-                "tags": [
-                    31, 
-                    23, 
-                    1660, 
-                    24
-                ], 
-                "html_size": 49916, 
-                "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-przeglad-wojska.html", 
-                "parent_number": 4, 
-                "id": 826
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Przejechali", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 1720, 
-                "html": "/media/lektura/but-w-butonierce-przejechali.html", 
-                "parent_number": 13, 
-                "id": 1374
-            }, 
-            {
-                "title": "Przekl\u0119stwo. Do***", 
-                "html": "/media/lektura/przeklestwo-do.html", 
-                "html_size": 3432, 
-                "id": 2000, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Przesoli\u0142", 
-                "html": "/media/lektura/przesolil.html", 
-                "html_size": 12664, 
-                "id": 867, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 289, 
-                "title": "Przestroga m\u0142odemu", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 31190, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-przestroga-mlodemu_______.html", 
-                "parent_number": 7, 
-                "id": 193
-            }, 
-            {
-                "title": "Przesz\u0142o\u015b\u0107", 
-                "html": "/media/lektura/przeszlosc.html", 
-                "html_size": 1709, 
-                "id": 1092, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Przez kresy", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-przez-kresy.html", 
-                "html_size": 2508, 
-                "id": 1665, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Przybie\u017celi do Betlejem...", 
-                "html": "/media/lektura/przybiezeli-do-betleem.html", 
-                "html_size": 3675, 
-                "id": 2027, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Przygody Tomka Sawyera", 
-                "html": "/media/lektura/przygody-tomka-sawyera.html", 
-                "html_size": 640283, 
-                "id": 2191, 
-                "tags": [
-                    31, 
-                    242, 
-                    24, 
-                    5550
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Przyjaciel", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2313, 
-                "html": "/media/lektura/przyjaciel_.html", 
-                "parent_number": 78, 
-                "id": 1117
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Przyjaciele", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 5295, 
-                "html": "/media/lektura/przyjaciele-bajki-nowe_.html", 
-                "parent_number": 48, 
-                "id": 1283
-            }, 
-            {
-                "parent": 709, 
-                "title": "Przym\u00f3wka ch\u0142opska", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2023, 
-                "html": "/media/lektura/fraszki-fraszki-dodane-przymowka-chlopska____.html", 
-                "parent_number": 4, 
-                "id": 572
-            }, 
-            {
-                "title": "Przypomnienie dawnej mi\u0142o\u015bci", 
-                "html": "/media/lektura/przypomnienie-dawnej-milosci_.html", 
-                "html_size": 2689, 
-                "id": 847, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Pszczo\u0142a i szersze\u0144", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1123, 
-                "html": "/media/lektura/pszczola-i-szrszen.html", 
-                "parent_number": 79, 
-                "id": 1340
-            }, 
-            {
-                "title": "Pszczo\u0142a w bursztynie", 
-                "html": "/media/lektura/pszczola-w-bursztynie_______.html", 
-                "html_size": 1914, 
-                "id": 83, 
-                "tags": [
-                    123, 
-                    234, 
-                    1, 
-                    122
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Pszczo\u0142y", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 4885, 
-                "html": "/media/lektura/pszczoly-bajki-nowe_.html", 
-                "parent_number": 50, 
-                "id": 1307
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Pszczo\u0142y i mr\u00f3wki", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3269, 
-                "html": "/media/lektura/pszczoly-i-mrowki_.html", 
-                "parent_number": 80, 
-                "id": 1128
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Pszcz\u00f3\u0142ka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3335, 
-                "html": "/media/lektura/pszczolka-bajki-nowe_.html", 
-                "parent_number": 49, 
-                "id": 1322
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Ptaki i osie\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1266, 
-                "html": "/media/lektura/ptaki-i-osiel_.html", 
-                "parent_number": 81, 
-                "id": 1146
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Ptaszki w klatce", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 952, 
-                "html": "/media/lektura/ptaszki-w-klatce.html", 
-                "parent_number": 82, 
-                "id": 1341
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Puchacze", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 6847, 
-                "html": "/media/lektura/puchacze-bajki-nowe_.html", 
-                "parent_number": 51, 
-                "id": 1319
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Pytasz, za co B\u00f3g...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2252, 
-                "html": "/media/lektura/pytasz-za-co-bog.html", 
-                "parent_number": 6, 
-                "id": 1868
-            }, 
-            {
-                "title": "Quo vadis", 
-                "html": "/media/lektura/quo-vadis_.html", 
-                "html_size": 1958083, 
-                "id": 1352, 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Raki", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2462, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-raki_____.html", 
-                "parent_number": 94, 
-                "id": 495
-            }, 
-            {
-                "title": "Ranek", 
-                "html": "/media/lektura/dzien-jak-co-dzien-ranek.html", 
-                "html_size": 5139, 
-                "id": 1542, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Ranek i wiecz\u00f3r", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2510, 
-                "html": "/media/lektura/ranek-i-wieczor.html", 
-                "parent_number": 23, 
-                "id": 2206
-            }, 
-            {
-                "title": "Reduta Ordona", 
-                "html": "/media/lektura/reduta-ordona_______.html", 
-                "html_size": 20065, 
-                "id": 211, 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Regu\u0142y dla gospodarz\u00f3w domu", 
-                "html": "/media/lektura/reguly-dla-gospodarzow-domu.html", 
-                "html_size": 7356, 
-                "id": 848, 
-                "tags": [
-                    1889, 
-                    1, 
-                    34, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Rezygnacja", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2463, 
-                "html": "/media/lektura/rezygnacja.html", 
-                "parent_number": 24, 
-                "id": 2205
-            }, 
-            {
-                "parent": 1875, 
-                "title": "R\u0119ce za lud walcz\u0105ce...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 1366, 
-                "html": "/media/lektura/rece-za-lud-walczace.html", 
-                "parent_number": 7, 
-                "id": 1869
-            }, 
-            {
-                "parent": 291, 
-                "title": "R\u0119kawiczka", 
-                "tags": [
-                    210, 
-                    1, 
-                    23, 
-                    24
-                ], 
-                "html_size": 6464, 
-                "html": "/media/lektura/ballady-i-romanse-rekawiczka_______.html", 
-                "parent_number": 3, 
-                "id": 112
-            }, 
-            {
-                "title": "R\u0119kopis znaleziony w butli", 
-                "html": "/media/lektura/rekopis-zaleziony-w-butli.html", 
-                "html_size": 45902, 
-                "id": 1771, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Robinson Crusoe", 
-                "html": "/media/lektura/robinson-crusoe__.html", 
-                "html_size": 379580, 
-                "id": 1094, 
-                "tags": [
-                    2340, 
-                    31, 
-                    34, 
-                    242
-                ]
-            }, 
-            {
-                "title": "Rocznica powstania", 
-                "html": "/media/lektura/rocznica-powstania.html", 
-                "html_size": 6812, 
-                "id": 2115, 
-                "tags": [
-                    1, 
-                    2, 
-                    5290, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Rolnik", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1800, 
-                "html": "/media/lektura/rolnik_.html", 
-                "parent_number": 83, 
-                "id": 1205
-            }, 
-            {
-                "parent": 291, 
-                "title": "Romantyczno\u015b\u0107", 
-                "tags": [
-                    210, 
-                    1, 
-                    23, 
-                    24
-                ], 
-                "html_size": 8596, 
-                "html": "/media/lektura/ballady-i-romanse-romantycznosc_______.html", 
-                "parent_number": 0, 
-                "id": 1598
-            }, 
-            {
-                "title": "Romeo i Julia", 
-                "html": "/media/lektura/romeo-i-julia__________.html", 
-                "html_size": 481385, 
-                "id": 1618, 
-                "tags": [
-                    152, 
-                    4293, 
-                    4, 
-                    226
-                ]
-            }, 
-            {
-                "title": "Ropucha", 
-                "html": "/media/lektura/ropucha.html", 
-                "html_size": 26265, 
-                "id": 1060, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Rota", 
-                "html": "/media/lektura/rota.html", 
-                "html_size": 4134, 
-                "id": 2108, 
-                "tags": [
-                    55, 
-                    1, 
-                    2, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Roz\u0142\u0105czenie", 
-                "html": "/media/lektura/rozlaczenie.html", 
-                "html_size": 4476, 
-                "id": 1991, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Rozmaryn", 
-                "html": "/media/lektura/rozmaryn.html", 
-                "html_size": 2298, 
-                "id": 2117, 
-                "tags": [
-                    5148, 
-                    338, 
-                    1, 
-                    128, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Rozmowa z piramidami", 
-                "html": "/media/lektura/rozmowa-z-piramidami.html", 
-                "html_size": 5488, 
-                "id": 2001, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Ruiny zamku w Ba\u0142ak\u0142awie", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 3877, 
-                "html": "/media/lektura/sonety-krymskie-ruiny-zamku-w-balaklawie_______.html", 
-                "parent_number": 17, 
-                "id": 1796
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Rumak i \u017arebiec", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2170, 
-                "html": "/media/lektura/rumak-i-zrebiec-bajki-nowe_.html", 
-                "parent_number": 52, 
-                "id": 1302
-            }, 
-            {
-                "title": "Rupiec Kope\u0107", 
-                "html": "/media/lektura/rupiec-kopec.html", 
-                "html_size": 14791, 
-                "id": 2174, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 291, 
-                "title": "Rybka", 
-                "tags": [
-                    210, 
-                    1, 
-                    23, 
-                    24
-                ], 
-                "html_size": 14406, 
-                "html": "/media/lektura/ballady-i-romanse-rybka_______.html", 
-                "parent_number": 5, 
-                "id": 241
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Rybka ma\u0142a i szczupak", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1424, 
-                "html": "/media/lektura/rybka-mala-i-szczupak_.html", 
-                "parent_number": 84, 
-                "id": 1223
-            }, 
-            {
-                "title": "Rzecz o wolno\u015bci s\u0142owa", 
-                "html": "/media/lektura/rzecz-o-wolnosci-slowa.html", 
-                "html_size": 197781, 
-                "id": 1710, 
-                "tags": [
-                    31, 
-                    2308, 
-                    1660, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Rzepa", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1941, 
-                "html": "/media/lektura/rzepa-bajki-nowe_.html", 
-                "parent_number": 53, 
-                "id": 1290
-            }, 
-            {
-                "title": "Rzym", 
-                "html": "/media/lektura/rzym.html", 
-                "html_size": 3222, 
-                "id": 1970, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 293, 
-                "title": "Salome", 
-                "tags": [
-                    332, 
-                    339, 
-                    1, 
-                    128
-                ], 
-                "html_size": 43415, 
-                "html": "/media/lektura/hymny-salome_______.html", 
-                "parent_number": 1, 
-                "id": 229
-            }, 
-            {
-                "title": "Salomon i Sulamitka", 
-                "html": "/media/lektura/salomon-i-sulamitka_1.html", 
-                "html_size": 8004, 
-                "id": 2088, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 293, 
-                "title": "Salve Regina", 
-                "tags": [
-                    332, 
-                    339, 
-                    1, 
-                    128
-                ], 
-                "html_size": 42429, 
-                "html": "/media/lektura/hymny-salve-regina_.html", 
-                "parent_number": 4, 
-                "id": 716
-            }, 
-            {
-                "title": "Sam", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-sam.html", 
-                "html_size": 3629, 
-                "id": 1666, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Samob\u00f3jstwo", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-samobojstwo.html", 
-                "html_size": 5737, 
-                "id": 1667, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Satyry", 
-                "id": 300, 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "S\u0105siedztwo", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1071, 
-                "html": "/media/lektura/sasiedztwo_.html", 
-                "parent_number": 85, 
-                "id": 1193
-            }, 
-            {
-                "title": "Schn\u0105ca limba", 
-                "html": "/media/lektura/schnaca-limba_1.html", 
-                "html_size": 2343, 
-                "id": 2089, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Sed non satiata", 
-                "html": "/media/lektura/kwiaty-zla-sed-non-satiata.html", 
-                "html_size": 3978, 
-                "id": 1886, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Sen", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1212, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-sen_____.html", 
-                "parent_number": 95, 
-                "id": 419
-            }, 
-            {
-                "title": "Sen nocy letniej", 
-                "html": "/media/lektura/sen-nocy-letniej.html", 
-                "html_size": 383121, 
-                "id": 1940, 
-                "tags": [
-                    152, 
-                    4293, 
-                    153, 
-                    4, 
-                    226
-                ]
-            }, 
-            {
-                "title": "Serce oskar\u017cycielem", 
-                "html": "/media/lektura/serce-oskarzycielem_.html", 
-                "html_size": 22104, 
-                "id": 1682, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Siedmio\u015bpiochy", 
-                "html": "/media/lektura/siedmiospiochy.html", 
-                "html_size": 2670, 
-                "id": 2175, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Si\u0142aczka", 
-                "html": "/media/lektura/silaczka_______.html", 
-                "html_size": 87501, 
-                "id": 69, 
-                "tags": [
-                    31, 
-                    128, 
-                    54, 
-                    293
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Skarb", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2034, 
-                "html": "/media/lektura/skarb_.html", 
-                "parent_number": 86, 
-                "id": 1129
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Sk\u0105py", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1666, 
-                "html": "/media/lektura/skapy_.html", 
-                "parent_number": 87, 
-                "id": 1206
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Skowronek", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2514, 
-                "html": "/media/lektura/skowronek-bajki-nowe_.html", 
-                "parent_number": 54, 
-                "id": 1271
-            }, 
-            {
-                "title": "S\u0142odka potrawa", 
-                "html": "/media/lektura/sodka-potrawa.html", 
-                "html_size": 2533, 
-                "id": 2176, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "S\u0142odycz", 
-                "html": "/media/lektura/slodycz.html", 
-                "html_size": 19808, 
-                "id": 1922, 
-                "tags": [
-                    152, 
-                    2308, 
-                    24, 
-                    175
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "S\u0142onecznik i fia\u0142ek", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3536, 
-                "html": "/media/lektura/slonecznik-i-fialek-bajki-nowe_.html", 
-                "parent_number": 58, 
-                "id": 1323
-            }, 
-            {
-                "parent": 1237, 
-                "title": "S\u0142o\u0144 i pszczo\u0142a", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1471, 
-                "html": "/media/lektura/slon-i-pszczola_.html", 
-                "parent_number": 88, 
-                "id": 1144
-            }, 
-            {
-                "parent": 1333, 
-                "title": "S\u0142o\u0144ce i ob\u0142oki", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3452, 
-                "html": "/media/lektura/slonce-i-obloki-bajki-nowe_.html", 
-                "parent_number": 55, 
-                "id": 1301
-            }, 
-            {
-                "parent": 1333, 
-                "title": "S\u0142o\u0144ce i \u017caby", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2084, 
-                "html": "/media/lektura/slonce-i-zaby-bajki-nowe_.html", 
-                "parent_number": 56, 
-                "id": 1329
-            }, 
-            {
-                "parent": 1333, 
-                "title": "S\u0142o\u0144ce, ob\u0142oki, ziemia", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1089, 
-                "html": "/media/lektura/slonce-obloki-ziemia-bajki-nowe_.html", 
-                "parent_number": 57, 
-                "id": 1282
-            }, 
-            {
-                "title": "S\u0142owik", 
-                "html": "/media/lektura/slowik.html", 
-                "html_size": 34172, 
-                "id": 1062, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "S\u0142owik i szczygie\u0142", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1134, 
-                "html": "/media/lektura/slowik-i-szczygiel_.html", 
-                "parent_number": 89, 
-                "id": 1161
-            }, 
-            {
-                "parent": 1237, 
-                "title": "S\u0142owik i szczygie\u0142 II", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1244, 
-                "html": "/media/lektura/slowik-i-szczygiel-ii_.html", 
-                "parent_number": 90, 
-                "id": 1177
-            }, 
-            {
-                "title": "Smutek ksi\u0119\u017cyca", 
-                "html": "/media/lektura/kwiaty-zla-smutek-ksiezyca.html", 
-                "html_size": 2243, 
-                "id": 1906, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Snu\u0107 mi\u0142o\u015b\u0107...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 1977, 
-                "html": "/media/lektura/snuc-milosc.html", 
-                "parent_number": 9, 
-                "id": 1871
-            }, 
-            {
-                "title": "Snycerz by\u0142 zatrudniony Dyjany lepieniem...", 
-                "html": "/media/lektura/snycerz-byl-zatrudniony-dyjany-lepieniem.html", 
-                "html_size": 6060, 
-                "id": 1973, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Snycerz i statua", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1429, 
-                "html": "/media/lektura/snycerz-i-statua_.html", 
-                "parent_number": 91, 
-                "id": 1183
-            }, 
-            {
-                "title": "Sonet I (O kr\u00f3tko\u015bci i niepewno\u015bci na \u015bwiecie \u017cywota cz\u0142owieczego)", 
-                "html": "/media/lektura/sonet-i-o-krotkosci-i-niepewnosci-na-swiecie-zywota-czlowieczego.html", 
-                "html_size": 3914, 
-                "id": 807, 
-                "tags": [
-                    123, 
-                    1, 
-                    1565, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Sonet II (Na one s\u0142owa Jopowe)", 
-                "html": "/media/lektura/sonet-ii-na-one-slowa-jopowe.html", 
-                "html_size": 3218, 
-                "id": 808, 
-                "tags": [
-                    123, 
-                    1, 
-                    1565, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Sonet III (Do Na\u015bwi\u0119tszej Panny)", 
-                "html": "/media/lektura/sonet-iii-do-naswietszej-panny.html", 
-                "html_size": 3904, 
-                "id": 809, 
-                "tags": [
-                    123, 
-                    1, 
-                    1565, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Sonet IV (O wojnie naszej, kt\u00f3r\u0105 wiedziemy z szatanem, \u015bwiatem i cia\u0142em)", 
-                "html": "/media/lektura/sonet-iv-o-wojnie-naszej-ktora-wiedziemy-z-szatanem-swiatem--i-cialem.html", 
-                "html_size": 3422, 
-                "id": 810, 
-                "tags": [
-                    123, 
-                    1, 
-                    1565, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Sonet V (O nietrwa\u0142ej mi\u0142o\u015bci rzeczy \u015bwiata tego)", 
-                "html": "/media/lektura/sonet-v-o-nietrwalej-milosci-rzeczy-swiata-tego.html", 
-                "html_size": 2939, 
-                "id": 811, 
-                "tags": [
-                    123, 
-                    1, 
-                    1565, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Sonet VI (Do Pana Miko\u0142aja Tomickiego)", 
-                "html": "/media/lektura/sonet-vi-do-pana-mikolaja-tomickiego.html", 
-                "html_size": 2246, 
-                "id": 812, 
-                "tags": [
-                    123, 
-                    1, 
-                    1565, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Sonety krymskie", 
-                "id": 1798, 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Sonety odeskie", 
-                "id": 2230, 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Sowi\u0144ski w okopach Woli", 
-                "html": "/media/lektura/sowinski-w-okopach-woli_.html", 
-                "html_size": 8760, 
-                "id": 1071, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Spacer", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 1374, 
-                "html": "/media/lektura/but-w-butonierce-spacer_.html", 
-                "parent_number": 18, 
-                "id": 1377
-            }, 
-            {
-                "title": "Spleen", 
-                "html": "/media/lektura/kwiaty-zla-spleen.html", 
-                "html_size": 11642, 
-                "id": 1907, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Sprzeczno\u015b\u0107", 
-                "html": "/media/lektura/kwiaty-zla-sprzecznosc.html", 
-                "html_size": 3692, 
-                "id": 1908, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Staruszki", 
-                "html": "/media/lektura/kwiaty-zla-staruszki.html", 
-                "html_size": 19636, 
-                "id": 1909, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Stary pies i stary s\u0142uga", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2232, 
-                "html": "/media/lektura/stary-pies-i-stary-sluga_.html", 
-                "parent_number": 92, 
-                "id": 1127
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Stepy akerma\u0144skie", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 6228, 
-                "html": "/media/lektura/sonety-krymskie-stepy-akermanskie_______.html", 
-                "parent_number": 1, 
-                "id": 1781
-            }, 
-            {
-                "title": "Stolica", 
-                "html": "/media/lektura/stolica.html", 
-                "html_size": 4789, 
-                "id": 1091, 
-                "tags": [
-                    1, 
-                    2308, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Strumyk i fontanny", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1077, 
-                "html": "/media/lektura/strumyk-i-fontanny_.html", 
-                "parent_number": 93, 
-                "id": 1189
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Strzelec", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2953, 
-                "html": "/media/lektura/strzelec.html", 
-                "parent_number": 25, 
-                "id": 2204
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Strzelec i pies", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1125, 
-                "html": "/media/lektura/strzelec-i-pies_.html", 
-                "parent_number": 94, 
-                "id": 1174
-            }, 
-            {
-                "title": "Studnia i wahad\u0142o", 
-                "html": "/media/lektura/studnia-i-wahadlo.html", 
-                "html_size": 55046, 
-                "id": 1897, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Su\u0142tan w piekle", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1882, 
-                "html": "/media/lektura/sultan-w-piekle_.html", 
-                "parent_number": 95, 
-                "id": 1204
-            }, 
-            {
-                "title": "Sygna\u0142", 
-                "html": "/media/lektura/sygnal.html", 
-                "html_size": 2069, 
-                "id": 2116, 
-                "tags": [
-                    1, 
-                    2, 
-                    5290, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Symbol", 
-                "html": "/media/lektura/symbol_1.html", 
-                "html_size": 2801, 
-                "id": 2090, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Syn i ojciec", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1462, 
-                "html": "/media/lektura/syn-i-ojciec_.html", 
-                "parent_number": 96, 
-                "id": 1230
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Synogarlica", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1700, 
-                "html": "/media/lektura/synogarlica_.html", 
-                "parent_number": 97, 
-                "id": 1185
-            }, 
-            {
-                "parent": 295, 
-                "title": "Syrena", 
-                "tags": [
-                    31, 
-                    126, 
-                    128, 
-                    127
-                ], 
-                "html_size": 32567, 
-                "html": "/media/lektura/legendy-warszawskie-syrena_______.html", 
-                "parent_number": 1, 
-                "id": 218
-            }, 
-            {
-                "title": "Syrena", 
-                "html": "/media/lektura/syrena_2.html", 
-                "html_size": 15557, 
-                "id": 868, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Syrena", 
-                "html": "/media/lektura/basnie-syrena.html", 
-                "html_size": 69633, 
-                "id": 1919, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Szatan", 
-                "html": "/media/lektura/szatan_1.html", 
-                "html_size": 3661, 
-                "id": 2091, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Szczep winny", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2425, 
-                "html": "/media/lektura/szczep-winny-bajki-nowe_.html", 
-                "parent_number": 59, 
-                "id": 1303
-            }, 
-            {
-                "parent": 289, 
-                "title": "Szcz\u0119\u015bliwo\u015b\u0107 filut\u00f3w", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 15443, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-szczesliwosc-filutow_______.html", 
-                "parent_number": 3, 
-                "id": 64
-            }, 
-            {
-                "title": "Szcz\u0119\u015bliwy", 
-                "html": "/media/lektura/szczesliwy.html", 
-                "html_size": 16377, 
-                "id": 869, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Szczur i kot", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1903, 
-                "html": "/media/lektura/szczur-i-kot.html", 
-                "parent_number": 98, 
-                "id": 1342
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Szczurek i matka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 850, 
-                "html": "/media/lektura/szczurek-i-matka_.html", 
-                "parent_number": 99, 
-                "id": 1119
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Szczygie\u0142 i kos", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1788, 
-                "html": "/media/lektura/szczygiel-i-kos-bajki-nowe_.html", 
-                "parent_number": 60, 
-                "id": 1263
-            }, 
-            {
-                "title": "Szewcy", 
-                "html": "/media/lektura/szewcy.html", 
-                "html_size": 310371, 
-                "id": 1921, 
-                "tags": [
-                    152, 
-                    3170, 
-                    338, 
-                    3141
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Szkapa i rumak", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1486, 
-                "html": "/media/lektura/szkapa-i-rumak_.html", 
-                "parent_number": 100, 
-                "id": 1135
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Szkatu\u0142a ze z\u0142otem, w\u00f3r z kasz\u0105", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1734, 
-                "html": "/media/lektura/szkatula-ze-zlotem-wor-z-kasza_.html", 
-                "parent_number": 101, 
-                "id": 1152
-            }, 
-            {
-                "title": "Szkice w\u0119glem", 
-                "html": "/media/lektura/szkice-weglem.html", 
-                "html_size": 212199, 
-                "id": 968, 
-                "tags": [
-                    31, 
-                    1517, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "parent": 773, 
-                "title": "Szlakiem symplo\u0144skiej drogi", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 16319, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-alp-szlakiem-symplonskiej-drogi_.html", 
-                "parent_number": 6, 
-                "id": 763
-            }, 
-            {
-                "title": "Szyd\u0142o w worku", 
-                "html": "/media/lektura/szydlo-w-worku.html", 
-                "html_size": 11364, 
-                "id": 870, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "\u015alimak i r\u00f3\u017ca", 
-                "html": "/media/lektura/slimak-i-roza.html", 
-                "html_size": 7366, 
-                "id": 1061, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "\u015amier\u0107", 
-                "html": "/media/lektura/dzien-jak-co-dzien-smierc.html", 
-                "html_size": 3272, 
-                "id": 1543, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "\u015amier\u0107", 
-                "html": "/media/lektura/kamien-smierc.html", 
-                "html_size": 3715, 
-                "id": 1687, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1614, 
-                "title": "\u015amier\u0107 domu", 
-                "tags": [
-                    31, 
-                    54, 
-                    2294, 
-                    56
-                ], 
-                "html_size": 39607, 
-                "html": "/media/lektura/gloria-victis-smierc-domu.html", 
-                "parent_number": 6, 
-                "id": 1613
-            }, 
-            {
-                "title": "\u015amier\u0107 kurki", 
-                "html": "/media/lektura/smierc-kurki.html", 
-                "html_size": 9197, 
-                "id": 2177, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "\u015amier\u0107 n\u0119dzarzy", 
-                "html": "/media/lektura/kwiaty-zla-smierc-nedzarzy.html", 
-                "html_size": 1964, 
-                "id": 1887, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "\u015amier\u0107 Pana Premiera", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 12585, 
-                "html": "/media/lektura/but-w-butonierce-smierc-pana-premiera.html", 
-                "parent_number": 9, 
-                "id": 1375
-            }, 
-            {
-                "title": "\u015amier\u0107 Pu\u0142kownika", 
-                "html": "/media/lektura/smierc-pulkownika_______.html", 
-                "html_size": 6453, 
-                "id": 1599, 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "\u015amier\u0107 urz\u0119dnika", 
-                "html": "/media/lektura/smierc-urzednika_.html", 
-                "html_size": 8703, 
-                "id": 738, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "\u015amier\u0107, co trzyna\u015bcie lat sta\u0142a ko\u0142o mnie...", 
-                "html": "/media/lektura/smierc-co-trzynascie-lat-stala-kolo-mnie.html", 
-                "html_size": 4705, 
-                "id": 1992, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "\u015ani mi si\u0119 jaka\u015b wielka a przez wieki id\u0105ca...", 
-                "html": "/media/lektura/sni-mi-sie-jakas-wielka-a-przez-wieki-idaca.html", 
-                "html_size": 5741, 
-                "id": 1993, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "\u015anieg", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 2631, 
-                "html": "/media/lektura/but-w-butonierce-snieg.html", 
-                "parent_number": 17, 
-                "id": 1376
-            }, 
-            {
-                "parent": 1875, 
-                "title": "\u015ani\u0142a si\u0119 zima...", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 10357, 
-                "html": "/media/lektura/snila-sie-zima.html", 
-                "parent_number": 8, 
-                "id": 1870
-            }, 
-            {
-                "title": "\u015apiew rewolucyjny z roku 1830", 
-                "html": "/media/lektura/spiew-rewolucyjny-z-r-1830.html", 
-                "html_size": 4507, 
-                "id": 2118, 
-                "tags": [
-                    1, 
-                    2, 
-                    24, 
-                    5297
-                ]
-            }, 
-            {
-                "title": "\u015apiewak spod strzechy", 
-                "html": "/media/lektura/spiewak-spod-strzechy_.html", 
-                "html_size": 8694, 
-                "id": 1063, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "\u015apiewka powsta\u0144c\u00f3w z oddzia\u0142u Langiewicza", 
-                "html": "/media/lektura/spiewka-powstancow-z-oddzialu-langiewicza.html", 
-                "html_size": 7512, 
-                "id": 2121, 
-                "tags": [
-                    1, 
-                    2, 
-                    24, 
-                    5302
-                ]
-            }, 
-            {
-                "title": "\u015apiewny poca\u0142unek", 
-                "html": "/media/lektura/nic-wiecej-spiewny-pocalunek.html", 
-                "html_size": 3897, 
-                "id": 1690, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "\u015awiat", 
-                "html": "/media/lektura/dzien-jak-co-dzien-swiat.html", 
-                "html_size": 4364, 
-                "id": 1510, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 289, 
-                "title": "\u015awiat zepsuty", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 17405, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-swiat-zepsuty_________.html", 
-                "parent_number": 1, 
-                "id": 18
-            }, 
-            {
-                "title": "\u015awiat\u0142o po po\u0142udniu", 
-                "html": "/media/lektura/dzien-jak-co-dzien-swiatlo-po-poludniu.html", 
-                "html_size": 3650, 
-                "id": 1544, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "\u015awidryga i Midryga", 
-                "html": "/media/lektura/swidryga-i-midryga________.html", 
-                "html_size": 7750, 
-                "id": 1387, 
-                "tags": [
-                    337, 
-                    1, 
-                    3035, 
-                    336
-                ]
-            }, 
-            {
-                "title": "\u015awi\u0119toszek", 
-                "html": "/media/lektura/swietoszek_______.html", 
-                "html_size": 305454, 
-                "id": 1719, 
-                "tags": [
-                    123, 
-                    152, 
-                    153, 
-                    1324
-                ]
-            }, 
-            {
-                "parent": 293, 
-                "title": "\u015awi\u0119ty Bo\u017ce, \u015awi\u0119ty Mocny!", 
-                "tags": [
-                    332, 
-                    339, 
-                    1, 
-                    128
-                ], 
-                "html_size": 40112, 
-                "html": "/media/lektura/hymny-swiety-boze-swiety-mocny_______.html", 
-                "parent_number": 2, 
-                "id": 244
-            }, 
-            {
-                "parent": 291, 
-                "title": "\u015awitezianka", 
-                "tags": [
-                    210, 
-                    1, 
-                    23, 
-                    24
-                ], 
-                "html_size": 16771, 
-                "html": "/media/lektura/ballady-i-romanse-switezianka_______.html", 
-                "parent_number": 7, 
-                "id": 146
-            }, 
-            {
-                "parent": 291, 
-                "title": "\u015awite\u017a", 
-                "tags": [
-                    210, 
-                    1, 
-                    23, 
-                    24
-                ], 
-                "html_size": 22029, 
-                "html": "/media/lektura/ballady-i-romanse-switez_______.html", 
-                "parent_number": 6, 
-                "id": 194
-            }, 
-            {
-                "title": "Ta chwila", 
-                "html": "/media/lektura/nic-wiecej-ta-chwila.html", 
-                "html_size": 1783, 
-                "id": 1691, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Tak mi, Bo\u017ce, dopom\u00f3\u017c", 
-                "html": "/media/lektura/tak-mi-boze-dopomoz.html", 
-                "html_size": 6110, 
-                "id": 1974, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Tako rzecze Zaratustra", 
-                "html": "/media/lektura/tako-rzecze-zaratustra_1.html", 
-                "html_size": 1139153, 
-                "id": 2198, 
-                "tags": [
-                    31, 
-                    128, 
-                    5723, 
-                    242
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Talar i czerwony z\u0142oty", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1630, 
-                "html": "/media/lektura/talar-czerwony-i-zloty.html", 
-                "parent_number": 102, 
-                "id": 1343
-            }, 
-            {
-                "title": "Tamten", 
-                "html": "/media/lektura/napoj-cienisty-tamten.html", 
-                "html_size": 3066, 
-                "id": 1642, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Tango jesienne", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 2296, 
-                "html": "/media/lektura/but-w-butonierce-tango-jesienne.html", 
-                "parent_number": 24, 
-                "id": 1378
-            }, 
-            {
-                "parent": 287, 
-                "title": "Taniec zb\u00f3jnicki", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 37806, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-tatr-taniec-zbojnicki___.html", 
-                "parent_number": 5, 
-                "id": 768
-            }, 
-            {
-                "parent": 711, 
-                "title": "Tego\u017c ma\u0142\u017conce (Anna z Pi\u0142ce, dwu m\u0119\u017cu zacnych pochowawszy...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2154, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-tegoz-malzonce-anna-z-pilce-dwu-mezu-za____.html", 
-                "parent_number": 50, 
-                "id": 475
-            }, 
-            {
-                "parent": 711, 
-                "title": "Temu\u017c (By B\u00f3g dusz\u0119 za dusz\u0119 chcia\u0142 od nas przyjmowa\u0107...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1822, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-temuz-by-bog-dusze-za-dusze-chcial-od-n____.html", 
-                "parent_number": 59, 
-                "id": 440
-            }, 
-            {
-                "parent": 710, 
-                "title": "Temu\u017c (O\u015bmdziesi\u0105t lat, a to jest prawy wiek cz\u0142owieczy...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1443, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-temuz-osmdziesiat-lat-a-to-jest-prawy____.html", 
-                "parent_number": 51, 
-                "id": 502
-            }, 
-            {
-                "title": "Ten sam duchowi p\u0142omienny szlak...", 
-                "html": "/media/lektura/ten-sam-duchowi-plomienny-szlak.html", 
-                "html_size": 2131, 
-                "id": 1994, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Testament m\u00f3j", 
-                "html": "/media/lektura/testament-moj________.html", 
-                "html_size": 17768, 
-                "id": 63, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "T\u0142umaczenia", 
-                "id": 1625, 
-                "tags": [
-                    1903, 
-                    1889, 
-                    1, 
-                    34
-                ]
-            }, 
-            {
-                "title": "Toru\u0144", 
-                "html": "/media/lektura/nic-wiecej-torun.html", 
-                "html_size": 2734, 
-                "id": 1692, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Towarzysz podr\u00f3\u017cy", 
-                "html": "/media/lektura/towarzysz-podrozy.html", 
-                "html_size": 55583, 
-                "id": 1064, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren I", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 13090, 
-                "html": "/media/lektura/treny-tren-i.html", 
-                "parent_number": 2, 
-                "id": 1460
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren II", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 19206, 
-                "html": "/media/lektura/treny-tren-ii.html", 
-                "parent_number": 3, 
-                "id": 1461
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren III", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 10363, 
-                "html": "/media/lektura/treny-tren-iii.html", 
-                "parent_number": 4, 
-                "id": 1462
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren IV", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 9700, 
-                "html": "/media/lektura/treny-tren-iv.html", 
-                "parent_number": 5, 
-                "id": 1463
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren IX", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 11388, 
-                "html": "/media/lektura/treny-tren-ix.html", 
-                "parent_number": 10, 
-                "id": 1468
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren V", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 8612, 
-                "html": "/media/lektura/treny-tren-v.html", 
-                "parent_number": 6, 
-                "id": 1464
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren VI", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 9569, 
-                "html": "/media/lektura/treny-tren-vi.html", 
-                "parent_number": 7, 
-                "id": 1465
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren VII", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 9241, 
-                "html": "/media/lektura/treny-tren-vii.html", 
-                "parent_number": 8, 
-                "id": 1466
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren VIII", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 7536, 
-                "html": "/media/lektura/treny-tren-viii.html", 
-                "parent_number": 9, 
-                "id": 1467
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren X", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 7214, 
-                "html": "/media/lektura/treny-tren-x.html", 
-                "parent_number": 11, 
-                "id": 1469
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren XI", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 10078, 
-                "html": "/media/lektura/treny-tren-xi_.html", 
-                "parent_number": 12, 
-                "id": 1470
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren XII", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 12611, 
-                "html": "/media/lektura/treny-tren-xii.html", 
-                "parent_number": 13, 
-                "id": 1471
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren XIII", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 8909, 
-                "html": "/media/lektura/treny-tren-xiii.html", 
-                "parent_number": 14, 
-                "id": 1472
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren XIV", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 11247, 
-                "html": "/media/lektura/treny-tren-xiv.html", 
-                "parent_number": 15, 
-                "id": 1473
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren XIX albo Sen", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 52141, 
-                "html": "/media/lektura/treny-tren-xix-albo-sen_.html", 
-                "parent_number": 20, 
-                "id": 1478
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren XV", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 17352, 
-                "html": "/media/lektura/treny-tren-xv.html", 
-                "parent_number": 16, 
-                "id": 1474
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren XVI", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 20128, 
-                "html": "/media/lektura/treny-tren-xvi.html", 
-                "parent_number": 17, 
-                "id": 1475
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren XVII", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 13468, 
-                "html": "/media/lektura/treny-tren-xvii.html", 
-                "parent_number": 18, 
-                "id": 1476
-            }, 
-            {
-                "parent": 1481, 
-                "title": "Tren XVIII", 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ], 
-                "html_size": 9696, 
-                "html": "/media/lektura/treny-tren-xviii.html", 
-                "parent_number": 19, 
-                "id": 1477
-            }, 
-            {
-                "title": "Treny", 
-                "id": 1481, 
-                "tags": [
-                    3, 
-                    1, 
-                    4, 
-                    52
-                ]
-            }, 
-            {
-                "title": "Trupi\u0119gi", 
-                "html": "/media/lektura/napoj-cienisty-trupiegi.html", 
-                "html_size": 3973, 
-                "id": 1643, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Trupy z kawiorem", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 6028, 
-                "html": "/media/lektura/but-w-butonierce-trupy-z-kawiorem.html", 
-                "parent_number": 11, 
-                "id": 1379
-            }, 
-            {
-                "title": "Tryumfy Kr\u00f3la niebieskiego", 
-                "html": "/media/lektura/tryumfy-krola-niebieskiego_1.html", 
-                "html_size": 6806, 
-                "id": 2038, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Trzcina i chmiel", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1267, 
-                "html": "/media/lektura/trzcina-i-chmiel_.html", 
-                "parent_number": 103, 
-                "id": 1132
-            }, 
-            {
-                "title": "Trzeci maj Litwina", 
-                "html": "/media/lektura/trzeci-maj-litwina.html", 
-                "html_size": 4305, 
-                "id": 2119, 
-                "tags": [
-                    1, 
-                    2, 
-                    24, 
-                    5297
-                ]
-            }, 
-            {
-                "title": "Trzej bracia", 
-                "html": "/media/lektura/trzej-bracia.html", 
-                "html_size": 8785, 
-                "id": 2178, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Trzoda", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3375, 
-                "html": "/media/lektura/trzoda-bajki-nowe_.html", 
-                "parent_number": 61, 
-                "id": 1288
-            }, 
-            {
-                "title": "Trzy pi\u00f3ra", 
-                "html": "/media/lektura/trzy-piora.html", 
-                "html_size": 14756, 
-                "id": 2179, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Trzy poemata", 
-                "id": 1562, 
-                "tags": [
-                    1, 
-                    1756, 
-                    24, 
-                    189
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Tulipan i fia\u0142ek", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1612, 
-                "html": "/media/lektura/tulipan-i-fialek_.html", 
-                "parent_number": 104, 
-                "id": 1203
-            }, 
-            {
-                "title": "Ty g\u0142os cierpi\u0105cy podnie\u015b - i niech w tobie... (Do A. Czartoryskiego)", 
-                "html": "/media/lektura/ty-glos-cierpiacy-podnies-i-niech-w-tobie.html", 
-                "html_size": 6177, 
-                "id": 2009, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "U kr\u00f3la Olch", 
-                "html": "/media/lektura/u-krola-olch.html", 
-                "html_size": 22908, 
-                "id": 1065, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Ubogi bogaty", 
-                "html": "/media/lektura/ubogi-bogaty.html", 
-                "html_size": 20566, 
-                "id": 2180, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Ub\u00f3stwo", 
-                "html": "/media/lektura/napoj-cienisty-ubostwo.html", 
-                "html_size": 3044, 
-                "id": 1644, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Uciec z dusz\u0105 na listek", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 779, 
-                "html": "/media/lektura/uciec-z-dusza-na-listek.html", 
-                "parent_number": 10, 
-                "id": 1872
-            }, 
-            {
-                "title": "Ukradziony grosik", 
-                "html": "/media/lektura/ukradziony-grosik.html", 
-                "html_size": 3844, 
-                "id": 2181, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "U\u0142an i dziewczyna", 
-                "html": "/media/lektura/ulan-i-dziewczyna.html", 
-                "html_size": 6078, 
-                "id": 2109, 
-                "tags": [
-                    5282, 
-                    1, 
-                    2, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Umbrelka", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 4223, 
-                "html": "/media/lektura/umbrelka-bajki-nowe_.html", 
-                "parent_number": 62, 
-                "id": 1252
-            }, 
-            {
-                "parent": 828, 
-                "title": "Upi\u00f3r", 
-                "tags": [
-                    210, 
-                    31, 
-                    23, 
-                    24
-                ], 
-                "html_size": 11933, 
-                "html": "/media/lektura/dziady-dziady-poema-upior.html", 
-                "parent_number": 0, 
-                "id": 831
-            }, 
-            {
-                "title": "Upi\u00f3r", 
-                "html": "/media/lektura/kwiaty-zla-upior.html", 
-                "html_size": 4173, 
-                "id": 1910, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Urszula Kochanowska", 
-                "html": "/media/lektura/urszula-kochanowska________.html", 
-                "html_size": 4689, 
-                "id": 1388, 
-                "tags": [
-                    337, 
-                    1, 
-                    3035, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 754, 
-                "title": "V (Z g\u0142\u0119bin przestworu, z ciemnych chmur...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 4056, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-v-z-glebin-przestworu-z-ciemnych-chmur_.html", 
-                "parent_number": 4, 
-                "id": 747
-            }, 
-            {
-                "parent": 754, 
-                "title": "VI (Ach! nieraz mi si\u0119 zdaje...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 3504, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-vi-ach-nieraz-mi-sie-zdaje_.html", 
-                "parent_number": 6, 
-                "id": 1577
-            }, 
-            {
-                "parent": 754, 
-                "title": "VII (\u017bycia ogromne morze grzmi przede mn\u0105...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 11260, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-vii-zycia-ogromne-morze-grzmi-przede-mna.html", 
-                "parent_number": 7, 
-                "id": 1578
-            }, 
-            {
-                "parent": 754, 
-                "title": "VIII (By\u0142e\u015b mi dawniej bo\u017cyszczem, o t\u0142umie...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 12329, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-viii-byles-mi-dawniej-bozyszczem-o-tlumie_.html", 
-                "parent_number": 7, 
-                "id": 750
-            }, 
-            {
-                "title": "Virgini intactae", 
-                "html": "/media/lektura/virgini-intactae_1.html", 
-                "html_size": 2360, 
-                "id": 2092, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W albumie E. Hr. Krasi\u0144skiej", 
-                "html": "/media/lektura/w-albumie-e-hr-krasinskiej.html", 
-                "html_size": 2633, 
-                "id": 1977, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W biurze pocztowym", 
-                "html": "/media/lektura/w-biurze-pocztowym.html", 
-                "html_size": 4370, 
-                "id": 872, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "W boju", 
-                "html": "/media/lektura/nic-wiecej-w-boju.html", 
-                "html_size": 5790, 
-                "id": 1702, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W chmur odbiciu", 
-                "html": "/media/lektura/napoj-cienisty-w-chmur-odbiciu.html", 
-                "html_size": 6576, 
-                "id": 1743, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W ciemno\u015bci schodzi moja dusza", 
-                "id": 754, 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W czas zmartwychwstania", 
-                "html": "/media/lektura/napoj-cienisty-w-czas-zmartwychwstania.html", 
-                "html_size": 2805, 
-                "id": 1646, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W dziecinne moje cudne lata...", 
-                "html": "/media/lektura/w-dziecinne-moje-cudne-lata.html", 
-                "html_size": 883, 
-                "id": 1978, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "W imionniku C. S.", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2819, 
-                "html": "/media/lektura/w-imionniku-c-s.html", 
-                "parent_number": 26, 
-                "id": 2201
-            }, 
-            {
-                "title": "W jesieni", 
-                "html": "/media/lektura/w-jesieni_1.html", 
-                "html_size": 1965, 
-                "id": 2093, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W kolorowej nocy", 
-                "html": "/media/lektura/nic-wiecej-w-kolorowej-nocy.html", 
-                "html_size": 3908, 
-                "id": 1693, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W malinowym chru\u015bniaku", 
-                "html": "/media/lektura/w-malinowym-chrusniaku________.html", 
-                "html_size": 18951, 
-                "id": 1389, 
-                "tags": [
-                    337, 
-                    1, 
-                    3035, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W ma\u0142ym dworku", 
-                "html": "/media/lektura/w-malym-dworku.html", 
-                "html_size": 144821, 
-                "id": 1564, 
-                "tags": [
-                    152, 
-                    3170, 
-                    338, 
-                    3141
-                ]
-            }, 
-            {
-                "title": "W ostatni dzie\u0144 - w ostatni dzie\u0144...", 
-                "html": "/media/lektura/w-ostatni-dzien-w-ostatni-dzien.html", 
-                "html_size": 2938, 
-                "id": 2003, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W pami\u0119tniku Zofii Bobr\u00f3wny", 
-                "html": "/media/lektura/w-pamietniku-zofii-bobrowny_______.html", 
-                "html_size": 2397, 
-                "id": 217, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W pejza\u017cu", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-w-pejzazu.html", 
-                "html_size": 2351, 
-                "id": 1669, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1846, 
-                "title": "W podziemiach Wawelu", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 10726, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-w-podziemiach-wawelu_.html", 
-                "parent_number": 12, 
-                "id": 1844
-            }, 
-            {
-                "title": "W pustyni i w puszczy", 
-                "html": "/media/lektura/w-pustyni-i-w-puszczy_2.html", 
-                "html_size": 1037713, 
-                "id": 1569, 
-                "tags": [
-                    31, 
-                    242, 
-                    56, 
-                    350
-                ]
-            }, 
-            {
-                "title": "W razurze", 
-                "html": "/media/lektura/w-razurze.html", 
-                "html_size": 11276, 
-                "id": 873, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "W sztambuchu Marii Wodzi\u0144skiej", 
-                "html": "/media/lektura/w-sztambuchu-marii-wodzinskiej.html", 
-                "html_size": 3843, 
-                "id": 1980, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1562, 
-                "title": "W Szwajcarii", 
-                "tags": [
-                    1, 
-                    1756, 
-                    24, 
-                    189
-                ], 
-                "html_size": 47357, 
-                "html": "/media/lektura/trzy-poemata-w-szwajcarii.html", 
-                "parent_number": 2, 
-                "id": 1561
-            }, 
-            {
-                "title": "W z\u0142ym humorze", 
-                "html": "/media/lektura/w-zlym-humorze.html", 
-                "html_size": 5869, 
-                "id": 875, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "W \u017c\u0142obie le\u017cy...", 
-                "html": "/media/lektura/w-zlobie-lezy_1.html", 
-                "html_size": 9703, 
-                "id": 2039, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wabik", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2175, 
-                "html": "/media/lektura/wabik-bajki-nowe_.html", 
-                "parent_number": 63, 
-                "id": 1305
-            }, 
-            {
-                "parent": 1562, 
-                "title": "Wac\u0142aw", 
-                "tags": [
-                    1, 
-                    1756, 
-                    24, 
-                    189
-                ], 
-                "html_size": 104431, 
-                "html": "/media/lektura/trzy-poemata-waclaw.html", 
-                "parent_number": 3, 
-                "id": 1560
-            }, 
-            {
-                "title": "Wa\u0144ka", 
-                "html": "/media/lektura/wanka.html", 
-                "html_size": 10088, 
-                "id": 871, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Warkocz", 
-                "html": "/media/lektura/kwiaty-zla-warkocz.html", 
-                "html_size": 7809, 
-                "id": 1911, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Warszawianka 1831", 
-                "html": "/media/lektura/warszawianka-1831.html", 
-                "html_size": 8917, 
-                "id": 2106, 
-                "tags": [
-                    5276, 
-                    1, 
-                    2, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Warszawianka 1905", 
-                "html": "/media/lektura/warszawianka-1905.html", 
-                "html_size": 5250, 
-                "id": 2120, 
-                "tags": [
-                    1, 
-                    128, 
-                    2, 
-                    5300
-                ]
-            }, 
-            {
-                "title": "W\u0105wozy czasu", 
-                "html": "/media/lektura/dzien-jak-co-dzien-wawozy-czasu.html", 
-                "html_size": 10026, 
-                "id": 1545, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "We czterech", 
-                "html": "/media/lektura/kamien-we-czterech.html", 
-                "html_size": 6699, 
-                "id": 1688, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "We \u015bnie", 
-                "html": "/media/lektura/napoj-cienisty-we-snie.html", 
-                "html_size": 1401, 
-                "id": 1647, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wesele", 
-                "html": "/media/lektura/wesele.html", 
-                "html_size": 627349, 
-                "id": 734, 
-                "tags": [
-                    152, 
-                    1484, 
-                    128, 
-                    1485
-                ]
-            }, 
-            {
-                "title": "Westchnienie", 
-                "html": "/media/lektura/nuta-czlowiecza-westchnienie.html", 
-                "html_size": 2393, 
-                "id": 1703, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W\u0119drowcy", 
-                "html": "/media/lektura/wedrowcy_1.html", 
-                "html_size": 2666, 
-                "id": 2094, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 287, 
-                "title": "Wiatr halny", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 7386, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-tatr-wiatr-halny__.html", 
-                "parent_number": 2, 
-                "id": 769
-            }, 
-            {
-                "title": "Widmo", 
-                "html": "/media/lektura/kwiaty-zla-widmo.html", 
-                "html_size": 10070, 
-                "id": 1912, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1798, 
-                "title": "Widok g\u00f3r ze step\u00f3w Koz\u0142owa", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 6132, 
-                "html": "/media/lektura/sonety-krymskie-widok-gor-ze-stepow-kozlowa_______.html", 
-                "parent_number": 5, 
-                "id": 1785
-            }, 
-            {
-                "title": "Widok ze \u015bwinicy do Doliny Wierchcichej", 
-                "html": "/media/lektura/widok-ze-swinicy-do-doliny-wierchcichej_1.html", 
-                "html_size": 3833, 
-                "id": 2095, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1875, 
-                "title": "Widzenie", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 8139, 
-                "html": "/media/lektura/widzenie.html", 
-                "parent_number": 11, 
-                "id": 1873
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Widzenie si\u0119 w gaju", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2336, 
-                "html": "/media/lektura/widzenie-sie-w-gaju_1.html", 
-                "parent_number": 27, 
-                "id": 2203
-            }, 
-            {
-                "title": "Wieczorem", 
-                "html": "/media/lektura/dzien-jak-co-dzien-wieczorem.html", 
-                "html_size": 3011, 
-                "id": 1546, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wiecz\u00f3r", 
-                "html": "/media/lektura/napoj-cienisty-wieczor.html", 
-                "html_size": 3403, 
-                "id": 1648, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wiedza", 
-                "html": "/media/lektura/napoj-cienisty-wiedza.html", 
-                "html_size": 2145, 
-                "id": 1649, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wielcy\u015bmy byli i \u015bmieszni\u015bmy byli...", 
-                "html": "/media/lektura/wielcysmy-byli-i-smiesznismy-byli.html", 
-                "html_size": 2559, 
-                "id": 1981, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wierna rzeka", 
-                "html": "/media/lektura/wierna-rzeka_1.html", 
-                "html_size": 386387, 
-                "id": 1041, 
-                "tags": [
-                    31, 
-                    128, 
-                    242, 
-                    293
-                ]
-            }, 
-            {
-                "title": "Wiersz ksi\u0119\u017cycowy", 
-                "html": "/media/lektura/napoj-cienisty-wiersz-ksiezycowy.html", 
-                "html_size": 2835, 
-                "id": 1650, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wiersz ten ci \u015bwi\u0119c\u0119...", 
-                "html": "/media/lektura/kwiaty-zla-wiersz-ten-ci-swiece.html", 
-                "html_size": 3607, 
-                "id": 1913, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wierzba i lipa", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1217, 
-                "html": "/media/lektura/wierzba-i-lipa-bajki-nowe_.html", 
-                "parent_number": 64, 
-                "id": 1286
-            }, 
-            {
-                "title": "Wierz\u0119...", 
-                "html": "/media/lektura/wierze.html", 
-                "html_size": 4497, 
-                "id": 1982, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wiesz, Panie, i\u017cem zbiega\u0142 \u015bwiat szeroki...", 
-                "html": "/media/lektura/wiesz-panie-izem-zbiegal-swiat-szeroki.html", 
-                "html_size": 12361, 
-                "id": 1983, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wi\u0119zienie", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-wiezienie.html", 
-                "html_size": 3050, 
-                "id": 1668, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wigilia", 
-                "html": "/media/lektura/nuta-czlowiecza-wigilia.html", 
-                "html_size": 3013, 
-                "id": 1700, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wilczek", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3293, 
-                "html": "/media/lektura/wilczek-bajki-nowe_.html", 
-                "parent_number": 65, 
-                "id": 1315
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wilczki", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3430, 
-                "html": "/media/lektura/wilczki-bajki-nowe_.html", 
-                "parent_number": 66, 
-                "id": 1289
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wilk i baran", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1895, 
-                "html": "/media/lektura/wilk-i-baran-bajki-nowe_.html", 
-                "parent_number": 67, 
-                "id": 1324
-            }, 
-            {
-                "title": "Wilk i cz\u0142owiek", 
-                "html": "/media/lektura/wilk-i-czowiek.html", 
-                "html_size": 5850, 
-                "id": 2182, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Wilk i owce", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2442, 
-                "html": "/media/lektura/wilk-i-owce_.html", 
-                "parent_number": 105, 
-                "id": 1134
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Wilk i owce II", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 4124, 
-                "html": "/media/lektura/wilk-i-owce-ii_.html", 
-                "parent_number": 106, 
-                "id": 1148
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Wilk pokutuj\u0105cy", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2524, 
-                "html": "/media/lektura/wilk-pokutujacy_.html", 
-                "parent_number": 107, 
-                "id": 1125
-            }, 
-            {
-                "title": "William Wilson", 
-                "html": "/media/lektura/william-wilson.html", 
-                "html_size": 72294, 
-                "id": 1708, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Wino ga\u0142ganiarza", 
-                "html": "/media/lektura/kwiaty-zla-wino-galganiarza.html", 
-                "html_size": 4787, 
-                "id": 1888, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Wino i woda", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 873, 
-                "html": "/media/lektura/wino-i-woda_.html", 
-                "parent_number": 108, 
-                "id": 1209
-            }, 
-            {
-                "title": "Wino samotnika", 
-                "html": "/media/lektura/kwiaty-zla-wino-samotnika.html", 
-                "html_size": 2802, 
-                "id": 1914, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wino szampa\u0144skie", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2269, 
-                "html": "/media/lektura/wino-szampanskie-bajki-nowe_.html", 
-                "parent_number": 68, 
-                "id": 1275
-            }, 
-            {
-                "parent": 1383, 
-                "title": "Wiosna", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 1357, 
-                "html": "/media/lektura/but-w-butonierce-wiosna.html", 
-                "parent_number": 15, 
-                "id": 1380
-            }, 
-            {
-                "title": "Wiosna", 
-                "html": "/media/lektura/napoj-cienisty-wiosna.html", 
-                "html_size": 5486, 
-                "id": 1651, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "W\u0142\u00f3cz\u0119gi", 
-                "html": "/media/lektura/woczegi.html", 
-                "html_size": 8802, 
-                "id": 2183, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Wodotrysk", 
-                "html": "/media/lektura/kwiaty-zla-wodotrysk.html", 
-                "html_size": 5042, 
-                "id": 1915, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Wo\u0142y krn\u0105brne", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 868, 
-                "html": "/media/lektura/woly-krnabrne_.html", 
-                "parent_number": 109, 
-                "id": 1231
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Worki", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3025, 
-                "html": "/media/lektura/worki-bajki-nowe_.html", 
-                "parent_number": 69, 
-                "id": 1247
-            }, 
-            {
-                "parent": 1237, 
-                "title": "W\u00f3\u0142 i mr\u00f3wki", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1459, 
-                "html": "/media/lektura/wol-i-mrowki_.html", 
-                "parent_number": 110, 
-                "id": 1202
-            }, 
-            {
-                "parent": 1237, 
-                "title": "W\u00f3\u0142 minister", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1743, 
-                "html": "/media/lektura/wol-minister_.html", 
-                "parent_number": 111, 
-                "id": 1175
-            }, 
-            {
-                "parent": 1333, 
-                "title": "W\u00f3z z sianem", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2087, 
-                "html": "/media/lektura/woz-z-sianem-bajki-nowe_.html", 
-                "parent_number": 70, 
-                "id": 1313
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wrobel", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1939, 
-                "html": "/media/lektura/wrobel-bajki-nowe_.html", 
-                "parent_number": 71, 
-                "id": 1278
-            }, 
-            {
-                "title": "Wspomnienie", 
-                "html": "/media/lektura/napoj-cienisty-wspomnienie.html", 
-                "html_size": 5802, 
-                "id": 1744, 
-                "tags": [
-                    337, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wspomnienie pani de St. Marcel z domu Chauveaux", 
-                "html": "/media/lektura/wspomnienie-pani-de-st-marcel-z-domu-chauveaux.html", 
-                "html_size": 8573, 
-                "id": 1984, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 295, 
-                "title": "Wst\u0119p", 
-                "tags": [
-                    31, 
-                    126, 
-                    128, 
-                    127
-                ], 
-                "html_size": 5448, 
-                "html": "/media/lektura/legendy-warszawskie-wstep_______.html", 
-                "parent_number": 0, 
-                "id": 81
-            }, 
-            {
-                "parent": 1234, 
-                "title": "Wst\u0119p do bajek", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1894, 
-                "html": "/media/lektura/wstep-do-bajek.html", 
-                "parent_number": 2, 
-                "id": 1245
-            }, 
-            {
-                "title": "Wst\u0119p do bajek i przypowie\u015bci", 
-                "id": 1234, 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ]
-            }, 
-            {
-                "title": "Wszechmocny B\u00f3g", 
-                "html": "/media/lektura/wszechmocny-bog_1.html", 
-                "html_size": 2211, 
-                "id": 2096, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wszechwiedz\u0105cy dokt\u00f3r", 
-                "html": "/media/lektura/wszechwiedzacy-doktor.html", 
-                "html_size": 9254, 
-                "id": 2184, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Wszystko na swoim miejscu", 
-                "html": "/media/lektura/wszystko-na-swoim-miejscu.html", 
-                "html_size": 23118, 
-                "id": 1066, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "W\u015br\u00f3d nocnej ciszy", 
-                "html": "/media/lektura/wsrod-nocnej-ciszy_1.html", 
-                "html_size": 3375, 
-                "id": 2040, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "title": "Wyjdzie stu robotnik\u00f3w", 
-                "html": "/media/lektura/wyjdzie-stu-robotnikow.html", 
-                "html_size": 2817, 
-                "id": 1072, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Wykrzyknik", 
-                "html": "/media/lektura/wykrzyknik.html", 
-                "html_size": 13720, 
-                "id": 874, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wyrok", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 831, 
-                "html": "/media/lektura/wyrok-bajki-nowe_.html", 
-                "parent_number": 72, 
-                "id": 1255
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Wyszydzaj\u0105cy", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1694, 
-                "html": "/media/lektura/wyszydzajacy_.html", 
-                "parent_number": 112, 
-                "id": 1158
-            }, 
-            {
-                "title": "Wyznanie", 
-                "html": "/media/lektura/kwiaty-zla-wyznanie_2.html", 
-                "html_size": 5961, 
-                "id": 1916, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wy\u017ce\u0142 i brytan", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3145, 
-                "html": "/media/lektura/wyzel-i-brytan-bajki-nowe_.html", 
-                "parent_number": 73, 
-                "id": 1287
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Wy\u017ce\u0142 i brytan II", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3961, 
-                "html": "/media/lektura/wyzel-i-brytan-ii-bajki-nowe_.html", 
-                "parent_number": 74, 
-                "id": 1257
-            }, 
-            {
-                "parent": 294, 
-                "title": "Wzi\u0119to\u015b\u0107", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 19416, 
-                "html": "/media/lektura/satyry-czesc-druga-wzietosc_______.html", 
-                "parent_number": 3, 
-                "id": 34
-            }, 
-            {
-                "title": "Wzlot", 
-                "html": "/media/lektura/kwiaty-zla-wzlot_1.html", 
-                "html_size": 3210, 
-                "id": 1917, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 754, 
-                "title": "X (T\u0119skni\u0119 ku tobie, o szumi\u0105cy lesie...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 8276, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-x-tesknie-ku-tobie-o-szumiacy-lesie_.html", 
-                "parent_number": 9, 
-                "id": 752
-            }, 
-            {
-                "parent": 754, 
-                "title": "XI (B\u00f3lu szemrz\u0105cy zdr\u00f3j...)", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2486, 
-                "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-xi-bolu-szemrzacy-zdroj_.html", 
-                "parent_number": 10, 
-                "id": 753
-            }, 
-            {
-                "id": 773, 
-                "title": "Z Alp", 
-                "parent_number": 0, 
-                "parent": 301, 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Z Anakreonta (Ci\u0119\u017cko, kto nie mi\u0142uje, ci\u0119\u017cko, kto mi\u0142uje...)", 
-                "tags": [
-                    320, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1237, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-z-anakreonta-ciezko-kto-nie-miluje-c_____.html", 
-                "parent_number": 96, 
-                "id": 609
-            }, 
-            {
-                "parent": 708, 
-                "title": "Z Anakreonta (Ja chc\u0119 \u015bpiewa\u0107 krwawe boje...)", 
-                "tags": [
-                    320, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 3465, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-z-anakreonta-ja-chce-spiewac-krwawe-_____.html", 
-                "parent_number": 97, 
-                "id": 587
-            }, 
-            {
-                "parent": 708, 
-                "title": "Z Anakreonta (Kiedy by worek bogatego z\u0142ota...)", 
-                "tags": [
-                    320, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1512, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-z-anakreonta-kiedy-by-worek-bogatego_____.html", 
-                "parent_number": 98, 
-                "id": 509
-            }, 
-            {
-                "parent": 710, 
-                "title": "Z Anakreonta (Nie dba\u0142em nigdy o z\u0142oto...)", 
-                "tags": [
-                    320, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1335, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-z-anakreonta-nie-dbalem-nigdy-o-zloto____.html", 
-                "parent_number": 83, 
-                "id": 437
-            }, 
-            {
-                "parent": 711, 
-                "title": "Z Anakreonta (Podg\u00f3rski \u017arz\u00f3bku, czemu, patrz\u0105c krzywo...)", 
-                "tags": [
-                    320, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1472, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-z-anakreonta-podgorski-zrzobku-czemu-pa____.html", 
-                "parent_number": 100, 
-                "id": 606
-            }, 
-            {
-                "parent": 708, 
-                "title": "Z Anakreonta (Pr\u00f3\u017cno si\u0119 mam odejmowa\u0107...)", 
-                "tags": [
-                    320, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 5313, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-z-anakreonta-prozno-sie-mam-odejmowa_____.html", 
-                "parent_number": 99, 
-                "id": 693
-            }, 
-            {
-                "parent": 710, 
-                "title": "Z Anakreonta (Skoro w r\u0119k\u0119 wezm\u0119 czasz\u0119...)", 
-                "tags": [
-                    320, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1234, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-z-anakreonta-skoro-w-reke-wezme-czasz____.html", 
-                "parent_number": 84, 
-                "id": 569
-            }, 
-            {
-                "parent": 1625, 
-                "title": "Z autora niewiadomego", 
-                "tags": [
-                    1903, 
-                    1889, 
-                    1, 
-                    34
-                ], 
-                "html_size": 716, 
-                "html": "/media/lektura/tlumaczenia-z-autora-niewiadomego.html", 
-                "parent_number": 1, 
-                "id": 1621
-            }, 
-            {
-                "parent": 1625, 
-                "title": "Z ballady", 
-                "tags": [
-                    1903, 
-                    1889, 
-                    1, 
-                    34
-                ], 
-                "html_size": 679, 
-                "html": "/media/lektura/tlumaczenia-z-ballady.html", 
-                "parent_number": 3, 
-                "id": 1622
-            }, 
-            {
-                "parent": 711, 
-                "title": "Z greckiego (Alkon patrz\u0105c na syna, kiedy go smok srogi...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1629, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-alkon-patrzac-na-syna-kiedy____.html", 
-                "parent_number": 101, 
-                "id": 568
-            }, 
-            {
-                "parent": 711, 
-                "title": "Z greckiego (Ani w m\u0142odej rozkoszy, ani w starej widz\u0119...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 692, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-ani-w-mlodej-rozkoszy-ani-w____.html", 
-                "parent_number": 102, 
-                "id": 652
-            }, 
-            {
-                "parent": 711, 
-                "title": "Z greckiego (By si\u0119 wszytka nawalno\u015b\u0107 morska poruszy\u0142a...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 894, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-by-sie-wszytka-nawalnosc-mo____.html", 
-                "parent_number": 103, 
-                "id": 651
-            }, 
-            {
-                "parent": 711, 
-                "title": "Z greckiego (Nie s\u0105d\u017a mi\u0119 za umar\u0142\u0105, go\u015bciu m\u00f3j mi\u0142y...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1950, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-nie-sadz-mie-za-umarla-gosc____.html", 
-                "parent_number": 104, 
-                "id": 705
-            }, 
-            {
-                "parent": 711, 
-                "title": "Z greckiego (Nie z Messany, nie z Argu tu, zapa\u015bnik, stoj\u0119...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1188, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-nie-z-messany-nie-z-argu-tu____.html", 
-                "parent_number": 105, 
-                "id": 446
-            }, 
-            {
-                "parent": 711, 
-                "title": "Z greckiego (Nie znam si\u0119 ku tym \u0142upom: kto li to, szalony...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1834, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-nie-znam-sie-ku-tym-lupom-k____.html", 
-                "parent_number": 106, 
-                "id": 593
-            }, 
-            {
-                "parent": 710, 
-                "title": "Z greckiego (Samy do swej obory wo\u0142y rozpuszczone...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 793, 
-                "html": "/media/lektura/fraszki-ksiegi-trzecie-z-greckiego-samy-do-swej-obory-woly-r____.html", 
-                "parent_number": 85, 
-                "id": 701
-            }, 
-            {
-                "parent": 711, 
-                "title": "Z greckiego (W tym grobie pi\u0119kna Timas le\u017cy pogrzebiona...)", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 1006, 
-                "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-w-tym-grobie-piekna-timas-l____.html", 
-                "parent_number": 107, 
-                "id": 433
-            }, 
-            {
-                "title": "Z jednego gniazda", 
-                "html": "/media/lektura/z-jednego-gniazda.html", 
-                "html_size": 10024, 
-                "id": 1067, 
-                "tags": [
-                    313, 
-                    312, 
-                    31, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Z legend dawnego Egiptu", 
-                "html": "/media/lektura/z-legend-dawnego-egiptu.html", 
-                "html_size": 25915, 
-                "id": 962, 
-                "tags": [
-                    31, 
-                    54, 
-                    56, 
-                    1462
-                ]
-            }, 
-            {
-                "title": "Z listu do ksi\u0119garza", 
-                "html": "/media/lektura/z-listu-do-ksiegarza.html", 
-                "html_size": 4602, 
-                "id": 1985, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Z Narodzenia Pana...", 
-                "html": "/media/lektura/z-narodzenia-pana_1.html", 
-                "html_size": 4917, 
-                "id": 2041, 
-                "tags": [
-                    5148, 
-                    1, 
-                    5152, 
-                    2
-                ]
-            }, 
-            {
-                "parent": 1625, 
-                "title": "Z niewiadomego", 
-                "tags": [
-                    1903, 
-                    1889, 
-                    1, 
-                    34
-                ], 
-                "html_size": 729, 
-                "html": "/media/lektura/tlumaczenia-z-niewiadomego.html", 
-                "parent_number": 0, 
-                "id": 1623
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Z Petrarki", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2686, 
-                "html": "/media/lektura/z-petrarki_1.html", 
-                "parent_number": 28, 
-                "id": 2202
-            }, 
-            {
-                "id": 287, 
-                "title": "Z Tatr", 
-                "parent_number": 1, 
-                "parent": 301, 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1625, 
-                "title": "Z Teognidesa", 
-                "tags": [
-                    1903, 
-                    1889, 
-                    1, 
-                    34
-                ], 
-                "html_size": 703, 
-                "html": "/media/lektura/tlumaczenia-z-teognidesa.html", 
-                "parent_number": 2, 
-                "id": 1624
-            }, 
-            {
-                "title": "Z wichr\u00f3w i hal", 
-                "id": 301, 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Za chlebem", 
-                "html": "/media/lektura/za-chlebem.html", 
-                "html_size": 5371, 
-                "id": 2102, 
-                "tags": [
-                    5271, 
-                    1, 
-                    2, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Za Niemen hen precz", 
-                "html": "/media/lektura/za-niemen-hen-precz.html", 
-                "html_size": 5189, 
-                "id": 2103, 
-                "tags": [
-                    5273, 
-                    1, 
-                    2, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 708, 
-                "title": "Za pijanicami", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 826, 
-                "html": "/media/lektura/fraszki-ksiegi-pierwsze-za-pijanicami_____.html", 
-                "parent_number": 100, 
-                "id": 304
-            }, 
-            {
-                "title": "Zachwycenie", 
-                "html": "/media/lektura/zachwycenie.html", 
-                "html_size": 4314, 
-                "id": 1986, 
-                "tags": [
-                    1, 
-                    24, 
-                    189, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Zaczarowana kr\u00f3lewna", 
-                "html": "/media/lektura/zaczarowana-krolewna________.html", 
-                "html_size": 1948, 
-                "id": 191, 
-                "tags": [
-                    329, 
-                    1, 
-                    56, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Zagadkowa natura", 
-                "html": "/media/lektura/zagadkowa-natura.html", 
-                "html_size": 6333, 
-                "id": 876, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "Zag\u0142ada domu Usher\u00f3w", 
-                "html": "/media/lektura/zaglada-domu-usherow_1.html", 
-                "html_size": 63488, 
-                "id": 1920, 
-                "tags": [
-                    31, 
-                    1517, 
-                    4365, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Zaj\u0105c i je\u017c", 
-                "html": "/media/lektura/zajac-i-jez.html", 
-                "html_size": 12897, 
-                "id": 2185, 
-                "tags": [
-                    312, 
-                    31, 
-                    5395, 
-                    24
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Zaj\u0105czek", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2627, 
-                "html": "/media/lektura/zajaczek-bajki-nowe_.html", 
-                "parent_number": 76, 
-                "id": 1723
-            }, 
-            {
-                "title": "Zapach egzotyczny", 
-                "html": "/media/lektura/kwiaty-zla-zapach-egzotyczny.html", 
-                "html_size": 2910, 
-                "id": 1889, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    22
-                ]
-            }, 
-            {
-                "title": "Zapowied\u017a", 
-                "html": "/media/lektura/dzien-jak-co-dzien-zapowiedz.html", 
-                "html_size": 1891, 
-                "id": 1547, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Zaproszenie do podr\u00f3\u017cy", 
-                "html": "/media/lektura/kwiaty-zla-zaproszenie-do-podrozy.html", 
-                "html_size": 5392, 
-                "id": 1890, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Zau\u0142ek", 
-                "html": "/media/lektura/dzien-jak-co-dzien-zaulek.html", 
-                "html_size": 3979, 
-                "id": 1548, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 295, 
-                "title": "Zb\u00f3jcy", 
-                "tags": [
-                    31, 
-                    126, 
-                    128, 
-                    127
-                ], 
-                "html_size": 8867, 
-                "html": "/media/lektura/legendy-warszawskie-zbojcy_______.html", 
-                "parent_number": 5, 
-                "id": 282
-            }, 
-            {
-                "title": "Zbrodnie", 
-                "html": "/media/lektura/zbrodnie_1.html", 
-                "html_size": 2377, 
-                "id": 2097, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Zbroja Zawiszy", 
-                "html": "/media/lektura/zbroja-zawiszy_1.html", 
-                "html_size": 12518, 
-                "id": 2098, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Zdrada", 
-                "html": "/media/lektura/ballada-z-tamtej-strony-zdrada.html", 
-                "html_size": 3734, 
-                "id": 1670, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 773, 
-                "title": "Ze szczytu Eggishornu", 
-                "tags": [
-                    339, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 10781, 
-                "html": "/media/lektura/z-wichrow-i-hal-z-alp-ze-szczytu-eggishornu__.html", 
-                "parent_number": 4, 
-                "id": 764
-            }, 
-            {
-                "title": "Zemsta", 
-                "html": "/media/lektura/zemsta__________.html", 
-                "html_size": 361067, 
-                "id": 1390, 
-                "tags": [
-                    152, 
-                    397, 
-                    153, 
-                    24
-                ]
-            }, 
-            {
-                "title": "Zemsta", 
-                "html": "/media/lektura/czechow-zemsta.html", 
-                "html_size": 11372, 
-                "id": 879, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 1333, 
-                "title": "Ziemia i potok", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2591, 
-                "html": "/media/lektura/ziemia-i-potok-bajki-nowe_.html", 
-                "parent_number": 77, 
-                "id": 1272
-            }, 
-            {
-                "parent": 1846, 
-                "title": "Ziemia rodzinna", 
-                "tags": [
-                    4650, 
-                    1, 
-                    128, 
-                    121
-                ], 
-                "html_size": 2175, 
-                "html": "/media/lektura/katechizm-polskiego-dziecka-ziemia-rodzinna_.html", 
-                "parent_number": 7, 
-                "id": 1845
-            }, 
-            {
-                "parent": 2230, 
-                "title": "Zima miejska", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 22115, 
-                "html": "/media/lektura/zima-miejska.html", 
-                "parent_number": 29, 
-                "id": 2199
-            }, 
-            {
-                "title": "Z\u0142oczy\u0144ca", 
-                "html": "/media/lektura/zloczynca.html", 
-                "html_size": 12858, 
-                "id": 878, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "parent": 289, 
-                "title": "Z\u0142o\u015b\u0107 ukryta i jawna", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 33009, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-zlosc-ukryta-i-jawna_______.html", 
-                "parent_number": 3, 
-                "id": 1720
-            }, 
-            {
-                "parent": 295, 
-                "title": "Z\u0142ota kaczka", 
-                "tags": [
-                    31, 
-                    126, 
-                    128, 
-                    127
-                ], 
-                "html_size": 23211, 
-                "html": "/media/lektura/zlota-kaczka.html", 
-                "parent_number": 7, 
-                "id": 271
-            }, 
-            {
-                "title": "Z\u0142y mnich", 
-                "html": "/media/lektura/kwiaty-zla-zly-mnich.html", 
-                "html_size": 2095, 
-                "id": 1891, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Zmora", 
-                "html": "/media/lektura/kwiaty-zla-zmora.html", 
-                "html_size": 2316, 
-                "id": 1892, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Zmrok poranny", 
-                "html": "/media/lektura/kwiaty-zla-zmrok-poranny.html", 
-                "html_size": 4624, 
-                "id": 1893, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "title": "Zmrok wieczorny", 
-                "html": "/media/lektura/kwiaty-zla-zmrok-wieczorny.html", 
-                "html_size": 6045, 
-                "id": 1894, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Zwier\u015bciad\u0142o podchlebne", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 2019, 
-                "html": "/media/lektura/zwiersciadlo-podchlebne_.html", 
-                "parent_number": 113, 
-                "id": 1141
-            }, 
-            {
-                "parent": 1237, 
-                "title": "Zwierz\u0119ta i nied\u017awied\u017a", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1528, 
-                "html": "/media/lektura/zwierzeta-i-niedzwiedz_.html", 
-                "parent_number": 114, 
-                "id": 1179
-            }, 
-            {
-                "parent": 709, 
-                "title": "\u0179le dopija\u0107 si\u0119 przyjaciela", 
-                "tags": [
-                    11, 
-                    3, 
-                    1, 
-                    4
-                ], 
-                "html_size": 2291, 
-                "html": "/media/lektura/fraszki-fraszki-dodane-zle-dopijac-sie-przyjaciela____.html", 
-                "parent_number": 5, 
-                "id": 466
-            }, 
-            {
-                "parent": 1237, 
-                "title": "\u0179rebiec i ko\u0144 stary", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 3216, 
-                "html": "/media/lektura/zrebiec-i-kon-stary_.html", 
-                "parent_number": 116, 
-                "id": 1160
-            }, 
-            {
-                "parent": 1333, 
-                "title": "\u017baby i bocian", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 4572, 
-                "html": "/media/lektura/zaby-i-bocian-bajki-nowe_.html", 
-                "parent_number": 78, 
-                "id": 1269
-            }, 
-            {
-                "title": "\u017bal", 
-                "html": "/media/lektura/nuta-czlowiecza-zal.html", 
-                "html_size": 3989, 
-                "id": 1701, 
-                "tags": [
-                    3140, 
-                    338, 
-                    1, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1875, 
-                "title": "\u017bal rozrzutnika", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 2489, 
-                "html": "/media/lektura/zal-rozrzutnika.html", 
-                "parent_number": 12, 
-                "id": 1874
-            }, 
-            {
-                "title": "\u017barcik", 
-                "html": "/media/lektura/zarcik.html", 
-                "html_size": 12360, 
-                "id": 877, 
-                "tags": [
-                    1518, 
-                    31, 
-                    1517, 
-                    56
-                ]
-            }, 
-            {
-                "title": "\u017b\u0105dza nicestwa", 
-                "html": "/media/lektura/kwiaty-zla-zadza-nicestwa.html", 
-                "html_size": 3180, 
-                "id": 1918, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 2230, 
-                "title": "\u017beglarz", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    121
-                ], 
-                "html_size": 10877, 
-                "html": "/media/lektura/zeglarz.html", 
-                "parent_number": 30, 
-                "id": 2200
-            }, 
-            {
-                "parent": 1798, 
-                "title": "\u017begluga", 
-                "tags": [
-                    1, 
-                    23, 
-                    24, 
-                    22
-                ], 
-                "html_size": 1874, 
-                "html": "/media/lektura/sonety-krymskie-zegluga_______.html", 
-                "parent_number": 3, 
-                "id": 1783
-            }, 
-            {
-                "title": "\u017bmija", 
-                "html": "/media/lektura/zmija.html", 
-                "html_size": 170661, 
-                "id": 1680, 
-                "tags": [
-                    1, 
-                    1756, 
-                    24, 
-                    189
-                ]
-            }, 
-            {
-                "parent": 289, 
-                "title": "\u017bona modna", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 35334, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-zona-modna_______.html", 
-                "parent_number": 8, 
-                "id": 8
-            }, 
-            {
-                "parent": 1237, 
-                "title": "\u017b\u00f3\u0142w i mysz", 
-                "tags": [
-                    1888, 
-                    31, 
-                    33, 
-                    34
-                ], 
-                "html_size": 1516, 
-                "html": "/media/lektura/zolw-i-mysz_.html", 
-                "parent_number": 115, 
-                "id": 1171
-            }, 
-            {
-                "title": "\u017bycie", 
-                "html": "/media/lektura/zycie_1.html", 
-                "html_size": 6274, 
-                "id": 2099, 
-                "tags": [
-                    1, 
-                    128, 
-                    5220, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 289, 
-                "title": "\u017bycie dworskie", 
-                "tags": [
-                    31, 
-                    33, 
-                    34, 
-                    32
-                ], 
-                "html_size": 21685, 
-                "html": "/media/lektura/satyry-czesc-pierwsza-zycie-dworskie_______.html", 
-                "parent_number": 9, 
-                "id": 114
-            }, 
-            {
-                "title": "\u017bycie poprzednie", 
-                "html": "/media/lektura/kwiaty-zla-zycie-poprzednie.html", 
-                "html_size": 1954, 
-                "id": 1895, 
-                "tags": [
-                    4373, 
-                    1, 
-                    24, 
-                    121
-                ]
-            }, 
-            {
-                "parent": 1383, 
-                "title": "\u017bygaj\u0105ce pos\u0105gi", 
-                "tags": [
-                    338, 
-                    1606, 
-                    1, 
-                    336
-                ], 
-                "html_size": 7041, 
-                "html": "/media/lektura/but-w-butonierce-zygajace-posagi_.html", 
-                "parent_number": 2, 
-                "id": 1381
-            }
-        ], 
-        "tags": [
-            {
-                "category": "genre", 
-                "sort_key": "aforyzm", 
-                "id": 1903, 
-                "name": "Aforyzm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "aktor", 
-                "id": 5032, 
-                "name": "Aktor"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "alkohol", 
-                "id": 19, 
-                "name": "Alkohol"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ambicja", 
-                "id": 2643, 
-                "name": "Ambicja"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "anakreontyk", 
-                "id": 320, 
-                "name": "Anakreontyk"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "anczyc", 
-                "id": 5268, 
-                "name": "W\u0142adys\u0142aw Anczyc"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "andersen", 
-                "id": 313, 
-                "name": "Hans Christian Andersen"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "anio\u0142", 
-                "id": 285, 
-                "name": "Anio\u0142"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "antysemityzm", 
-                "id": 420, 
-                "name": "Antysemityzm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "apokalipsa", 
-                "id": 5090, 
-                "name": "Apokalipsa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "arkadia", 
-                "id": 1487, 
-                "name": "Arkadia"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "arthur conan doyle", 
-                "id": 5650, 
-                "name": " Arthur Conan Doyle"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "artysta", 
-                "id": 258, 
-                "name": "Artysta"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "asnyk", 
-                "id": 329, 
-                "name": "Adam Asnyk"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "autor nieznany", 
-                "id": 5148, 
-                "name": "Autor nieznany"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "bajka", 
-                "id": 1888, 
-                "name": "Bajka"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "ballada", 
-                "id": 210, 
-                "name": "Ballada"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "balzac", 
-                "id": 1812, 
-                "name": "Honor\u00e9 de Balzac"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "ba\u0142ucki", 
-                "id": 5271, 
-                "name": "Micha\u0142 Ba\u0142ucki"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "barok", 
-                "id": 123, 
-                "name": "Barok"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "ba\u015b\u0144", 
-                "id": 312, 
-                "name": "Ba\u015b\u0144"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "baudelaire", 
-                "id": 4373, 
-                "name": "Charles Baudelaire"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "be\u0142za", 
-                "id": 4650, 
-                "name": "W\u0142adys\u0142aw Be\u0142za"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bezdomno\u015b\u0107", 
-                "id": 283, 
-                "name": "Bezdomno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bezpiecze\u0144stwo", 
-                "id": 282, 
-                "name": "Bezpiecze\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bezsilno\u015b\u0107", 
-                "id": 178, 
-                "name": "Bezsilno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bieda", 
-                "id": 59, 
-                "name": "Bieda"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "biedrzycki", 
-                "id": 2137, 
-                "name": "Mi\u0142osz Biedrzycki"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "bielowski", 
-                "id": 5273, 
-                "name": "August Bielowski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bijatyka", 
-                "id": 103, 
-                "name": "Bijatyka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bitwa", 
-                "id": 4986, 
-                "name": "Bitwa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "blizna", 
-                "id": 5583, 
-                "name": "Blizna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "b\u0142azen", 
-                "id": 115, 
-                "name": "B\u0142azen"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "b\u0142\u0105dzenie", 
-                "id": 391, 
-                "name": "B\u0142\u0105dzenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "b\u0142ogos\u0142awie\u0144stwo", 
-                "id": 5031, 
-                "name": "B\u0142ogos\u0142awie\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "b\u0142oto", 
-                "id": 294, 
-                "name": "B\u0142oto"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bogactwo", 
-                "id": 95, 
-                "name": "Bogactwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bogini", 
-                "id": 4433, 
-                "name": "Bogini"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bohater", 
-                "id": 4987, 
-                "name": "Bohater"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bohaterstwo", 
-                "id": 4615, 
-                "name": "Bohaterstwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "b\u00f3g", 
-                "id": 142, 
-                "name": "B\u00f3g"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "b\u00f3l", 
-                "id": 5730, 
-                "name": "B\u00f3l"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "brat", 
-                "id": 73, 
-                "name": "Brat"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bro\u0144", 
-                "id": 4556, 
-                "name": "Bro\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "brud", 
-                "id": 5339, 
-                "name": "Brud"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "bunt", 
-                "id": 166, 
-                "name": "Bunt"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "buntownik", 
-                "id": 363, 
-                "name": "Buntownik"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "burza", 
-                "id": 147, 
-                "name": "Burza"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "byron", 
-                "id": 1757, 
-                "name": "George Gordon Byron"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "car", 
-                "id": 393, 
-                "name": "Car"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "carpe diem", 
-                "id": 353, 
-                "name": "Carpe Diem"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "chciwo\u015b\u0107", 
-                "id": 260, 
-                "name": "Chciwo\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "chleb", 
-                "id": 303, 
-                "name": "Chleb"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ch\u0142op", 
-                "id": 247, 
-                "name": "Ch\u0142op"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "choroba", 
-                "id": 69, 
-                "name": "Choroba"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "chrystus", 
-                "id": 79, 
-                "name": "Chrystus"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "chrzest", 
-                "id": 426, 
-                "name": "Chrzest"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "cia\u0142o", 
-                "id": 196, 
-                "name": "Cia\u0142o"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ciemno\u015b\u0107", 
-                "id": 1320, 
-                "name": "Ciemno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "cie\u0144", 
-                "id": 396, 
-                "name": "Cie\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "cierpienie", 
-                "id": 83, 
-                "name": "Cierpienie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "cisza", 
-                "id": 199, 
-                "name": "Cisza"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "cmentarz", 
-                "id": 773, 
-                "name": "Cmentarz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "cnota", 
-                "id": 134, 
-                "name": "Cnota"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "conrad", 
-                "id": 4613, 
-                "name": "Joseph Conrad"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "c\u00f3rka", 
-                "id": 156, 
-                "name": "C\u00f3rka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "cud", 
-                "id": 1327, 
-                "name": "Cud"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "czarownica", 
-                "id": 270, 
-                "name": "Czarownica"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "czary", 
-                "id": 272, 
-                "name": "Czary"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "czas", 
-                "id": 29, 
-                "name": "Czas"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "czechow", 
-                "id": 1518, 
-                "name": "Anton Czechow"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "czechowicz", 
-                "id": 3140, 
-                "name": "J\u00f3zef Czechowicz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "cz\u0142owiek", 
-                "id": 5187, 
-                "name": "Cz\u0142owiek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "czyn", 
-                "id": 354, 
-                "name": "Czyn"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "czy\u015bciec", 
-                "id": 370, 
-                "name": "Czy\u015bciec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dama", 
-                "id": 323, 
-                "name": "Dama"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "danse macabre", 
-                "id": 388, 
-                "name": "Danse macabre"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dar", 
-                "id": 5151, 
-                "name": "Dar"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "dedykacja", 
-                "id": 1991, 
-                "name": "Dedykacja"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "defoe", 
-                "id": 2340, 
-                "name": "Daniel Defoe"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dekadent", 
-                "id": 3112, 
-                "name": "Dekadent"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "delavigne", 
-                "id": 5276, 
-                "name": "Casimir Delavigne"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "deszcz", 
-                "id": 276, 
-                "name": "Deszcz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "diabe\u0142", 
-                "id": 371, 
-                "name": "Diabe\u0142"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "dialog", 
-                "id": 5923, 
-                "name": "Dialog"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dobro", 
-                "id": 1329, 
-                "name": "Dobro"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dojrza\u0142o\u015b\u0107", 
-                "id": 5725, 
-                "name": "Dojrza\u0142o\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dom", 
-                "id": 10, 
-                "name": "Dom"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "doma\u0144ska", 
-                "id": 4926, 
-                "name": "Antonina Doma\u0144ska"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "doros\u0142o\u015b\u0107", 
-                "id": 167, 
-                "name": "Doros\u0142o\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "doskona\u0142o\u015b\u0107", 
-                "id": 5728, 
-                "name": "Doskona\u0142o\u015b\u0107"
-            }, 
-            {
-                "category": "kind", 
-                "sort_key": "dramat", 
-                "id": 152, 
-                "name": "Dramat"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "dramat niesceniczny", 
-                "id": 1562, 
-                "name": "Dramat niesceniczny"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "dramat poetycki", 
-                "id": 1484, 
-                "name": "Dramat poetycki"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "dramat romantyczny", 
-                "id": 372, 
-                "name": "Dramat romantyczny"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "dramat szekspirowski", 
-                "id": 4293, 
-                "name": "Dramat szekspirowski"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "dramat wsp\u00f3\u0142czesny", 
-                "id": 3170, 
-                "name": "Dramat wsp\u00f3\u0142czesny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "droga", 
-                "id": 4511, 
-                "name": "Droga"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "drwina", 
-                "id": 5404, 
-                "name": "Drwina"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "drzewo", 
-                "id": 111, 
-                "name": "Drzewo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "duch", 
-                "id": 58, 
-                "name": "Duch"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "duma", 
-                "id": 435, 
-                "name": "Duma"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dusza", 
-                "id": 195, 
-                "name": "Dusza"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dworek", 
-                "id": 304, 
-                "name": "Dworek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dworzanin", 
-                "id": 292, 
-                "name": "Dworzanin"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dw\u00f3r", 
-                "id": 250, 
-                "name": "Dw\u00f3r"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "dwudziestolecie mi\u0119dzywojenne", 
-                "id": 338, 
-                "name": "Dwudziestolecie mi\u0119dzywojenne"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dzieci\u0144stwo", 
-                "id": 306, 
-                "name": "Dzieci\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dziecko", 
-                "id": 62, 
-                "name": "Dziecko"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dziedzictwo", 
-                "id": 172, 
-                "name": "Dziedzictwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dziewictwo", 
-                "id": 159, 
-                "name": "Dziewictwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "dziki", 
-                "id": 4908, 
-                "name": "Dziki"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "d\u017awi\u0119k", 
-                "id": 1319, 
-                "name": "D\u017awi\u0119k"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "egzorcyzm", 
-                "id": 1743, 
-                "name": "Egzorcyzm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "emigrant", 
-                "id": 305, 
-                "name": "Emigrant"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "epigramat", 
-                "id": 234, 
-                "name": "Epigramat"
-            }, 
-            {
-                "category": "kind", 
-                "sort_key": "epika", 
-                "id": 31, 
-                "name": "Epika"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "epopeja", 
-                "id": 4982, 
-                "name": "Epopeja"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "erotyk", 
-                "id": 1564, 
-                "name": "Erotyk"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "erotyzm", 
-                "id": 5234, 
-                "name": "Erotyzm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "fa\u0142sz", 
-                "id": 215, 
-                "name": "Fa\u0142sz"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "feli\u0144ski", 
-                "id": 5279, 
-                "name": "Alojzy Feli\u0144ski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "filozof", 
-                "id": 118, 
-                "name": "Filozof"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "fircyk", 
-                "id": 132, 
-                "name": "Fircyk"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "flirt", 
-                "id": 342, 
-                "name": "Flirt"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "forma", 
-                "id": 4482, 
-                "name": "Forma"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "fraszka", 
-                "id": 11, 
-                "name": "Fraszka"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "fredro", 
-                "id": 397, 
-                "name": "Aleksander Fredro"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "g\u0142\u00f3d", 
-                "id": 78, 
-                "name": "G\u0142\u00f3d"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "g\u0142upiec", 
-                "id": 109, 
-                "name": "G\u0142upiec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "g\u0142upota", 
-                "id": 108, 
-                "name": "G\u0142upota"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "gniew", 
-                "id": 1988, 
-                "name": "Gniew"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "goethe", 
-                "id": 384, 
-                "name": "Johann Wolfgang von Goethe"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "gorycz", 
-                "id": 398, 
-                "name": "Gorycz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "gospodarz", 
-                "id": 266, 
-                "name": "Gospodarz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "gospodyni", 
-                "id": 265, 
-                "name": "Gospodyni"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "go\u015b\u0107", 
-                "id": 236, 
-                "name": "Go\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "gotycyzm", 
-                "id": 230, 
-                "name": "Gotycyzm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "g\u00f3ra", 
-                "id": 341, 
-                "name": "G\u00f3ra"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "g\u00f3ry", 
-                "id": 4655, 
-                "name": "G\u00f3ry"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "gra", 
-                "id": 2629, 
-                "name": "Gra"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "grimm", 
-                "id": 5395, 
-                "name": "Jacob i Wilhelm Grimm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "gro\u017aba", 
-                "id": 5411, 
-                "name": "Gro\u017aba"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "gr\u00f3b", 
-                "id": 72, 
-                "name": "Gr\u00f3b"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "grzech", 
-                "id": 161, 
-                "name": "Grzech"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "grzeczno\u015b\u0107", 
-                "id": 130, 
-                "name": "Grzeczno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "gwiazda", 
-                "id": 377, 
-                "name": "Gwiazda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "handel", 
-                "id": 67, 
-                "name": "Handel"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ha\u0144ba", 
-                "id": 3111, 
-                "name": "Ha\u0144ba"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "historia", 
-                "id": 182, 
-                "name": "Historia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "honor", 
-                "id": 421, 
-                "name": "Honor"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "hymn", 
-                "id": 332, 
-                "name": "Hymn"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "idealista", 
-                "id": 297, 
-                "name": "Idealista"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "imi\u0119", 
-                "id": 4438, 
-                "name": "Imi\u0119"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "interes", 
-                "id": 436, 
-                "name": "Interes"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ironia", 
-                "id": 387, 
-                "name": "Ironia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "jab\u0142ka", 
-                "id": 5316, 
-                "name": "Jab\u0142ka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "jab\u0142ko", 
-                "id": 378, 
-                "name": "Jab\u0142ko"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "jasie\u0144ski", 
-                "id": 1606, 
-                "name": "Bruno Jasie\u0144ski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "jedzenie", 
-                "id": 49, 
-                "name": "Jedzenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "jesie\u0144", 
-                "id": 257, 
-                "name": "Jesie\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "j\u0119zyk", 
-                "id": 4358, 
-                "name": "J\u0119zyk"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kaleka", 
-                "id": 267, 
-                "name": "Kaleka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kara", 
-                "id": 202, 
-                "name": "Kara"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "karczma", 
-                "id": 245, 
-                "name": "Karczma"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "karol baudelaire", 
-                "id": 5358, 
-                "name": " Karol Baudelaire"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "karpi\u0144ski", 
-                "id": 1889, 
-                "name": "Franciszek Karpi\u0144ski"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "kasprowicz", 
-                "id": 339, 
-                "name": "Jan Kasprowicz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "katasrofa", 
-                "id": 4832, 
-                "name": "Katasrofa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "katastrofa", 
-                "id": 4544, 
-                "name": "Katastrofa"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "kipling", 
-                "id": 2304, 
-                "name": "Rudyard Kipling"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "klejnot", 
-                "id": 4878, 
-                "name": "Klejnot"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kl\u0119ska", 
-                "id": 150, 
-                "name": "Kl\u0119ska"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "k\u0142amstwo", 
-                "id": 131, 
-                "name": "K\u0142amstwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "k\u0142\u00f3tnia", 
-                "id": 80, 
-                "name": "K\u0142\u00f3tnia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kobieta", 
-                "id": 8, 
-                "name": "Kobieta"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kobieta \"upad\u0142a\"", 
-                "id": 381, 
-                "name": "Kobieta \"upad\u0142a\""
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kobieta demoniczna", 
-                "id": 374, 
-                "name": "Kobieta demoniczna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kochanek", 
-                "id": 20, 
-                "name": "Kochanek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kochanek romantyczny", 
-                "id": 369, 
-                "name": "Kochanek romantyczny"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "kochanowski", 
-                "id": 3, 
-                "name": "Jan Kochanowski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kolonializm", 
-                "id": 4215, 
-                "name": "Kolonializm"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "komedia", 
-                "id": 153, 
-                "name": "Komedia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kondycja ludzka", 
-                "id": 12, 
-                "name": "Kondycja ludzka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "konflikt", 
-                "id": 216, 
-                "name": "Konflikt"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "konflikt pokole\u0144", 
-                "id": 4844, 
-                "name": "Konflikt pokole\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "konflikt wewn\u0119trzny", 
-                "id": 300, 
-                "name": "Konflikt wewn\u0119trzny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "koniec \u015bwiata", 
-                "id": 104, 
-                "name": "Koniec \u015bwiata"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "konopnicka", 
-                "id": 55, 
-                "name": "Maria Konopnicka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ko\u0144", 
-                "id": 57, 
-                "name": "Ko\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "korzy\u015b\u0107", 
-                "id": 44, 
-                "name": "Korzy\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kot", 
-                "id": 168, 
-                "name": "Kot"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "kowalski", 
-                "id": 5282, 
-                "name": "Franciszek Kowalski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kradzie\u017c", 
-                "id": 774, 
-                "name": "Kradzie\u017c"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "krasicki", 
-                "id": 33, 
-                "name": "Ignacy Krasicki"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "krasi\u0144ski", 
-                "id": 373, 
-                "name": "Zygmunt Krasi\u0144ski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "krew", 
-                "id": 366, 
-                "name": "Krew"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kr\u00f3l", 
-                "id": 368, 
-                "name": "Kr\u00f3l"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "krzyk", 
-                "id": 5735, 
-                "name": "Krzyk"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "krzywda", 
-                "id": 434, 
-                "name": "Krzywda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ksi\u0105dz", 
-                "id": 97, 
-                "name": "Ksi\u0105dz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ksi\u0105\u017cka", 
-                "id": 125, 
-                "name": "Ksi\u0105\u017cka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ksi\u0119\u017cyc", 
-                "id": 269, 
-                "name": "Ksi\u0119\u017cyc"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kuchnia", 
-                "id": 2392, 
-                "name": "Kuchnia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kuszenie", 
-                "id": 163, 
-                "name": "Kuszenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kwiat", 
-                "id": 376, 
-                "name": "Kwiat"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "kwiaty", 
-                "id": 211, 
-                "name": "Kwiaty"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "las", 
-                "id": 1521, 
-                "name": "Las"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "lato", 
-                "id": 5, 
-                "name": "Lato"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "legenda", 
-                "id": 126, 
-                "name": "Legenda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "lek", 
-                "id": 4891, 
-                "name": "Lek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "lekarz", 
-                "id": 90, 
-                "name": "Lekarz"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "lenartowicz", 
-                "id": 5177, 
-                "name": "Teofil Lenartowicz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "lenistwo", 
-                "id": 1326, 
-                "name": "Lenistwo"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "le\u015bmian", 
-                "id": 337, 
-                "name": "Boles\u0142aw Le\u015bmian"
-            }, 
-            {
-                "category": "kind", 
-                "sort_key": "liryka", 
-                "id": 1, 
-                "name": "Liryka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "list", 
-                "id": 321, 
-                "name": "List"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "literat", 
-                "id": 346, 
-                "name": "Literat"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "los", 
-                "id": 187, 
-                "name": "Los"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "lot", 
-                "id": 4822, 
-                "name": "Lot"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "lud", 
-                "id": 357, 
-                "name": "Lud"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "lustro", 
-                "id": 327, 
-                "name": "Lustro"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u0142za", 
-                "id": 5441, 
-                "name": "\u0141za"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u0142zy", 
-                "id": 64, 
-                "name": "\u0141zy"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ma\u0142pa", 
-                "id": 4883, 
-                "name": "Ma\u0142pa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ma\u0142\u017ce\u0144stwo", 
-                "id": 37, 
-                "name": "Ma\u0142\u017ce\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "marzenie", 
-                "id": 105, 
-                "name": "Marzenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "maska", 
-                "id": 41, 
-                "name": "Maska"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "maszyna", 
-                "id": 1585, 
-                "name": "Maszyna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "matka", 
-                "id": 60, 
-                "name": "Matka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "matka boska", 
-                "id": 335, 
-                "name": "Matka Boska"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "m\u0105dro\u015b\u0107", 
-                "id": 106, 
-                "name": "M\u0105dro\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "m\u0105\u017c", 
-                "id": 45, 
-                "name": "M\u0105\u017c"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "melancholia", 
-                "id": 271, 
-                "name": "Melancholia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "m\u0119drzec", 
-                "id": 107, 
-                "name": "M\u0119drzec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "m\u0119\u017cczyzna", 
-                "id": 158, 
-                "name": "M\u0119\u017cczyzna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "miasto", 
-                "id": 40, 
-                "name": "Miasto"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "mickiewicz", 
-                "id": 23, 
-                "name": "Adam Mickiewicz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mieszczanin", 
-                "id": 92, 
-                "name": "Mieszczanin"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "milczenie", 
-                "id": 4513, 
-                "name": "Milczenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mi\u0142osierdzie", 
-                "id": 351, 
-                "name": "Mi\u0142osierdzie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mi\u0142o\u015b\u0107", 
-                "id": 30, 
-                "name": "Mi\u0142o\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mi\u0142o\u015b\u0107 niespe\u0142niona", 
-                "id": 1333, 
-                "name": "Mi\u0142o\u015b\u0107 niespe\u0142niona"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mi\u0142o\u015b\u0107 platoniczna", 
-                "id": 330, 
-                "name": "Mi\u0142o\u015b\u0107 platoniczna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mi\u0142o\u015b\u0107 romantyczna", 
-                "id": 162, 
-                "name": "Mi\u0142o\u015b\u0107 romantyczna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mi\u0142o\u015b\u0107 silniejsza ni\u017c \u015bmier\u0107", 
-                "id": 180, 
-                "name": "Mi\u0142o\u015b\u0107 silniejsza ni\u017c \u015bmier\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mi\u0142o\u015b\u0107 spe\u0142niona", 
-                "id": 15, 
-                "name": "Mi\u0142o\u015b\u0107 spe\u0142niona"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mi\u0142o\u015b\u0107 tragiczna", 
-                "id": 21, 
-                "name": "Mi\u0142o\u015b\u0107 tragiczna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mizoginia", 
-                "id": 358, 
-                "name": "Mizoginia"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "m\u0142oda polska", 
-                "id": 3035, 
-                "name": "M\u0142oda Polska"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "m\u0142odo\u015b\u0107", 
-                "id": 112, 
-                "name": "M\u0142odo\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "moda", 
-                "id": 1646, 
-                "name": "Moda"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "modernizm", 
-                "id": 128, 
-                "name": "Modernizm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "modlitwa", 
-                "id": 74, 
-                "name": "Modlitwa"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "moli\u00e8re", 
-                "id": 1324, 
-                "name": "Moli\u00e8re"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "morderstwo", 
-                "id": 217, 
-                "name": "Morderstwo"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "morsztyn", 
-                "id": 122, 
-                "name": "Jan Andrzej Morsztyn"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "morze", 
-                "id": 222, 
-                "name": "Morze"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "motyl", 
-                "id": 399, 
-                "name": "Motyl"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "mucha", 
-                "id": 1322, 
-                "name": "Mucha"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "muzyka", 
-                "id": 101, 
-                "name": "Muzyka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nacjonalizm", 
-                "id": 4843, 
-                "name": "Nacjonalizm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nadzieja", 
-                "id": 4722, 
-                "name": "Nadzieja"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nagroda", 
-                "id": 4985, 
-                "name": "Nagroda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "narkotyki", 
-                "id": 4833, 
-                "name": "Narkotyki"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "narodziny", 
-                "id": 315, 
-                "name": "Narodziny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nar\u00f3d", 
-                "id": 286, 
-                "name": "Nar\u00f3d"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "natura", 
-                "id": 6, 
-                "name": "Natura"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nauczyciel", 
-                "id": 116, 
-                "name": "Nauczyciel"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nauczycielka", 
-                "id": 309, 
-                "name": "Nauczycielka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nauka", 
-                "id": 249, 
-                "name": "Nauka"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "nie dotyczy", 
-                "id": 5152, 
-                "name": "nie dotyczy"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "niebezpiecze\u0144stwo", 
-                "id": 328, 
-                "name": "Niebezpiecze\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "niebo", 
-                "id": 4452, 
-                "name": "Niebo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "niedoskona\u0142o\u015b\u0107", 
-                "id": 5736, 
-                "name": "Niedoskona\u0142o\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "niedziela", 
-                "id": 280, 
-                "name": "Niedziela"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "niemcewicz", 
-                "id": 4997, 
-                "name": "Julian Ursyn Niemcewicz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "niemiec", 
-                "id": 308, 
-                "name": "Niemiec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nienawi\u015b\u0107", 
-                "id": 1321, 
-                "name": "Nienawi\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nie\u015bmiertelno\u015b\u0107", 
-                "id": 201, 
-                "name": "Nie\u015bmiertelno\u015b\u0107"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "nietzsche", 
-                "id": 5723, 
-                "name": "Friedrich Nietzsche"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "niewola", 
-                "id": 193, 
-                "name": "Niewola"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "niewolnik", 
-                "id": 5729, 
-                "name": "Niewolnik"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "noc", 
-                "id": 89, 
-                "name": "Noc"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "norwid", 
-                "id": 2308, 
-                "name": "Cyprian Kamil Norwid"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "nowela", 
-                "id": 54, 
-                "name": "Nowela"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "nuda", 
-                "id": 277, 
-                "name": "Nuda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "obcy", 
-                "id": 314, 
-                "name": "Obcy"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ob\u0142ok", 
-                "id": 389, 
-                "name": "Ob\u0142ok"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "obowi\u0105zek", 
-                "id": 70, 
-                "name": "Obowi\u0105zek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "obraz", 
-                "id": 5546, 
-                "name": "Obraz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "obraz \u015bwiata", 
-                "id": 17, 
-                "name": "Obraz \u015bwiata"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "obrz\u0119dy", 
-                "id": 248, 
-                "name": "Obrz\u0119dy"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "obyczaje", 
-                "id": 77, 
-                "name": "Obyczaje"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "obyczje", 
-                "id": 5442, 
-                "name": "Obyczje"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "obywatel", 
-                "id": 139, 
-                "name": "Obywatel"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "oda", 
-                "id": 352, 
-                "name": "Oda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "odrodzenie", 
-                "id": 5278, 
-                "name": "Odrodzenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "odrodzenie przez gr\u00f3b", 
-                "id": 1404, 
-                "name": "Odrodzenie przez gr\u00f3b"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "odwaga", 
-                "id": 148, 
-                "name": "Odwaga"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "odyseusz", 
-                "id": 392, 
-                "name": "Odyseusz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ofiara", 
-                "id": 322, 
-                "name": "Ofiara"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ogie\u0144", 
-                "id": 81, 
-                "name": "Ogie\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ogr\u00f3d", 
-                "id": 47, 
-                "name": "Ogr\u00f3d"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ojciec", 
-                "id": 61, 
-                "name": "Ojciec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ojczyzna", 
-                "id": 26, 
-                "name": "Ojczyzna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "okno", 
-                "id": 4831, 
-                "name": "Okno"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "oko", 
-                "id": 318, 
-                "name": "Oko"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "okr\u0119t", 
-                "id": 287, 
-                "name": "Okr\u0119t"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "okrucie\u0144stwo", 
-                "id": 429, 
-                "name": "Okrucie\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "omen", 
-                "id": 428, 
-                "name": "Omen"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "opieka", 
-                "id": 63, 
-                "name": "Opieka"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "opowiadanie", 
-                "id": 1517, 
-                "name": "Opowiadanie"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "oppman", 
-                "id": 127, 
-                "name": "Artur Oppman"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "organizm", 
-                "id": 4558, 
-                "name": "Organizm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "orze\u0142", 
-                "id": 5295, 
-                "name": "Orze\u0142"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "orzeszkowa", 
-                "id": 2294, 
-                "name": "Eliza Orzeszkowa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "o\u015bwiadczyny", 
-                "id": 3117, 
-                "name": "O\u015bwiadczyny"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "o\u015bwiecenie", 
-                "id": 34, 
-                "name": "O\u015bwiecenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "otch\u0142a\u0144", 
-                "id": 427, 
-                "name": "Otch\u0142a\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "owoc", 
-                "id": 5733, 
-                "name": "Owoc"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "paj\u0105k", 
-                "id": 1759, 
-                "name": "Paj\u0105k"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pami\u0119\u0107", 
-                "id": 212, 
-                "name": "Pami\u0119\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pan", 
-                "id": 51, 
-                "name": "Pan"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "panna m\u0142oda", 
-                "id": 262, 
-                "name": "Panna m\u0142oda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pa\u0144stwo", 
-                "id": 140, 
-                "name": "Pa\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "patriota", 
-                "id": 288, 
-                "name": "Patriota"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "patriotyzm", 
-                "id": 1742, 
-                "name": "Patriotyzm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "piek\u0142o", 
-                "id": 1337, 
-                "name": "Piek\u0142o"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pielgrzym", 
-                "id": 27, 
-                "name": "Pielgrzym"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pieni\u0105dz", 
-                "id": 66, 
-                "name": "Pieni\u0105dz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pieni\u0105dze", 
-                "id": 562, 
-                "name": "Pieni\u0105dze"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pier\u015bcie\u0144", 
-                "id": 4557, 
-                "name": "Pier\u015bcie\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pies", 
-                "id": 124, 
-                "name": "Pies"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "pie\u015b\u0144", 
-                "id": 2, 
-                "name": "Pie\u015b\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pi\u0119kno", 
-                "id": 4420, 
-                "name": "Pi\u0119kno"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pi\u0119tno", 
-                "id": 775, 
-                "name": "Pi\u0119tno"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pija\u0144stwo", 
-                "id": 16, 
-                "name": "Pija\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "piorun", 
-                "id": 4984, 
-                "name": "Piorun"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "piwnica", 
-                "id": 1469, 
-                "name": "Piwnica"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "platon", 
-                "id": 5922, 
-                "name": "Platon"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "plotka", 
-                "id": 253, 
-                "name": "Plotka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pobo\u017cno\u015b\u0107", 
-                "id": 244, 
-                "name": "Pobo\u017cno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "poca\u0142unek", 
-                "id": 281, 
-                "name": "Poca\u0142unek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pochlebstwo", 
-                "id": 343, 
-                "name": "Pochlebstwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "podr\u00f3\u017c", 
-                "id": 290, 
-                "name": "Podr\u00f3\u017c"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "podst\u0119p", 
-                "id": 135, 
-                "name": "Podst\u0119p"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "poe", 
-                "id": 4365, 
-                "name": "Edgar Allan Poe"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "poemat", 
-                "id": 1660, 
-                "name": "Poemat"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "poemat dygresyjny", 
-                "id": 5544, 
-                "name": "Poemat dygresyjny"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "poemat heirokomiczny", 
-                "id": 5314, 
-                "name": "Poemat heirokomiczny"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "poemat heroikomiczny", 
-                "id": 4653, 
-                "name": "Poemat heroikomiczny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "poeta", 
-                "id": 9, 
-                "name": "Poeta"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "poetka", 
-                "id": 171, 
-                "name": "Poetka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "poezja", 
-                "id": 291, 
-                "name": "Poezja"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pogarda", 
-                "id": 2623, 
-                "name": "Pogarda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pogrzeb", 
-                "id": 96, 
-                "name": "Pogrzeb"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pojedynek", 
-                "id": 1264, 
-                "name": "Pojedynek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pokora", 
-                "id": 192, 
-                "name": "Pokora"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pok\u00f3j", 
-                "id": 4888, 
-                "name": "Pok\u00f3j"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pokusa", 
-                "id": 278, 
-                "name": "Pokusa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pokuta", 
-                "id": 4881, 
-                "name": "Pokuta"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "pol", 
-                "id": 5290, 
-                "name": "Wincenty Pol"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "polak", 
-                "id": 141, 
-                "name": "Polak"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "polityka", 
-                "id": 424, 
-                "name": "Polityka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "polowanie", 
-                "id": 316, 
-                "name": "Polowanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "polska", 
-                "id": 1744, 
-                "name": "Polska"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "pomian-\u0142ubi\u0144ski", 
-                "id": 5287, 
-                "name": "Ludwik Ksawery Pomian-\u0141ubi\u0144ski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pomoc", 
-                "id": 4890, 
-                "name": "Pomoc"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "por\u00f3d", 
-                "id": 5732, 
-                "name": "Por\u00f3d"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "portret", 
-                "id": 423, 
-                "name": "Portret"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "porwanie", 
-                "id": 2972, 
-                "name": "Porwanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "po\u015bwi\u0119cenie", 
-                "id": 76, 
-                "name": "Po\u015bwi\u0119cenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "potop", 
-                "id": 5293, 
-                "name": "Potop"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "potw\u00f3r", 
-                "id": 324, 
-                "name": "Potw\u00f3r"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "powie\u015b\u0107", 
-                "id": 242, 
-                "name": "Powie\u015b\u0107"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "powie\u015b\u0107 epistolarna", 
-                "id": 383, 
-                "name": "Powie\u015b\u0107 epistolarna"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "powie\u015b\u0107 poetycka", 
-                "id": 1756, 
-                "name": "Powie\u015b\u0107 poetycka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "powitanie", 
-                "id": 5584, 
-                "name": "Powitanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "powstanie", 
-                "id": 238, 
-                "name": "Powstanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "powstaniec", 
-                "id": 1332, 
-                "name": "Powstaniec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pozory", 
-                "id": 117, 
-                "name": "Pozory"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pozycja spo\u0142eczna", 
-                "id": 137, 
-                "name": "Pozycja spo\u0142eczna"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "pozytywizm", 
-                "id": 56, 
-                "name": "Pozytywizm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "po\u017car", 
-                "id": 1644, 
-                "name": "Po\u017car"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "po\u017c\u0105danie", 
-                "id": 252, 
-                "name": "Po\u017c\u0105danie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "po\u017cegnanie", 
-                "id": 4895, 
-                "name": "Po\u017cegnanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "praca", 
-                "id": 94, 
-                "name": "Praca"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "praca organiczna", 
-                "id": 348, 
-                "name": "Praca organiczna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "praca u podstaw", 
-                "id": 255, 
-                "name": "Praca u podstaw"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "prawda", 
-                "id": 151, 
-                "name": "Prawda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "prawnik", 
-                "id": 382, 
-                "name": "Prawnik"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "prawo", 
-                "id": 4887, 
-                "name": "Prawo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "prometeusz", 
-                "id": 197, 
-                "name": "Prometeusz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "proroctwo", 
-                "id": 422, 
-                "name": "Proroctwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "prorok", 
-                "id": 2807, 
-                "name": "Prorok"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pr\u00f3\u017cno\u015b\u0107", 
-                "id": 200, 
-                "name": "Pr\u00f3\u017cno\u015b\u0107"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "prus", 
-                "id": 1462, 
-                "name": "Boles\u0142aw Prus"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przebaczenie", 
-                "id": 4600, 
-                "name": "Przebaczenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przebranie", 
-                "id": 209, 
-                "name": "Przebranie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przeczucie", 
-                "id": 233, 
-                "name": "Przeczucie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przedmurze chrze\u015bcija\u0144stwa", 
-                "id": 311, 
-                "name": "Przedmurze chrze\u015bcija\u0144stwa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przekle\u0144stwo", 
-                "id": 418, 
-                "name": "Przekle\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przekupstwo", 
-                "id": 1331, 
-                "name": "Przekupstwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przemiana", 
-                "id": 42, 
-                "name": "Przemiana"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przemijanie", 
-                "id": 13, 
-                "name": "Przemijanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przemoc", 
-                "id": 169, 
-                "name": "Przemoc"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "przerwa-tetmajer", 
-                "id": 5220, 
-                "name": "Kazimierz Przerwa-Tetmajer"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przes\u0105d", 
-                "id": 4894, 
-                "name": "Przes\u0105d"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przestrze\u0144", 
-                "id": 261, 
-                "name": "Przestrze\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przyjaciel", 
-                "id": 4635, 
-                "name": "Przyjaciel"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przyja\u017a\u0144", 
-                "id": 136, 
-                "name": "Przyja\u017a\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przyjemno\u015b\u0107", 
-                "id": 5552, 
-                "name": "Przyjemno\u015b\u0107"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "przypowie\u015b\u0107", 
-                "id": 1407, 
-                "name": "Przypowie\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przyroda", 
-                "id": 4509, 
-                "name": "Przyroda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przyroda nieo\u017cywiona", 
-                "id": 295, 
-                "name": "Przyroda nieo\u017cywiona"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przysi\u0119ga", 
-                "id": 386, 
-                "name": "Przysi\u0119ga"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "przyw\u00f3dca", 
-                "id": 203, 
-                "name": "Przyw\u00f3dca"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "psalm", 
-                "id": 1583, 
-                "name": "Psalm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ptak", 
-                "id": 173, 
-                "name": "Ptak"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pu\u0142apka", 
-                "id": 4724, 
-                "name": "Pu\u0142apka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pustynia", 
-                "id": 1662, 
-                "name": "Pustynia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "pycha", 
-                "id": 394, 
-                "name": "Pycha"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rado\u015b\u0107", 
-                "id": 4882, 
-                "name": "Rado\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "raj", 
-                "id": 380, 
-                "name": "Raj"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "realista", 
-                "id": 362, 
-                "name": "Realista"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "religia", 
-                "id": 144, 
-                "name": "Religia"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "renesans", 
-                "id": 4, 
-                "name": "Renesans"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rewolucja", 
-                "id": 347, 
-                "name": "Rewolucja"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "reymont", 
-                "id": 243, 
-                "name": "W\u0142adys\u0142aw Stanis\u0142aw Reymont"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "robak", 
-                "id": 1323, 
-                "name": "Robak"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "robotnik", 
-                "id": 307, 
-                "name": "Robotnik"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rodzina", 
-                "id": 85, 
-                "name": "Rodzina"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "romantyzm", 
-                "id": 24, 
-                "name": "Romantyzm"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rosja", 
-                "id": 1336, 
-                "name": "Rosja"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rosjanin", 
-                "id": 360, 
-                "name": "Rosjanin"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ro\u015bliny", 
-                "id": 231, 
-                "name": "Ro\u015bliny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rozczarowanie", 
-                "id": 71, 
-                "name": "Rozczarowanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rozkosz", 
-                "id": 4712, 
-                "name": "Rozkosz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rozpacz", 
-                "id": 84, 
-                "name": "Rozpacz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rozstanie", 
-                "id": 1318, 
-                "name": "Rozstanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rozum", 
-                "id": 120, 
-                "name": "Rozum"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ruiny", 
-                "id": 183, 
-                "name": "Ruiny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rycerz", 
-                "id": 204, 
-                "name": "Rycerz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "rzeka", 
-                "id": 87, 
-                "name": "Rzeka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "salon", 
-                "id": 1642, 
-                "name": "Salon"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "samob\u00f3jstwo", 
-                "id": 179, 
-                "name": "Samob\u00f3jstwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "samolubstwo", 
-                "id": 432, 
-                "name": "Samolubstwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "samotnik", 
-                "id": 240, 
-                "name": "Samotnik"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "samotno\u015b\u0107", 
-                "id": 289, 
-                "name": "Samotno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sarmata", 
-                "id": 194, 
-                "name": "Sarmata"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "satyra", 
-                "id": 32, 
-                "name": "Satyra"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0105d", 
-                "id": 264, 
-                "name": "S\u0105d"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0105d ostateczny", 
-                "id": 1406, 
-                "name": "S\u0105d Ostateczny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0105kpiec", 
-                "id": 1647, 
-                "name": "S\u0105kpiec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0105siad", 
-                "id": 82, 
-                "name": "S\u0105siad"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "seks", 
-                "id": 4842, 
-                "name": "Seks"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sen", 
-                "id": 50, 
-                "name": "Sen"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "serce", 
-                "id": 184, 
-                "name": "Serce"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0119dzia", 
-                "id": 263, 
-                "name": "S\u0119dzia"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "s\u0119p szarzy\u0144ski", 
-                "id": 1565, 
-                "name": "Miko\u0142aj S\u0119p Szarzy\u0144ski"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "shakespeare", 
-                "id": 226, 
-                "name": "William Shakespeare"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sielanka", 
-                "id": 48, 
-                "name": "Sielanka"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "sienkiewicz", 
-                "id": 350, 
-                "name": "Henryk Sienkiewicz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sierota", 
-                "id": 99, 
-                "name": "Sierota"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "si\u0142a", 
-                "id": 395, 
-                "name": "Si\u0142a"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "siostra", 
-                "id": 155, 
-                "name": "Siostra"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "skarb", 
-                "id": 5419, 
-                "name": "Skarb"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sk\u0105piec", 
-                "id": 160, 
-                "name": "Sk\u0105piec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0142awa", 
-                "id": 110, 
-                "name": "S\u0142awa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0142o\u0144ce", 
-                "id": 185, 
-                "name": "S\u0142o\u0144ce"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "s\u0142owacki", 
-                "id": 189, 
-                "name": "Juliusz S\u0142owacki"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0142owo", 
-                "id": 188, 
-                "name": "S\u0142owo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0142uga", 
-                "id": 35, 
-                "name": "S\u0142uga"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "s\u0142u\u017calczo\u015b\u0107", 
-                "id": 1342, 
-                "name": "S\u0142u\u017calczo\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "smutek", 
-                "id": 301, 
-                "name": "Smutek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sobowt\u00f3r", 
-                "id": 349, 
-                "name": "Sobowt\u00f3r"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "sofokles", 
-                "id": 176, 
-                "name": "Sofokles"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "sonet", 
-                "id": 22, 
-                "name": "Sonet"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "spo\u0142ecznik", 
-                "id": 296, 
-                "name": "Spo\u0142ecznik"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sport", 
-                "id": 5213, 
-                "name": "Sport"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "spotkanie", 
-                "id": 4880, 
-                "name": "Spotkanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "spowied\u017a", 
-                "id": 3109, 
-                "name": "Spowied\u017a"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sprawiedliwo\u015b\u0107", 
-                "id": 164, 
-                "name": "Sprawiedliwo\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "spryt", 
-                "id": 4897, 
-                "name": "Spryt"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "staro\u015b\u0107", 
-                "id": 113, 
-                "name": "Staro\u015b\u0107"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "staro\u017cytno\u015b\u0107", 
-                "id": 177, 
-                "name": "Staro\u017cytno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "stolica", 
-                "id": 4896, 
-                "name": "Stolica"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "st\u00f3j", 
-                "id": 5443, 
-                "name": "St\u00f3j"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "strach", 
-                "id": 340, 
-                "name": "Strach"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "str\u00f3j", 
-                "id": 325, 
-                "name": "Str\u00f3j"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "stworzenie", 
-                "id": 223, 
-                "name": "Stworzenie"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "suchodolski", 
-                "id": 5297, 
-                "name": "Rajnold Suchodolski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sumienie", 
-                "id": 776, 
-                "name": "Sumienie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "swaty", 
-                "id": 1643, 
-                "name": "Swaty"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "syberia", 
-                "id": 1648, 
-                "name": "Syberia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "syn", 
-                "id": 146, 
-                "name": "Syn"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "syn marnotrawny", 
-                "id": 256, 
-                "name": "Syn marnotrawny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "syzyf", 
-                "id": 302, 
-                "name": "Syzyf"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "szaleniec", 
-                "id": 227, 
-                "name": "Szaleniec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "szale\u0144stwo", 
-                "id": 186, 
-                "name": "Szale\u0144stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "szanta\u017c", 
-                "id": 157, 
-                "name": "Szanta\u017c"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "szatan", 
-                "id": 273, 
-                "name": "Szatan"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "szcz\u0119\u015bcie", 
-                "id": 102, 
-                "name": "Szcz\u0119\u015bcie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "szko\u0142a", 
-                "id": 268, 
-                "name": "Szko\u0142a"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "szlachcic", 
-                "id": 114, 
-                "name": "Szlachcic"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "szpieg", 
-                "id": 1344, 
-                "name": "Szpieg"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "sztuka", 
-                "id": 220, 
-                "name": "Sztuka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015blub", 
-                "id": 46, 
-                "name": "\u015alub"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bmiech", 
-                "id": 68, 
-                "name": "\u015amiech"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bmier\u0107", 
-                "id": 53, 
-                "name": "\u015amier\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bmier\u0107 bohaterska", 
-                "id": 181, 
-                "name": "\u015amier\u0107 bohaterska"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bpiew", 
-                "id": 174, 
-                "name": "\u015apiew"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "\u015bredniowiecze", 
-                "id": 334, 
-                "name": "\u015aredniowiecze"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bwiat\u0142o", 
-                "id": 119, 
-                "name": "\u015awiat\u0142o"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bwi\u0105tynia", 
-                "id": 4893, 
-                "name": "\u015awi\u0105tynia"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "\u015bwi\u0119cicki", 
-                "id": 5300, 
-                "name": "Wac\u0142aw \u015awi\u0119cicki"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bwi\u0119to", 
-                "id": 4423, 
-                "name": "\u015awi\u0119to"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bwi\u0119tokradztwo", 
-                "id": 4877, 
-                "name": "\u015awi\u0119tokradztwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bwi\u0119toszek", 
-                "id": 145, 
-                "name": "\u015awi\u0119toszek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bwi\u0119ty", 
-                "id": 275, 
-                "name": "\u015awi\u0119ty"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u015bwit", 
-                "id": 2288, 
-                "name": "\u015awit"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "tajemnica", 
-                "id": 214, 
-                "name": "Tajemnica"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "taniec", 
-                "id": 259, 
-                "name": "Taniec"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "tarnowski", 
-                "id": 5302, 
-                "name": "W\u0142adys\u0142aw Tarnowski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "tch\u00f3rzostwo", 
-                "id": 425, 
-                "name": "Tch\u00f3rzostwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "teatr", 
-                "id": 356, 
-                "name": "Teatr"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "testament", 
-                "id": 1335, 
-                "name": "Testament"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "t\u0119sknota", 
-                "id": 28, 
-                "name": "T\u0119sknota"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "theatrum mundi", 
-                "id": 14, 
-                "name": "Theatrum mundi"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "t\u0142um", 
-                "id": 355, 
-                "name": "T\u0142um"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "tragedia", 
-                "id": 175, 
-                "name": "Tragedia"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "tragifarsa", 
-                "id": 3337, 
-                "name": "Tragifarsa"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "tren", 
-                "id": 52, 
-                "name": "Tren"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "trucizna", 
-                "id": 385, 
-                "name": "Trucizna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "trup", 
-                "id": 93, 
-                "name": "Trup"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "twain", 
-                "id": 5550, 
-                "name": "Mark Twain"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "tw\u00f3rczo\u015b\u0107", 
-                "id": 419, 
-                "name": "Tw\u00f3rczo\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ucieczka", 
-                "id": 4540, 
-                "name": "Ucieczka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ucze\u0144", 
-                "id": 344, 
-                "name": "Ucze\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "uczta", 
-                "id": 359, 
-                "name": "Uczta"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "umiarkowanie", 
-                "id": 224, 
-                "name": "Umiarkowanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "upadek", 
-                "id": 138, 
-                "name": "Upadek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "upi\u00f3r", 
-                "id": 190, 
-                "name": "Upi\u00f3r"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "uroda", 
-                "id": 225, 
-                "name": "Uroda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "urz\u0119dnik", 
-                "id": 207, 
-                "name": "Urz\u0119dnik"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "vanitas", 
-                "id": 91, 
-                "name": "Vanitas"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "walka", 
-                "id": 149, 
-                "name": "Walka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "walka klas", 
-                "id": 365, 
-                "name": "Walka klas"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wampir", 
-                "id": 191, 
-                "name": "Wampir"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "warszawa", 
-                "id": 364, 
-                "name": "Warszawa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "w\u0105\u017c", 
-                "id": 390, 
-                "name": "W\u0105\u017c"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wdowa", 
-                "id": 219, 
-                "name": "Wdowa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wdowiec", 
-                "id": 100, 
-                "name": "Wdowiec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wdzi\u0119czno\u015b\u0107", 
-                "id": 4599, 
-                "name": "Wdzi\u0119czno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wesele", 
-                "id": 251, 
-                "name": "Wesele"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wiadomo\u015b\u0107", 
-                "id": 4545, 
-                "name": "Wiadomo\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wiara", 
-                "id": 4360, 
-                "name": "Wiara"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wiatr", 
-                "id": 298, 
-                "name": "Wiatr"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wieczno\u015b\u0107", 
-                "id": 5726, 
-                "name": "Wieczno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wiecz\u00f3r", 
-                "id": 4422, 
-                "name": "Wiecz\u00f3r"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wiedza", 
-                "id": 310, 
-                "name": "Wiedza"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wierno\u015b\u0107", 
-                "id": 433, 
-                "name": "Wierno\u015b\u0107"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "wiersz", 
-                "id": 121, 
-                "name": "Wiersz"
-            }, 
-            {
-                "category": "genre", 
-                "sort_key": "wiersz sylabotoniczny", 
-                "id": 336, 
-                "name": "Wiersz sylabotoniczny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wierzenia", 
-                "id": 274, 
-                "name": "Wierzenia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wie\u015b", 
-                "id": 7, 
-                "name": "Wie\u015b"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wie\u017ca babel", 
-                "id": 375, 
-                "name": "Wie\u017ca Babel"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wi\u0119zienie", 
-                "id": 361, 
-                "name": "Wi\u0119zienie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wi\u0119zie\u0144", 
-                "id": 367, 
-                "name": "Wi\u0119zie\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wina", 
-                "id": 213, 
-                "name": "Wina"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wino", 
-                "id": 235, 
-                "name": "Wino"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wiosna", 
-                "id": 88, 
-                "name": "Wiosna"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "witkiewicz", 
-                "id": 3141, 
-                "name": "Stanis\u0142aw Ignacy Witkiewicz"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "witwicki", 
-                "id": 5310, 
-                "name": "Stefan Witwicki"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wizja", 
-                "id": 129, 
-                "name": "Wizja"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "w\u0142adza", 
-                "id": 39, 
-                "name": "W\u0142adza"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "w\u0142asno\u015b\u0107", 
-                "id": 170, 
-                "name": "W\u0142asno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "woda", 
-                "id": 18, 
-                "name": "Woda"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wojna", 
-                "id": 237, 
-                "name": "Wojna"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wojna pokole\u0144", 
-                "id": 3110, 
-                "name": "Wojna pokole\u0144"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wolno\u015b\u0107", 
-                "id": 239, 
-                "name": "Wolno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wr\u00f3g", 
-                "id": 229, 
-                "name": "Wr\u00f3g"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wspomnienia", 
-                "id": 25, 
-                "name": "Wspomnienia"
-            }, 
-            {
-                "category": "epoch", 
-                "sort_key": "wsp\u00f3\u0142czesno\u015b\u0107", 
-                "id": 2138, 
-                "name": "Wsp\u00f3\u0142czesno\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wsp\u00f3\u0142czucie", 
-                "id": 5731, 
-                "name": "Wsp\u00f3\u0142czucie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wsp\u00f3\u0142praca", 
-                "id": 2391, 
-                "name": "Wsp\u00f3\u0142praca"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wstyd", 
-                "id": 4889, 
-                "name": "Wstyd"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "wybicki", 
-                "id": 5312, 
-                "name": "J\u00f3zef Wybicki"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wychowanie", 
-                "id": 5553, 
-                "name": "Wychowanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wygnanie", 
-                "id": 317, 
-                "name": "Wygnanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wyrzuty sumienia", 
-                "id": 75, 
-                "name": "Wyrzuty sumienia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wyspa", 
-                "id": 4406, 
-                "name": "Wyspa"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "wyspia\u0144ski", 
-                "id": 1485, 
-                "name": "Stanis\u0142aw Wyspia\u0144ski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "wzrok", 
-                "id": 319, 
-                "name": "Wzrok"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zabawa", 
-                "id": 38, 
-                "name": "Zabawa"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zabobony", 
-                "id": 279, 
-                "name": "Zabobony"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zak\u0142ad", 
-                "id": 5426, 
-                "name": "Zak\u0142ad"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zamek", 
-                "id": 326, 
-                "name": "Zamek"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zapach", 
-                "id": 4425, 
-                "name": "Zapach"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "zapolska", 
-                "id": 154, 
-                "name": "Gabriela Zapolska"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zar\u0119czyny", 
-                "id": 772, 
-                "name": "Zar\u0119czyny"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "za\u015bwiaty", 
-                "id": 221, 
-                "name": "Za\u015bwiaty"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zazdro\u015b\u0107", 
-                "id": 246, 
-                "name": "Zazdro\u015b\u0107"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zbawienie", 
-                "id": 430, 
-                "name": "Zbawienie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zbrodnia", 
-                "id": 165, 
-                "name": "Zbrodnia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zbrodniarz", 
-                "id": 218, 
-                "name": "Zbrodniarz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zdrada", 
-                "id": 133, 
-                "name": "Zdrada"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zdrowie", 
-                "id": 284, 
-                "name": "Zdrowie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zemsta", 
-                "id": 228, 
-                "name": "Zemsta"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zes\u0142aniec", 
-                "id": 232, 
-                "name": "Zes\u0142aniec"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ziarno", 
-                "id": 331, 
-                "name": "Ziarno"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "ziemia", 
-                "id": 254, 
-                "name": "Ziemia"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zima", 
-                "id": 86, 
-                "name": "Zima"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "z\u0142o", 
-                "id": 1330, 
-                "name": "Z\u0142o"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "z\u0142odziej", 
-                "id": 206, 
-                "name": "Z\u0142odziej"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zmartwychwstanie", 
-                "id": 431, 
-                "name": "Zmartwychwstanie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zm\u0119czenie", 
-                "id": 5727, 
-                "name": "Zm\u0119czenie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zmys\u0142y", 
-                "id": 4723, 
-                "name": "Zmys\u0142y"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zw\u0105tpienie", 
-                "id": 379, 
-                "name": "Zw\u0105tpienie"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zwierz\u0119", 
-                "id": 5734, 
-                "name": "Zwierz\u0119"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zwierz\u0119ta", 
-                "id": 43, 
-                "name": "Zwierz\u0119ta"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "zwyci\u0119stwo", 
-                "id": 299, 
-                "name": "Zwyci\u0119stwo"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017cal", 
-                "id": 5237, 
-                "name": "\u017bal"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017ca\u0142oba", 
-                "id": 98, 
-                "name": "\u017ba\u0142oba"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017cart", 
-                "id": 4892, 
-                "name": "\u017bart"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017cebrak", 
-                "id": 208, 
-                "name": "\u017bebrak"
-            }, 
-            {
-                "category": "author", 
-                "sort_key": "\u017ceromski", 
-                "id": 293, 
-                "name": "Stefan \u017beromski"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017co\u0142nierz", 
-                "id": 205, 
-                "name": "\u017bo\u0142nierz"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017cona", 
-                "id": 36, 
-                "name": "\u017bona"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017cycie jako w\u0119dr\u00f3wka", 
-                "id": 345, 
-                "name": "\u017bycie jako w\u0119dr\u00f3wka"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017cycie snem", 
-                "id": 198, 
-                "name": "\u017bycie snem"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017cyd", 
-                "id": 65, 
-                "name": "\u017byd"
-            }, 
-            {
-                "category": "theme", 
-                "sort_key": "\u017cywio\u0142y", 
-                "id": 241, 
-                "name": "\u017bywio\u0142y"
-            }
-        ]
-    }
-}
\ No newline at end of file
diff --git a/libs/phonegap-1.0.0.jar b/libs/phonegap-1.0.0.jar
new file mode 100644 (file)
index 0000000..b0b0486
Binary files /dev/null and b/libs/phonegap-1.0.0.jar differ
diff --git a/libs/phonegap.0.9.4.jar b/libs/phonegap.0.9.4.jar
deleted file mode 100644 (file)
index e9c6ba8..0000000
Binary files a/libs/phonegap.0.9.4.jar and /dev/null differ
diff --git a/res/xml/plugins.xml b/res/xml/plugins.xml
new file mode 100644 (file)
index 0000000..2d8ba88
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<plugins>
+    <plugin name="App" value="com.phonegap.App"/>
+    <plugin name="Geolocation" value="com.phonegap.GeoBroker"/>
+    <plugin name="Device" value="com.phonegap.Device"/>
+    <plugin name="Accelerometer" value="com.phonegap.AccelListener"/>
+    <plugin name="Compass" value="com.phonegap.CompassListener"/>
+    <plugin name="Media" value="com.phonegap.AudioHandler"/>
+    <plugin name="Camera" value="com.phonegap.CameraLauncher"/>
+    <plugin name="Contacts" value="com.phonegap.ContactManager"/>
+    <plugin name="Crypto" value="com.phonegap.CryptoHandler"/>
+    <plugin name="File" value="com.phonegap.FileUtils"/>
+    <plugin name="Network Status" value="com.phonegap.NetworkManager"/>
+    <plugin name="Notification" value="com.phonegap.Notification"/>
+    <plugin name="Storage" value="com.phonegap.Storage"/>
+    <plugin name="Temperature" value="com.phonegap.TempListener"/>
+    <plugin name="FileTransfer" value="com.phonegap.FileTransfer"/>
+    <plugin name="Capture" value="com.phonegap.Capture"/>
+
+       <plugin name="Downloader" value="pl.org.nowoczesnapolska.wlmobi.Downloader" />
+       <plugin name="DBPut" value="pl.org.nowoczesnapolska.wlmobi.DBPut" />
+       <plugin name="MenuInterface" value="pl.org.nowoczesnapolska.wlmobi.MenuInterface" />
+</plugins>
\ No newline at end of file
diff --git a/src/pl/org/nowoczesnapolska/wlmobi/AssetCopy.java b/src/pl/org/nowoczesnapolska/wlmobi/AssetCopy.java
deleted file mode 100644 (file)
index 89f970a..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-package pl.org.nowoczesnapolska.wlmobi;
-
-/*
- @author Radek Czajka
- */
-
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import android.util.Log;
-import android.content.res.AssetManager;
-
-import com.phonegap.api.Plugin;
-import com.phonegap.api.PluginResult;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.IOException;
-
-public class AssetCopy extends Plugin{
-
-       @Override
-       public PluginResult execute(String action, JSONArray args, String callbackId) {
-               if (action.equals("copy")) {
-                       try {
-                               return this.copy(args.getString(0), args.getString(1), args.getString(2));
-                       } catch (JSONException e) {
-                               return new PluginResult(PluginResult.Status.ERROR, "Param errrors");
-                       }
-               }
-               else {
-                       return new PluginResult(PluginResult.Status.INVALID_ACTION);
-               }
-       }
-
-       private PluginResult copy(String assetPath, String targetPath, String overwrite) {
-               int index = targetPath.lastIndexOf('/');
-               String targetDir = targetPath.substring(0, index);
-
-               try {
-                       File dir = new File(targetDir);
-                       if(!dir.exists()) {
-                               Log.d("AssetCopy", "directory " + targetDir + " created");
-                               dir.mkdirs();
-                       }
-
-                       File fout = new File(targetPath);
-
-                       if(overwrite.equals("false") && fout.exists()) {
-                               Log.d("AssetCopy", "File already exists");
-                               return new PluginResult(PluginResult.Status.OK, "exist");
-                       }
-
-                       FileOutputStream fos = new FileOutputStream(fout);
-
-                       AssetManager assetManager = this.ctx.getResources().getAssets();
-                       InputStream is = assetManager.open(assetPath);
-
-                       byte[] buffer = new byte[1024];
-                       int len1 = 0;
-
-                       while ( (len1 = is.read(buffer)) > 0 ) {
-                               fos.write(buffer,0, len1);
-                       }
-
-                       fos.close();
-
-                       Log.d("AssetCopy", "Copied to " + targetPath);
-               } catch (IOException e) {
-                       Log.d("AssetCopy", "Error: " + e);
-                       return new PluginResult(PluginResult.Status.ERROR, "Error: " + e);
-               }
-               return new PluginResult(PluginResult.Status.OK, targetPath);
-       }
-}
\ No newline at end of file
index f8d69ec..ea6ee6f 100644 (file)
@@ -1,13 +1,73 @@
 package pl.org.nowoczesnapolska.wlmobi;
 
 import android.os.Bundle;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.webkit.WebSettings;
+
 import com.phonegap.*;
 
 public class Catalogue extends DroidGap {
+
+       String infoLabel = "Proszę czekać";
+       Boolean infoEnabled = false;
+
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+
         super.loadUrl("file:///android_asset/www/index.html");
+
+        WebSettings settings = this.appView.getSettings();
+        settings.setSupportZoom(true);
+        settings.setBuiltInZoomControls(true);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+       menu.add(Menu.NONE, 1, 1, "Początek");
+       menu.add(Menu.NONE, 2, 2, MenuInterface.infoLabel);
+       menu.add(Menu.NONE, 3, 3, "Dodaj zakładkę");
+        //MenuInflater inflater = getMenuInflater();
+        //inflater.inflate(R.menu.game_menu, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+       MenuItem mi = menu.getItem(1);
+       mi.setTitle(MenuInterface.infoLabel);
+       mi.setEnabled(MenuInterface.infoEnabled);
+       return super.onPrepareOptionsMenu(menu);
+    }
+
+
+    @Override
+    public boolean onKeyDown(int i,KeyEvent e){
+       if (e.getKeyCode() == KeyEvent.KEYCODE_MENU) {
+               return false;
+       }
+        return super.onKeyDown(i, e);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+       switch (item.getItemId()) {
+       case 1:
+               this.appView.loadUrl("javascript:Menu.start();");
+               break;
+       case 2:
+               this.appView.loadUrl("javascript:Menu.info();");
+               break;
+       case 3:
+               this.appView.loadUrl("javascript:Menu.bookmark();");
+               break;
+       default:
+               return super.onOptionsItemSelected(item);
+       }
+       return true;
     }
 }
\ No newline at end of file
diff --git a/src/pl/org/nowoczesnapolska/wlmobi/DBPut.java b/src/pl/org/nowoczesnapolska/wlmobi/DBPut.java
new file mode 100644 (file)
index 0000000..05ff2cf
--- /dev/null
@@ -0,0 +1,97 @@
+package pl.org.nowoczesnapolska.wlmobi;
+
+/*
+ @author Radek Czajka
+ */
+
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import android.util.Log;
+import android.content.res.AssetManager;
+
+import com.phonegap.api.Plugin;
+import com.phonegap.api.PluginResult;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import pl.org.nowoczesnapolska.wlmobi.Downloader;
+
+public class DBPut extends Plugin{
+
+       @Override
+       public PluginResult execute(String action, JSONArray args, String callbackId) {
+               if (action.equals("put")) {
+                       try {
+                               return this.put(args.getString(0), args.getString(1), args.getString(2));
+                       } catch (JSONException e) {
+                               return new PluginResult(PluginResult.Status.ERROR, "Param errrors");
+                       }
+               }
+               else if (action.equals("fetch")) {
+                       try {
+                               return this.fetch(args.getString(0));
+                       } catch (JSONException e) {
+                               return new PluginResult(PluginResult.Status.ERROR, "Param errrors");
+                       }
+               }
+               else {
+                       return new PluginResult(PluginResult.Status.INVALID_ACTION);
+               }
+       }
+
+       private PluginResult fetch(String url) {
+               String fileName = "0000000000000001.db";
+               String targetPath = "/data/data/" + this.ctx.getPackageName() + "/app_database/file__0/";
+               
+               Log.d("DBPut", "database path: " + targetPath + " / " + fileName);
+               
+               Downloader d = new Downloader();
+               return d.downloadUrl(url, targetPath, fileName, "true");
+       }
+
+
+       private PluginResult put(String assetPath, String targetPath, String overwrite) {
+               // this hard-coding is kinda creepy, should probably create the db and use getDatabasePath instead
+               String absoluteTargetPath = "/data/data/" + this.ctx.getPackageName() + "/app_database/" + targetPath;
+               int index = absoluteTargetPath.lastIndexOf('/');
+               String targetDir = absoluteTargetPath.substring(0, index);
+
+               try {
+                       File dir = new File(targetDir);
+                       if(!dir.exists()) {
+                               Log.d("DBPut", "directory " + targetDir + " created");
+                               dir.mkdirs();
+                       }
+
+                       File fout = new File(absoluteTargetPath);
+
+                       if(overwrite.equals("false") && fout.exists()) {
+                               Log.d("DBPut", "File already exists");
+                               return new PluginResult(PluginResult.Status.OK, "exist");
+                       }
+
+                       FileOutputStream fos = new FileOutputStream(fout);
+
+                       AssetManager assetManager = this.ctx.getResources().getAssets();
+                       InputStream is = assetManager.open(assetPath);
+
+                       byte[] buffer = new byte[1024];
+                       int len1 = 0;
+
+                       while ( (len1 = is.read(buffer)) > 0 ) {
+                               fos.write(buffer,0, len1);
+                       }
+
+                       fos.close();
+
+                       Log.d("DBPut", "Copied to " + absoluteTargetPath);
+               } catch (IOException e) {
+                       Log.d("DBPut", "Error: " + e);
+                       return new PluginResult(PluginResult.Status.ERROR, "Error: " + e);
+               }
+               return new PluginResult(PluginResult.Status.OK, absoluteTargetPath);
+       }
+}
\ No newline at end of file
index be5a7e9..39032ae 100644 (file)
@@ -39,7 +39,7 @@ public class Downloader extends Plugin{
  
  }
  
private PluginResult downloadUrl(String fileUrl, String dirName, String fileName, String overwrite){
+ PluginResult downloadUrl(String fileUrl, String dirName, String fileName, String overwrite){
  try{
  Log.d("DownloaderPlugin", "DIRECTORY CALLED "+dirName+" created");
  File dir =     new File(dirName);
@@ -56,6 +56,7 @@ public class Downloader extends Plugin{
  }
  
  URL url = new URL(fileUrl);
+ Log.d("DownloaderPlugin", "connecting to server for downloading " + url);
  HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
  ucon.setRequestMethod("GET");
  ucon.setDoOutput(true);
diff --git a/src/pl/org/nowoczesnapolska/wlmobi/MenuInterface.java b/src/pl/org/nowoczesnapolska/wlmobi/MenuInterface.java
new file mode 100644 (file)
index 0000000..b71fd4c
--- /dev/null
@@ -0,0 +1,40 @@
+package pl.org.nowoczesnapolska.wlmobi;
+
+/*
+ @author Radek Czajka
+ */
+
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import android.util.Log;
+
+import com.phonegap.api.Plugin;
+import com.phonegap.api.PluginResult;
+
+public class MenuInterface extends Plugin{
+
+       public static String infoLabel = "Proszę czekać...";
+       public static Boolean infoEnabled = false;
+
+       @Override
+       public PluginResult execute(String action, JSONArray args, String callbackId) {
+               if (action.equals("setInfoButton")) {
+                       try {
+                               return this.setInfoButton(args.getString(0), args.getString(1));
+                       } catch (JSONException e) {
+                               return new PluginResult(PluginResult.Status.ERROR, "Param errrors");
+                       }
+               }
+               else {
+                       return new PluginResult(PluginResult.Status.INVALID_ACTION);
+               }
+       }
+
+       private PluginResult setInfoButton(String label, String enabled) {
+       infoLabel = label;
+       infoEnabled = enabled.equals("true");
+
+               return new PluginResult(PluginResult.Status.OK);
+       }
+}