From 4b7959b4069e3c2d28eb916a29819ee8867aed2a Mon Sep 17 00:00:00 2001 From: Chris Hallberg <crhallberg@gmail.com> Date: Mon, 16 Sep 2013 12:21:32 -0400 Subject: [PATCH] First draft of bootstrap theme. --- .../css/bootstrap-responsive.min.css | 9 + themes/bootstrap/css/bootstrap.min.css | 9 + themes/bootstrap/css/combined.css | 3 + themes/bootstrap/css/font-awesome-ie7.min.css | 384 ++ themes/bootstrap/css/font-awesome.css | 1479 ++++++ themes/bootstrap/css/font-awesome.min.css | 403 ++ themes/bootstrap/css/help.css | 1 + themes/bootstrap/css/print.css | 2 + themes/bootstrap/css/screen.css | 19 + themes/bootstrap/css/slider.css | 138 + themes/bootstrap/css/style.css | 1 + themes/bootstrap/images/font/FontAwesome.otf | Bin 0 -> 61896 bytes .../images/font/fontawesome-webfont.eot | Bin 0 -> 37405 bytes .../images/font/fontawesome-webfont.svg | 399 ++ .../images/font/fontawesome-webfont.ttf | Bin 0 -> 79076 bytes .../images/font/fontawesome-webfont.woff | Bin 0 -> 43572 bytes .../images/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../bootstrap/images/glyphicons-halflings.png | Bin 0 -> 12799 bytes themes/bootstrap/images/view_grid.png | Bin 0 -> 171 bytes themes/bootstrap/images/view_list.png | Bin 0 -> 212 bytes themes/bootstrap/js/advanced_search.js | 110 + themes/bootstrap/js/bootstrap-slider.js | 388 ++ themes/bootstrap/js/cart.js | 178 + themes/bootstrap/js/check_item_statuses.js | 80 + themes/bootstrap/js/check_save_statuses.js | 45 + themes/bootstrap/js/common.js | 94 + themes/bootstrap/js/core/bootstrap.js | 2286 +++++++++ themes/bootstrap/js/core/bootstrap.min.js | 6 + themes/bootstrap/js/core/jquery.min.js | 2 + themes/bootstrap/js/flot/LICENSE.txt | 22 + themes/bootstrap/js/flot/excanvas.min.js | 1 + themes/bootstrap/js/flot/jquery.flot.min.js | 6 + .../js/flot/jquery.flot.selection.min.js | 1 + themes/bootstrap/js/jquery.swipe.min.js | 3 + themes/bootstrap/js/jquery.validate.min.js | 2 + themes/bootstrap/js/jsTree/hierarchyTree.js | 287 ++ themes/bootstrap/js/jsTree/jquery.jstree.js | 4571 +++++++++++++++++ .../bootstrap/js/jsTree/themes/apple/bg.jpg | Bin 0 -> 331 bytes themes/bootstrap/js/jsTree/themes/apple/d.png | Bin 0 -> 7765 bytes .../js/jsTree/themes/apple/dot_for_ie.gif | Bin 0 -> 43 bytes .../js/jsTree/themes/apple/style.css | 61 + .../js/jsTree/themes/apple/throbber.gif | Bin 0 -> 1849 bytes .../bootstrap/js/jsTree/themes/classic/d.gif | Bin 0 -> 3003 bytes .../bootstrap/js/jsTree/themes/classic/d.png | Bin 0 -> 7535 bytes .../js/jsTree/themes/classic/dot_for_ie.gif | Bin 0 -> 43 bytes .../js/jsTree/themes/classic/style.css | 77 + .../js/jsTree/themes/classic/throbber.gif | Bin 0 -> 1849 bytes .../js/jsTree/themes/default-rtl/d.gif | Bin 0 -> 2872 bytes .../js/jsTree/themes/default-rtl/d.png | Bin 0 -> 7459 bytes .../js/jsTree/themes/default-rtl/dots.gif | Bin 0 -> 132 bytes .../js/jsTree/themes/default-rtl/style.css | 84 + .../js/jsTree/themes/default-rtl/throbber.gif | Bin 0 -> 1849 bytes .../bootstrap/js/jsTree/themes/default/d.gif | Bin 0 -> 2944 bytes .../bootstrap/js/jsTree/themes/default/d.png | Bin 0 -> 7635 bytes .../js/jsTree/themes/default/style.css | 74 + .../js/jsTree/themes/default/throbber.gif | Bin 0 -> 1849 bytes .../bootstrap/js/jsTree/themes/vufind/d.gif | Bin 0 -> 2944 bytes .../bootstrap/js/jsTree/themes/vufind/d.png | Bin 0 -> 7426 bytes .../js/jsTree/themes/vufind/style.css | 80 + .../js/jsTree/themes/vufind/throbber.gif | Bin 0 -> 1849 bytes themes/bootstrap/js/lightbox.js | 326 ++ themes/bootstrap/js/masonry.min.js | 9 + themes/bootstrap/js/openurl.js | 38 + themes/bootstrap/js/preview.js | 160 + themes/bootstrap/js/pubdate_vis.js | 119 + themes/bootstrap/js/rc4.js | 100 + themes/bootstrap/js/record.js | 145 + .../templates/Auth/AbstractBase/login.phtml | 12 + .../templates/Auth/Database/create.phtml | 36 + .../bootstrap/templates/Helpers/openurl.phtml | 31 + .../templates/Recommend/AuthorFacets.phtml | 22 + .../templates/Recommend/AuthorInfo.phtml | 14 + .../Recommend/AuthorityRecommend.phtml | 19 + .../templates/Recommend/CatalogResults.phtml | 40 + .../Recommend/CollectionSideFacets.phtml | 37 + .../Recommend/EuropeanaResults.phtml | 32 + .../Recommend/EuropeanaResultsDeferred.phtml | 9 + .../templates/Recommend/ExpandFacets.phtml | 17 + .../templates/Recommend/FacetCloud.phtml | 28 + .../templates/Recommend/FavoriteFacets.phtml | 37 + .../Recommend/OpenLibrarySubjects.phtml | 31 + .../OpenLibrarySubjectsDeferred.phtml | 9 + .../templates/Recommend/PubDateVisAjax.phtml | 27 + .../Recommend/ResultGoogleMapAjax.phtml | 204 + .../templates/Recommend/SideFacets.phtml | 108 + .../templates/Recommend/SummonBestBets.phtml | 7 + .../templates/Recommend/SummonDatabases.phtml | 8 + .../templates/Recommend/SummonResults.phtml | 39 + .../Recommend/SummonResultsDeferred.phtml | 9 + .../templates/Recommend/SwitchType.phtml | 6 + .../templates/Recommend/TopFacets.phtml | 36 + .../templates/Recommend/WebResults.phtml | 31 + .../Recommend/WorldCatIdentities.phtml | 30 + .../templates/Recommend/WorldCatTerms.phtml | 21 + .../RecordDriver/AbstractBase/preview.phtml | 88 + .../RecordDriver/Pazpar2/link-author.phtml | 1 + .../RecordDriver/Pazpar2/link-series.phtml | 1 + .../RecordDriver/Pazpar2/link-subject.phtml | 1 + .../RecordDriver/Pazpar2/link-title.phtml | 1 + .../RecordDriver/Pazpar2/result-list.phtml | 111 + .../RecordDriver/SolrAuth/result-list.phtml | 32 + .../SolrDefault/collection-info.phtml | 209 + .../SolrDefault/collection-record.phtml | 63 + .../RecordDriver/SolrDefault/core.phtml | 218 + .../SolrDefault/format-class.phtml | 1 + .../SolrDefault/format-list.phtml | 3 + .../SolrDefault/link-author.phtml | 1 + .../SolrDefault/link-journaltitle.phtml | 1 + .../SolrDefault/link-series.phtml | 1 + .../SolrDefault/link-subject.phtml | 1 + .../RecordDriver/SolrDefault/link-title.phtml | 1 + .../RecordDriver/SolrDefault/list-entry.phtml | 182 + .../SolrDefault/result-grid.phtml | 53 + .../SolrDefault/result-list.phtml | 150 + .../RecordDriver/SolrDefault/toolbar.phtml | 56 + .../RecordDriver/SolrWeb/result-list.phtml | 35 + .../RecordDriver/Summon/format-class.phtml | 44 + .../RecordDriver/Summon/link-author.phtml | 1 + .../Summon/link-journaltitle.phtml | 1 + .../RecordDriver/Summon/link-series.phtml | 1 + .../RecordDriver/Summon/link-subject.phtml | 1 + .../RecordDriver/Summon/link-title.phtml | 1 + .../RecordDriver/WorldCat/link-author.phtml | 1 + .../RecordDriver/WorldCat/link-series.phtml | 1 + .../RecordDriver/WorldCat/link-subject.phtml | 1 + .../RecordDriver/WorldCat/link-title.phtml | 1 + .../RecordTab/collectionhierarchytree.phtml | 20 + .../templates/RecordTab/collectionlist.phtml | 32 + .../templates/RecordTab/description.phtml | 237 + .../templates/RecordTab/excerpt.phtml | 24 + .../templates/RecordTab/hierarchytree.phtml | 55 + .../templates/RecordTab/holdingsils.phtml | 124 + .../RecordTab/holdingsworldcat.phtml | 24 + .../bootstrap/templates/RecordTab/map.phtml | 65 + .../templates/RecordTab/reviews.phtml | 41 + .../templates/RecordTab/staffviewarray.phtml | 17 + .../templates/RecordTab/staffviewmarc.phtml | 5 + .../bootstrap/templates/RecordTab/toc.phtml | 16 + .../templates/RecordTab/usercomments.phtml | 16 + .../templates/Related/Editions.phtml | 24 + .../bootstrap/templates/Related/Similar.phtml | 28 + themes/bootstrap/templates/admin/config.phtml | 23 + .../bootstrap/templates/admin/disabled.phtml | 3 + themes/bootstrap/templates/admin/home.phtml | 50 + .../templates/admin/maintenance.phtml | 22 + themes/bootstrap/templates/admin/menu.phtml | 7 + .../templates/admin/socialstats.phtml | 32 + .../templates/admin/statistics.phtml | 86 + .../templates/ajax/export-favorites.phtml | 7 + .../templates/ajax/resolverLinks.phtml | 48 + .../templates/ajax/resultgooglemapinfo.phtml | 29 + .../templates/ajax/status-available.phtml | 1 + .../templates/ajax/status-full.phtml | 26 + .../templates/ajax/status-unavailable.phtml | 1 + .../templates/ajax/status-unknown.phtml | 1 + .../templates/alphabrowse/home.phtml | 112 + themes/bootstrap/templates/author/home.phtml | 12 + .../bootstrap/templates/author/results.phtml | 15 + .../bootstrap/templates/author/search.phtml | 24 + .../bootstrap/templates/authority/home.phtml | 1 + .../templates/authority/record.phtml | 2 + .../templates/authority/search.phtml | 4 + themes/bootstrap/templates/browse/home.phtml | 67 + themes/bootstrap/templates/cart/cart.phtml | 27 + .../bootstrap/templates/cart/contents.phtml | 15 + themes/bootstrap/templates/cart/email.phtml | 46 + .../templates/cart/export-success.phtml | 4 + themes/bootstrap/templates/cart/export.phtml | 30 + themes/bootstrap/templates/cart/save.phtml | 73 + .../collection/collection-record-error.phtml | 1 + .../bootstrap/templates/collection/view.phtml | 82 + .../templates/collections/bytitle.phtml | 22 + .../templates/collections/home.phtml | 67 + .../templates/collections/list.phtml | 13 + .../bootstrap/templates/combined/home.phtml | 1 + .../templates/combined/results-ajax.phtml | 15 + .../templates/combined/results-list.phtml | 61 + .../templates/combined/results.phtml | 57 + .../bootstrap/templates/confirm/confirm.phtml | 26 + .../templates/devtools/language.phtml | 57 + themes/bootstrap/templates/error/index.phtml | 49 + .../templates/error/unavailable.phtml | 22 + .../bootstrap/templates/feedback/email.phtml | 2 + .../bootstrap/templates/feedback/form.phtml | 72 + .../bootstrap/templates/feedback/home.phtml | 7 + themes/bootstrap/templates/footer.phtml | 28 + themes/bootstrap/templates/header.phtml | 70 + .../templates/install/disabled.phtml | 11 + themes/bootstrap/templates/install/done.phtml | 14 + .../templates/install/fixbasicconfig.phtml | 27 + .../templates/install/fixcache.phtml | 23 + .../templates/install/fixdatabase.phtml | 71 + .../templates/install/fixdependencies.phtml | 13 + .../bootstrap/templates/install/fixils.phtml | 32 + .../templates/install/fixsecurity.phtml | 28 + .../bootstrap/templates/install/fixsolr.phtml | 19 + themes/bootstrap/templates/install/home.phtml | 17 + .../bootstrap/templates/install/showsql.phtml | 23 + .../bootstrap/templates/layout/layout.phtml | 90 + .../bootstrap/templates/layout/lightbox.phtml | 1 + .../templates/missingrecord/home.phtml | 3 + .../templates/myresearch/account.phtml | 19 + .../myresearch/bulk-action-buttons.phtml | 21 + .../templates/myresearch/cataloglogin.phtml | 32 + .../templates/myresearch/checkedout.phtml | 132 + .../templates/myresearch/delete.phtml | 21 + .../bootstrap/templates/myresearch/edit.phtml | 65 + .../templates/myresearch/editlist.phtml | 45 + .../templates/myresearch/export.phtml | 36 + .../templates/myresearch/fines.phtml | 47 + .../templates/myresearch/holds.phtml | 147 + .../templates/myresearch/login.phtml | 57 + .../bootstrap/templates/myresearch/menu.phtml | 10 + .../templates/myresearch/mylist.phtml | 82 + .../templates/myresearch/profile.phtml | 63 + themes/bootstrap/templates/oai/home.phtml | 119 + themes/bootstrap/templates/pazpar2/home.phtml | 1 + .../bootstrap/templates/pazpar2/search.phtml | 4 + .../bootstrap/templates/record/addtag.phtml | 28 + .../bootstrap/templates/record/ajaxtab.phtml | 7 + .../bootstrap/templates/record/checkbox.phtml | 4 + themes/bootstrap/templates/record/cite.phtml | 27 + .../templates/record/comments-list.phtml | 19 + themes/bootstrap/templates/record/email.phtml | 39 + .../templates/record/export-menu.phtml | 20 + themes/bootstrap/templates/record/hold.phtml | 59 + themes/bootstrap/templates/record/save.phtml | 62 + themes/bootstrap/templates/record/sms.phtml | 50 + themes/bootstrap/templates/record/view.phtml | 76 + themes/bootstrap/templates/records/home.phtml | 10 + .../bootstrap/templates/search/advanced.phtml | 6 + .../search/advanced/build_page.phtml | 19 + .../templates/search/advanced/globals.phtml | 14 + .../templates/search/advanced/layout.phtml | 76 + .../templates/search/advanced/limit.phtml | 18 + .../templates/search/advanced/solr.phtml | 83 + .../templates/search/advanced/summon.phtml | 39 + .../search/bulk-action-buttons.phtml | 11 + .../templates/search/controls/limit.phtml | 13 + .../templates/search/controls/sort.phtml | 11 + .../templates/search/controls/view.phtml | 11 + themes/bootstrap/templates/search/email.phtml | 37 + .../templates/search/history-table.phtml | 35 + .../bootstrap/templates/search/history.phtml | 31 + themes/bootstrap/templates/search/home.phtml | 76 + .../templates/search/list-authorfacets.phtml | 13 + .../templates/search/list-grid.phtml | 10 + .../templates/search/list-list.phtml | 8 + .../bootstrap/templates/search/newitem.phtml | 29 + .../templates/search/newitemresults.phtml | 7 + .../templates/search/pagination.phtml | 25 + .../bootstrap/templates/search/reserves.phtml | 56 + .../templates/search/reservesresults.phtml | 20 + .../templates/search/reservessearch.phtml | 79 + .../bootstrap/templates/search/results.phtml | 131 + .../templates/search/searchbox.phtml | 120 + .../bootstrap/templates/summon/advanced.phtml | 6 + themes/bootstrap/templates/summon/home.phtml | 1 + .../bootstrap/templates/summon/search.phtml | 4 + themes/bootstrap/templates/tag/home.phtml | 4 + .../bootstrap/templates/upgrade/error.phtml | 10 + .../templates/upgrade/fixanonymoustags.phtml | 26 + .../templates/upgrade/fixduplicatetags.phtml | 23 + .../templates/upgrade/fixmetadata.phtml | 19 + .../templates/upgrade/getdbcredentials.phtml | 23 + .../upgrade/getdbencodingpreference.phtml | 26 + .../templates/upgrade/getsourcedir.phtml | 19 + themes/bootstrap/templates/upgrade/home.phtml | 27 + .../bootstrap/templates/upgrade/showsql.phtml | 23 + themes/bootstrap/templates/web/home.phtml | 1 + themes/bootstrap/templates/web/results.phtml | 5 + .../templates/worldcat/advanced.phtml | 5 + .../bootstrap/templates/worldcat/home.phtml | 1 + .../bootstrap/templates/worldcat/search.phtml | 4 + themes/bootstrap/theme.config.php | 40 + 275 files changed, 19432 insertions(+) create mode 100644 themes/bootstrap/css/bootstrap-responsive.min.css create mode 100644 themes/bootstrap/css/bootstrap.min.css create mode 100644 themes/bootstrap/css/combined.css create mode 100644 themes/bootstrap/css/font-awesome-ie7.min.css create mode 100644 themes/bootstrap/css/font-awesome.css create mode 100644 themes/bootstrap/css/font-awesome.min.css create mode 100644 themes/bootstrap/css/help.css create mode 100644 themes/bootstrap/css/print.css create mode 100644 themes/bootstrap/css/screen.css create mode 100644 themes/bootstrap/css/slider.css create mode 100644 themes/bootstrap/css/style.css create mode 100644 themes/bootstrap/images/font/FontAwesome.otf create mode 100644 themes/bootstrap/images/font/fontawesome-webfont.eot create mode 100644 themes/bootstrap/images/font/fontawesome-webfont.svg create mode 100644 themes/bootstrap/images/font/fontawesome-webfont.ttf create mode 100644 themes/bootstrap/images/font/fontawesome-webfont.woff create mode 100644 themes/bootstrap/images/glyphicons-halflings-white.png create mode 100644 themes/bootstrap/images/glyphicons-halflings.png create mode 100644 themes/bootstrap/images/view_grid.png create mode 100644 themes/bootstrap/images/view_list.png create mode 100644 themes/bootstrap/js/advanced_search.js create mode 100644 themes/bootstrap/js/bootstrap-slider.js create mode 100644 themes/bootstrap/js/cart.js create mode 100644 themes/bootstrap/js/check_item_statuses.js create mode 100644 themes/bootstrap/js/check_save_statuses.js create mode 100644 themes/bootstrap/js/common.js create mode 100644 themes/bootstrap/js/core/bootstrap.js create mode 100644 themes/bootstrap/js/core/bootstrap.min.js create mode 100644 themes/bootstrap/js/core/jquery.min.js create mode 100644 themes/bootstrap/js/flot/LICENSE.txt create mode 100644 themes/bootstrap/js/flot/excanvas.min.js create mode 100644 themes/bootstrap/js/flot/jquery.flot.min.js create mode 100644 themes/bootstrap/js/flot/jquery.flot.selection.min.js create mode 100644 themes/bootstrap/js/jquery.swipe.min.js create mode 100644 themes/bootstrap/js/jquery.validate.min.js create mode 100644 themes/bootstrap/js/jsTree/hierarchyTree.js create mode 100644 themes/bootstrap/js/jsTree/jquery.jstree.js create mode 100644 themes/bootstrap/js/jsTree/themes/apple/bg.jpg create mode 100644 themes/bootstrap/js/jsTree/themes/apple/d.png create mode 100644 themes/bootstrap/js/jsTree/themes/apple/dot_for_ie.gif create mode 100644 themes/bootstrap/js/jsTree/themes/apple/style.css create mode 100644 themes/bootstrap/js/jsTree/themes/apple/throbber.gif create mode 100644 themes/bootstrap/js/jsTree/themes/classic/d.gif create mode 100644 themes/bootstrap/js/jsTree/themes/classic/d.png create mode 100644 themes/bootstrap/js/jsTree/themes/classic/dot_for_ie.gif create mode 100644 themes/bootstrap/js/jsTree/themes/classic/style.css create mode 100644 themes/bootstrap/js/jsTree/themes/classic/throbber.gif create mode 100644 themes/bootstrap/js/jsTree/themes/default-rtl/d.gif create mode 100644 themes/bootstrap/js/jsTree/themes/default-rtl/d.png create mode 100644 themes/bootstrap/js/jsTree/themes/default-rtl/dots.gif create mode 100644 themes/bootstrap/js/jsTree/themes/default-rtl/style.css create mode 100644 themes/bootstrap/js/jsTree/themes/default-rtl/throbber.gif create mode 100644 themes/bootstrap/js/jsTree/themes/default/d.gif create mode 100644 themes/bootstrap/js/jsTree/themes/default/d.png create mode 100644 themes/bootstrap/js/jsTree/themes/default/style.css create mode 100644 themes/bootstrap/js/jsTree/themes/default/throbber.gif create mode 100644 themes/bootstrap/js/jsTree/themes/vufind/d.gif create mode 100644 themes/bootstrap/js/jsTree/themes/vufind/d.png create mode 100644 themes/bootstrap/js/jsTree/themes/vufind/style.css create mode 100644 themes/bootstrap/js/jsTree/themes/vufind/throbber.gif create mode 100644 themes/bootstrap/js/lightbox.js create mode 100644 themes/bootstrap/js/masonry.min.js create mode 100644 themes/bootstrap/js/openurl.js create mode 100644 themes/bootstrap/js/preview.js create mode 100644 themes/bootstrap/js/pubdate_vis.js create mode 100644 themes/bootstrap/js/rc4.js create mode 100644 themes/bootstrap/js/record.js create mode 100644 themes/bootstrap/templates/Auth/AbstractBase/login.phtml create mode 100644 themes/bootstrap/templates/Auth/Database/create.phtml create mode 100644 themes/bootstrap/templates/Helpers/openurl.phtml create mode 100644 themes/bootstrap/templates/Recommend/AuthorFacets.phtml create mode 100644 themes/bootstrap/templates/Recommend/AuthorInfo.phtml create mode 100644 themes/bootstrap/templates/Recommend/AuthorityRecommend.phtml create mode 100644 themes/bootstrap/templates/Recommend/CatalogResults.phtml create mode 100644 themes/bootstrap/templates/Recommend/CollectionSideFacets.phtml create mode 100644 themes/bootstrap/templates/Recommend/EuropeanaResults.phtml create mode 100644 themes/bootstrap/templates/Recommend/EuropeanaResultsDeferred.phtml create mode 100644 themes/bootstrap/templates/Recommend/ExpandFacets.phtml create mode 100644 themes/bootstrap/templates/Recommend/FacetCloud.phtml create mode 100644 themes/bootstrap/templates/Recommend/FavoriteFacets.phtml create mode 100644 themes/bootstrap/templates/Recommend/OpenLibrarySubjects.phtml create mode 100644 themes/bootstrap/templates/Recommend/OpenLibrarySubjectsDeferred.phtml create mode 100644 themes/bootstrap/templates/Recommend/PubDateVisAjax.phtml create mode 100644 themes/bootstrap/templates/Recommend/ResultGoogleMapAjax.phtml create mode 100644 themes/bootstrap/templates/Recommend/SideFacets.phtml create mode 100644 themes/bootstrap/templates/Recommend/SummonBestBets.phtml create mode 100644 themes/bootstrap/templates/Recommend/SummonDatabases.phtml create mode 100644 themes/bootstrap/templates/Recommend/SummonResults.phtml create mode 100644 themes/bootstrap/templates/Recommend/SummonResultsDeferred.phtml create mode 100644 themes/bootstrap/templates/Recommend/SwitchType.phtml create mode 100644 themes/bootstrap/templates/Recommend/TopFacets.phtml create mode 100644 themes/bootstrap/templates/Recommend/WebResults.phtml create mode 100644 themes/bootstrap/templates/Recommend/WorldCatIdentities.phtml create mode 100644 themes/bootstrap/templates/Recommend/WorldCatTerms.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/AbstractBase/preview.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Pazpar2/link-author.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Pazpar2/link-series.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Pazpar2/link-subject.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Pazpar2/link-title.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Pazpar2/result-list.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrAuth/result-list.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/collection-info.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/collection-record.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/core.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/format-class.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/format-list.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/link-author.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/link-journaltitle.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/link-series.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/link-subject.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/link-title.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/list-entry.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/result-grid.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/result-list.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrDefault/toolbar.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/SolrWeb/result-list.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Summon/format-class.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Summon/link-author.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Summon/link-journaltitle.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Summon/link-series.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Summon/link-subject.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/Summon/link-title.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/WorldCat/link-author.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/WorldCat/link-series.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/WorldCat/link-subject.phtml create mode 100644 themes/bootstrap/templates/RecordDriver/WorldCat/link-title.phtml create mode 100644 themes/bootstrap/templates/RecordTab/collectionhierarchytree.phtml create mode 100644 themes/bootstrap/templates/RecordTab/collectionlist.phtml create mode 100644 themes/bootstrap/templates/RecordTab/description.phtml create mode 100644 themes/bootstrap/templates/RecordTab/excerpt.phtml create mode 100644 themes/bootstrap/templates/RecordTab/hierarchytree.phtml create mode 100644 themes/bootstrap/templates/RecordTab/holdingsils.phtml create mode 100644 themes/bootstrap/templates/RecordTab/holdingsworldcat.phtml create mode 100644 themes/bootstrap/templates/RecordTab/map.phtml create mode 100644 themes/bootstrap/templates/RecordTab/reviews.phtml create mode 100644 themes/bootstrap/templates/RecordTab/staffviewarray.phtml create mode 100644 themes/bootstrap/templates/RecordTab/staffviewmarc.phtml create mode 100644 themes/bootstrap/templates/RecordTab/toc.phtml create mode 100644 themes/bootstrap/templates/RecordTab/usercomments.phtml create mode 100644 themes/bootstrap/templates/Related/Editions.phtml create mode 100644 themes/bootstrap/templates/Related/Similar.phtml create mode 100644 themes/bootstrap/templates/admin/config.phtml create mode 100644 themes/bootstrap/templates/admin/disabled.phtml create mode 100644 themes/bootstrap/templates/admin/home.phtml create mode 100644 themes/bootstrap/templates/admin/maintenance.phtml create mode 100644 themes/bootstrap/templates/admin/menu.phtml create mode 100644 themes/bootstrap/templates/admin/socialstats.phtml create mode 100644 themes/bootstrap/templates/admin/statistics.phtml create mode 100644 themes/bootstrap/templates/ajax/export-favorites.phtml create mode 100644 themes/bootstrap/templates/ajax/resolverLinks.phtml create mode 100644 themes/bootstrap/templates/ajax/resultgooglemapinfo.phtml create mode 100644 themes/bootstrap/templates/ajax/status-available.phtml create mode 100644 themes/bootstrap/templates/ajax/status-full.phtml create mode 100644 themes/bootstrap/templates/ajax/status-unavailable.phtml create mode 100644 themes/bootstrap/templates/ajax/status-unknown.phtml create mode 100644 themes/bootstrap/templates/alphabrowse/home.phtml create mode 100644 themes/bootstrap/templates/author/home.phtml create mode 100644 themes/bootstrap/templates/author/results.phtml create mode 100644 themes/bootstrap/templates/author/search.phtml create mode 100644 themes/bootstrap/templates/authority/home.phtml create mode 100644 themes/bootstrap/templates/authority/record.phtml create mode 100644 themes/bootstrap/templates/authority/search.phtml create mode 100644 themes/bootstrap/templates/browse/home.phtml create mode 100644 themes/bootstrap/templates/cart/cart.phtml create mode 100644 themes/bootstrap/templates/cart/contents.phtml create mode 100644 themes/bootstrap/templates/cart/email.phtml create mode 100644 themes/bootstrap/templates/cart/export-success.phtml create mode 100644 themes/bootstrap/templates/cart/export.phtml create mode 100644 themes/bootstrap/templates/cart/save.phtml create mode 100644 themes/bootstrap/templates/collection/collection-record-error.phtml create mode 100644 themes/bootstrap/templates/collection/view.phtml create mode 100644 themes/bootstrap/templates/collections/bytitle.phtml create mode 100644 themes/bootstrap/templates/collections/home.phtml create mode 100644 themes/bootstrap/templates/collections/list.phtml create mode 100644 themes/bootstrap/templates/combined/home.phtml create mode 100644 themes/bootstrap/templates/combined/results-ajax.phtml create mode 100644 themes/bootstrap/templates/combined/results-list.phtml create mode 100644 themes/bootstrap/templates/combined/results.phtml create mode 100644 themes/bootstrap/templates/confirm/confirm.phtml create mode 100644 themes/bootstrap/templates/devtools/language.phtml create mode 100644 themes/bootstrap/templates/error/index.phtml create mode 100644 themes/bootstrap/templates/error/unavailable.phtml create mode 100644 themes/bootstrap/templates/feedback/email.phtml create mode 100644 themes/bootstrap/templates/feedback/form.phtml create mode 100644 themes/bootstrap/templates/feedback/home.phtml create mode 100644 themes/bootstrap/templates/footer.phtml create mode 100644 themes/bootstrap/templates/header.phtml create mode 100644 themes/bootstrap/templates/install/disabled.phtml create mode 100644 themes/bootstrap/templates/install/done.phtml create mode 100644 themes/bootstrap/templates/install/fixbasicconfig.phtml create mode 100644 themes/bootstrap/templates/install/fixcache.phtml create mode 100644 themes/bootstrap/templates/install/fixdatabase.phtml create mode 100644 themes/bootstrap/templates/install/fixdependencies.phtml create mode 100644 themes/bootstrap/templates/install/fixils.phtml create mode 100644 themes/bootstrap/templates/install/fixsecurity.phtml create mode 100644 themes/bootstrap/templates/install/fixsolr.phtml create mode 100644 themes/bootstrap/templates/install/home.phtml create mode 100644 themes/bootstrap/templates/install/showsql.phtml create mode 100644 themes/bootstrap/templates/layout/layout.phtml create mode 100644 themes/bootstrap/templates/layout/lightbox.phtml create mode 100644 themes/bootstrap/templates/missingrecord/home.phtml create mode 100644 themes/bootstrap/templates/myresearch/account.phtml create mode 100644 themes/bootstrap/templates/myresearch/bulk-action-buttons.phtml create mode 100644 themes/bootstrap/templates/myresearch/cataloglogin.phtml create mode 100644 themes/bootstrap/templates/myresearch/checkedout.phtml create mode 100644 themes/bootstrap/templates/myresearch/delete.phtml create mode 100644 themes/bootstrap/templates/myresearch/edit.phtml create mode 100644 themes/bootstrap/templates/myresearch/editlist.phtml create mode 100644 themes/bootstrap/templates/myresearch/export.phtml create mode 100644 themes/bootstrap/templates/myresearch/fines.phtml create mode 100644 themes/bootstrap/templates/myresearch/holds.phtml create mode 100644 themes/bootstrap/templates/myresearch/login.phtml create mode 100644 themes/bootstrap/templates/myresearch/menu.phtml create mode 100644 themes/bootstrap/templates/myresearch/mylist.phtml create mode 100644 themes/bootstrap/templates/myresearch/profile.phtml create mode 100644 themes/bootstrap/templates/oai/home.phtml create mode 100644 themes/bootstrap/templates/pazpar2/home.phtml create mode 100644 themes/bootstrap/templates/pazpar2/search.phtml create mode 100644 themes/bootstrap/templates/record/addtag.phtml create mode 100644 themes/bootstrap/templates/record/ajaxtab.phtml create mode 100644 themes/bootstrap/templates/record/checkbox.phtml create mode 100644 themes/bootstrap/templates/record/cite.phtml create mode 100644 themes/bootstrap/templates/record/comments-list.phtml create mode 100644 themes/bootstrap/templates/record/email.phtml create mode 100644 themes/bootstrap/templates/record/export-menu.phtml create mode 100644 themes/bootstrap/templates/record/hold.phtml create mode 100644 themes/bootstrap/templates/record/save.phtml create mode 100644 themes/bootstrap/templates/record/sms.phtml create mode 100644 themes/bootstrap/templates/record/view.phtml create mode 100644 themes/bootstrap/templates/records/home.phtml create mode 100644 themes/bootstrap/templates/search/advanced.phtml create mode 100644 themes/bootstrap/templates/search/advanced/build_page.phtml create mode 100644 themes/bootstrap/templates/search/advanced/globals.phtml create mode 100644 themes/bootstrap/templates/search/advanced/layout.phtml create mode 100644 themes/bootstrap/templates/search/advanced/limit.phtml create mode 100644 themes/bootstrap/templates/search/advanced/solr.phtml create mode 100644 themes/bootstrap/templates/search/advanced/summon.phtml create mode 100644 themes/bootstrap/templates/search/bulk-action-buttons.phtml create mode 100644 themes/bootstrap/templates/search/controls/limit.phtml create mode 100644 themes/bootstrap/templates/search/controls/sort.phtml create mode 100644 themes/bootstrap/templates/search/controls/view.phtml create mode 100644 themes/bootstrap/templates/search/email.phtml create mode 100644 themes/bootstrap/templates/search/history-table.phtml create mode 100644 themes/bootstrap/templates/search/history.phtml create mode 100644 themes/bootstrap/templates/search/home.phtml create mode 100644 themes/bootstrap/templates/search/list-authorfacets.phtml create mode 100644 themes/bootstrap/templates/search/list-grid.phtml create mode 100644 themes/bootstrap/templates/search/list-list.phtml create mode 100644 themes/bootstrap/templates/search/newitem.phtml create mode 100644 themes/bootstrap/templates/search/newitemresults.phtml create mode 100644 themes/bootstrap/templates/search/pagination.phtml create mode 100644 themes/bootstrap/templates/search/reserves.phtml create mode 100644 themes/bootstrap/templates/search/reservesresults.phtml create mode 100644 themes/bootstrap/templates/search/reservessearch.phtml create mode 100644 themes/bootstrap/templates/search/results.phtml create mode 100644 themes/bootstrap/templates/search/searchbox.phtml create mode 100644 themes/bootstrap/templates/summon/advanced.phtml create mode 100644 themes/bootstrap/templates/summon/home.phtml create mode 100644 themes/bootstrap/templates/summon/search.phtml create mode 100644 themes/bootstrap/templates/tag/home.phtml create mode 100644 themes/bootstrap/templates/upgrade/error.phtml create mode 100644 themes/bootstrap/templates/upgrade/fixanonymoustags.phtml create mode 100644 themes/bootstrap/templates/upgrade/fixduplicatetags.phtml create mode 100644 themes/bootstrap/templates/upgrade/fixmetadata.phtml create mode 100644 themes/bootstrap/templates/upgrade/getdbcredentials.phtml create mode 100644 themes/bootstrap/templates/upgrade/getdbencodingpreference.phtml create mode 100644 themes/bootstrap/templates/upgrade/getsourcedir.phtml create mode 100644 themes/bootstrap/templates/upgrade/home.phtml create mode 100644 themes/bootstrap/templates/upgrade/showsql.phtml create mode 100644 themes/bootstrap/templates/web/home.phtml create mode 100644 themes/bootstrap/templates/web/results.phtml create mode 100644 themes/bootstrap/templates/worldcat/advanced.phtml create mode 100644 themes/bootstrap/templates/worldcat/home.phtml create mode 100644 themes/bootstrap/templates/worldcat/search.phtml create mode 100644 themes/bootstrap/theme.config.php diff --git a/themes/bootstrap/css/bootstrap-responsive.min.css b/themes/bootstrap/css/bootstrap-responsive.min.css new file mode 100644 index 00000000000..f4ede63f32e --- /dev/null +++ b/themes/bootstrap/css/bootstrap-responsive.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} diff --git a/themes/bootstrap/css/bootstrap.min.css b/themes/bootstrap/css/bootstrap.min.css new file mode 100644 index 00000000000..236a3e08732 --- /dev/null +++ b/themes/bootstrap/css/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../images/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../images/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} diff --git a/themes/bootstrap/css/combined.css b/themes/bootstrap/css/combined.css new file mode 100644 index 00000000000..c191b0a9505 --- /dev/null +++ b/themes/bootstrap/css/combined.css @@ -0,0 +1,3 @@ +.combined-list .result .span2 {width:23.0769%} +.combined-list .result .span2:last-child {display:none} +.combined-list .result .span7 {width:65.812%} diff --git a/themes/bootstrap/css/font-awesome-ie7.min.css b/themes/bootstrap/css/font-awesome-ie7.min.css new file mode 100644 index 00000000000..d3dae63bd8b --- /dev/null +++ b/themes/bootstrap/css/font-awesome-ie7.min.css @@ -0,0 +1,384 @@ +.icon-large{font-size:1.3333333333333333em;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;vertical-align:middle;} +.nav [class^="icon-"],.nav [class*=" icon-"]{vertical-align:inherit;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;}.nav [class^="icon-"].icon-large,.nav [class*=" icon-"].icon-large{vertical-align:-25%;} +.nav-pills [class^="icon-"].icon-large,.nav-tabs [class^="icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large{line-height:.75em;margin-top:-7px;padding-top:5px;margin-bottom:-5px;padding-bottom:4px;} +.btn [class^="icon-"].pull-left,.btn [class*=" icon-"].pull-left,.btn [class^="icon-"].pull-right,.btn [class*=" icon-"].pull-right{vertical-align:inherit;} +.btn [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large{margin-top:-0.5em;} +a [class^="icon-"],a [class*=" icon-"]{cursor:pointer;} +.icon-glass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-music{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-search{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-envelope-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-heart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-user{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-film{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-th-large{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-th{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-th-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ok{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-remove{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-zoom-in{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-zoom-out{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-power-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-signal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cog{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gear{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-trash{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-home{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-time{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-road{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-download-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-inbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-play-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-repeat{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rotate-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-refresh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-lock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-headphones{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-volume-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-volume-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-volume-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-qrcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-barcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tags{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-book{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bookmark{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-print{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-camera{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-font{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bold{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-italic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-text-height{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-text-width{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-center{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-align-justify{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-indent-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-indent-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-facetime-video{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-picture{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pencil{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-map-marker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-adjust{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tint{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-edit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-share{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-move{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-step-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fast-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pause{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-stop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fast-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-step-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eject{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-minus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-remove-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ok-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-question-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-info-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-screenshot{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-remove-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ok-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ban-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-share-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mail-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-small{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-asterisk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-exclamation-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gift{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-leaf{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fire{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eye-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eye-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-warning-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plane{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-calendar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-random{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comment{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-magnet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-retweet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-shopping-cart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-resize-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bar-chart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-twitter-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-facebook-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-camera-retro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-key{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cogs{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gears{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comments{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-up-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-down-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-half{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-heart-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-signout{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-linkedin-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pushpin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-external-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-signin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-trophy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-github-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-upload-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-lemon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unchecked{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bookmark-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-phone-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-twitter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-facebook{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-github{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unlock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-credit-card{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rss{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hdd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bullhorn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bell{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-certificate{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hand-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-globe{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-wrench{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tasks{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-filter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-briefcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fullscreen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-group{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cloud{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-beaker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cut{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-copy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-paper-clip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-paperclip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-save{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sign-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-reorder{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list-ul{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-list-ol{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-strikethrough{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-underline{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-table{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-magic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-truck{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pinterest{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-pinterest-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-google-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-google-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-money{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-caret-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-columns{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-envelope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-linkedin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-undo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rotate-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-legal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dashboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comment-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-comments-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bolt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sitemap{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-umbrella{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-paste{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-lightbulb{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-exchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cloud-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cloud-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-user-md{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-stethoscope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-suitcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bell-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-coffee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-food{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file-text-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-building{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-hospital{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ambulance{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-medkit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fighter-jet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-beer{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-h-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-plus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-double-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-desktop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-laptop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tablet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mobile-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-quote-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-quote-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-spinner{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mail-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-github-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-close-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-folder-open-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-expand-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-collapse-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-smile{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-frown{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-meh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gamepad{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-keyboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flag-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flag-checkered{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-terminal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-code{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-mail-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-half-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-star-half-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-location-arrow{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-crop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-code-fork{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unlink{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-question{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-info{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-exclamation{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-superscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-subscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eraser{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-puzzle-piece{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-microphone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-microphone-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-shield{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-calendar-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-fire-extinguisher{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rocket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-maxcdn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-chevron-sign-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-html5{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-css3{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-anchor{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-unlock-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bullseye{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ellipsis-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ellipsis-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rss-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-play-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-ticket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-minus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-level-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-level-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-check-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-edit-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-external-link-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-share-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-compass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-collapse{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-collapse-top{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-expand{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-eur{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-euro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gbp{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-usd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dollar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-inr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-rupee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-jpy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-yen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-cny{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-renminbi{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-krw{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-won{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-btc{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bitcoin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-file-text{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-alphabet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-alphabet-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-attributes{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-attributes-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-order{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sort-by-order-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-thumbs-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-youtube-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-youtube{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-xing{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-xing-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-youtube-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dropbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-stackexchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-instagram{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-flickr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-adn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bitbucket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bitbucket-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tumblr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-tumblr-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-long-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-apple{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-windows{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-android{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-linux{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-dribbble{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-skype{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-foursquare{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-trello{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-female{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-male{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-gittip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-sun{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-moon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-archive{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-bug{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-vk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-weibo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} +.icon-renren{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} diff --git a/themes/bootstrap/css/font-awesome.css b/themes/bootstrap/css/font-awesome.css new file mode 100644 index 00000000000..2987c1aed8e --- /dev/null +++ b/themes/bootstrap/css/font-awesome.css @@ -0,0 +1,1479 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../images/font/fontawesome-webfont.eot?v=3.2.1'); + src: url('../images/font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../images/font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../images/font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../images/font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg'); + font-weight: normal; + font-style: normal; +} +/* FONT AWESOME CORE + * -------------------------- */ +[class^="icon-"], +[class*=" icon-"] { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + *margin-right: .3em; +} +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: -10%; + font-size: 1.3333333333333333em; +} +/* makes sure icons active on rollover in links */ +a [class^="icon-"], +a [class*=" icon-"] { + display: inline; +} +/* increased font size for icon-large */ +[class^="icon-"].icon-fixed-width, +[class*=" icon-"].icon-fixed-width { + display: inline-block; + width: 1.1428571428571428em; + text-align: right; + padding-right: 0.2857142857142857em; +} +[class^="icon-"].icon-fixed-width.icon-large, +[class*=" icon-"].icon-fixed-width.icon-large { + width: 1.4285714285714286em; +} +.icons-ul { + margin-left: 2.142857142857143em; + list-style-type: none; +} +.icons-ul > li { + position: relative; +} +.icons-ul .icon-li { + position: absolute; + left: -2.142857142857143em; + width: 2.142857142857143em; + text-align: center; + line-height: inherit; +} +[class^="icon-"].hide, +[class*=" icon-"].hide { + display: none; +} +.icon-muted { + color: #eeeeee; +} +.icon-light { + color: #ffffff; +} +.icon-dark { + color: #333333; +} +.icon-border { + border: solid 1px #eeeeee; + padding: .2em .25em .15em; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.icon-2x { + font-size: 2em; +} +.icon-2x.icon-border { + border-width: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.icon-3x { + font-size: 3em; +} +.icon-3x.icon-border { + border-width: 3px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.icon-4x { + font-size: 4em; +} +.icon-4x.icon-border { + border-width: 4px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.icon-5x { + font-size: 5em; +} +.icon-5x.icon-border { + border-width: 5px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +[class^="icon-"].pull-left, +[class*=" icon-"].pull-left { + margin-right: .3em; +} +[class^="icon-"].pull-right, +[class*=" icon-"].pull-right { + margin-left: .3em; +} +/* BOOTSTRAP SPECIFIC CLASSES + * -------------------------- */ +/* Bootstrap 2.0 sprites.less reset */ +[class^="icon-"], +[class*=" icon-"] { + display: inline; + width: auto; + height: auto; + line-height: normal; + vertical-align: baseline; + background-image: none; + background-position: 0% 0%; + background-repeat: repeat; + margin-top: 0; +} +/* more sprites.less reset */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: none; +} +/* keeps Bootstrap styles with and without icons the same */ +.btn [class^="icon-"].icon-large, +.nav [class^="icon-"].icon-large, +.btn [class*=" icon-"].icon-large, +.nav [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].icon-spin, +.nav [class^="icon-"].icon-spin, +.btn [class*=" icon-"].icon-spin, +.nav [class*=" icon-"].icon-spin { + display: inline-block; +} +.nav-tabs [class^="icon-"], +.nav-pills [class^="icon-"], +.nav-tabs [class*=" icon-"], +.nav-pills [class*=" icon-"], +.nav-tabs [class^="icon-"].icon-large, +.nav-pills [class^="icon-"].icon-large, +.nav-tabs [class*=" icon-"].icon-large, +.nav-pills [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].pull-left.icon-2x, +.btn [class*=" icon-"].pull-left.icon-2x, +.btn [class^="icon-"].pull-right.icon-2x, +.btn [class*=" icon-"].pull-right.icon-2x { + margin-top: .18em; +} +.btn [class^="icon-"].icon-spin.icon-large, +.btn [class*=" icon-"].icon-spin.icon-large { + line-height: .8em; +} +.btn.btn-small [class^="icon-"].pull-left.icon-2x, +.btn.btn-small [class*=" icon-"].pull-left.icon-2x, +.btn.btn-small [class^="icon-"].pull-right.icon-2x, +.btn.btn-small [class*=" icon-"].pull-right.icon-2x { + margin-top: .25em; +} +.btn.btn-large [class^="icon-"], +.btn.btn-large [class*=" icon-"] { + margin-top: 0; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x, +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-top: .05em; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x { + margin-right: .2em; +} +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-left: .2em; +} +/* Fixes alignment in nav lists */ +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + line-height: inherit; +} +/* EXTRAS + * -------------------------- */ +/* Stacked and layered icon */ +.icon-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: -35%; +} +.icon-stack [class^="icon-"], +.icon-stack [class*=" icon-"] { + display: block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; + font-size: 1em; + line-height: inherit; + *line-height: 2em; +} +.icon-stack .icon-stack-base { + font-size: 2em; + *line-height: 1em; +} +/* Animated rotating icon */ +.icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} +/* Prevent stack and spinners from being taken inline when inside a link */ +a .icon-stack, +a .icon-spin { + display: inline-block; + text-decoration: none; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +/* Icon rotations and mirroring */ +.icon-rotate-90:before { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} +.icon-rotate-180:before { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} +.icon-rotate-270:before { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} +.icon-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.icon-flip-vertical:before { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} +/* ensure rotation occurs inside anchor tags */ +a .icon-rotate-90:before, +a .icon-rotate-180:before, +a .icon-rotate-270:before, +a .icon-flip-horizontal:before, +a .icon-flip-vertical:before { + display: inline-block; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.icon-glass:before { + content: "\f000"; +} +.icon-music:before { + content: "\f001"; +} +.icon-search:before { + content: "\f002"; +} +.icon-envelope-alt:before { + content: "\f003"; +} +.icon-heart:before { + content: "\f004"; +} +.icon-star:before { + content: "\f005"; +} +.icon-star-empty:before { + content: "\f006"; +} +.icon-user:before { + content: "\f007"; +} +.icon-film:before { + content: "\f008"; +} +.icon-th-large:before { + content: "\f009"; +} +.icon-th:before { + content: "\f00a"; +} +.icon-th-list:before { + content: "\f00b"; +} +.icon-ok:before { + content: "\f00c"; +} +.icon-remove:before { + content: "\f00d"; +} +.icon-zoom-in:before { + content: "\f00e"; +} +.icon-zoom-out:before { + content: "\f010"; +} +.icon-power-off:before, +.icon-off:before { + content: "\f011"; +} +.icon-signal:before { + content: "\f012"; +} +.icon-gear:before, +.icon-cog:before { + content: "\f013"; +} +.icon-trash:before { + content: "\f014"; +} +.icon-home:before { + content: "\f015"; +} +.icon-file-alt:before { + content: "\f016"; +} +.icon-time:before { + content: "\f017"; +} +.icon-road:before { + content: "\f018"; +} +.icon-download-alt:before { + content: "\f019"; +} +.icon-download:before { + content: "\f01a"; +} +.icon-upload:before { + content: "\f01b"; +} +.icon-inbox:before { + content: "\f01c"; +} +.icon-play-circle:before { + content: "\f01d"; +} +.icon-rotate-right:before, +.icon-repeat:before { + content: "\f01e"; +} +.icon-refresh:before { + content: "\f021"; +} +.icon-list-alt:before { + content: "\f022"; +} +.icon-lock:before { + content: "\f023"; +} +.icon-flag:before { + content: "\f024"; +} +.icon-headphones:before { + content: "\f025"; +} +.icon-volume-off:before { + content: "\f026"; +} +.icon-volume-down:before { + content: "\f027"; +} +.icon-volume-up:before { + content: "\f028"; +} +.icon-qrcode:before { + content: "\f029"; +} +.icon-barcode:before { + content: "\f02a"; +} +.icon-tag:before { + content: "\f02b"; +} +.icon-tags:before { + content: "\f02c"; +} +.icon-book:before { + content: "\f02d"; +} +.icon-bookmark:before { + content: "\f02e"; +} +.icon-print:before { + content: "\f02f"; +} +.icon-camera:before { + content: "\f030"; +} +.icon-font:before { + content: "\f031"; +} +.icon-bold:before { + content: "\f032"; +} +.icon-italic:before { + content: "\f033"; +} +.icon-text-height:before { + content: "\f034"; +} +.icon-text-width:before { + content: "\f035"; +} +.icon-align-left:before { + content: "\f036"; +} +.icon-align-center:before { + content: "\f037"; +} +.icon-align-right:before { + content: "\f038"; +} +.icon-align-justify:before { + content: "\f039"; +} +.icon-list:before { + content: "\f03a"; +} +.icon-indent-left:before { + content: "\f03b"; +} +.icon-indent-right:before { + content: "\f03c"; +} +.icon-facetime-video:before { + content: "\f03d"; +} +.icon-picture:before { + content: "\f03e"; +} +.icon-pencil:before { + content: "\f040"; +} +.icon-map-marker:before { + content: "\f041"; +} +.icon-adjust:before { + content: "\f042"; +} +.icon-tint:before { + content: "\f043"; +} +.icon-edit:before { + content: "\f044"; +} +.icon-share:before { + content: "\f045"; +} +.icon-check:before { + content: "\f046"; +} +.icon-move:before { + content: "\f047"; +} +.icon-step-backward:before { + content: "\f048"; +} +.icon-fast-backward:before { + content: "\f049"; +} +.icon-backward:before { + content: "\f04a"; +} +.icon-play:before { + content: "\f04b"; +} +.icon-pause:before { + content: "\f04c"; +} +.icon-stop:before { + content: "\f04d"; +} +.icon-forward:before { + content: "\f04e"; +} +.icon-fast-forward:before { + content: "\f050"; +} +.icon-step-forward:before { + content: "\f051"; +} +.icon-eject:before { + content: "\f052"; +} +.icon-chevron-left:before { + content: "\f053"; +} +.icon-chevron-right:before { + content: "\f054"; +} +.icon-plus-sign:before { + content: "\f055"; +} +.icon-minus-sign:before { + content: "\f056"; +} +.icon-remove-sign:before { + content: "\f057"; +} +.icon-ok-sign:before { + content: "\f058"; +} +.icon-question-sign:before { + content: "\f059"; +} +.icon-info-sign:before { + content: "\f05a"; +} +.icon-screenshot:before { + content: "\f05b"; +} +.icon-remove-circle:before { + content: "\f05c"; +} +.icon-ok-circle:before { + content: "\f05d"; +} +.icon-ban-circle:before { + content: "\f05e"; +} +.icon-arrow-left:before { + content: "\f060"; +} +.icon-arrow-right:before { + content: "\f061"; +} +.icon-arrow-up:before { + content: "\f062"; +} +.icon-arrow-down:before { + content: "\f063"; +} +.icon-mail-forward:before, +.icon-share-alt:before { + content: "\f064"; +} +.icon-resize-full:before { + content: "\f065"; +} +.icon-resize-small:before { + content: "\f066"; +} +.icon-plus:before { + content: "\f067"; +} +.icon-minus:before { + content: "\f068"; +} +.icon-asterisk:before { + content: "\f069"; +} +.icon-exclamation-sign:before { + content: "\f06a"; +} +.icon-gift:before { + content: "\f06b"; +} +.icon-leaf:before { + content: "\f06c"; +} +.icon-fire:before { + content: "\f06d"; +} +.icon-eye-open:before { + content: "\f06e"; +} +.icon-eye-close:before { + content: "\f070"; +} +.icon-warning-sign:before { + content: "\f071"; +} +.icon-plane:before { + content: "\f072"; +} +.icon-calendar:before { + content: "\f073"; +} +.icon-random:before { + content: "\f074"; +} +.icon-comment:before { + content: "\f075"; +} +.icon-magnet:before { + content: "\f076"; +} +.icon-chevron-up:before { + content: "\f077"; +} +.icon-chevron-down:before { + content: "\f078"; +} +.icon-retweet:before { + content: "\f079"; +} +.icon-shopping-cart:before { + content: "\f07a"; +} +.icon-folder-close:before { + content: "\f07b"; +} +.icon-folder-open:before { + content: "\f07c"; +} +.icon-resize-vertical:before { + content: "\f07d"; +} +.icon-resize-horizontal:before { + content: "\f07e"; +} +.icon-bar-chart:before { + content: "\f080"; +} +.icon-twitter-sign:before { + content: "\f081"; +} +.icon-facebook-sign:before { + content: "\f082"; +} +.icon-camera-retro:before { + content: "\f083"; +} +.icon-key:before { + content: "\f084"; +} +.icon-gears:before, +.icon-cogs:before { + content: "\f085"; +} +.icon-comments:before { + content: "\f086"; +} +.icon-thumbs-up-alt:before { + content: "\f087"; +} +.icon-thumbs-down-alt:before { + content: "\f088"; +} +.icon-star-half:before { + content: "\f089"; +} +.icon-heart-empty:before { + content: "\f08a"; +} +.icon-signout:before { + content: "\f08b"; +} +.icon-linkedin-sign:before { + content: "\f08c"; +} +.icon-pushpin:before { + content: "\f08d"; +} +.icon-external-link:before { + content: "\f08e"; +} +.icon-signin:before { + content: "\f090"; +} +.icon-trophy:before { + content: "\f091"; +} +.icon-github-sign:before { + content: "\f092"; +} +.icon-upload-alt:before { + content: "\f093"; +} +.icon-lemon:before { + content: "\f094"; +} +.icon-phone:before { + content: "\f095"; +} +.icon-unchecked:before, +.icon-check-empty:before { + content: "\f096"; +} +.icon-bookmark-empty:before { + content: "\f097"; +} +.icon-phone-sign:before { + content: "\f098"; +} +.icon-twitter:before { + content: "\f099"; +} +.icon-facebook:before { + content: "\f09a"; +} +.icon-github:before { + content: "\f09b"; +} +.icon-unlock:before { + content: "\f09c"; +} +.icon-credit-card:before { + content: "\f09d"; +} +.icon-rss:before { + content: "\f09e"; +} +.icon-hdd:before { + content: "\f0a0"; +} +.icon-bullhorn:before { + content: "\f0a1"; +} +.icon-bell:before { + content: "\f0a2"; +} +.icon-certificate:before { + content: "\f0a3"; +} +.icon-hand-right:before { + content: "\f0a4"; +} +.icon-hand-left:before { + content: "\f0a5"; +} +.icon-hand-up:before { + content: "\f0a6"; +} +.icon-hand-down:before { + content: "\f0a7"; +} +.icon-circle-arrow-left:before { + content: "\f0a8"; +} +.icon-circle-arrow-right:before { + content: "\f0a9"; +} +.icon-circle-arrow-up:before { + content: "\f0aa"; +} +.icon-circle-arrow-down:before { + content: "\f0ab"; +} +.icon-globe:before { + content: "\f0ac"; +} +.icon-wrench:before { + content: "\f0ad"; +} +.icon-tasks:before { + content: "\f0ae"; +} +.icon-filter:before { + content: "\f0b0"; +} +.icon-briefcase:before { + content: "\f0b1"; +} +.icon-fullscreen:before { + content: "\f0b2"; +} +.icon-group:before { + content: "\f0c0"; +} +.icon-link:before { + content: "\f0c1"; +} +.icon-cloud:before { + content: "\f0c2"; +} +.icon-beaker:before { + content: "\f0c3"; +} +.icon-cut:before { + content: "\f0c4"; +} +.icon-copy:before { + content: "\f0c5"; +} +.icon-paperclip:before, +.icon-paper-clip:before { + content: "\f0c6"; +} +.icon-save:before { + content: "\f0c7"; +} +.icon-sign-blank:before { + content: "\f0c8"; +} +.icon-reorder:before { + content: "\f0c9"; +} +.icon-list-ul:before { + content: "\f0ca"; +} +.icon-list-ol:before { + content: "\f0cb"; +} +.icon-strikethrough:before { + content: "\f0cc"; +} +.icon-underline:before { + content: "\f0cd"; +} +.icon-table:before { + content: "\f0ce"; +} +.icon-magic:before { + content: "\f0d0"; +} +.icon-truck:before { + content: "\f0d1"; +} +.icon-pinterest:before { + content: "\f0d2"; +} +.icon-pinterest-sign:before { + content: "\f0d3"; +} +.icon-google-plus-sign:before { + content: "\f0d4"; +} +.icon-google-plus:before { + content: "\f0d5"; +} +.icon-money:before { + content: "\f0d6"; +} +.icon-caret-down:before { + content: "\f0d7"; +} +.icon-caret-up:before { + content: "\f0d8"; +} +.icon-caret-left:before { + content: "\f0d9"; +} +.icon-caret-right:before { + content: "\f0da"; +} +.icon-columns:before { + content: "\f0db"; +} +.icon-sort:before { + content: "\f0dc"; +} +.icon-sort-down:before { + content: "\f0dd"; +} +.icon-sort-up:before { + content: "\f0de"; +} +.icon-envelope:before { + content: "\f0e0"; +} +.icon-linkedin:before { + content: "\f0e1"; +} +.icon-rotate-left:before, +.icon-undo:before { + content: "\f0e2"; +} +.icon-legal:before { + content: "\f0e3"; +} +.icon-dashboard:before { + content: "\f0e4"; +} +.icon-comment-alt:before { + content: "\f0e5"; +} +.icon-comments-alt:before { + content: "\f0e6"; +} +.icon-bolt:before { + content: "\f0e7"; +} +.icon-sitemap:before { + content: "\f0e8"; +} +.icon-umbrella:before { + content: "\f0e9"; +} +.icon-paste:before { + content: "\f0ea"; +} +.icon-lightbulb:before { + content: "\f0eb"; +} +.icon-exchange:before { + content: "\f0ec"; +} +.icon-cloud-download:before { + content: "\f0ed"; +} +.icon-cloud-upload:before { + content: "\f0ee"; +} +.icon-user-md:before { + content: "\f0f0"; +} +.icon-stethoscope:before { + content: "\f0f1"; +} +.icon-suitcase:before { + content: "\f0f2"; +} +.icon-bell-alt:before { + content: "\f0f3"; +} +.icon-coffee:before { + content: "\f0f4"; +} +.icon-food:before { + content: "\f0f5"; +} +.icon-file-text-alt:before { + content: "\f0f6"; +} +.icon-building:before { + content: "\f0f7"; +} +.icon-hospital:before { + content: "\f0f8"; +} +.icon-ambulance:before { + content: "\f0f9"; +} +.icon-medkit:before { + content: "\f0fa"; +} +.icon-fighter-jet:before { + content: "\f0fb"; +} +.icon-beer:before { + content: "\f0fc"; +} +.icon-h-sign:before { + content: "\f0fd"; +} +.icon-plus-sign-alt:before { + content: "\f0fe"; +} +.icon-double-angle-left:before { + content: "\f100"; +} +.icon-double-angle-right:before { + content: "\f101"; +} +.icon-double-angle-up:before { + content: "\f102"; +} +.icon-double-angle-down:before { + content: "\f103"; +} +.icon-angle-left:before { + content: "\f104"; +} +.icon-angle-right:before { + content: "\f105"; +} +.icon-angle-up:before { + content: "\f106"; +} +.icon-angle-down:before { + content: "\f107"; +} +.icon-desktop:before { + content: "\f108"; +} +.icon-laptop:before { + content: "\f109"; +} +.icon-tablet:before { + content: "\f10a"; +} +.icon-mobile-phone:before { + content: "\f10b"; +} +.icon-circle-blank:before { + content: "\f10c"; +} +.icon-quote-left:before { + content: "\f10d"; +} +.icon-quote-right:before { + content: "\f10e"; +} +.icon-spinner:before { + content: "\f110"; +} +.icon-circle:before { + content: "\f111"; +} +.icon-mail-reply:before, +.icon-reply:before { + content: "\f112"; +} +.icon-github-alt:before { + content: "\f113"; +} +.icon-folder-close-alt:before { + content: "\f114"; +} +.icon-folder-open-alt:before { + content: "\f115"; +} +.icon-expand-alt:before { + content: "\f116"; +} +.icon-collapse-alt:before { + content: "\f117"; +} +.icon-smile:before { + content: "\f118"; +} +.icon-frown:before { + content: "\f119"; +} +.icon-meh:before { + content: "\f11a"; +} +.icon-gamepad:before { + content: "\f11b"; +} +.icon-keyboard:before { + content: "\f11c"; +} +.icon-flag-alt:before { + content: "\f11d"; +} +.icon-flag-checkered:before { + content: "\f11e"; +} +.icon-terminal:before { + content: "\f120"; +} +.icon-code:before { + content: "\f121"; +} +.icon-reply-all:before { + content: "\f122"; +} +.icon-mail-reply-all:before { + content: "\f122"; +} +.icon-star-half-full:before, +.icon-star-half-empty:before { + content: "\f123"; +} +.icon-location-arrow:before { + content: "\f124"; +} +.icon-crop:before { + content: "\f125"; +} +.icon-code-fork:before { + content: "\f126"; +} +.icon-unlink:before { + content: "\f127"; +} +.icon-question:before { + content: "\f128"; +} +.icon-info:before { + content: "\f129"; +} +.icon-exclamation:before { + content: "\f12a"; +} +.icon-superscript:before { + content: "\f12b"; +} +.icon-subscript:before { + content: "\f12c"; +} +.icon-eraser:before { + content: "\f12d"; +} +.icon-puzzle-piece:before { + content: "\f12e"; +} +.icon-microphone:before { + content: "\f130"; +} +.icon-microphone-off:before { + content: "\f131"; +} +.icon-shield:before { + content: "\f132"; +} +.icon-calendar-empty:before { + content: "\f133"; +} +.icon-fire-extinguisher:before { + content: "\f134"; +} +.icon-rocket:before { + content: "\f135"; +} +.icon-maxcdn:before { + content: "\f136"; +} +.icon-chevron-sign-left:before { + content: "\f137"; +} +.icon-chevron-sign-right:before { + content: "\f138"; +} +.icon-chevron-sign-up:before { + content: "\f139"; +} +.icon-chevron-sign-down:before { + content: "\f13a"; +} +.icon-html5:before { + content: "\f13b"; +} +.icon-css3:before { + content: "\f13c"; +} +.icon-anchor:before { + content: "\f13d"; +} +.icon-unlock-alt:before { + content: "\f13e"; +} +.icon-bullseye:before { + content: "\f140"; +} +.icon-ellipsis-horizontal:before { + content: "\f141"; +} +.icon-ellipsis-vertical:before { + content: "\f142"; +} +.icon-rss-sign:before { + content: "\f143"; +} +.icon-play-sign:before { + content: "\f144"; +} +.icon-ticket:before { + content: "\f145"; +} +.icon-minus-sign-alt:before { + content: "\f146"; +} +.icon-check-minus:before { + content: "\f147"; +} +.icon-level-up:before { + content: "\f148"; +} +.icon-level-down:before { + content: "\f149"; +} +.icon-check-sign:before { + content: "\f14a"; +} +.icon-edit-sign:before { + content: "\f14b"; +} +.icon-external-link-sign:before { + content: "\f14c"; +} +.icon-share-sign:before { + content: "\f14d"; +} +.icon-compass:before { + content: "\f14e"; +} +.icon-collapse:before { + content: "\f150"; +} +.icon-collapse-top:before { + content: "\f151"; +} +.icon-expand:before { + content: "\f152"; +} +.icon-euro:before, +.icon-eur:before { + content: "\f153"; +} +.icon-gbp:before { + content: "\f154"; +} +.icon-dollar:before, +.icon-usd:before { + content: "\f155"; +} +.icon-rupee:before, +.icon-inr:before { + content: "\f156"; +} +.icon-yen:before, +.icon-jpy:before { + content: "\f157"; +} +.icon-renminbi:before, +.icon-cny:before { + content: "\f158"; +} +.icon-won:before, +.icon-krw:before { + content: "\f159"; +} +.icon-bitcoin:before, +.icon-btc:before { + content: "\f15a"; +} +.icon-file:before { + content: "\f15b"; +} +.icon-file-text:before { + content: "\f15c"; +} +.icon-sort-by-alphabet:before { + content: "\f15d"; +} +.icon-sort-by-alphabet-alt:before { + content: "\f15e"; +} +.icon-sort-by-attributes:before { + content: "\f160"; +} +.icon-sort-by-attributes-alt:before { + content: "\f161"; +} +.icon-sort-by-order:before { + content: "\f162"; +} +.icon-sort-by-order-alt:before { + content: "\f163"; +} +.icon-thumbs-up:before { + content: "\f164"; +} +.icon-thumbs-down:before { + content: "\f165"; +} +.icon-youtube-sign:before { + content: "\f166"; +} +.icon-youtube:before { + content: "\f167"; +} +.icon-xing:before { + content: "\f168"; +} +.icon-xing-sign:before { + content: "\f169"; +} +.icon-youtube-play:before { + content: "\f16a"; +} +.icon-dropbox:before { + content: "\f16b"; +} +.icon-stackexchange:before { + content: "\f16c"; +} +.icon-instagram:before { + content: "\f16d"; +} +.icon-flickr:before { + content: "\f16e"; +} +.icon-adn:before { + content: "\f170"; +} +.icon-bitbucket:before { + content: "\f171"; +} +.icon-bitbucket-sign:before { + content: "\f172"; +} +.icon-tumblr:before { + content: "\f173"; +} +.icon-tumblr-sign:before { + content: "\f174"; +} +.icon-long-arrow-down:before { + content: "\f175"; +} +.icon-long-arrow-up:before { + content: "\f176"; +} +.icon-long-arrow-left:before { + content: "\f177"; +} +.icon-long-arrow-right:before { + content: "\f178"; +} +.icon-apple:before { + content: "\f179"; +} +.icon-windows:before { + content: "\f17a"; +} +.icon-android:before { + content: "\f17b"; +} +.icon-linux:before { + content: "\f17c"; +} +.icon-dribbble:before { + content: "\f17d"; +} +.icon-skype:before { + content: "\f17e"; +} +.icon-foursquare:before { + content: "\f180"; +} +.icon-trello:before { + content: "\f181"; +} +.icon-female:before { + content: "\f182"; +} +.icon-male:before { + content: "\f183"; +} +.icon-gittip:before { + content: "\f184"; +} +.icon-sun:before { + content: "\f185"; +} +.icon-moon:before { + content: "\f186"; +} +.icon-archive:before { + content: "\f187"; +} +.icon-bug:before { + content: "\f188"; +} +.icon-vk:before { + content: "\f189"; +} +.icon-weibo:before { + content: "\f18a"; +} +.icon-renren:before { + content: "\f18b"; +} diff --git a/themes/bootstrap/css/font-awesome.min.css b/themes/bootstrap/css/font-awesome.min.css new file mode 100644 index 00000000000..866437fa415 --- /dev/null +++ b/themes/bootstrap/css/font-awesome.min.css @@ -0,0 +1,403 @@ +@font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=3.2.1');src:url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'),url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'),url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'),url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;} +[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;} +.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;} +a [class^="icon-"],a [class*=" icon-"]{display:inline;} +[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:0.2857142857142857em;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em;} +.icons-ul{margin-left:2.142857142857143em;list-style-type:none;}.icons-ul>li{position:relative;} +.icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit;} +[class^="icon-"].hide,[class*=" icon-"].hide{display:none;} +.icon-muted{color:#eeeeee;} +.icon-light{color:#ffffff;} +.icon-dark{color:#333333;} +.icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} +.icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;} +.pull-right{float:right;} +.pull-left{float:left;} +[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;} +[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;} +[class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;} +.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;} +.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;} +.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;} +.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;} +.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;} +.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;} +.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;} +.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;} +.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;} +.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;} +.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{line-height:inherit;} +.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;} +.icon-stack .icon-stack-base{font-size:2em;*line-height:1em;} +.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;} +a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none;} +@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);} +.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);} +.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);} +.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);} +.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);} +a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block;} +.icon-glass:before{content:"\f000";} +.icon-music:before{content:"\f001";} +.icon-search:before{content:"\f002";} +.icon-envelope-alt:before{content:"\f003";} +.icon-heart:before{content:"\f004";} +.icon-star:before{content:"\f005";} +.icon-star-empty:before{content:"\f006";} +.icon-user:before{content:"\f007";} +.icon-film:before{content:"\f008";} +.icon-th-large:before{content:"\f009";} +.icon-th:before{content:"\f00a";} +.icon-th-list:before{content:"\f00b";} +.icon-ok:before{content:"\f00c";} +.icon-remove:before{content:"\f00d";} +.icon-zoom-in:before{content:"\f00e";} +.icon-zoom-out:before{content:"\f010";} +.icon-power-off:before,.icon-off:before{content:"\f011";} +.icon-signal:before{content:"\f012";} +.icon-gear:before,.icon-cog:before{content:"\f013";} +.icon-trash:before{content:"\f014";} +.icon-home:before{content:"\f015";} +.icon-file-alt:before{content:"\f016";} +.icon-time:before{content:"\f017";} +.icon-road:before{content:"\f018";} +.icon-download-alt:before{content:"\f019";} +.icon-download:before{content:"\f01a";} +.icon-upload:before{content:"\f01b";} +.icon-inbox:before{content:"\f01c";} +.icon-play-circle:before{content:"\f01d";} +.icon-rotate-right:before,.icon-repeat:before{content:"\f01e";} +.icon-refresh:before{content:"\f021";} +.icon-list-alt:before{content:"\f022";} +.icon-lock:before{content:"\f023";} +.icon-flag:before{content:"\f024";} +.icon-headphones:before{content:"\f025";} +.icon-volume-off:before{content:"\f026";} +.icon-volume-down:before{content:"\f027";} +.icon-volume-up:before{content:"\f028";} +.icon-qrcode:before{content:"\f029";} +.icon-barcode:before{content:"\f02a";} +.icon-tag:before{content:"\f02b";} +.icon-tags:before{content:"\f02c";} +.icon-book:before{content:"\f02d";} +.icon-bookmark:before{content:"\f02e";} +.icon-print:before{content:"\f02f";} +.icon-camera:before{content:"\f030";} +.icon-font:before{content:"\f031";} +.icon-bold:before{content:"\f032";} +.icon-italic:before{content:"\f033";} +.icon-text-height:before{content:"\f034";} +.icon-text-width:before{content:"\f035";} +.icon-align-left:before{content:"\f036";} +.icon-align-center:before{content:"\f037";} +.icon-align-right:before{content:"\f038";} +.icon-align-justify:before{content:"\f039";} +.icon-list:before{content:"\f03a";} +.icon-indent-left:before{content:"\f03b";} +.icon-indent-right:before{content:"\f03c";} +.icon-facetime-video:before{content:"\f03d";} +.icon-picture:before{content:"\f03e";} +.icon-pencil:before{content:"\f040";} +.icon-map-marker:before{content:"\f041";} +.icon-adjust:before{content:"\f042";} +.icon-tint:before{content:"\f043";} +.icon-edit:before{content:"\f044";} +.icon-share:before{content:"\f045";} +.icon-check:before{content:"\f046";} +.icon-move:before{content:"\f047";} +.icon-step-backward:before{content:"\f048";} +.icon-fast-backward:before{content:"\f049";} +.icon-backward:before{content:"\f04a";} +.icon-play:before{content:"\f04b";} +.icon-pause:before{content:"\f04c";} +.icon-stop:before{content:"\f04d";} +.icon-forward:before{content:"\f04e";} +.icon-fast-forward:before{content:"\f050";} +.icon-step-forward:before{content:"\f051";} +.icon-eject:before{content:"\f052";} +.icon-chevron-left:before{content:"\f053";} +.icon-chevron-right:before{content:"\f054";} +.icon-plus-sign:before{content:"\f055";} +.icon-minus-sign:before{content:"\f056";} +.icon-remove-sign:before{content:"\f057";} +.icon-ok-sign:before{content:"\f058";} +.icon-question-sign:before{content:"\f059";} +.icon-info-sign:before{content:"\f05a";} +.icon-screenshot:before{content:"\f05b";} +.icon-remove-circle:before{content:"\f05c";} +.icon-ok-circle:before{content:"\f05d";} +.icon-ban-circle:before{content:"\f05e";} +.icon-arrow-left:before{content:"\f060";} +.icon-arrow-right:before{content:"\f061";} +.icon-arrow-up:before{content:"\f062";} +.icon-arrow-down:before{content:"\f063";} +.icon-mail-forward:before,.icon-share-alt:before{content:"\f064";} +.icon-resize-full:before{content:"\f065";} +.icon-resize-small:before{content:"\f066";} +.icon-plus:before{content:"\f067";} +.icon-minus:before{content:"\f068";} +.icon-asterisk:before{content:"\f069";} +.icon-exclamation-sign:before{content:"\f06a";} +.icon-gift:before{content:"\f06b";} +.icon-leaf:before{content:"\f06c";} +.icon-fire:before{content:"\f06d";} +.icon-eye-open:before{content:"\f06e";} +.icon-eye-close:before{content:"\f070";} +.icon-warning-sign:before{content:"\f071";} +.icon-plane:before{content:"\f072";} +.icon-calendar:before{content:"\f073";} +.icon-random:before{content:"\f074";} +.icon-comment:before{content:"\f075";} +.icon-magnet:before{content:"\f076";} +.icon-chevron-up:before{content:"\f077";} +.icon-chevron-down:before{content:"\f078";} +.icon-retweet:before{content:"\f079";} +.icon-shopping-cart:before{content:"\f07a";} +.icon-folder-close:before{content:"\f07b";} +.icon-folder-open:before{content:"\f07c";} +.icon-resize-vertical:before{content:"\f07d";} +.icon-resize-horizontal:before{content:"\f07e";} +.icon-bar-chart:before{content:"\f080";} +.icon-twitter-sign:before{content:"\f081";} +.icon-facebook-sign:before{content:"\f082";} +.icon-camera-retro:before{content:"\f083";} +.icon-key:before{content:"\f084";} +.icon-gears:before,.icon-cogs:before{content:"\f085";} +.icon-comments:before{content:"\f086";} +.icon-thumbs-up-alt:before{content:"\f087";} +.icon-thumbs-down-alt:before{content:"\f088";} +.icon-star-half:before{content:"\f089";} +.icon-heart-empty:before{content:"\f08a";} +.icon-signout:before{content:"\f08b";} +.icon-linkedin-sign:before{content:"\f08c";} +.icon-pushpin:before{content:"\f08d";} +.icon-external-link:before{content:"\f08e";} +.icon-signin:before{content:"\f090";} +.icon-trophy:before{content:"\f091";} +.icon-github-sign:before{content:"\f092";} +.icon-upload-alt:before{content:"\f093";} +.icon-lemon:before{content:"\f094";} +.icon-phone:before{content:"\f095";} +.icon-unchecked:before,.icon-check-empty:before{content:"\f096";} +.icon-bookmark-empty:before{content:"\f097";} +.icon-phone-sign:before{content:"\f098";} +.icon-twitter:before{content:"\f099";} +.icon-facebook:before{content:"\f09a";} +.icon-github:before{content:"\f09b";} +.icon-unlock:before{content:"\f09c";} +.icon-credit-card:before{content:"\f09d";} +.icon-rss:before{content:"\f09e";} +.icon-hdd:before{content:"\f0a0";} +.icon-bullhorn:before{content:"\f0a1";} +.icon-bell:before{content:"\f0a2";} +.icon-certificate:before{content:"\f0a3";} +.icon-hand-right:before{content:"\f0a4";} +.icon-hand-left:before{content:"\f0a5";} +.icon-hand-up:before{content:"\f0a6";} +.icon-hand-down:before{content:"\f0a7";} +.icon-circle-arrow-left:before{content:"\f0a8";} +.icon-circle-arrow-right:before{content:"\f0a9";} +.icon-circle-arrow-up:before{content:"\f0aa";} +.icon-circle-arrow-down:before{content:"\f0ab";} +.icon-globe:before{content:"\f0ac";} +.icon-wrench:before{content:"\f0ad";} +.icon-tasks:before{content:"\f0ae";} +.icon-filter:before{content:"\f0b0";} +.icon-briefcase:before{content:"\f0b1";} +.icon-fullscreen:before{content:"\f0b2";} +.icon-group:before{content:"\f0c0";} +.icon-link:before{content:"\f0c1";} +.icon-cloud:before{content:"\f0c2";} +.icon-beaker:before{content:"\f0c3";} +.icon-cut:before{content:"\f0c4";} +.icon-copy:before{content:"\f0c5";} +.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6";} +.icon-save:before{content:"\f0c7";} +.icon-sign-blank:before{content:"\f0c8";} +.icon-reorder:before{content:"\f0c9";} +.icon-list-ul:before{content:"\f0ca";} +.icon-list-ol:before{content:"\f0cb";} +.icon-strikethrough:before{content:"\f0cc";} +.icon-underline:before{content:"\f0cd";} +.icon-table:before{content:"\f0ce";} +.icon-magic:before{content:"\f0d0";} +.icon-truck:before{content:"\f0d1";} +.icon-pinterest:before{content:"\f0d2";} +.icon-pinterest-sign:before{content:"\f0d3";} +.icon-google-plus-sign:before{content:"\f0d4";} +.icon-google-plus:before{content:"\f0d5";} +.icon-money:before{content:"\f0d6";} +.icon-caret-down:before{content:"\f0d7";} +.icon-caret-up:before{content:"\f0d8";} +.icon-caret-left:before{content:"\f0d9";} +.icon-caret-right:before{content:"\f0da";} +.icon-columns:before{content:"\f0db";} +.icon-sort:before{content:"\f0dc";} +.icon-sort-down:before{content:"\f0dd";} +.icon-sort-up:before{content:"\f0de";} +.icon-envelope:before{content:"\f0e0";} +.icon-linkedin:before{content:"\f0e1";} +.icon-rotate-left:before,.icon-undo:before{content:"\f0e2";} +.icon-legal:before{content:"\f0e3";} +.icon-dashboard:before{content:"\f0e4";} +.icon-comment-alt:before{content:"\f0e5";} +.icon-comments-alt:before{content:"\f0e6";} +.icon-bolt:before{content:"\f0e7";} +.icon-sitemap:before{content:"\f0e8";} +.icon-umbrella:before{content:"\f0e9";} +.icon-paste:before{content:"\f0ea";} +.icon-lightbulb:before{content:"\f0eb";} +.icon-exchange:before{content:"\f0ec";} +.icon-cloud-download:before{content:"\f0ed";} +.icon-cloud-upload:before{content:"\f0ee";} +.icon-user-md:before{content:"\f0f0";} +.icon-stethoscope:before{content:"\f0f1";} +.icon-suitcase:before{content:"\f0f2";} +.icon-bell-alt:before{content:"\f0f3";} +.icon-coffee:before{content:"\f0f4";} +.icon-food:before{content:"\f0f5";} +.icon-file-text-alt:before{content:"\f0f6";} +.icon-building:before{content:"\f0f7";} +.icon-hospital:before{content:"\f0f8";} +.icon-ambulance:before{content:"\f0f9";} +.icon-medkit:before{content:"\f0fa";} +.icon-fighter-jet:before{content:"\f0fb";} +.icon-beer:before{content:"\f0fc";} +.icon-h-sign:before{content:"\f0fd";} +.icon-plus-sign-alt:before{content:"\f0fe";} +.icon-double-angle-left:before{content:"\f100";} +.icon-double-angle-right:before{content:"\f101";} +.icon-double-angle-up:before{content:"\f102";} +.icon-double-angle-down:before{content:"\f103";} +.icon-angle-left:before{content:"\f104";} +.icon-angle-right:before{content:"\f105";} +.icon-angle-up:before{content:"\f106";} +.icon-angle-down:before{content:"\f107";} +.icon-desktop:before{content:"\f108";} +.icon-laptop:before{content:"\f109";} +.icon-tablet:before{content:"\f10a";} +.icon-mobile-phone:before{content:"\f10b";} +.icon-circle-blank:before{content:"\f10c";} +.icon-quote-left:before{content:"\f10d";} +.icon-quote-right:before{content:"\f10e";} +.icon-spinner:before{content:"\f110";} +.icon-circle:before{content:"\f111";} +.icon-mail-reply:before,.icon-reply:before{content:"\f112";} +.icon-github-alt:before{content:"\f113";} +.icon-folder-close-alt:before{content:"\f114";} +.icon-folder-open-alt:before{content:"\f115";} +.icon-expand-alt:before{content:"\f116";} +.icon-collapse-alt:before{content:"\f117";} +.icon-smile:before{content:"\f118";} +.icon-frown:before{content:"\f119";} +.icon-meh:before{content:"\f11a";} +.icon-gamepad:before{content:"\f11b";} +.icon-keyboard:before{content:"\f11c";} +.icon-flag-alt:before{content:"\f11d";} +.icon-flag-checkered:before{content:"\f11e";} +.icon-terminal:before{content:"\f120";} +.icon-code:before{content:"\f121";} +.icon-reply-all:before{content:"\f122";} +.icon-mail-reply-all:before{content:"\f122";} +.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";} +.icon-location-arrow:before{content:"\f124";} +.icon-crop:before{content:"\f125";} +.icon-code-fork:before{content:"\f126";} +.icon-unlink:before{content:"\f127";} +.icon-question:before{content:"\f128";} +.icon-info:before{content:"\f129";} +.icon-exclamation:before{content:"\f12a";} +.icon-superscript:before{content:"\f12b";} +.icon-subscript:before{content:"\f12c";} +.icon-eraser:before{content:"\f12d";} +.icon-puzzle-piece:before{content:"\f12e";} +.icon-microphone:before{content:"\f130";} +.icon-microphone-off:before{content:"\f131";} +.icon-shield:before{content:"\f132";} +.icon-calendar-empty:before{content:"\f133";} +.icon-fire-extinguisher:before{content:"\f134";} +.icon-rocket:before{content:"\f135";} +.icon-maxcdn:before{content:"\f136";} +.icon-chevron-sign-left:before{content:"\f137";} +.icon-chevron-sign-right:before{content:"\f138";} +.icon-chevron-sign-up:before{content:"\f139";} +.icon-chevron-sign-down:before{content:"\f13a";} +.icon-html5:before{content:"\f13b";} +.icon-css3:before{content:"\f13c";} +.icon-anchor:before{content:"\f13d";} +.icon-unlock-alt:before{content:"\f13e";} +.icon-bullseye:before{content:"\f140";} +.icon-ellipsis-horizontal:before{content:"\f141";} +.icon-ellipsis-vertical:before{content:"\f142";} +.icon-rss-sign:before{content:"\f143";} +.icon-play-sign:before{content:"\f144";} +.icon-ticket:before{content:"\f145";} +.icon-minus-sign-alt:before{content:"\f146";} +.icon-check-minus:before{content:"\f147";} +.icon-level-up:before{content:"\f148";} +.icon-level-down:before{content:"\f149";} +.icon-check-sign:before{content:"\f14a";} +.icon-edit-sign:before{content:"\f14b";} +.icon-external-link-sign:before{content:"\f14c";} +.icon-share-sign:before{content:"\f14d";} +.icon-compass:before{content:"\f14e";} +.icon-collapse:before{content:"\f150";} +.icon-collapse-top:before{content:"\f151";} +.icon-expand:before{content:"\f152";} +.icon-euro:before,.icon-eur:before{content:"\f153";} +.icon-gbp:before{content:"\f154";} +.icon-dollar:before,.icon-usd:before{content:"\f155";} +.icon-rupee:before,.icon-inr:before{content:"\f156";} +.icon-yen:before,.icon-jpy:before{content:"\f157";} +.icon-renminbi:before,.icon-cny:before{content:"\f158";} +.icon-won:before,.icon-krw:before{content:"\f159";} +.icon-bitcoin:before,.icon-btc:before{content:"\f15a";} +.icon-file:before{content:"\f15b";} +.icon-file-text:before{content:"\f15c";} +.icon-sort-by-alphabet:before{content:"\f15d";} +.icon-sort-by-alphabet-alt:before{content:"\f15e";} +.icon-sort-by-attributes:before{content:"\f160";} +.icon-sort-by-attributes-alt:before{content:"\f161";} +.icon-sort-by-order:before{content:"\f162";} +.icon-sort-by-order-alt:before{content:"\f163";} +.icon-thumbs-up:before{content:"\f164";} +.icon-thumbs-down:before{content:"\f165";} +.icon-youtube-sign:before{content:"\f166";} +.icon-youtube:before{content:"\f167";} +.icon-xing:before{content:"\f168";} +.icon-xing-sign:before{content:"\f169";} +.icon-youtube-play:before{content:"\f16a";} +.icon-dropbox:before{content:"\f16b";} +.icon-stackexchange:before{content:"\f16c";} +.icon-instagram:before{content:"\f16d";} +.icon-flickr:before{content:"\f16e";} +.icon-adn:before{content:"\f170";} +.icon-bitbucket:before{content:"\f171";} +.icon-bitbucket-sign:before{content:"\f172";} +.icon-tumblr:before{content:"\f173";} +.icon-tumblr-sign:before{content:"\f174";} +.icon-long-arrow-down:before{content:"\f175";} +.icon-long-arrow-up:before{content:"\f176";} +.icon-long-arrow-left:before{content:"\f177";} +.icon-long-arrow-right:before{content:"\f178";} +.icon-apple:before{content:"\f179";} +.icon-windows:before{content:"\f17a";} +.icon-android:before{content:"\f17b";} +.icon-linux:before{content:"\f17c";} +.icon-dribbble:before{content:"\f17d";} +.icon-skype:before{content:"\f17e";} +.icon-foursquare:before{content:"\f180";} +.icon-trello:before{content:"\f181";} +.icon-female:before{content:"\f182";} +.icon-male:before{content:"\f183";} +.icon-gittip:before{content:"\f184";} +.icon-sun:before{content:"\f185";} +.icon-moon:before{content:"\f186";} +.icon-archive:before{content:"\f187";} +.icon-bug:before{content:"\f188";} +.icon-vk:before{content:"\f189";} +.icon-weibo:before{content:"\f18a";} +.icon-renren:before{content:"\f18b";} diff --git a/themes/bootstrap/css/help.css b/themes/bootstrap/css/help.css new file mode 100644 index 00000000000..9c7195f42e3 --- /dev/null +++ b/themes/bootstrap/css/help.css @@ -0,0 +1 @@ +h1 {display:none} \ No newline at end of file diff --git a/themes/bootstrap/css/print.css b/themes/bootstrap/css/print.css new file mode 100644 index 00000000000..70a5c5e97d5 --- /dev/null +++ b/themes/bootstrap/css/print.css @@ -0,0 +1,2 @@ +.noprint,.noprint *,.noprint[class*="span"] {display:none} +.row-fluid .span9 {margin:auto;width:90%} diff --git a/themes/bootstrap/css/screen.css b/themes/bootstrap/css/screen.css new file mode 100644 index 00000000000..22f212c63fe --- /dev/null +++ b/themes/bootstrap/css/screen.css @@ -0,0 +1,19 @@ +.block { display:block } +.centered-pills { text-align:center } +.centered-pills ul.nav-pills { display:inline-block } +.centered-pills li { display:inline } +.centered-pills a { float:left } +.front { position:absolute;top:0;left:0;width:100%;padding-top:20%;z-index:5 } +li a.hidden {display:none} +* html .centered-pills ul.nav-pills { display:inline } /* IE6 */ +*+html .centered-pills ul.nav-pills { display:inline } /* IE7 */ +.modal-body { max-height:600px } +.pad { padding:12px } +.pager { margin:0 0 8px 0 } +.pointer { cursor:pointer } +.small { font-size:85% } +.switch-margins,.row .switch-margins,.row-fluid .switch-margins { display: inline-block; margin:auto 0 } +.tab-container { border:1px solid #DDD;border-top:0;border-radius:0 0 4px 4px;margin-top:-20px;padding:8px 12px;position:relative } +div.xml { display:block;font:10pt Courier;text-align:left;padding-left:1.5em } +div.xml.collapsed > div { display:none } +.xmlt { cursor:pointer } \ No newline at end of file diff --git a/themes/bootstrap/css/slider.css b/themes/bootstrap/css/slider.css new file mode 100644 index 00000000000..b527aa8686e --- /dev/null +++ b/themes/bootstrap/css/slider.css @@ -0,0 +1,138 @@ +/*! + * Slider for Bootstrap + * + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.slider { + display: inline-block; + vertical-align: middle; + position: relative; +} +.slider.slider-horizontal { + width: 210px; + height: 20px; +} +.slider.slider-horizontal .slider-track { + height: 10px; + width: 100%; + margin-top: -5px; + top: 50%; + left: 0; +} +.slider.slider-horizontal .slider-selection { + height: 100%; + top: 0; + bottom: 0; +} +.slider.slider-horizontal .slider-handle { + margin-left: -10px; + margin-top: -5px; +} +.slider.slider-horizontal .slider-handle.triangle { + border-width: 0 10px 10px 10px; + width: 0; + height: 0; + border-bottom-color: #0480be; + margin-top: 0; +} +.slider.slider-vertical { + height: 210px; + width: 20px; +} +.slider.slider-vertical .slider-track { + width: 10px; + height: 100%; + margin-left: -5px; + left: 50%; + top: 0; +} +.slider.slider-vertical .slider-selection { + width: 100%; + left: 0; + top: 0; + bottom: 0; +} +.slider.slider-vertical .slider-handle { + margin-left: -5px; + margin-top: -10px; +} +.slider.slider-vertical .slider-handle.triangle { + border-width: 10px 0 10px 10px; + width: 1px; + height: 1px; + border-left-color: #0480be; + margin-left: 0; +} +.slider input { + display: none; +} +.slider .tooltip-inner { + white-space: nowrap; +} +.slider-track { + position: absolute; + cursor: pointer; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.slider-selection { + position: absolute; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); + background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); + background-image: linear-gradient(to bottom, #f9f9f9, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.slider-handle { + position: absolute; + width: 20px; + height: 20px; + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + opacity: 0.8; + border: 0px solid transparent; +} +.slider-handle.round { + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; +} +.slider-handle.triangle { + background: transparent none; +} \ No newline at end of file diff --git a/themes/bootstrap/css/style.css b/themes/bootstrap/css/style.css new file mode 100644 index 00000000000..60c1dfbd52b --- /dev/null +++ b/themes/bootstrap/css/style.css @@ -0,0 +1 @@ +body {margin-top:1em} \ No newline at end of file diff --git a/themes/bootstrap/images/font/FontAwesome.otf b/themes/bootstrap/images/font/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..70125459f7d593b79cabc75bd60b91943aa65e93 GIT binary patch literal 61896 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 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/images/font/fontawesome-webfont.eot b/themes/bootstrap/images/font/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..0662cb96bfb78cb2603df4bc9995314bd6806312 GIT binary patch literal 37405 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�-A&iY%khEsGVMaq&$BJA^QAs8x>7-g_ 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 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/images/font/fontawesome-webfont.svg b/themes/bootstrap/images/font/fontawesome-webfont.svg new file mode 100644 index 00000000000..2edb4ec34cb --- /dev/null +++ b/themes/bootstrap/images/font/fontawesome-webfont.svg @@ -0,0 +1,399 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="fontawesomeregular" horiz-adv-x="1536" > +<font-face units-per-em="1792" ascent="1536" descent="-256" /> +<missing-glyph horiz-adv-x="448" /> +<glyph unicode=" " horiz-adv-x="448" /> +<glyph unicode="	" horiz-adv-x="448" /> +<glyph unicode=" " horiz-adv-x="448" /> +<glyph unicode="¨" horiz-adv-x="1792" /> +<glyph unicode="©" horiz-adv-x="1792" /> +<glyph unicode="®" horiz-adv-x="1792" /> +<glyph unicode="´" horiz-adv-x="1792" /> +<glyph unicode="Æ" horiz-adv-x="1792" /> +<glyph unicode=" " horiz-adv-x="768" /> +<glyph unicode=" " /> +<glyph unicode=" " horiz-adv-x="768" /> +<glyph unicode=" " /> +<glyph unicode=" " horiz-adv-x="512" /> +<glyph unicode=" " horiz-adv-x="384" /> +<glyph unicode=" " horiz-adv-x="256" /> +<glyph unicode=" " horiz-adv-x="256" /> +<glyph unicode=" " horiz-adv-x="192" /> +<glyph unicode=" " horiz-adv-x="307" /> +<glyph unicode=" " horiz-adv-x="85" /> +<glyph unicode=" " horiz-adv-x="307" /> +<glyph unicode=" " horiz-adv-x="384" /> +<glyph unicode="™" horiz-adv-x="1792" /> +<glyph unicode="∞" horiz-adv-x="1792" /> +<glyph unicode="≠" horiz-adv-x="1792" /> +<glyph unicode="" horiz-adv-x="500" d="M0 0z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" /> +<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> +<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " /> +<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" /> +<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" /> +<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" /> +<glyph unicode="" horiz-adv-x="1280" d="M128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280zM768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z " /> +<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" /> +<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" /> +<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" /> +<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" /> +<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" /> +<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" /> +<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" /> +<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" /> +<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> +<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q73 -1 153.5 -2t119 -1.5t52.5 -0.5l29 2q-32 95 -92 241q-53 132 -92 211zM21 -128h-21l2 79q22 7 80 18q89 16 110 31q20 16 48 68l237 616l280 724h75h53l11 -21l205 -480q103 -242 124 -297q39 -102 96 -235q26 -58 65 -164q24 -67 65 -149 q22 -49 35 -57q22 -19 69 -23q47 -6 103 -27q6 -39 6 -57q0 -14 -1 -26q-80 0 -192 8q-93 8 -189 8q-79 0 -135 -2l-200 -11l-58 -2q0 45 4 78l131 28q56 13 68 23q12 12 12 27t-6 32l-47 114l-92 228l-450 2q-29 -65 -104 -274q-23 -64 -23 -84q0 -31 17 -43 q26 -21 103 -32q3 0 13.5 -2t30 -5t40.5 -6q1 -28 1 -58q0 -17 -2 -27q-66 0 -349 20l-48 -8q-81 -14 -167 -14z" /> +<glyph unicode="" horiz-adv-x="1408" d="M555 15q76 -32 140 -32q131 0 216 41t122 113q38 70 38 181q0 114 -41 180q-58 94 -141 126q-80 32 -247 32q-74 0 -101 -10v-144l-1 -173l3 -270q0 -15 12 -44zM541 761q43 -7 109 -7q175 0 264 65t89 224q0 112 -85 187q-84 75 -255 75q-52 0 -130 -13q0 -44 2 -77 q7 -122 6 -279l-1 -98q0 -43 1 -77zM0 -128l2 94q45 9 68 12q77 12 123 31q17 27 21 51q9 66 9 194l-2 497q-5 256 -9 404q-1 87 -11 109q-1 4 -12 12q-18 12 -69 15q-30 2 -114 13l-4 83l260 6l380 13l45 1q5 0 14 0.5t14 0.5q1 0 21.5 -0.5t40.5 -0.5h74q88 0 191 -27 q43 -13 96 -39q57 -29 102 -76q44 -47 65 -104t21 -122q0 -70 -32 -128t-95 -105q-26 -20 -150 -77q177 -41 267 -146q92 -106 92 -236q0 -76 -29 -161q-21 -62 -71 -117q-66 -72 -140 -108q-73 -36 -203 -60q-82 -15 -198 -11l-197 4q-84 2 -298 -11q-33 -3 -272 -11z" /> +<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q4 1 77 20q76 19 116 39q29 37 41 101l27 139l56 268l12 64q8 44 17 84.5t16 67t12.5 46.5t9 30.5t3.5 11.5l29 157l16 63l22 135l8 50v38q-41 22 -144 28q-28 2 -38 4l19 103l317 -14q39 -2 73 -2q66 0 214 9q33 2 68 4.5t36 2.5q-2 -19 -6 -38 q-7 -29 -13 -51q-55 -19 -109 -31q-64 -16 -101 -31q-12 -31 -24 -88q-9 -44 -13 -82q-44 -199 -66 -306l-61 -311l-38 -158l-43 -235l-12 -45q-2 -7 1 -27q64 -15 119 -21q36 -5 66 -10q-1 -29 -7 -58q-7 -31 -9 -41q-18 0 -23 -1q-24 -2 -42 -2q-9 0 -28 3q-19 4 -145 17 l-198 2q-41 1 -174 -11q-74 -7 -98 -9z" /> +<glyph unicode="" horiz-adv-x="1792" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l215 -1h293l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -42.5 2t-103.5 -1t-111 -1 q-34 0 -67 -5q-10 -97 -8 -136l1 -152v-332l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-88 0 -233 -14q-48 -4 -70 -4q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q8 192 6 433l-5 428q-1 62 -0.5 118.5t0.5 102.5t-2 57t-6 15q-6 5 -14 6q-38 6 -148 6q-43 0 -100 -13.5t-73 -24.5q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1744 128q33 0 42 -18.5t-11 -44.5 l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80z" /> +<glyph unicode="" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l446 -1h318l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -58.5 2t-138.5 -1t-128 -1 q-94 0 -127 -5q-10 -97 -8 -136l1 -152v52l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-82 0 -233 -13q-45 -5 -70 -5q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q6 137 6 433l-5 44q0 265 -2 278q-2 11 -6 15q-6 5 -14 6q-38 6 -148 6q-50 0 -168.5 -14t-132.5 -24q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1505 113q26 -20 26 -49t-26 -49l-162 -126 q-26 -20 -44.5 -11t-18.5 42v80h-1024v-80q0 -33 -18.5 -42t-44.5 11l-162 126q-26 20 -26 49t26 49l162 126q26 20 44.5 11t18.5 -42v-80h1024v80q0 33 18.5 42t44.5 -11z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" /> +<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" /> +<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" /> +<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" /> +<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> +<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> +<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" /> +<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" /> +<glyph unicode="" horiz-adv-x="1152" d="M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 -90.5l-486 -486l486 -485q37 -38 37 -91t-37 -90l-75 -75q-37 -37 -90.5 -37t-90.5 37z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1099 704q0 -52 -37 -91l-652 -651q-37 -37 -90 -37t-90 37l-76 75q-37 39 -37 91q0 53 37 90l486 486l-486 485q-37 39 -37 91q0 53 37 90l76 75q36 38 90 38t90 -38l652 -651q37 -37 37 -90z" /> +<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> +<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" /> +<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" /> +<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" /> +<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" /> +<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" /> +<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" /> +<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " /> +<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" /> +<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1611 320q0 -53 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-486 485l-486 -485q-36 -38 -90 -38t-90 38l-75 75q-38 36 -38 90q0 53 38 91l651 651q37 37 90 37q52 0 91 -37l650 -651q38 -38 38 -91z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1611 832q0 -53 -37 -90l-651 -651q-38 -38 -91 -38q-54 0 -90 38l-651 651q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l486 -486l486 486q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " /> +<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" /> +<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1920" d="M512 512v-384h-256v384h256zM896 1024v-896h-256v896h256zM1280 768v-640h-256v640h256zM1664 1152v-1024h-256v1024h256zM1792 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5z M1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1307 618l23 219h-198v109q0 49 15.5 68.5t71.5 19.5h110v219h-175q-152 0 -218 -72t-66 -213v-131h-131v-219h131v-635h262v635h175zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" /> +<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" /> +<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" /> +<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" /> +<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" /> +<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" /> +<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" /> +<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" /> +<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> +<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" /> +<glyph unicode="" horiz-adv-x="768" d="M511 980h257l-30 -284h-227v-824h-341v824h-170v284h170v171q0 182 86 275.5t283 93.5h227v-284h-142q-39 0 -62.5 -6.5t-34 -23.5t-13.5 -34.5t-3 -49.5v-142z" /> +<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" /> +<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" /> +<glyph unicode="" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM1664 128q0 -52 -38 -90t-90 -38 h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" /> +<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" /> +<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" /> +<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" /> +<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" /> +<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" /> +<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" /> +<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " /> +<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " /> +<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" /> +<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" /> +<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" /> +<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" /> +<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" /> +<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" /> +<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" /> +<glyph unicode="" d="M678 -57q0 -38 -10 -71h-380q-95 0 -171.5 56.5t-103.5 147.5q24 45 69 77.5t100 49.5t107 24t107 7q32 0 49 -2q6 -4 30.5 -21t33 -23t31 -23t32 -25.5t27.5 -25.5t26.5 -29.5t21 -30.5t17.5 -34.5t9.5 -36t4.5 -40.5zM385 294q-234 -7 -385 -85v433q103 -118 273 -118 q32 0 70 5q-21 -61 -21 -86q0 -67 63 -149zM558 805q0 -100 -43.5 -160.5t-140.5 -60.5q-51 0 -97 26t-78 67.5t-56 93.5t-35.5 104t-11.5 99q0 96 51.5 165t144.5 69q66 0 119 -41t84 -104t47 -130t16 -128zM1536 896v-736q0 -119 -84.5 -203.5t-203.5 -84.5h-468 q39 73 39 157q0 66 -22 122.5t-55.5 93t-72 71t-72 59.5t-55.5 54.5t-22 59.5q0 36 23 68t56 61.5t65.5 64.5t55.5 93t23 131t-26.5 145.5t-75.5 118.5q-6 6 -14 11t-12.5 7.5t-10 9.5t-10.5 17h135l135 64h-437q-138 0 -244.5 -38.5t-182.5 -133.5q0 126 81 213t207 87h960 q119 0 203.5 -84.5t84.5 -203.5v-96h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" /> +<glyph unicode="" horiz-adv-x="1664" d="M876 71q0 21 -4.5 40.5t-9.5 36t-17.5 34.5t-21 30.5t-26.5 29.5t-27.5 25.5t-32 25.5t-31 23t-33 23t-30.5 21q-17 2 -50 2q-54 0 -106 -7t-108 -25t-98 -46t-69 -75t-27 -107q0 -68 35.5 -121.5t93 -84t120.5 -45.5t127 -15q59 0 112.5 12.5t100.5 39t74.5 73.5 t27.5 110zM756 933q0 60 -16.5 127.5t-47 130.5t-84 104t-119.5 41q-93 0 -144 -69t-51 -165q0 -47 11.5 -99t35.5 -104t56 -93.5t78 -67.5t97 -26q97 0 140.5 60.5t43.5 160.5zM625 1408h437l-135 -79h-135q71 -45 110 -126t39 -169q0 -74 -23 -131.5t-56 -92.5t-66 -64.5 t-56 -61t-23 -67.5q0 -26 16.5 -51t43 -48t58.5 -48t64 -55.5t58.5 -66t43 -85t16.5 -106.5q0 -160 -140 -282q-152 -131 -420 -131q-59 0 -119.5 10t-122 33.5t-108.5 58t-77 89t-30 121.5q0 61 37 135q32 64 96 110.5t145 71t155 36t150 13.5q-64 83 -64 149q0 12 2 23.5 t5 19.5t8 21.5t7 21.5q-40 -5 -70 -5q-149 0 -255.5 98t-106.5 246q0 140 95 250.5t234 141.5q94 20 187 20zM1664 1152v-128h-256v-256h-128v256h-256v128h256v256h128v-256h256z" /> +<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" /> +<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" /> +<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" /> +<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" /> +<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" /> +<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" /> +<glyph unicode="" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1664 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5 q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1024 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1024 608v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280z M768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" /> +<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" /> +<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" /> +<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> +<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" /> +<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" /> +<glyph unicode="" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" /> +<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" /> +<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " /> +<glyph unicode="" horiz-adv-x="1152" d="M896 608v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h224q14 0 23 -9t9 -23zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28 t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68zM1152 928v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704q93 0 158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="" horiz-adv-x="1152" d="M928 1152q93 0 158.5 -65.5t65.5 -158.5v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68z M864 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576z" /> +<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" /> +<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> +<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> +<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" /> +<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> +<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" /> +<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" /> +<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" /> +<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" /> +<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" /> +<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1708 881l-188 -881h-304l181 849q4 21 1 43q-4 20 -16 35q-10 14 -28 24q-18 9 -40 9h-197l-205 -960h-303l204 960h-304l-205 -960h-304l272 1280h1139q157 0 245 -118q86 -116 52 -281z" /> +<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" /> +<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" /> +<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" /> +<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> +<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" /> +<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" /> +<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" /> +<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" /> +<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 352v-32q0 -132 -94 -226t-226 -94h-128q-132 0 -226 94t-94 226v480h-224q-2 -102 -14.5 -190.5t-30.5 -156t-48.5 -126.5t-57 -99.5t-67.5 -77.5t-69.5 -58.5t-74 -44t-69 -32t-65.5 -25.5q-4 -2 -32 -13q-8 -2 -12 -2q-22 0 -30 20l-71 178q-5 13 0 25t17 17 q7 3 20 7.5t18 6.5q31 12 46.5 18.5t44.5 20t45.5 26t42 32.5t40.5 42.5t34.5 53.5t30.5 68.5t22.5 83.5t17 103t6.5 123h-256q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h1216q14 0 23 -9t9 -23v-160q0 -14 -9 -23t-23 -9h-224v-512q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v64q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1280 1376v-160q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h960q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1024 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1024 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28 t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" /> +<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" /> +<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" /> +<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" /> +<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" /> +<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" /> +<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" /> +<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" /> +<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" /> +<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" /> +<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" /> +<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" /> +<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" /> +<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M390 1408h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170v217q91 30 155 84q64 55 103 132q39 78 54 196z " /> +<glyph unicode="" d="M1123 127v181q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" /> +<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" /> +<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" /> +<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" /> +<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" /> +<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1483 512l-587 -587q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128t53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41 l619 619l2 -3q53 -53 53 -128t-53 -128zM1406 1138l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15v0q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36t14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15z" /> +<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" /> +<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M805 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM453 1176v-344q0 -179 -89.5 -326t-234.5 -217q-129 152 -129 351q0 200 129.5 352t323.5 184zM958 991q-128 -152 -128 -351q0 -201 128 -351q-145 70 -234.5 218t-89.5 328 v341q196 -33 324 -185zM1638 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM1286 1176v-344q0 -179 -91 -326t-237 -217v0q133 154 133 351q0 195 -133 351q129 151 328 185zM1920 640q0 -201 -129 -351q-145 70 -234.5 218 t-89.5 328v341q194 -32 323.5 -184t129.5 -352z" /> +<glyph unicode="" horiz-adv-x="1792" /> +<glyph unicode="" horiz-adv-x="1792" /> +<glyph unicode="" horiz-adv-x="1792" /> +<glyph unicode="" horiz-adv-x="1792" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/themes/bootstrap/images/font/fontawesome-webfont.ttf b/themes/bootstrap/images/font/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d3659246915cacb0c9204271f1f9fc5f77049eac GIT binary patch literal 79076 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 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/images/font/fontawesome-webfont.woff b/themes/bootstrap/images/font/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..b9bd17e158d87fb1477f7ac3ddbb5a676f3c26d2 GIT binary patch literal 43572 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 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/images/glyphicons-halflings-white.png b/themes/bootstrap/images/glyphicons-halflings-white.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae GIT binary patch literal 8777 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 B7G?kd literal 0 HcmV?d00001 diff --git a/themes/bootstrap/images/glyphicons-halflings.png b/themes/bootstrap/images/glyphicons-halflings.png new file mode 100644 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/images/view_grid.png b/themes/bootstrap/images/view_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..1c4e4391966e8dd5dc246a4b7d25a8e19d84a35c GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xd_7$pLn>}1)%^JI@b&fek{pbIfq`wt>F55aGciov=wK3= zx~5UOAjgd(Oi(Sw&V^$-hcNTS2G(;<+XQ!We7vW0m+`PJi$tft9s?sA!*lH=;tzyt R)&LD=@O1TaS?83{1OQl<HDUk& literal 0 HcmV?d00001 diff --git a/themes/bootstrap/images/view_list.png b/themes/bootstrap/images/view_list.png new file mode 100644 index 0000000000000000000000000000000000000000..847c39a8ee1eed769cc3e60e07f5f4adb6ac8acc GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1SBVD?P>#3jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg4E^a|xG3{GA8-PL~o-U3d8t0R1 zetdZN`uciF4#vR1z&7LbbAQyC=2#ZDu`W8PmCSpmA=%hz!cGA}Ha0df6FV2dmR`1q z4ZC_8R%YZK$kYn6G&yj@!9-%2;sKAEB1Q)9)e-l3G^BO`&1dj*^>bP0l+XkK>)SrN literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/advanced_search.js b/themes/bootstrap/js/advanced_search.js new file mode 100644 index 00000000000..61bae5854d2 --- /dev/null +++ b/themes/bootstrap/js/advanced_search.js @@ -0,0 +1,110 @@ +/*global addSearchString, deleteSearchGroupString, searchFieldLabel, searchFields, searchJoins, searchLabel, searchMatch*/ + +var nextGroup = 0; + +function addSearch(group, term, field) +{ + // Does anyone use this??? + if (term == undefined) {term = '';} + if (field == undefined) {field = '';} + + // Build the new search + var inputIndex = $('#group'+group+' input').length; + var inputID = group+'_'+$('#group'+group+' input').length; + var newSearch = '<div class="search" id="search'+inputID+'"><input class="span7" id="search_lookfor'+inputID+'" type="text" name="lookfor'+group+'[]" value="'+term+'">' + + ' in ' + + '<select class="span4" id="search_type'+inputID+'" name="type'+group+'[]">'; + for (var key in searchFields) { + newSearch += '<option value="' + key + '"'; + if (key == field) { + newSearch += ' selected="selected"'; + } + newSearch += ">" + searchFields[key] + "</option>"; + } + newSearch += '</select> <a href="#" onClick="deleteSearch('+group+','+inputIndex+')" class="help-inline" title="Remove this term">×</a></div>'; + + // Insert it + $("#group" + group + "Holder").before(newSearch); + // Show x + $('#group'+group+' .search .help-inline').show(); +} + +function deleteSearch(group, eq) { + var searches = $('#group'+group+' .search'); + for(var i=eq;i<searches.length-1;i++) { + $(searches[i]).find('input').val($(searches[i+1]).find('input').val()); + var select0 = $(searches[i]).find('select')[0]; + var select1 = $(searches[i+1]).find('select')[0]; + select0.selectedIndex = select1.selectedIndex; + } + if($('#group'+group+' .search').length > 1) { + $('#group'+group+' .search:last').remove(); + } + // Hide x + if($('#group'+group+' .search').length == 1) { + $('#group'+group+' .search .help-inline').hide(); + } +} + +function addGroup(firstTerm, firstField, join) +{ + if (firstTerm == undefined) {firstTerm = '';} + if (firstField == undefined) {firstField = '';} + if (join == undefined) {join = '';} + + var newGroup = '<div id="group'+nextGroup+'" class="group well clearfix">' + + '<div class="span4 pull-right">' + + '<label for="search_bool'+nextGroup+'">Match: </label>' + + '<select class="span8" id="search_bool'+nextGroup+'" name="bool'+nextGroup+'[]">' + + '<option value="AND"'; + if(join == 'AND') newGroup += ' selected'; + newGroup += '>ALL Terms</option>' + + '<option value="OR"'; + if(join == 'OR') newGroup += ' selected'; + newGroup += '>ANY Terms</option>' + + '<option value="NOT"'; + if(join == 'NOT') newGroup += ' selected'; + newGroup += '>NO Terms</option>' + + '</select><a href="#" onClick="deleteGroup('+nextGroup+')" class="close hide" title="Remove Group">×</a></div><div class="span8 pull-left switch-margins row-fluid"><div class="span3 text-right">'+searchLabel+':</div>' + + '<div class="span9"><i id="group'+nextGroup+'Holder" class="icon-plus-sign"></i> <a href="#" onClick="addSearch('+nextGroup+')">'+addSearchString+'</a></div></div></div>'; + + $('#groupPlaceHolder').before(newGroup); + addSearch(nextGroup, firstTerm, firstField); + // Show join menu + if($('.group').length > 1) { + $('#groupJoin').removeClass('hidden'); + // Show x + $('.group .close').show(); + } + return nextGroup++; +} + +function deleteGroup(group) +{ + // Find the group and remove it + $("#group" + group).remove(); + // If the last group was removed, add an empty group + if($('.group').length == 0) { + addGroup(); + } else if($('.group').length == 1) { // Hide join menu + $('#groupJoin').addClass('hidden'); + // Hide x + $('.group .close').hide(); + } +} + +// Fired by onclick event +function deleteGroupJS(group) +{ + var groupNum = group.id.replace("delete_link_", ""); + deleteGroup(groupNum); + return false; +} + +// Fired by onclick event +function addSearchJS(group) +{ + var groupNum = group.id.replace("add_search_link_", ""); + addSearch(groupNum); + return false; +} \ No newline at end of file diff --git a/themes/bootstrap/js/bootstrap-slider.js b/themes/bootstrap/js/bootstrap-slider.js new file mode 100644 index 00000000000..b540fdaa950 --- /dev/null +++ b/themes/bootstrap/js/bootstrap-slider.js @@ -0,0 +1,388 @@ +/* ========================================================= + * bootstrap-slider.js v2.0.0 + * http://www.eyecon.ro/bootstrap-slider + * ========================================================= + * Copyright 2012 Stefan Petre + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + +!function( $ ) { + + var Slider = function(element, options) { + this.element = $(element); + this.picker = $('<div class="slider">'+ + '<div class="slider-track">'+ + '<div class="slider-selection"></div>'+ + '<div class="slider-handle"></div>'+ + '<div class="slider-handle"></div>'+ + '</div>'+ + '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'+ + '</div>') + .insertBefore(this.element) + .append(this.element); + this.id = this.element.data('slider-id')||options.id; + if (this.id) { + this.picker[0].id = this.id; + } + + if (typeof Modernizr !== 'undefined' && Modernizr.touch) { + this.touchCapable = true; + } + + var tooltip = this.element.data('slider-tooltip')||options.tooltip; + + this.tooltip = this.picker.find('.tooltip'); + this.tooltipInner = this.tooltip.find('div.tooltip-inner'); + + this.orientation = this.element.data('slider-orientation')||options.orientation; + switch(this.orientation) { + case 'vertical': + this.picker.addClass('slider-vertical'); + this.stylePos = 'top'; + this.mousePos = 'pageY'; + this.sizePos = 'offsetHeight'; + this.tooltip.addClass('right')[0].style.left = '100%'; + break; + default: + this.picker + .addClass('slider-horizontal') + .css('width', '100%') + this.orientation = 'horizontal'; + this.stylePos = 'left'; + this.mousePos = 'pageX'; + this.sizePos = 'offsetWidth'; + this.tooltip.addClass('top')[0].style.top = -this.tooltip.outerHeight() - 14 + 'px'; + break; + } + + this.min = this.element.data('slider-min')||options.min; + this.max = this.element.data('slider-max')||options.max; + this.step = this.element.data('slider-step')||options.step; + this.value = this.element.data('slider-value')||options.value; + if (this.value[1]) { + this.range = true; + } + + this.selection = this.element.data('slider-selection')||options.selection; + this.selectionEl = this.picker.find('.slider-selection'); + if (this.selection === 'none') { + this.selectionEl.addClass('hide'); + } + this.selectionElStyle = this.selectionEl[0].style; + + + this.handle1 = this.picker.find('.slider-handle:first'); + this.handle1Stype = this.handle1[0].style; + this.handle2 = this.picker.find('.slider-handle:last'); + this.handle2Stype = this.handle2[0].style; + + var handle = this.element.data('slider-handle')||options.handle; + switch(handle) { + case 'round': + this.handle1.addClass('round'); + this.handle2.addClass('round'); + break + case 'triangle': + this.handle1.addClass('triangle'); + this.handle2.addClass('triangle'); + break + } + + if (this.range) { + this.value[0] = Math.max(this.min, Math.min(this.max, this.value[0])); + this.value[1] = Math.max(this.min, Math.min(this.max, this.value[1])); + } else { + this.value = [ Math.max(this.min, Math.min(this.max, this.value))]; + this.handle2.addClass('hide'); + if (this.selection == 'after') { + this.value[1] = this.max; + } else { + this.value[1] = this.min; + } + } + this.diff = this.max - this.min; + this.percentage = [ + (this.value[0]-this.min)*100/this.diff, + (this.value[1]-this.min)*100/this.diff, + this.step*100/this.diff + ]; + + this.offset = this.picker.offset(); + this.size = this.picker[0][this.sizePos]; + + this.formater = options.formater; + + this.layout(); + + if (this.touchCapable) { + // Touch: Bind touch events: + this.picker.on({ + touchstart: $.proxy(this.mousedown, this) + }); + } else { + this.picker.on({ + mousedown: $.proxy(this.mousedown, this) + }); + } + + if (tooltip === 'show') { + this.picker.on({ + mouseenter: $.proxy(this.showTooltip, this), + mouseleave: $.proxy(this.hideTooltip, this) + }); + } else { + this.tooltip.addClass('hide'); + } + }; + + Slider.prototype = { + constructor: Slider, + + over: false, + inDrag: false, + + showTooltip: function(){ + this.tooltip.addClass('in'); + //var left = Math.round(this.percent*this.width); + //this.tooltip.css('left', left - this.tooltip.outerWidth()/2); + this.over = true; + }, + + hideTooltip: function(){ + if (this.inDrag === false) { + this.tooltip.removeClass('in'); + } + this.over = false; + }, + + layout: function(){ + this.handle1Stype[this.stylePos] = this.percentage[0]+'%'; + this.handle2Stype[this.stylePos] = this.percentage[1]+'%'; + if (this.orientation == 'vertical') { + this.selectionElStyle.top = Math.min(this.percentage[0], this.percentage[1]) +'%'; + this.selectionElStyle.height = Math.abs(this.percentage[0] - this.percentage[1]) +'%'; + } else { + this.selectionElStyle.left = Math.min(this.percentage[0], this.percentage[1]) +'%'; + this.selectionElStyle.width = Math.abs(this.percentage[0] - this.percentage[1]) +'%'; + } + if (this.range) { + this.tooltipInner.text( + this.formater(this.value[0]) + + ' : ' + + this.formater(this.value[1]) + ); + this.tooltip[0].style[this.stylePos] = this.size * (this.percentage[0] + (this.percentage[1] - this.percentage[0])/2)/100 - (this.orientation === 'vertical' ? this.tooltip.outerHeight()/2 : this.tooltip.outerWidth()/2) +'px'; + } else { + this.tooltipInner.text( + this.formater(this.value[0]) + ); + this.tooltip[0].style[this.stylePos] = this.size * this.percentage[0]/100 - (this.orientation === 'vertical' ? this.tooltip.outerHeight()/2 : this.tooltip.outerWidth()/2) +'px'; + } + }, + + mousedown: function(ev) { + + // Touch: Get the original event: + if (this.touchCapable && ev.type === 'touchstart') { + ev = ev.originalEvent; + } + + this.offset = this.picker.offset(); + this.size = this.picker[0][this.sizePos]; + + var percentage = this.getPercentage(ev); + + if (this.range) { + var diff1 = Math.abs(this.percentage[0] - percentage); + var diff2 = Math.abs(this.percentage[1] - percentage); + this.dragged = (diff1 < diff2) ? 0 : 1; + } else { + this.dragged = 0; + } + + this.percentage[this.dragged] = percentage; + this.layout(); + + if (this.touchCapable) { + // Touch: Bind touch events: + $(document).on({ + touchmove: $.proxy(this.mousemove, this), + touchend: $.proxy(this.mouseup, this) + }); + } else { + $(document).on({ + mousemove: $.proxy(this.mousemove, this), + mouseup: $.proxy(this.mouseup, this) + }); + } + + this.inDrag = true; + var val = this.calculateValue(); + this.element.trigger({ + type: 'slideStart', + value: val + }).trigger({ + type: 'slide', + value: val + }); + return false; + }, + + mousemove: function(ev) { + + // Touch: Get the original event: + if (this.touchCapable && ev.type === 'touchmove') { + ev = ev.originalEvent; + } + + var percentage = this.getPercentage(ev); + if (this.range) { + if (this.dragged === 0 && this.percentage[1] < percentage) { + this.percentage[0] = this.percentage[1]; + this.dragged = 1; + } else if (this.dragged === 1 && this.percentage[0] > percentage) { + this.percentage[1] = this.percentage[0]; + this.dragged = 0; + } + } + this.percentage[this.dragged] = percentage; + this.layout(); + var val = this.calculateValue(); + this.element + .trigger({ + type: 'slide', + value: val + }) + .data('value', val) + .prop('value', val); + return false; + }, + + mouseup: function(ev) { + if (this.touchCapable) { + // Touch: Bind touch events: + $(document).off({ + touchmove: this.mousemove, + touchend: this.mouseup + }); + } else { + $(document).off({ + mousemove: this.mousemove, + mouseup: this.mouseup + }); + } + + this.inDrag = false; + if (this.over == false) { + this.hideTooltip(); + } + this.element; + var val = this.calculateValue(); + this.element + .trigger({ + type: 'slideStop', + value: val + }) + .data('value', val) + .prop('value', val); + return false; + }, + + calculateValue: function() { + var val; + if (this.range) { + val = [ + (this.min + Math.round((this.diff * this.percentage[0]/100)/this.step)*this.step), + (this.min + Math.round((this.diff * this.percentage[1]/100)/this.step)*this.step) + ]; + this.value = val; + } else { + val = (this.min + Math.round((this.diff * this.percentage[0]/100)/this.step)*this.step); + this.value = [val, this.value[1]]; + } + return val; + }, + + getPercentage: function(ev) { + if (this.touchCapable) { + ev = ev.touches[0]; + } + var percentage = (ev[this.mousePos] - this.offset[this.stylePos])*100/this.size; + percentage = Math.round(percentage/this.percentage[2])*this.percentage[2]; + return Math.max(0, Math.min(100, percentage)); + }, + + getValue: function() { + if (this.range) { + return this.value; + } + return this.value[0]; + }, + + setValue: function(val) { + this.value = val; + + if (this.range) { + this.value[0] = Math.max(this.min, Math.min(this.max, this.value[0])); + this.value[1] = Math.max(this.min, Math.min(this.max, this.value[1])); + } else { + this.value = [ Math.max(this.min, Math.min(this.max, this.value))]; + this.handle2.addClass('hide'); + if (this.selection == 'after') { + this.value[1] = this.max; + } else { + this.value[1] = this.min; + } + } + this.diff = this.max - this.min; + this.percentage = [ + (this.value[0]-this.min)*100/this.diff, + (this.value[1]-this.min)*100/this.diff, + this.step*100/this.diff + ]; + this.layout(); + } + }; + + $.fn.slider = function ( option, val ) { + return this.each(function () { + var $this = $(this), + data = $this.data('slider'), + options = typeof option === 'object' && option; + if (!data) { + $this.data('slider', (data = new Slider(this, $.extend({}, $.fn.slider.defaults,options)))); + } + if (typeof option == 'string') { + data[option](val); + } + }) + }; + + $.fn.slider.defaults = { + min: 0, + max: 10, + step: 1, + orientation: 'horizontal', + value: 5, + selection: 'before', + tooltip: 'show', + handle: 'round', + formater: function(value) { + return value; + } + }; + + $.fn.slider.Constructor = Slider; + +}( window.jQuery ); diff --git a/themes/bootstrap/js/cart.js b/themes/bootstrap/js/cart.js new file mode 100644 index 00000000000..09a58fda465 --- /dev/null +++ b/themes/bootstrap/js/cart.js @@ -0,0 +1,178 @@ +var _CART_COOKIE = 'vufind_cart'; +var _CART_COOKIE_SOURCES = 'vufind_cart_src'; +var _CART_COOKIE_DELIM = "\t"; + +var currentId,currentSource; + +function getCartItems() { + var items = Cookies.getItem(_CART_COOKIE); + if(items) return items.split(_CART_COOKIE_DELIM); + return []; +} +function getCartSources() { + var items = Cookies.getItem(_CART_COOKIE_SOURCES); + if(items) return items.split(_CART_COOKIE_DELIM); + return []; +} +function getFullCartItems() { + var items = getCartItems(); + var sources = getCartSources(); + var full = []; + if(items.length == 0) return []; + for(var i=items.length;i--;) { + full[full.length] = sources[items[i].charCodeAt(0)-65]+'|'+items[i].substr(1); + } + return full; +} + +function addItemToCart(id,source) { + if(!source) source = 'VuFind'; + var cartItems = getCartItems(); + var cartSources = getCartSources(); + var sIndex = cartSources.indexOf(source); + if(sIndex < 0) { + // Add source to source cookie + cartItems[cartItems.length] = String.fromCharCode(65+cartSources.length) + id; + cartSources[cartSources.length] = source; + Cookies.setItem(_CART_COOKIE_SOURCES, cartSources.join(_CART_COOKIE_DELIM), false, '/'); + } else { + cartItems[cartItems.length] = String.fromCharCode(65+sIndex) + id; + } + Cookies.setItem(_CART_COOKIE, $.unique(cartItems).join(_CART_COOKIE_DELIM), false, '/'); + $('#cartItems strong').html(parseInt($('#cartItems strong').html())+1); + return true; +} +function removeItemFromCart(id,source) { + var cartItems = getCartItems(); + var cartSources = getCartSources(); + for(var i=cartItems.length;i--;) { + if(cartItems[i].substr(1) == id && cartSources[cartItems[i].charCodeAt(0)-65] == source) { + var saveSource = false; + for(var j=cartItems.length;j--;) { + if(j==i) continue; + console.log(cartItems[j].charCodeAt(0)-65); + if(cartItems[j].charCodeAt(0)-65 == i) { + saveSource = true; + break; + } + } + cartItems.splice(i,1); + if(!saveSource) cartSources.splice(i,1); + if(cartItems.length > 0) { + Cookies.setItem(_CART_COOKIE, $.unique(cartItems).join(_CART_COOKIE_DELIM), false, '/'); + Cookies.setItem(_CART_COOKIE_SOURCES, $.unique(cartSources).join(_CART_COOKIE_DELIM), false, '/'); + } else { + Cookies.removeItem(_CART_COOKIE, '/'); + Cookies.removeItem(_CART_COOKIE_SOURCES, '/'); + } + $('#cartItems strong').html(parseInt($('#cartItems strong').html())-1); + return true; + } + } + return false; +} + +function registerUpdateCart($form) { + if($form) { + $("#updateCart, #bottom_updateCart").unbind('click').click(function(){ + var elId = this.id; + var selectedBoxes = $("input[name='ids[]']:checked", $form); + var selected = []; + $(selectedBoxes).each(function(i) { + selected[i] = this.value; + }); + if (selected.length > 0) { + var inCart = 0; + var msg = ""; + var orig = getFullCartItems(); + $(selected).each(function(i) { + for (var x in orig) { + if (this == orig[x]) { + inCart++; + return; + } + } + var data = this.split('|'); + addItemToCart(data[1], data[0]); + }); + var updated = getFullCartItems(); + var added = updated.length - orig.length; + msg += added + " " + vufindString.itemsAddBag + "\n\n"; + if (inCart > 0 && orig.length > 0) { + msg += inCart + " " + vufindString.itemsInBag + "\n\n"; + } + if (updated.length >= vufindString.bookbagMax) { + msg += vufindString.bookbagFull; + } + $('#'+elId).popover({content:msg}).popover('show'); + $('#cartItems strong').html(updated.length); + } else { + $('#'+elId).popover({content:vufindString.bulk_noitems_advice}).popover('show'); + } + return false; + }); + } +} + +$(document).ready(function() { + // Record buttons + var cartId = $('#cartId'); + if(cartId.length > 0) { + cartId = cartId.val().split('|'); + currentId = cartId[1]; + currentSource = cartId[0]; + $('#cart-add.correct,#cart-remove.correct').removeClass('correct hidden'); + $('#cart-add').click(function() { + addItemToCart(currentId,currentSource); + $('#cart-add,#cart-remove').toggleClass('hidden'); + }); + $('#cart-remove').click(function() { + removeItemFromCart(currentId,currentSource); + $('#cart-add,#cart-remove').toggleClass('hidden'); + }); + } else { + // Search results + var $form = $('form[name="bulkActionForm"]'); + registerUpdateCart($form); + } +}); + +/* --- COOKIE LIBRARY --- https://developer.mozilla.org/en-US/docs/Web/API/document.cookie ---*/ +var Cookies = { + getItem: function (sKey) { + return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null; + }, + setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) { + if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; } + var sExpires = ""; + if (vEnd) { + switch (vEnd.constructor) { + case Number: + sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd; + break; + case String: + sExpires = "; expires=" + vEnd; + break; + case Date: + sExpires = "; expires=" + vEnd.toUTCString(); + break; + } + } + document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : ""); + return true; + }, + + removeItem: function (sKey, sPath, sDomain) { + if (!sKey || !this.hasItem(sKey)) { return false; } + document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + ( sDomain ? "; domain=" + sDomain : "") + ( sPath ? "; path=" + sPath : ""); + return true; + }, + hasItem: function (sKey) { + return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie); + }, + keys: /* optional method: you can safely remove it! */ function () { + var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/); + for (var nIdx = 0; nIdx < aKeys.length; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); } + return aKeys; + } +}; diff --git a/themes/bootstrap/js/check_item_statuses.js b/themes/bootstrap/js/check_item_statuses.js new file mode 100644 index 00000000000..a67e8cd1963 --- /dev/null +++ b/themes/bootstrap/js/check_item_statuses.js @@ -0,0 +1,80 @@ +/*global path*/ + +function checkItemStatuses() { + var id = $.map($('.ajaxItem'), function(i) { + return $(i).find('.hiddenId')[0].value; + }); + if (!id.length) return; + + $(".ajax-availability").show(); + $.ajax({ + dataType: 'json', + url: path + '/AJAX/JSON?method=getItemStatuses', + data: {id:id}, + success: function(response) { + if(response.status == 'OK') { + $.each(response.data, function(i, result) { + var item = $($('.ajaxItem')[result.record_number]); + + item.find('.status').empty().append(result.availability_message); + if (typeof(result.full_status) != 'undefined' + && result.full_status.length > 0 + && item.find('.callnumAndLocation').length > 0 + ) { + // Full status mode is on -- display the HTML and hide extraneous junk: + item.find('.callnumAndLocation').empty().append(result.full_status); + item.find('.callnumber').hide(); + item.find('.location').hide(); + item.find('.hideIfDetailed').hide(); + item.find('.status').hide(); + } else if (typeof(result.missing_data) != 'undefined' + && result.missing_data + ) { + // No data is available -- hide the entire status area: + item.find('.callnumAndLocation').hide(); + item.find('.status').hide(); + } else if (result.locationList) { + // We have multiple locations -- build appropriate HTML and hide unwanted labels: + item.find('.callnumber').hide(); + item.find('.hideIfDetailed').hide(); + item.find('.location').hide(); + var locationListHTML = ""; + for (var x=0; x<result.locationList.length; x++) { + locationListHTML += '<div class="groupLocation">'; + if (result.locationList[x].availability) { + locationListHTML += '<i class="icon-ok text-success"></i> <span class="text-success">' + + result.locationList[x].location + '</span> '; + } else { + locationListHTML += '<i class="icon-remove text-error"></i> <span class="text-error"">' + + result.locationList[x].location + '</span> '; + } + locationListHTML += '</div>'; + locationListHTML += '<div class="groupCallnumber">'; + locationListHTML += (result.locationList[x].callnumbers) + ? result.locationList[x].callnumbers : ''; + locationListHTML += '</div>'; + } + item.find('.locationDetails').show(); + item.find('.locationDetails').empty().append(locationListHTML); + } else { + // Default case -- load call number and location into appropriate containers: + item.find('.callnumber').empty().append(result.callnumber); + item.find('.location').empty().append( + result.reserve == 'true' + ? result.reserve_message + : result.location + ); + } + }); + } else { + // display the error message on each of the ajax status place holder + $(".ajax-availability").empty().append(response.data); + } + $(".ajax-availability").removeClass('ajax-availability'); + } + }); +} + +$(document).ready(function() { + checkItemStatuses(); +}); \ No newline at end of file diff --git a/themes/bootstrap/js/check_save_statuses.js b/themes/bootstrap/js/check_save_statuses.js new file mode 100644 index 00000000000..97dd79e15c1 --- /dev/null +++ b/themes/bootstrap/js/check_save_statuses.js @@ -0,0 +1,45 @@ +/*global path*/ + +function checkSaveStatuses() { + var data = $.map($('.result'), function(i) { + if($(i).find('.hiddenId').length == 0 || $(i).find('.hiddenSource').length == 0) return false; + return {'id':$(i).find('.hiddenId').val(), 'source':$(i).find('.hiddenSource')[0].value}; + }); + if (data.length) { + var ids = []; + var srcs = []; + for (var i = 0; i < data.length; i++) { + ids[i] = data[i].id; + srcs[i] = data[i].source; + } + $.ajax({ + dataType: 'json', + url: path + '/AJAX/JSON?method=getSaveStatuses', + data: {id:ids, 'source':srcs}, + success: function(response) { + if(response.status == 'OK') { + $('.savedLists > ul').empty(); + $.each(response.data, function(i, result) { + var $container = $('#result'+result.record_number).find('.savedLists'); + if ($container.length == 0) { // Record view + $container = $('#savedLists'); + } + var $ul = $container.children('ul:first'); + if ($ul.length == 0) { + $container.append('<ul></ul>'); + $ul = $container.children('ul:first'); + } + var html = '<li><a href="' + path + '/MyResearch/MyList/' + result.list_id + '">' + + result.list_title + '</a></li>'; + $ul.append(html); + $container.show(); + }); + } + } + }); + } +} + +$(document).ready(function() { + checkSaveStatuses(); +}); diff --git a/themes/bootstrap/js/common.js b/themes/bootstrap/js/common.js new file mode 100644 index 00000000000..b0c166577f5 --- /dev/null +++ b/themes/bootstrap/js/common.js @@ -0,0 +1,94 @@ +$(document).ready(function() { + // Highlight previous links, grey out following + $('.backlink') + .mouseover(function() { + // Underline back + var t = $(this); + do { + t.css({'text-decoration':'underline'}); + t = t.prev(); + } while(t.length > 0); + // Mute ahead + t = $(this).next(); + do { + t.css({'color':'#999'}); + t = t.next(); + } while(t.length > 0); + }) + .mouseout(function() { + // Underline back + var t = $(this); + do { + t.css({'text-decoration':'none'}); + t = t.prev(); + } while(t.length > 0); + // Mute ahead + t = $(this).next(); + do { + t.css({'color':''}); + t = t.next(); + } while(t.length > 0); + }) + + // Search autocomplete + $('.autocomplete').typeahead({ + source:function(query, process) { + var searcher = extractClassParams($('.autocomplete').attr('class')); + $.ajax({ + url: path + '/AJAX/JSON', + data: {method:'getACSuggestions',type:$('#searchForm_type').val(),searcher:searcher['searcher'],q:query}, + dataType:'json', + success: function(json) { + if (json.status == 'OK' && json.data.length > 0) { + process(json.data); + } else { + process([]); + } + } + }); + } + }); + + // Checkbox select all + $('.checkbox-select-all').change(function() { + $(this).closest('form').find('.checkbox-select-item').attr('checked', this.checked); + }); + + // Print + var url = window.location.href; + if(url.indexOf('?' + 'print' + '=') != -1 || url.indexOf('&' + 'print' + '=') != -1) { + $("link[media='print']").attr("media", "all"); + window.print(); + } +}); + +/* --- GLOBAL FUNCTIONS --- */ +function htmlEncode(value){ + if (value) { + return jQuery('<div />').text(value).html(); + } else { + return ''; + } +} + +function extractClassParams(str) { + str = $(str).attr('class'); + var params = {}; + var classes = str.split(/\s+/); + for(var i = 0; i < classes.length; i++) { + if (classes[i].indexOf(':') > 0) { + var pair = classes[i].split(':'); + params[pair[0]] = pair[1]; + } + } + return params; +} + +function moreFacets(id) { + $('#narrowGroupHidden_'+id).removeClass('hidden'); + $('#more'+id).addClass('hidden'); +} +function lessFacets(id) { + $('#narrowGroupHidden_'+id).addClass('hidden'); + $('#more'+id).removeClass('hidden'); +} diff --git a/themes/bootstrap/js/core/bootstrap.js b/themes/bootstrap/js/core/bootstrap.js new file mode 100644 index 00000000000..1b90b973d4d --- /dev/null +++ b/themes/bootstrap/js/core/bootstrap.js @@ -0,0 +1,2286 @@ +/* =================================================== + * bootstrap-transition.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-alert.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT NO CONFLICT + * ================= */ + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + /* ALERT DATA-API + * ============== */ + + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery);/* ============================================================ + * bootstrap-button.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON NO CONFLICT + * ================== */ + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + /* BUTTON DATA-API + * =============== */ + + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-carousel.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + if (this.interval) clearInterval(this.interval); + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , getActiveIndex: function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + return this.$items.index(this.$active) + } + + , to: function (pos) { + var activeIndex = this.getActiveIndex() + , that = this + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activeIndex == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + e = $.Event('slide', { + relatedTarget: $next[0] + , direction: direction + }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL NO CONFLICT + * ==================== */ + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + /* CAROUSEL DATA-API + * ================= */ + + $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = $.extend({}, $target.data(), $this.data()) + , slideIndex + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('carousel').pause().to(slideIndex).cycle() + } + + e.preventDefault() + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-collapse.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning || this.$element.hasClass('in')) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning || !this.$element.hasClass('in')) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSE PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSE NO CONFLICT + * ==================== */ + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + /* COLLAPSE DATA-API + * ================= */ + + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-dropdown.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement) { + // if mobile we we use a backdrop because click events don't delegate + $('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus) + } + $parent.toggleClass('open') + } + + $this.focus() + + return false + } + + , keydown: function (e) { + var $this + , $items + , $active + , $parent + , isActive + , index + + if (!/(38|40|27)/.test(e.keyCode)) return + + $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + if (!isActive || (isActive && e.keyCode == 27)) { + if (e.which == 27) $parent.find(toggle).focus() + return $this.click() + } + + $items = $('[role=menu] li:not(.divider):visible a', $parent) + + if (!$items.length) return + + index = $items.index($items.filter(':focus')) + + if (e.keyCode == 38 && index > 0) index-- // up + if (e.keyCode == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items + .eq(index) + .focus() + } + + } + + function clearMenus() { + $('.dropdown-backdrop').remove() + $(toggle).each(function () { + getParent($(this)).removeClass('open') + }) + } + + function getParent($this) { + var selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = selector && $(selector) + + if (!$parent || !$parent.length) $parent = $this.parent() + + return $parent + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.dropdown + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* DROPDOWN NO CONFLICT + * ==================== */ + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(document) + .on('click.dropdown.data-api', clearMenus) + .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle) + .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + +}(window.jQuery); +/* ========================================================= + * bootstrap-modal.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + this.options.remote && this.$element.find('.modal-body').load(this.options.remote) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + , e = $.Event('show') + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.escape() + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } + + that.$element.show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.enforceFocus() + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : + that.$element.focus().trigger('shown') + + }) + } + + , hide: function (e) { + e && e.preventDefault() + + var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + + $(document).off('focusin.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + + $.support.transition && this.$element.hasClass('fade') ? + this.hideWithTransition() : + this.hideModal() + } + + , enforceFocus: function () { + var that = this + $(document).on('focusin.modal', function (e) { + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { + that.$element.focus() + } + }) + } + + , escape: function () { + var that = this + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.modal', function ( e ) { + e.which == 27 && that.hide() + }) + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal') + } + } + + , hideWithTransition: function () { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + that.hideModal() + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + that.hideModal() + }) + } + + , hideModal: function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.removeBackdrop() + that.$element.trigger('hidden') + }) + } + + , removeBackdrop: function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + , backdrop: function (callback) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') + .appendTo(document.body) + + this.$backdrop.click( + this.options.backdrop == 'static' ? + $.proxy(this.$element[0].focus, this.$element[0]) + : $.proxy(this.hide, this) + ) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop.one($.support.transition.end, callback) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + $.support.transition && this.$element.hasClass('fade')? + this.$backdrop.one($.support.transition.end, callback) : + callback() + + } else if (callback) { + callback() + } + } + } + + + /* MODAL PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.modal + + $.fn.modal = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('modal') + , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option]() + else if (options.show) data.show() + }) + } + + $.fn.modal.defaults = { + backdrop: true + , keyboard: true + , show: true + } + + $.fn.modal.Constructor = Modal + + + /* MODAL NO CONFLICT + * ================= */ + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + /* MODAL DATA-API + * ============== */ + + $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + , href = $this.attr('href') + , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7 + , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data()) + + e.preventDefault() + + $target + .modal(option) + .one('hide', function () { + $this.focus() + }) + }) + +}(window.jQuery); +/* =========================================================== + * bootstrap-tooltip.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#tooltips + * Inspired by the original jQuery.tipsy by Jason Frame + * =========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* TOOLTIP PUBLIC CLASS DEFINITION + * =============================== */ + + var Tooltip = function (element, options) { + this.init('tooltip', element, options) + } + + Tooltip.prototype = { + + constructor: Tooltip + + , init: function (type, element, options) { + var eventIn + , eventOut + , triggers + , trigger + , i + + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.enabled = true + + triggers = this.options.trigger.split(' ') + + for (i = triggers.length; i--;) { + trigger = triggers[i] + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + eventIn = trigger == 'hover' ? 'mouseenter' : 'focus' + eventOut = trigger == 'hover' ? 'mouseleave' : 'blur' + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + , getOptions: function (options) { + options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay + , hide: options.delay + } + } + + return options + } + + , enter: function (e) { + var defaults = $.fn[this.type].defaults + , options = {} + , self + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }, this) + + self = $(e.currentTarget)[this.type](options).data(this.type) + + if (!self.options.delay || !self.options.delay.show) return self.show() + + clearTimeout(this.timeout) + self.hoverState = 'in' + this.timeout = setTimeout(function() { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + , leave: function (e) { + var self = $(e.currentTarget)[this.type](this._options).data(this.type) + + if (this.timeout) clearTimeout(this.timeout) + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.hoverState = 'out' + this.timeout = setTimeout(function() { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + , show: function () { + var $tip + , pos + , actualWidth + , actualHeight + , placement + , tp + , e = $.Event('show') + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $tip = this.tip() + this.setContent() + + if (this.options.animation) { + $tip.addClass('fade') + } + + placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + + pos = this.getPosition() + + actualWidth = $tip[0].offsetWidth + actualHeight = $tip[0].offsetHeight + + switch (placement) { + case 'bottom': + tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} + break + case 'top': + tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} + break + case 'left': + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} + break + case 'right': + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width} + break + } + + this.applyPlacement(tp, placement) + this.$element.trigger('shown') + } + } + + , applyPlacement: function(offset, placement){ + var $tip = this.tip() + , width = $tip[0].offsetWidth + , height = $tip[0].offsetHeight + , actualWidth + , actualHeight + , delta + , replace + + $tip + .offset(offset) + .addClass(placement) + .addClass('in') + + actualWidth = $tip[0].offsetWidth + actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + replace = true + } + + if (placement == 'bottom' || placement == 'top') { + delta = 0 + + if (offset.left < 0){ + delta = offset.left * -2 + offset.left = 0 + $tip.offset(offset) + actualWidth = $tip[0].offsetWidth + actualHeight = $tip[0].offsetHeight + } + + this.replaceArrow(delta - width + actualWidth, actualWidth, 'left') + } else { + this.replaceArrow(actualHeight - height, actualHeight, 'top') + } + + if (replace) $tip.offset(offset) + } + + , replaceArrow: function(delta, dimension, position){ + this + .arrow() + .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '') + } + + , setContent: function () { + var $tip = this.tip() + , title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + , hide: function () { + var that = this + , $tip = this.tip() + , e = $.Event('hide') + + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + function removeWithAnimation() { + var timeout = setTimeout(function () { + $tip.off($.support.transition.end).detach() + }, 500) + + $tip.one($.support.transition.end, function () { + clearTimeout(timeout) + $tip.detach() + }) + } + + $.support.transition && this.$tip.hasClass('fade') ? + removeWithAnimation() : + $tip.detach() + + this.$element.trigger('hidden') + + return this + } + + , fixTitle: function () { + var $e = this.$element + if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + , hasContent: function () { + return this.getTitle() + } + + , getPosition: function () { + var el = this.$element[0] + return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : { + width: el.offsetWidth + , height: el.offsetHeight + }, this.$element.offset()) + } + + , getTitle: function () { + var title + , $e = this.$element + , o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + , tip: function () { + return this.$tip = this.$tip || $(this.options.template) + } + + , arrow: function(){ + return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow") + } + + , validate: function () { + if (!this.$element[0].parentNode) { + this.hide() + this.$element = null + this.options = null + } + } + + , enable: function () { + this.enabled = true + } + + , disable: function () { + this.enabled = false + } + + , toggleEnabled: function () { + this.enabled = !this.enabled + } + + , toggle: function (e) { + var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this + self.tip().hasClass('in') ? self.hide() : self.show() + } + + , destroy: function () { + this.hide().$element.off('.' + this.type).removeData(this.type) + } + + } + + + /* TOOLTIP PLUGIN DEFINITION + * ========================= */ + + var old = $.fn.tooltip + + $.fn.tooltip = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('tooltip') + , options = typeof option == 'object' && option + if (!data) $this.data('tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.tooltip.Constructor = Tooltip + + $.fn.tooltip.defaults = { + animation: true + , placement: 'top' + , selector: false + , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' + , trigger: 'hover focus' + , title: '' + , delay: 0 + , html: false + , container: false + } + + + /* TOOLTIP NO CONFLICT + * =================== */ + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(window.jQuery); +/* =========================================================== + * bootstrap-popover.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#popovers + * =========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* POPOVER PUBLIC CLASS DEFINITION + * =============================== */ + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + + /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js + ========================================== */ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, { + + constructor: Popover + + , setContent: function () { + var $tip = this.tip() + , title = this.getTitle() + , content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content) + + $tip.removeClass('fade top bottom left right in') + } + + , hasContent: function () { + return this.getTitle() || this.getContent() + } + + , getContent: function () { + var content + , $e = this.$element + , o = this.options + + content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) + || $e.attr('data-content') + + return content + } + + , tip: function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + } + return this.$tip + } + + , destroy: function () { + this.hide().$element.off('.' + this.type).removeData(this.type) + } + + }) + + + /* POPOVER PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.popover + + $.fn.popover = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('popover') + , options = typeof option == 'object' && option + if (!data) $this.data('popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.popover.Constructor = Popover + + $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, { + placement: 'right' + , trigger: 'click' + , content: '' + , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' + }) + + + /* POPOVER NO CONFLICT + * =================== */ + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(window.jQuery); +/* ============================================================= + * bootstrap-scrollspy.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#scrollspy + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* SCROLLSPY CLASS DEFINITION + * ========================== */ + + function ScrollSpy(element, options) { + var process = $.proxy(this.process, this) + , $element = $(element).is('body') ? $(window) : $(element) + , href + this.options = $.extend({}, $.fn.scrollspy.defaults, options) + this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process) + this.selector = (this.options.target + || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + || '') + ' .nav li > a' + this.$body = $('body') + this.refresh() + this.process() + } + + ScrollSpy.prototype = { + + constructor: ScrollSpy + + , refresh: function () { + var self = this + , $targets + + this.offsets = $([]) + this.targets = $([]) + + $targets = this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + , href = $el.data('target') || $el.attr('href') + , $href = /^#\w/.test(href) && $(href) + return ( $href + && $href.length + && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + self.offsets.push(this[0]) + self.targets.push(this[1]) + }) + } + + , process: function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight + , maxScroll = scrollHeight - this.$scrollElement.height() + , offsets = this.offsets + , targets = this.targets + , activeTarget = this.activeTarget + , i + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets.last()[0]) + && this.activate ( i ) + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) + && this.activate( targets[i] ) + } + } + + , activate: function (target) { + var active + , selector + + this.activeTarget = target + + $(this.selector) + .parent('.active') + .removeClass('active') + + selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + active = $(selector) + .parent('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active.closest('li.dropdown').addClass('active') + } + + active.trigger('activate') + } + + } + + + /* SCROLLSPY PLUGIN DEFINITION + * =========================== */ + + var old = $.fn.scrollspy + + $.fn.scrollspy = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('scrollspy') + , options = typeof option == 'object' && option + if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.scrollspy.Constructor = ScrollSpy + + $.fn.scrollspy.defaults = { + offset: 10 + } + + + /* SCROLLSPY NO CONFLICT + * ===================== */ + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + /* SCROLLSPY DATA-API + * ================== */ + + $(window).on('load', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + $spy.scrollspy($spy.data()) + }) + }) + +}(window.jQuery);/* ======================================================== + * bootstrap-tab.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#tabs + * ======================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* TAB CLASS DEFINITION + * ==================== */ + + var Tab = function (element) { + this.element = $(element) + } + + Tab.prototype = { + + constructor: Tab + + , show: function () { + var $this = this.element + , $ul = $this.closest('ul:not(.dropdown-menu)') + , selector = $this.attr('data-target') + , previous + , $target + , e + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + if ( $this.parent('li').hasClass('active') ) return + + previous = $ul.find('.active:last a')[0] + + e = $.Event('show', { + relatedTarget: previous + }) + + $this.trigger(e) + + if (e.isDefaultPrevented()) return + + $target = $(selector) + + this.activate($this.parent('li'), $ul) + this.activate($target, $target.parent(), function () { + $this.trigger({ + type: 'shown' + , relatedTarget: previous + }) + }) + } + + , activate: function ( element, container, callback) { + var $active = container.find('> .active') + , transition = callback + && $.support.transition + && $active.hasClass('fade') + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + + element.addClass('active') + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if ( element.parent('.dropdown-menu') ) { + element.closest('li.dropdown').addClass('active') + } + + callback && callback() + } + + transition ? + $active.one($.support.transition.end, next) : + next() + + $active.removeClass('in') + } + } + + + /* TAB PLUGIN DEFINITION + * ===================== */ + + var old = $.fn.tab + + $.fn.tab = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('tab') + if (!data) $this.data('tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.tab.Constructor = Tab + + + /* TAB NO CONFLICT + * =============== */ + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + /* TAB DATA-API + * ============ */ + + $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { + e.preventDefault() + $(this).tab('show') + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-typeahead.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#typeahead + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function($){ + + "use strict"; // jshint ;_; + + + /* TYPEAHEAD PUBLIC CLASS DEFINITION + * ================================= */ + + var Typeahead = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.typeahead.defaults, options) + this.matcher = this.options.matcher || this.matcher + this.sorter = this.options.sorter || this.sorter + this.highlighter = this.options.highlighter || this.highlighter + this.updater = this.options.updater || this.updater + this.source = this.options.source + this.$menu = $(this.options.menu) + this.shown = false + this.listen() + } + + Typeahead.prototype = { + + constructor: Typeahead + + , select: function () { + var val = this.$menu.find('.active').attr('data-value') + this.$element + .val(this.updater(val)) + .change() + return this.hide() + } + + , updater: function (item) { + return item + } + + , show: function () { + var pos = $.extend({}, this.$element.position(), { + height: this.$element[0].offsetHeight + }) + + this.$menu + .insertAfter(this.$element) + .css({ + top: pos.top + pos.height + , left: pos.left + }) + .show() + + this.shown = true + return this + } + + , hide: function () { + this.$menu.hide() + this.shown = false + return this + } + + , lookup: function (event) { + var items + + this.query = this.$element.val() + + if (!this.query || this.query.length < this.options.minLength) { + return this.shown ? this.hide() : this + } + + items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source + + return items ? this.process(items) : this + } + + , process: function (items) { + var that = this + + items = $.grep(items, function (item) { + return that.matcher(item) + }) + + items = this.sorter(items) + + if (!items.length) { + return this.shown ? this.hide() : this + } + + return this.render(items.slice(0, this.options.items)).show() + } + + , matcher: function (item) { + return ~item.toLowerCase().indexOf(this.query.toLowerCase()) + } + + , sorter: function (items) { + var beginswith = [] + , caseSensitive = [] + , caseInsensitive = [] + , item + + while (item = items.shift()) { + if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item) + else if (~item.indexOf(this.query)) caseSensitive.push(item) + else caseInsensitive.push(item) + } + + return beginswith.concat(caseSensitive, caseInsensitive) + } + + , highlighter: function (item) { + var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&') + return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { + return '<strong>' + match + '</strong>' + }) + } + + , render: function (items) { + var that = this + + items = $(items).map(function (i, item) { + i = $(that.options.item).attr('data-value', item) + i.find('a').html(that.highlighter(item)) + return i[0] + }) + + items.first().addClass('active') + this.$menu.html(items) + return this + } + + , next: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , next = active.next() + + if (!next.length) { + next = $(this.$menu.find('li')[0]) + } + + next.addClass('active') + } + + , prev: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , prev = active.prev() + + if (!prev.length) { + prev = this.$menu.find('li').last() + } + + prev.addClass('active') + } + + , listen: function () { + this.$element + .on('focus', $.proxy(this.focus, this)) + .on('blur', $.proxy(this.blur, this)) + .on('keypress', $.proxy(this.keypress, this)) + .on('keyup', $.proxy(this.keyup, this)) + + if (this.eventSupported('keydown')) { + this.$element.on('keydown', $.proxy(this.keydown, this)) + } + + this.$menu + .on('click', $.proxy(this.click, this)) + .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) + .on('mouseleave', 'li', $.proxy(this.mouseleave, this)) + } + + , eventSupported: function(eventName) { + var isSupported = eventName in this.$element + if (!isSupported) { + this.$element.setAttribute(eventName, 'return;') + isSupported = typeof this.$element[eventName] === 'function' + } + return isSupported + } + + , move: function (e) { + if (!this.shown) return + + switch(e.keyCode) { + case 9: // tab + case 13: // enter + case 27: // escape + e.preventDefault() + break + + case 38: // up arrow + e.preventDefault() + this.prev() + break + + case 40: // down arrow + e.preventDefault() + this.next() + break + } + + e.stopPropagation() + } + + , keydown: function (e) { + this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27]) + this.move(e) + } + + , keypress: function (e) { + if (this.suppressKeyPressRepeat) return + this.move(e) + } + + , keyup: function (e) { + switch(e.keyCode) { + case 40: // down arrow + case 38: // up arrow + case 16: // shift + case 17: // ctrl + case 18: // alt + break + + case 9: // tab + case 13: // enter + if (!this.shown) return + this.select() + break + + case 27: // escape + if (!this.shown) return + this.hide() + break + + default: + this.lookup() + } + + e.stopPropagation() + e.preventDefault() + } + + , focus: function (e) { + this.focused = true + } + + , blur: function (e) { + var that = this + e.stopPropagation() + e.preventDefault() + setTimeout(function () { + if (!that.$menu.is(':hover')) { + that.hide(); + } + },150) + } + + , click: function (e) { + e.stopPropagation() + e.preventDefault() + this.select() + this.$element.focus() + } + + , mouseenter: function (e) { + this.mousedover = true + this.$menu.find('.active').removeClass('active') + $(e.currentTarget).addClass('active') + } + + , mouseleave: function (e) { + this.mousedover = false + //if (!this.focused && this.shown) this.hide() + } + + } + + + /* TYPEAHEAD PLUGIN DEFINITION + * =========================== */ + + var old = $.fn.typeahead + + $.fn.typeahead = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('typeahead') + , options = typeof option == 'object' && option + if (!data) $this.data('typeahead', (data = new Typeahead(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.typeahead.defaults = { + source: [] + , items: 8 + , menu: '<ul class="typeahead dropdown-menu"></ul>' + , item: '<li><a href="#"></a></li>' + , minLength: 1 + } + + $.fn.typeahead.Constructor = Typeahead + + + /* TYPEAHEAD NO CONFLICT + * =================== */ + + $.fn.typeahead.noConflict = function () { + $.fn.typeahead = old + return this + } + + + /* TYPEAHEAD DATA-API + * ================== */ + + $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { + var $this = $(this) + if ($this.data('typeahead')) return + $this.typeahead($this.data()) + }) + +}(window.jQuery); +/* ========================================================== + * bootstrap-affix.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#affix + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* AFFIX CLASS DEFINITION + * ====================== */ + + var Affix = function (element, options) { + this.options = $.extend({}, $.fn.affix.defaults, options) + this.$window = $(window) + .on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this)) + this.$element = $(element) + this.checkPosition() + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var scrollHeight = $(document).height() + , scrollTop = this.$window.scrollTop() + , position = this.$element.offset() + , offset = this.options.offset + , offsetBottom = offset.bottom + , offsetTop = offset.top + , reset = 'affix affix-top affix-bottom' + , affix + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top() + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() + + affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? + false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? + 'bottom' : offsetTop != null && scrollTop <= offsetTop ? + 'top' : false + + if (this.affixed === affix) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? position.top - scrollTop : null + + this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) + } + + + /* AFFIX PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.affix + + $.fn.affix = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('affix') + , options = typeof option == 'object' && option + if (!data) $this.data('affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.affix.Constructor = Affix + + $.fn.affix.defaults = { + offset: 0 + } + + + /* AFFIX NO CONFLICT + * ================= */ + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + /* AFFIX DATA-API + * ============== */ + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + , data = $spy.data() + + data.offset = data.offset || {} + + data.offsetBottom && (data.offset.bottom = data.offsetBottom) + data.offsetTop && (data.offset.top = data.offsetTop) + + $spy.affix(data) + }) + }) + + +}(window.jQuery); diff --git a/themes/bootstrap/js/core/bootstrap.min.js b/themes/bootstrap/js/core/bootstrap.min.js new file mode 100644 index 00000000000..f9cbdae7c50 --- /dev/null +++ b/themes/bootstrap/js/core/bootstrap.min.js @@ -0,0 +1,6 @@ +/*! +* Bootstrap.js by @fat & @mdo +* Copyright 2012 Twitter, Inc. +* http://www.apache.org/licenses/LICENSE-2.0.txt +*/ +!function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()};var r=e.fn.alert;e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e.fn.alert.noConflict=function(){return e.fn.alert=r,this},e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")};var n=e.fn.button;e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e.fn.button.noConflict=function(){return e.fn.button=n,this},e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(t){var n=this.getActiveIndex(),r=this;if(t>this.$items.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){r.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",e(this.$items[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0],direction:o});if(i.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var t=e(a.$indicators.children()[a.getActiveIndex()]);t&&t.addClass("active")}));if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}};var n=e.fn.carousel;e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.pause().cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e.fn.carousel.noConflict=function(){return e.fn.carousel=n,this},e(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data()),o;i.carousel(s),(o=n.attr("data-slide-to"))&&i.data("carousel").pause().to(o).cycle(),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning||this.$element.hasClass("in"))return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning||!this.$element.hasClass("in"))return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var n=e.fn.collapse;e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=e.extend({},e.fn.collapse.defaults,r.data(),typeof n=="object"&&n);i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e.fn.collapse.noConflict=function(){return e.fn.collapse=n,this},e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(".dropdown-backdrop").remove(),e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=n&&e(n);if(!r||!r.length)r=t.parent();return r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||("ontouchstart"in document.documentElement&&e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click",r),s.toggleClass("open")),n.focus(),!1},keydown:function(n){var r,s,o,u,a,f;if(!/(38|40|27)/.test(n.keyCode))return;r=e(this),n.preventDefault(),n.stopPropagation();if(r.is(".disabled, :disabled"))return;u=i(r),a=u.hasClass("open");if(!a||a&&n.keyCode==27)return n.which==27&&u.find(t).focus(),r.click();s=e("[role=menu] li:not(.divider):visible a",u);if(!s.length)return;f=s.index(s.filter(":focus")),n.keyCode==38&&f>0&&f--,n.keyCode==40&&f<s.length-1&&f++,~f||(f=0),s.eq(f).focus()}};var s=e.fn.dropdown;e.fn.dropdown=function(t){return this.each(function(){var r=e(this),i=r.data("dropdown");i||r.data("dropdown",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.dropdown.Constructor=n,e.fn.dropdown.noConflict=function(){return e.fn.dropdown=s,this},e(document).on("click.dropdown.data-api",r).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown.data-api",t,n.prototype.toggle).on("keydown.dropdown.data-api",t+", [role=menu]",n.prototype.keydown)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=n,this.$element=e(t).delegate('[data-dismiss="modal"]',"click.dismiss.modal",e.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};t.prototype={constructor:t,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var t=this,n=e.Event("show");this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var n=e.support.transition&&t.$element.hasClass("fade");t.$element.parent().length||t.$element.appendTo(document.body),t.$element.show(),n&&t.$element[0].offsetWidth,t.$element.addClass("in").attr("aria-hidden",!1),t.enforceFocus(),n?t.$element.one(e.support.transition.end,function(){t.$element.focus().trigger("shown")}):t.$element.focus().trigger("shown")})},hide:function(t){t&&t.preventDefault();var n=this;t=e.Event("hide"),this.$element.trigger(t);if(!this.isShown||t.isDefaultPrevented())return;this.isShown=!1,this.escape(),e(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),e.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var t=this;e(document).on("focusin.modal",function(e){t.$element[0]!==e.target&&!t.$element.has(e.target).length&&t.$element.focus()})},escape:function(){var e=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(t){t.which==27&&e.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var t=this,n=setTimeout(function(){t.$element.off(e.support.transition.end),t.hideModal()},500);this.$element.one(e.support.transition.end,function(){clearTimeout(n),t.hideModal()})},hideModal:function(){var e=this;this.$element.hide(),this.backdrop(function(){e.removeBackdrop(),e.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(t){var n=this,r=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var i=e.support.transition&&r;this.$backdrop=e('<div class="modal-backdrop '+r+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!t)return;i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,t):t()):t&&t()}};var n=e.fn.modal;e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e.fn.modal.noConflict=function(){return e.fn.modal=n,this},e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s,o,u,a;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,o=this.options.trigger.split(" ");for(a=o.length;a--;)u=o[a],u=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):u!="manual"&&(i=u=="hover"?"mouseenter":"focus",s=u=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this)));this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,this.$element.data(),t),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e.fn[this.type].defaults,r={},i;this._options&&e.each(this._options,function(e,t){n[e]!=t&&(r[e]=t)},this),i=e(t.currentTarget)[this.type](r).data(this.type);if(!i.options.delay||!i.options.delay.show)return i.show();clearTimeout(this.timeout),i.hoverState="in",this.timeout=setTimeout(function(){i.hoverState=="in"&&i.show()},i.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var t,n,r,i,s,o,u=e.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(u);if(u.isDefaultPrevented())return;t=this.tip(),this.setContent(),this.options.animation&&t.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,t[0],this.$element[0]):this.options.placement,t.detach().css({top:0,left:0,display:"block"}),this.options.container?t.appendTo(this.options.container):t.insertAfter(this.$element),n=this.getPosition(),r=t[0].offsetWidth,i=t[0].offsetHeight;switch(s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}this.applyPlacement(o,s),this.$element.trigger("shown")}},applyPlacement:function(e,t){var n=this.tip(),r=n[0].offsetWidth,i=n[0].offsetHeight,s,o,u,a;n.offset(e).addClass(t).addClass("in"),s=n[0].offsetWidth,o=n[0].offsetHeight,t=="top"&&o!=i&&(e.top=e.top+i-o,a=!0),t=="bottom"||t=="top"?(u=0,e.left<0&&(u=e.left*-2,e.left=0,n.offset(e),s=n[0].offsetWidth,o=n[0].offsetHeight),this.replaceArrow(u-r+s,s,"left")):this.replaceArrow(o-i,o,"top"),a&&n.offset(e)},replaceArrow:function(e,t,n){this.arrow().css(n,e?50*(1-e/t)+"%":"")},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function i(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip(),r=e.Event("hide");this.$element.trigger(r);if(r.isDefaultPrevented())return;return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?i():n.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var t=this.$element[0];return e.extend({},typeof t.getBoundingClientRect=="function"?t.getBoundingClientRect():{width:t.offsetWidth,height:t.offsetHeight},this.$element.offset())},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=t?e(t.currentTarget)[this.type](this._options).data(this.type):this;n.tip().hasClass("in")?n.hide():n.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var n=e.fn.tooltip;e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.fn.tooltip.noConflict=function(){return e.fn.tooltip=n,this}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=(typeof n.content=="function"?n.content.call(t[0]):n.content)||t.attr("data-content"),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var n=e.fn.popover;e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),e.fn.popover.noConflict=function(){return e.fn.popover=n,this}}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var n=e(this),r=n.data("target")||n.attr("href"),i=/^#\w/.test(r)&&e(r);return i&&i.length&&[[i.position().top+(!e.isWindow(t.$scrollElement.get(0))&&t.$scrollElement.scrollTop()),r]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}};var n=e.fn.scrollspy;e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=n,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}};var n=e.fn.tab;e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e.fn.tab.noConflict=function(){return e.fn.tab=n,this},e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=e(this.options.menu),this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:t.top+t.height,left:t.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("focus",e.proxy(this.focus,this)).on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this)).on("mouseleave","li",e.proxy(this.mouseleave,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(e){this.focused=!0},blur:function(e){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(t){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")},mouseleave:function(e){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var n=e.fn.typeahead;e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e.fn.typeahead.noConflict=function(){return e.fn.typeahead=n,this},e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))};var n=e.fn.affix;e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e.fn.affix.noConflict=function(){return e.fn.affix=n,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery); \ No newline at end of file diff --git a/themes/bootstrap/js/core/jquery.min.js b/themes/bootstrap/js/core/jquery.min.js new file mode 100644 index 00000000000..38837795279 --- /dev/null +++ b/themes/bootstrap/js/core/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.3 jquery.com | jquery.org/license */ +(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); \ No newline at end of file diff --git a/themes/bootstrap/js/flot/LICENSE.txt b/themes/bootstrap/js/flot/LICENSE.txt new file mode 100644 index 00000000000..07d5b2094d1 --- /dev/null +++ b/themes/bootstrap/js/flot/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2007-2009 IOLA and Ole Laursen + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/bootstrap/js/flot/excanvas.min.js b/themes/bootstrap/js/flot/excanvas.min.js new file mode 100644 index 00000000000..12c74f7bea8 --- /dev/null +++ b/themes/bootstrap/js/flot/excanvas.min.js @@ -0,0 +1 @@ +if(!document.createElement("canvas").getContext){(function(){var z=Math;var K=z.round;var J=z.sin;var U=z.cos;var b=z.abs;var k=z.sqrt;var D=10;var F=D/2;function T(){return this.context_||(this.context_=new W(this))}var O=Array.prototype.slice;function G(i,j,m){var Z=O.call(arguments,2);return function(){return i.apply(j,Z.concat(O.call(arguments)))}}function AD(Z){return String(Z).replace(/&/g,"&").replace(/"/g,""")}function r(i){if(!i.namespaces.g_vml_){i.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!i.namespaces.g_o_){i.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!i.styleSheets.ex_canvas_){var Z=i.createStyleSheet();Z.owningElement.id="ex_canvas_";Z.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}r(document);var E={init:function(Z){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var i=Z||document;i.createElement("canvas");i.attachEvent("onreadystatechange",G(this.init_,this,i))}},init_:function(m){var j=m.getElementsByTagName("canvas");for(var Z=0;Z<j.length;Z++){this.initElement(j[Z])}},initElement:function(i){if(!i.getContext){i.getContext=T;r(i.ownerDocument);i.innerHTML="";i.attachEvent("onpropertychange",S);i.attachEvent("onresize",w);var Z=i.attributes;if(Z.width&&Z.width.specified){i.style.width=Z.width.nodeValue+"px"}else{i.width=i.clientWidth}if(Z.height&&Z.height.specified){i.style.height=Z.height.nodeValue+"px"}else{i.height=i.clientHeight}}return i}};function S(i){var Z=i.srcElement;switch(i.propertyName){case"width":Z.getContext().clearRect();Z.style.width=Z.attributes.width.nodeValue+"px";Z.firstChild.style.width=Z.clientWidth+"px";break;case"height":Z.getContext().clearRect();Z.style.height=Z.attributes.height.nodeValue+"px";Z.firstChild.style.height=Z.clientHeight+"px";break}}function w(i){var Z=i.srcElement;if(Z.firstChild){Z.firstChild.style.width=Z.clientWidth+"px";Z.firstChild.style.height=Z.clientHeight+"px"}}E.init();var I=[];for(var AC=0;AC<16;AC++){for(var AB=0;AB<16;AB++){I[AC*16+AB]=AC.toString(16)+AB.toString(16)}}function V(){return[[1,0,0],[0,1,0],[0,0,1]]}function d(m,j){var i=V();for(var Z=0;Z<3;Z++){for(var AF=0;AF<3;AF++){var p=0;for(var AE=0;AE<3;AE++){p+=m[Z][AE]*j[AE][AF]}i[Z][AF]=p}}return i}function Q(i,Z){Z.fillStyle=i.fillStyle;Z.lineCap=i.lineCap;Z.lineJoin=i.lineJoin;Z.lineWidth=i.lineWidth;Z.miterLimit=i.miterLimit;Z.shadowBlur=i.shadowBlur;Z.shadowColor=i.shadowColor;Z.shadowOffsetX=i.shadowOffsetX;Z.shadowOffsetY=i.shadowOffsetY;Z.strokeStyle=i.strokeStyle;Z.globalAlpha=i.globalAlpha;Z.font=i.font;Z.textAlign=i.textAlign;Z.textBaseline=i.textBaseline;Z.arcScaleX_=i.arcScaleX_;Z.arcScaleY_=i.arcScaleY_;Z.lineScale_=i.lineScale_}var B={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};function g(i){var m=i.indexOf("(",3);var Z=i.indexOf(")",m+1);var j=i.substring(m+1,Z).split(",");if(j.length==4&&i.substr(3,1)=="a"){alpha=Number(j[3])}else{j[3]=1}return j}function C(Z){return parseFloat(Z)/100}function N(i,j,Z){return Math.min(Z,Math.max(j,i))}function c(AF){var j,i,Z;h=parseFloat(AF[0])/360%360;if(h<0){h++}s=N(C(AF[1]),0,1);l=N(C(AF[2]),0,1);if(s==0){j=i=Z=l}else{var m=l<0.5?l*(1+s):l+s-l*s;var AE=2*l-m;j=A(AE,m,h+1/3);i=A(AE,m,h);Z=A(AE,m,h-1/3)}return"#"+I[Math.floor(j*255)]+I[Math.floor(i*255)]+I[Math.floor(Z*255)]}function A(i,Z,j){if(j<0){j++}if(j>1){j--}if(6*j<1){return i+(Z-i)*6*j}else{if(2*j<1){return Z}else{if(3*j<2){return i+(Z-i)*(2/3-j)*6}else{return i}}}}function Y(Z){var AE,p=1;Z=String(Z);if(Z.charAt(0)=="#"){AE=Z}else{if(/^rgb/.test(Z)){var m=g(Z);var AE="#",AF;for(var j=0;j<3;j++){if(m[j].indexOf("%")!=-1){AF=Math.floor(C(m[j])*255)}else{AF=Number(m[j])}AE+=I[N(AF,0,255)]}p=m[3]}else{if(/^hsl/.test(Z)){var m=g(Z);AE=c(m);p=m[3]}else{AE=B[Z]||Z}}}return{color:AE,alpha:p}}var L={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var f={};function X(Z){if(f[Z]){return f[Z]}var m=document.createElement("div");var j=m.style;try{j.font=Z}catch(i){}return f[Z]={style:j.fontStyle||L.style,variant:j.fontVariant||L.variant,weight:j.fontWeight||L.weight,size:j.fontSize||L.size,family:j.fontFamily||L.family}}function P(j,i){var Z={};for(var AF in j){Z[AF]=j[AF]}var AE=parseFloat(i.currentStyle.fontSize),m=parseFloat(j.size);if(typeof j.size=="number"){Z.size=j.size}else{if(j.size.indexOf("px")!=-1){Z.size=m}else{if(j.size.indexOf("em")!=-1){Z.size=AE*m}else{if(j.size.indexOf("%")!=-1){Z.size=(AE/100)*m}else{if(j.size.indexOf("pt")!=-1){Z.size=m/0.75}else{Z.size=AE}}}}}Z.size*=0.981;return Z}function AA(Z){return Z.style+" "+Z.variant+" "+Z.weight+" "+Z.size+"px "+Z.family}function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function W(i){this.m_=V();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=D*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var Z=i.ownerDocument.createElement("div");Z.style.width=i.clientWidth+"px";Z.style.height=i.clientHeight+"px";Z.style.overflow="hidden";Z.style.position="absolute";i.appendChild(Z);this.element_=Z;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var M=W.prototype;M.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};M.beginPath=function(){this.currentPath_=[]};M.moveTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"moveTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.lineTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"lineTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.bezierCurveTo=function(j,i,AI,AH,AG,AE){var Z=this.getCoords_(AG,AE);var AF=this.getCoords_(j,i);var m=this.getCoords_(AI,AH);e(this,AF,m,Z)};function e(Z,m,j,i){Z.currentPath_.push({type:"bezierCurveTo",cp1x:m.x,cp1y:m.y,cp2x:j.x,cp2y:j.y,x:i.x,y:i.y});Z.currentX_=i.x;Z.currentY_=i.y}M.quadraticCurveTo=function(AG,j,i,Z){var AF=this.getCoords_(AG,j);var AE=this.getCoords_(i,Z);var AH={x:this.currentX_+2/3*(AF.x-this.currentX_),y:this.currentY_+2/3*(AF.y-this.currentY_)};var m={x:AH.x+(AE.x-this.currentX_)/3,y:AH.y+(AE.y-this.currentY_)/3};e(this,AH,m,AE)};M.arc=function(AJ,AH,AI,AE,i,j){AI*=D;var AN=j?"at":"wa";var AK=AJ+U(AE)*AI-F;var AM=AH+J(AE)*AI-F;var Z=AJ+U(i)*AI-F;var AL=AH+J(i)*AI-F;if(AK==Z&&!j){AK+=0.125}var m=this.getCoords_(AJ,AH);var AG=this.getCoords_(AK,AM);var AF=this.getCoords_(Z,AL);this.currentPath_.push({type:AN,x:m.x,y:m.y,radius:AI,xStart:AG.x,yStart:AG.y,xEnd:AF.x,yEnd:AF.y})};M.rect=function(j,i,Z,m){this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath()};M.strokeRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.stroke();this.currentPath_=p};M.fillRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.fill();this.currentPath_=p};M.createLinearGradient=function(i,m,Z,j){var p=new v("gradient");p.x0_=i;p.y0_=m;p.x1_=Z;p.y1_=j;return p};M.createRadialGradient=function(m,AE,j,i,p,Z){var AF=new v("gradientradial");AF.x0_=m;AF.y0_=AE;AF.r0_=j;AF.x1_=i;AF.y1_=p;AF.r1_=Z;return AF};M.drawImage=function(AO,j){var AH,AF,AJ,AV,AM,AK,AQ,AX;var AI=AO.runtimeStyle.width;var AN=AO.runtimeStyle.height;AO.runtimeStyle.width="auto";AO.runtimeStyle.height="auto";var AG=AO.width;var AT=AO.height;AO.runtimeStyle.width=AI;AO.runtimeStyle.height=AN;if(arguments.length==3){AH=arguments[1];AF=arguments[2];AM=AK=0;AQ=AJ=AG;AX=AV=AT}else{if(arguments.length==5){AH=arguments[1];AF=arguments[2];AJ=arguments[3];AV=arguments[4];AM=AK=0;AQ=AG;AX=AT}else{if(arguments.length==9){AM=arguments[1];AK=arguments[2];AQ=arguments[3];AX=arguments[4];AH=arguments[5];AF=arguments[6];AJ=arguments[7];AV=arguments[8]}else{throw Error("Invalid number of arguments")}}}var AW=this.getCoords_(AH,AF);var m=AQ/2;var i=AX/2;var AU=[];var Z=10;var AE=10;AU.push(" <g_vml_:group",' coordsize="',D*Z,",",D*AE,'"',' coordorigin="0,0"',' style="width:',Z,"px;height:",AE,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var p=[];p.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",K(AW.x/D),",","Dy=",K(AW.y/D),"");var AS=AW;var AR=this.getCoords_(AH+AJ,AF);var AP=this.getCoords_(AH,AF+AV);var AL=this.getCoords_(AH+AJ,AF+AV);AS.x=z.max(AS.x,AR.x,AP.x,AL.x);AS.y=z.max(AS.y,AR.y,AP.y,AL.y);AU.push("padding:0 ",K(AS.x/D),"px ",K(AS.y/D),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",p.join(""),", sizingmethod='clip');")}else{AU.push("top:",K(AW.y/D),"px;left:",K(AW.x/D),"px;")}AU.push(' ">','<g_vml_:image src="',AO.src,'"',' style="width:',D*AJ,"px;"," height:",D*AV,'px"',' cropleft="',AM/AG,'"',' croptop="',AK/AT,'"',' cropright="',(AG-AM-AQ)/AG,'"',' cropbottom="',(AT-AK-AX)/AT,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AH<this.currentPath_.length;AH+=AE){var AK=[];var AF=false;AK.push("<g_vml_:shape",' filled="',!!AM,'"',' style="position:absolute;width:',m,"px;height:",AN,'px;"',' coordorigin="0,0"',' coordsize="',D*m,",",D*AN,'"',' stroked="',!AM,'"',' path="');var AO=false;for(var AI=AH;AI<Math.min(AH+AE,this.currentPath_.length);AI++){if(AI%AE==0&&AI>0){AK.push(" m ",K(this.currentPath_[AI-1].x),",",K(this.currentPath_[AI-1].y))}var Z=this.currentPath_[AI];var AJ;switch(Z.type){case"moveTo":AJ=Z;AK.push(" m ",K(Z.x),",",K(Z.y));break;case"lineTo":AK.push(" l ",K(Z.x),",",K(Z.y));break;case"close":AK.push(" x ");Z=null;break;case"bezierCurveTo":AK.push(" c ",K(Z.cp1x),",",K(Z.cp1y),",",K(Z.cp2x),",",K(Z.cp2y),",",K(Z.x),",",K(Z.y));break;case"at":case"wa":AK.push(" ",Z.type," ",K(Z.x-this.arcScaleX_*Z.radius),",",K(Z.y-this.arcScaleY_*Z.radius)," ",K(Z.x+this.arcScaleX_*Z.radius),",",K(Z.y+this.arcScaleY_*Z.radius)," ",K(Z.xStart),",",K(Z.yStart)," ",K(Z.xEnd),",",K(Z.yEnd));break}if(Z){if(AG.x==null||Z.x<AG.x){AG.x=Z.x}if(AL.x==null||Z.x>AL.x){AL.x=Z.x}if(AG.y==null||Z.y<AG.y){AG.y=Z.y}if(AL.y==null||Z.y>AL.y){AL.y=Z.y}}}AK.push(' ">');if(!AM){R(this,AK)}else{a(this,AK,AG,AL)}AK.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",AK.join(""))}};function R(j,AE){var i=Y(j.strokeStyle);var m=i.color;var p=i.alpha*j.globalAlpha;var Z=j.lineScale_*j.lineWidth;if(Z<1){p*=Z}AE.push("<g_vml_:stroke",' opacity="',p,'"',' joinstyle="',j.lineJoin,'"',' miterlimit="',j.miterLimit,'"',' endcap="',t(j.lineCap),'"',' weight="',Z,'px"',' color="',m,'" />')}function a(AO,AG,Ah,AP){var AH=AO.fillStyle;var AY=AO.arcScaleX_;var AX=AO.arcScaleY_;var Z=AP.x-Ah.x;var m=AP.y-Ah.y;if(AH instanceof v){var AL=0;var Ac={x:0,y:0};var AU=0;var AK=1;if(AH.type_=="gradient"){var AJ=AH.x0_/AY;var j=AH.y0_/AX;var AI=AH.x1_/AY;var Aj=AH.y1_/AX;var Ag=AO.getCoords_(AJ,j);var Af=AO.getCoords_(AI,Aj);var AE=Af.x-Ag.x;var p=Af.y-Ag.y;AL=Math.atan2(AE,p)*180/Math.PI;if(AL<0){AL+=360}if(AL<0.000001){AL=0}}else{var Ag=AO.getCoords_(AH.x0_,AH.y0_);Ac={x:(Ag.x-Ah.x)/Z,y:(Ag.y-Ah.y)/m};Z/=AY*D;m/=AX*D;var Aa=z.max(Z,m);AU=2*AH.r0_/Aa;AK=2*AH.r1_/Aa-AU}var AS=AH.colors_;AS.sort(function(Ak,i){return Ak.offset-i.offset});var AN=AS.length;var AR=AS[0].color;var AQ=AS[AN-1].color;var AW=AS[0].alpha*AO.globalAlpha;var AV=AS[AN-1].alpha*AO.globalAlpha;var Ab=[];for(var Ae=0;Ae<AN;Ae++){var AM=AS[Ae];Ab.push(AM.offset*AK+AU+" "+AM.color)}AG.push('<g_vml_:fill type="',AH.type_,'"',' method="none" focus="100%"',' color="',AR,'"',' color2="',AQ,'"',' colors="',Ab.join(","),'"',' opacity="',AV,'"',' g_o_:opacity2="',AW,'"',' angle="',AL,'"',' focusposition="',Ac.x,",",Ac.y,'" />')}else{if(AH instanceof u){if(Z&&m){var AF=-Ah.x;var AZ=-Ah.y;AG.push("<g_vml_:fill",' position="',AF/Z*AY*AY,",",AZ/m*AX*AX,'"',' type="tile"',' src="',AH.src_,'" />')}}else{var Ai=Y(AO.fillStyle);var AT=Ai.color;var Ad=Ai.alpha*AO.globalAlpha;AG.push('<g_vml_:fill color="',AT,'" opacity="',Ad,'" />')}}}M.fill=function(){this.stroke(true)};M.closePath=function(){this.currentPath_.push({type:"close"})};M.getCoords_=function(j,i){var Z=this.m_;return{x:D*(j*Z[0][0]+i*Z[1][0]+Z[2][0])-F,y:D*(j*Z[0][1]+i*Z[1][1]+Z[2][1])-F}};M.save=function(){var Z={};Q(this,Z);this.aStack_.push(Z);this.mStack_.push(this.m_);this.m_=d(V(),this.m_)};M.restore=function(){if(this.aStack_.length){Q(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function H(Z){return isFinite(Z[0][0])&&isFinite(Z[0][1])&&isFinite(Z[1][0])&&isFinite(Z[1][1])&&isFinite(Z[2][0])&&isFinite(Z[2][1])}function y(i,Z,j){if(!H(Z)){return }i.m_=Z;if(j){var p=Z[0][0]*Z[1][1]-Z[0][1]*Z[1][0];i.lineScale_=k(b(p))}}M.translate=function(j,i){var Z=[[1,0,0],[0,1,0],[j,i,1]];y(this,d(Z,this.m_),false)};M.rotate=function(i){var m=U(i);var j=J(i);var Z=[[m,j,0],[-j,m,0],[0,0,1]];y(this,d(Z,this.m_),false)};M.scale=function(j,i){this.arcScaleX_*=j;this.arcScaleY_*=i;var Z=[[j,0,0],[0,i,0],[0,0,1]];y(this,d(Z,this.m_),true)};M.transform=function(p,m,AF,AE,i,Z){var j=[[p,m,0],[AF,AE,0],[i,Z,1]];y(this,d(j,this.m_),true)};M.setTransform=function(AE,p,AG,AF,j,i){var Z=[[AE,p,0],[AG,AF,0],[j,i,1]];y(this,Z,true)};M.drawText_=function(AK,AI,AH,AN,AG){var AM=this.m_,AQ=1000,i=0,AP=AQ,AF={x:0,y:0},AE=[];var Z=P(X(this.font),this.element_);var j=AA(Z);var AR=this.element_.currentStyle;var p=this.textAlign.toLowerCase();switch(p){case"left":case"center":case"right":break;case"end":p=AR.direction=="ltr"?"right":"left";break;case"start":p=AR.direction=="rtl"?"right":"left";break;default:p="left"}switch(this.textBaseline){case"hanging":case"top":AF.y=Z.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":AF.y=-Z.size/2.25;break}switch(p){case"right":i=AQ;AP=0.05;break;case"center":i=AP=AQ/2;break}var AO=this.getCoords_(AI+AF.x,AH+AF.y);AE.push('<g_vml_:line from="',-i,' 0" to="',AP,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!AG,'" stroked="',!!AG,'" style="position:absolute;width:1px;height:1px;">');if(AG){R(this,AE)}else{a(this,AE,{x:-i,y:0},{x:AP,y:Z.size})}var AL=AM[0][0].toFixed(3)+","+AM[1][0].toFixed(3)+","+AM[0][1].toFixed(3)+","+AM[1][1].toFixed(3)+",0,0";var AJ=K(AO.x/D)+","+K(AO.y/D);AE.push('<g_vml_:skew on="t" matrix="',AL,'" ',' offset="',AJ,'" origin="',i,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',AD(AK),'" style="v-text-align:',p,";font:",AD(j),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",AE.join(""))};M.fillText=function(j,Z,m,i){this.drawText_(j,Z,m,i,false)};M.strokeText=function(j,Z,m,i){this.drawText_(j,Z,m,i,true)};M.measureText=function(j){if(!this.textMeasureEl_){var Z='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';this.element_.insertAdjacentHTML("beforeEnd",Z);this.textMeasureEl_=this.element_.lastChild}var i=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(i.createTextNode(j));return{width:this.textMeasureEl_.offsetWidth}};M.clip=function(){};M.arcTo=function(){};M.createPattern=function(i,Z){return new u(i,Z)};function v(Z){this.type_=Z;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}v.prototype.addColorStop=function(i,Z){Z=Y(Z);this.colors_.push({offset:i,color:Z.color,alpha:Z.alpha})};function u(i,Z){q(i);switch(Z){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=Z;break;default:n("SYNTAX_ERR")}this.src_=i.src;this.width_=i.width;this.height_=i.height}function n(Z){throw new o(Z)}function q(Z){if(!Z||Z.nodeType!=1||Z.tagName!="IMG"){n("TYPE_MISMATCH_ERR")}if(Z.readyState!="complete"){n("INVALID_STATE_ERR")}}function o(Z){this.code=this[Z];this.message=Z+": DOM Exception "+this.code}var x=o.prototype=new Error;x.INDEX_SIZE_ERR=1;x.DOMSTRING_SIZE_ERR=2;x.HIERARCHY_REQUEST_ERR=3;x.WRONG_DOCUMENT_ERR=4;x.INVALID_CHARACTER_ERR=5;x.NO_DATA_ALLOWED_ERR=6;x.NO_MODIFICATION_ALLOWED_ERR=7;x.NOT_FOUND_ERR=8;x.NOT_SUPPORTED_ERR=9;x.INUSE_ATTRIBUTE_ERR=10;x.INVALID_STATE_ERR=11;x.SYNTAX_ERR=12;x.INVALID_MODIFICATION_ERR=13;x.NAMESPACE_ERR=14;x.INVALID_ACCESS_ERR=15;x.VALIDATION_ERR=16;x.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=E;CanvasRenderingContext2D=W;CanvasGradient=v;CanvasPattern=u;DOMException=o})()}; \ No newline at end of file diff --git a/themes/bootstrap/js/flot/jquery.flot.min.js b/themes/bootstrap/js/flot/jquery.flot.min.js new file mode 100644 index 00000000000..4467fc5d8cd --- /dev/null +++ b/themes/bootstrap/js/flot/jquery.flot.min.js @@ -0,0 +1,6 @@ +/* Javascript plotting library for jQuery, v. 0.7. + * + * Released under the MIT license by IOLA, December 2007. + * + */ +(function(b){b.color={};b.color.make=function(d,e,g,f){var c={};c.r=d||0;c.g=e||0;c.b=g||0;c.a=f!=null?f:1;c.add=function(h,j){for(var k=0;k<h.length;++k){c[h.charAt(k)]+=j}return c.normalize()};c.scale=function(h,j){for(var k=0;k<h.length;++k){c[h.charAt(k)]*=j}return c.normalize()};c.toString=function(){if(c.a>=1){return"rgb("+[c.r,c.g,c.b].join(",")+")"}else{return"rgba("+[c.r,c.g,c.b,c.a].join(",")+")"}};c.normalize=function(){function h(k,j,l){return j<k?k:(j>l?l:j)}c.r=h(0,parseInt(c.r),255);c.g=h(0,parseInt(c.g),255);c.b=h(0,parseInt(c.b),255);c.a=h(0,c.a,1);return c};c.clone=function(){return b.color.make(c.r,c.b,c.g,c.a)};return c.normalize()};b.color.extract=function(d,e){var c;do{c=d.css(e).toLowerCase();if(c!=""&&c!="transparent"){break}d=d.parent()}while(!b.nodeName(d.get(0),"body"));if(c=="rgba(0, 0, 0, 0)"){c="transparent"}return b.color.parse(c)};b.color.parse=function(c){var d,f=b.color.make;if(d=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c)){return f(parseInt(d[1],10),parseInt(d[2],10),parseInt(d[3],10))}if(d=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(c)){return f(parseInt(d[1],10),parseInt(d[2],10),parseInt(d[3],10),parseFloat(d[4]))}if(d=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c)){return f(parseFloat(d[1])*2.55,parseFloat(d[2])*2.55,parseFloat(d[3])*2.55)}if(d=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(c)){return f(parseFloat(d[1])*2.55,parseFloat(d[2])*2.55,parseFloat(d[3])*2.55,parseFloat(d[4]))}if(d=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c)){return f(parseInt(d[1],16),parseInt(d[2],16),parseInt(d[3],16))}if(d=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c)){return f(parseInt(d[1]+d[1],16),parseInt(d[2]+d[2],16),parseInt(d[3]+d[3],16))}var e=b.trim(c).toLowerCase();if(e=="transparent"){return f(255,255,255,0)}else{d=a[e]||[0,0,0];return f(d[0],d[1],d[2])}};var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function(c){function b(av,ai,J,af){var Q=[],O={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:0.85},xaxis:{show:null,position:"bottom",mode:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null,monthNames:null,timeformat:null,twelveHourClock:false},yaxis:{autoscaleMargin:0.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false},shadowSize:3},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},hooks:{}},az=null,ad=null,y=null,H=null,A=null,p=[],aw=[],q={left:0,right:0,top:0,bottom:0},G=0,I=0,h=0,w=0,ak={processOptions:[],processRawData:[],processDatapoints:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},aq=this;aq.setData=aj;aq.setupGrid=t;aq.draw=W;aq.getPlaceholder=function(){return av};aq.getCanvas=function(){return az};aq.getPlotOffset=function(){return q};aq.width=function(){return h};aq.height=function(){return w};aq.offset=function(){var aB=y.offset();aB.left+=q.left;aB.top+=q.top;return aB};aq.getData=function(){return Q};aq.getAxes=function(){var aC={},aB;c.each(p.concat(aw),function(aD,aE){if(aE){aC[aE.direction+(aE.n!=1?aE.n:"")+"axis"]=aE}});return aC};aq.getXAxes=function(){return p};aq.getYAxes=function(){return aw};aq.c2p=C;aq.p2c=ar;aq.getOptions=function(){return O};aq.highlight=x;aq.unhighlight=T;aq.triggerRedrawOverlay=f;aq.pointOffset=function(aB){return{left:parseInt(p[aA(aB,"x")-1].p2c(+aB.x)+q.left),top:parseInt(aw[aA(aB,"y")-1].p2c(+aB.y)+q.top)}};aq.shutdown=ag;aq.resize=function(){B();g(az);g(ad)};aq.hooks=ak;F(aq);Z(J);X();aj(ai);t();W();ah();function an(aD,aB){aB=[aq].concat(aB);for(var aC=0;aC<aD.length;++aC){aD[aC].apply(this,aB)}}function F(){for(var aB=0;aB<af.length;++aB){var aC=af[aB];aC.init(aq);if(aC.options){c.extend(true,O,aC.options)}}}function Z(aC){var aB;c.extend(true,O,aC);if(O.xaxis.color==null){O.xaxis.color=O.grid.color}if(O.yaxis.color==null){O.yaxis.color=O.grid.color}if(O.xaxis.tickColor==null){O.xaxis.tickColor=O.grid.tickColor}if(O.yaxis.tickColor==null){O.yaxis.tickColor=O.grid.tickColor}if(O.grid.borderColor==null){O.grid.borderColor=O.grid.color}if(O.grid.tickColor==null){O.grid.tickColor=c.color.parse(O.grid.color).scale("a",0.22).toString()}for(aB=0;aB<Math.max(1,O.xaxes.length);++aB){O.xaxes[aB]=c.extend(true,{},O.xaxis,O.xaxes[aB])}for(aB=0;aB<Math.max(1,O.yaxes.length);++aB){O.yaxes[aB]=c.extend(true,{},O.yaxis,O.yaxes[aB])}if(O.xaxis.noTicks&&O.xaxis.ticks==null){O.xaxis.ticks=O.xaxis.noTicks}if(O.yaxis.noTicks&&O.yaxis.ticks==null){O.yaxis.ticks=O.yaxis.noTicks}if(O.x2axis){O.xaxes[1]=c.extend(true,{},O.xaxis,O.x2axis);O.xaxes[1].position="top"}if(O.y2axis){O.yaxes[1]=c.extend(true,{},O.yaxis,O.y2axis);O.yaxes[1].position="right"}if(O.grid.coloredAreas){O.grid.markings=O.grid.coloredAreas}if(O.grid.coloredAreasColor){O.grid.markingsColor=O.grid.coloredAreasColor}if(O.lines){c.extend(true,O.series.lines,O.lines)}if(O.points){c.extend(true,O.series.points,O.points)}if(O.bars){c.extend(true,O.series.bars,O.bars)}if(O.shadowSize!=null){O.series.shadowSize=O.shadowSize}for(aB=0;aB<O.xaxes.length;++aB){V(p,aB+1).options=O.xaxes[aB]}for(aB=0;aB<O.yaxes.length;++aB){V(aw,aB+1).options=O.yaxes[aB]}for(var aD in ak){if(O.hooks[aD]&&O.hooks[aD].length){ak[aD]=ak[aD].concat(O.hooks[aD])}}an(ak.processOptions,[O])}function aj(aB){Q=Y(aB);ax();z()}function Y(aE){var aC=[];for(var aB=0;aB<aE.length;++aB){var aD=c.extend(true,{},O.series);if(aE[aB].data!=null){aD.data=aE[aB].data;delete aE[aB].data;c.extend(true,aD,aE[aB]);aE[aB].data=aD.data}else{aD.data=aE[aB]}aC.push(aD)}return aC}function aA(aC,aD){var aB=aC[aD+"axis"];if(typeof aB=="object"){aB=aB.n}if(typeof aB!="number"){aB=1}return aB}function m(){return c.grep(p.concat(aw),function(aB){return aB})}function C(aE){var aC={},aB,aD;for(aB=0;aB<p.length;++aB){aD=p[aB];if(aD&&aD.used){aC["x"+aD.n]=aD.c2p(aE.left)}}for(aB=0;aB<aw.length;++aB){aD=aw[aB];if(aD&&aD.used){aC["y"+aD.n]=aD.c2p(aE.top)}}if(aC.x1!==undefined){aC.x=aC.x1}if(aC.y1!==undefined){aC.y=aC.y1}return aC}function ar(aF){var aD={},aC,aE,aB;for(aC=0;aC<p.length;++aC){aE=p[aC];if(aE&&aE.used){aB="x"+aE.n;if(aF[aB]==null&&aE.n==1){aB="x"}if(aF[aB]!=null){aD.left=aE.p2c(aF[aB]);break}}}for(aC=0;aC<aw.length;++aC){aE=aw[aC];if(aE&&aE.used){aB="y"+aE.n;if(aF[aB]==null&&aE.n==1){aB="y"}if(aF[aB]!=null){aD.top=aE.p2c(aF[aB]);break}}}return aD}function V(aC,aB){if(!aC[aB-1]){aC[aB-1]={n:aB,direction:aC==p?"x":"y",options:c.extend(true,{},aC==p?O.xaxis:O.yaxis)}}return aC[aB-1]}function ax(){var aG;var aM=Q.length,aB=[],aE=[];for(aG=0;aG<Q.length;++aG){var aJ=Q[aG].color;if(aJ!=null){--aM;if(typeof aJ=="number"){aE.push(aJ)}else{aB.push(c.color.parse(Q[aG].color))}}}for(aG=0;aG<aE.length;++aG){aM=Math.max(aM,aE[aG]+1)}var aC=[],aF=0;aG=0;while(aC.length<aM){var aI;if(O.colors.length==aG){aI=c.color.make(100,100,100)}else{aI=c.color.parse(O.colors[aG])}var aD=aF%2==1?-1:1;aI.scale("rgb",1+aD*Math.ceil(aF/2)*0.2);aC.push(aI);++aG;if(aG>=O.colors.length){aG=0;++aF}}var aH=0,aN;for(aG=0;aG<Q.length;++aG){aN=Q[aG];if(aN.color==null){aN.color=aC[aH].toString();++aH}else{if(typeof aN.color=="number"){aN.color=aC[aN.color].toString()}}if(aN.lines.show==null){var aL,aK=true;for(aL in aN){if(aN[aL]&&aN[aL].show){aK=false;break}}if(aK){aN.lines.show=true}}aN.xaxis=V(p,aA(aN,"x"));aN.yaxis=V(aw,aA(aN,"y"))}}function z(){var aO=Number.POSITIVE_INFINITY,aI=Number.NEGATIVE_INFINITY,aB=Number.MAX_VALUE,aU,aS,aR,aN,aD,aJ,aT,aP,aH,aG,aC,a0,aX,aL;function aF(a3,a2,a1){if(a2<a3.datamin&&a2!=-aB){a3.datamin=a2}if(a1>a3.datamax&&a1!=aB){a3.datamax=a1}}c.each(m(),function(a1,a2){a2.datamin=aO;a2.datamax=aI;a2.used=false});for(aU=0;aU<Q.length;++aU){aJ=Q[aU];aJ.datapoints={points:[]};an(ak.processRawData,[aJ,aJ.data,aJ.datapoints])}for(aU=0;aU<Q.length;++aU){aJ=Q[aU];var aZ=aJ.data,aW=aJ.datapoints.format;if(!aW){aW=[];aW.push({x:true,number:true,required:true});aW.push({y:true,number:true,required:true});if(aJ.bars.show||(aJ.lines.show&&aJ.lines.fill)){aW.push({y:true,number:true,required:false,defaultValue:0});if(aJ.bars.horizontal){delete aW[aW.length-1].y;aW[aW.length-1].x=true}}aJ.datapoints.format=aW}if(aJ.datapoints.pointsize!=null){continue}aJ.datapoints.pointsize=aW.length;aP=aJ.datapoints.pointsize;aT=aJ.datapoints.points;insertSteps=aJ.lines.show&&aJ.lines.steps;aJ.xaxis.used=aJ.yaxis.used=true;for(aS=aR=0;aS<aZ.length;++aS,aR+=aP){aL=aZ[aS];var aE=aL==null;if(!aE){for(aN=0;aN<aP;++aN){a0=aL[aN];aX=aW[aN];if(aX){if(aX.number&&a0!=null){a0=+a0;if(isNaN(a0)){a0=null}else{if(a0==Infinity){a0=aB}else{if(a0==-Infinity){a0=-aB}}}}if(a0==null){if(aX.required){aE=true}if(aX.defaultValue!=null){a0=aX.defaultValue}}}aT[aR+aN]=a0}}if(aE){for(aN=0;aN<aP;++aN){a0=aT[aR+aN];if(a0!=null){aX=aW[aN];if(aX.x){aF(aJ.xaxis,a0,a0)}if(aX.y){aF(aJ.yaxis,a0,a0)}}aT[aR+aN]=null}}else{if(insertSteps&&aR>0&&aT[aR-aP]!=null&&aT[aR-aP]!=aT[aR]&&aT[aR-aP+1]!=aT[aR+1]){for(aN=0;aN<aP;++aN){aT[aR+aP+aN]=aT[aR+aN]}aT[aR+1]=aT[aR-aP+1];aR+=aP}}}}for(aU=0;aU<Q.length;++aU){aJ=Q[aU];an(ak.processDatapoints,[aJ,aJ.datapoints])}for(aU=0;aU<Q.length;++aU){aJ=Q[aU];aT=aJ.datapoints.points,aP=aJ.datapoints.pointsize;var aK=aO,aQ=aO,aM=aI,aV=aI;for(aS=0;aS<aT.length;aS+=aP){if(aT[aS]==null){continue}for(aN=0;aN<aP;++aN){a0=aT[aS+aN];aX=aW[aN];if(!aX||a0==aB||a0==-aB){continue}if(aX.x){if(a0<aK){aK=a0}if(a0>aM){aM=a0}}if(aX.y){if(a0<aQ){aQ=a0}if(a0>aV){aV=a0}}}}if(aJ.bars.show){var aY=aJ.bars.align=="left"?0:-aJ.bars.barWidth/2;if(aJ.bars.horizontal){aQ+=aY;aV+=aY+aJ.bars.barWidth}else{aK+=aY;aM+=aY+aJ.bars.barWidth}}aF(aJ.xaxis,aK,aM);aF(aJ.yaxis,aQ,aV)}c.each(m(),function(a1,a2){if(a2.datamin==aO){a2.datamin=null}if(a2.datamax==aI){a2.datamax=null}})}function j(aB,aC){var aD=document.createElement("canvas");aD.className=aC;aD.width=G;aD.height=I;if(!aB){c(aD).css({position:"absolute",left:0,top:0})}c(aD).appendTo(av);if(!aD.getContext){aD=window.G_vmlCanvasManager.initElement(aD)}aD.getContext("2d").save();return aD}function B(){G=av.width();I=av.height();if(G<=0||I<=0){throw"Invalid dimensions for plot, width = "+G+", height = "+I}}function g(aC){if(aC.width!=G){aC.width=G}if(aC.height!=I){aC.height=I}var aB=aC.getContext("2d");aB.restore();aB.save()}function X(){var aC,aB=av.children("canvas.base"),aD=av.children("canvas.overlay");if(aB.length==0||aD==0){av.html("");av.css({padding:0});if(av.css("position")=="static"){av.css("position","relative")}B();az=j(true,"base");ad=j(false,"overlay");aC=false}else{az=aB.get(0);ad=aD.get(0);aC=true}H=az.getContext("2d");A=ad.getContext("2d");y=c([ad,az]);if(aC){av.data("plot").shutdown();aq.resize();A.clearRect(0,0,G,I);y.unbind();av.children().not([az,ad]).remove()}av.data("plot",aq)}function ah(){if(O.grid.hoverable){y.mousemove(aa);y.mouseleave(l)}if(O.grid.clickable){y.click(R)}an(ak.bindEvents,[y])}function ag(){if(M){clearTimeout(M)}y.unbind("mousemove",aa);y.unbind("mouseleave",l);y.unbind("click",R);an(ak.shutdown,[y])}function r(aG){function aC(aH){return aH}var aF,aB,aD=aG.options.transform||aC,aE=aG.options.inverseTransform;if(aG.direction=="x"){aF=aG.scale=h/Math.abs(aD(aG.max)-aD(aG.min));aB=Math.min(aD(aG.max),aD(aG.min))}else{aF=aG.scale=w/Math.abs(aD(aG.max)-aD(aG.min));aF=-aF;aB=Math.max(aD(aG.max),aD(aG.min))}if(aD==aC){aG.p2c=function(aH){return(aH-aB)*aF}}else{aG.p2c=function(aH){return(aD(aH)-aB)*aF}}if(!aE){aG.c2p=function(aH){return aB+aH/aF}}else{aG.c2p=function(aH){return aE(aB+aH/aF)}}}function L(aD){var aB=aD.options,aF,aJ=aD.ticks||[],aI=[],aE,aK=aB.labelWidth,aG=aB.labelHeight,aC;function aH(aM,aL){return c('<div style="position:absolute;top:-10000px;'+aL+'font-size:smaller"><div class="'+aD.direction+"Axis "+aD.direction+aD.n+'Axis">'+aM.join("")+"</div></div>").appendTo(av)}if(aD.direction=="x"){if(aK==null){aK=Math.floor(G/(aJ.length>0?aJ.length:1))}if(aG==null){aI=[];for(aF=0;aF<aJ.length;++aF){aE=aJ[aF].label;if(aE){aI.push('<div class="tickLabel" style="float:left;width:'+aK+'px">'+aE+"</div>")}}if(aI.length>0){aI.push('<div style="clear:left"></div>');aC=aH(aI,"width:10000px;");aG=aC.height();aC.remove()}}}else{if(aK==null||aG==null){for(aF=0;aF<aJ.length;++aF){aE=aJ[aF].label;if(aE){aI.push('<div class="tickLabel">'+aE+"</div>")}}if(aI.length>0){aC=aH(aI,"");if(aK==null){aK=aC.children().width()}if(aG==null){aG=aC.find("div.tickLabel").height()}aC.remove()}}}if(aK==null){aK=0}if(aG==null){aG=0}aD.labelWidth=aK;aD.labelHeight=aG}function au(aD){var aC=aD.labelWidth,aL=aD.labelHeight,aH=aD.options.position,aF=aD.options.tickLength,aG=O.grid.axisMargin,aJ=O.grid.labelMargin,aK=aD.direction=="x"?p:aw,aE;var aB=c.grep(aK,function(aN){return aN&&aN.options.position==aH&&aN.reserveSpace});if(c.inArray(aD,aB)==aB.length-1){aG=0}if(aF==null){aF="full"}var aI=c.grep(aK,function(aN){return aN&&aN.reserveSpace});var aM=c.inArray(aD,aI)==0;if(!aM&&aF=="full"){aF=5}if(!isNaN(+aF)){aJ+=+aF}if(aD.direction=="x"){aL+=aJ;if(aH=="bottom"){q.bottom+=aL+aG;aD.box={top:I-q.bottom,height:aL}}else{aD.box={top:q.top+aG,height:aL};q.top+=aL+aG}}else{aC+=aJ;if(aH=="left"){aD.box={left:q.left+aG,width:aC};q.left+=aC+aG}else{q.right+=aC+aG;aD.box={left:G-q.right,width:aC}}}aD.position=aH;aD.tickLength=aF;aD.box.padding=aJ;aD.innermost=aM}function U(aB){if(aB.direction=="x"){aB.box.left=q.left;aB.box.width=h}else{aB.box.top=q.top;aB.box.height=w}}function t(){var aC,aE=m();c.each(aE,function(aF,aG){aG.show=aG.options.show;if(aG.show==null){aG.show=aG.used}aG.reserveSpace=aG.show||aG.options.reserveSpace;n(aG)});allocatedAxes=c.grep(aE,function(aF){return aF.reserveSpace});q.left=q.right=q.top=q.bottom=0;if(O.grid.show){c.each(allocatedAxes,function(aF,aG){S(aG);P(aG);ap(aG,aG.ticks);L(aG)});for(aC=allocatedAxes.length-1;aC>=0;--aC){au(allocatedAxes[aC])}var aD=O.grid.minBorderMargin;if(aD==null){aD=0;for(aC=0;aC<Q.length;++aC){aD=Math.max(aD,Q[aC].points.radius+Q[aC].points.lineWidth/2)}}for(var aB in q){q[aB]+=O.grid.borderWidth;q[aB]=Math.max(aD,q[aB])}}h=G-q.left-q.right;w=I-q.bottom-q.top;c.each(aE,function(aF,aG){r(aG)});if(O.grid.show){c.each(allocatedAxes,function(aF,aG){U(aG)});k()}o()}function n(aE){var aF=aE.options,aD=+(aF.min!=null?aF.min:aE.datamin),aB=+(aF.max!=null?aF.max:aE.datamax),aH=aB-aD;if(aH==0){var aC=aB==0?1:0.01;if(aF.min==null){aD-=aC}if(aF.max==null||aF.min!=null){aB+=aC}}else{var aG=aF.autoscaleMargin;if(aG!=null){if(aF.min==null){aD-=aH*aG;if(aD<0&&aE.datamin!=null&&aE.datamin>=0){aD=0}}if(aF.max==null){aB+=aH*aG;if(aB>0&&aE.datamax!=null&&aE.datamax<=0){aB=0}}}}aE.min=aD;aE.max=aB}function S(aG){var aM=aG.options;var aH;if(typeof aM.ticks=="number"&&aM.ticks>0){aH=aM.ticks}else{aH=0.3*Math.sqrt(aG.direction=="x"?G:I)}var aT=(aG.max-aG.min)/aH,aO,aB,aN,aR,aS,aQ,aI;if(aM.mode=="time"){var aJ={second:1000,minute:60*1000,hour:60*60*1000,day:24*60*60*1000,month:30*24*60*60*1000,year:365.2425*24*60*60*1000};var aK=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[0.25,"month"],[0.5,"month"],[1,"month"],[2,"month"],[3,"month"],[6,"month"],[1,"year"]];var aC=0;if(aM.minTickSize!=null){if(typeof aM.tickSize=="number"){aC=aM.tickSize}else{aC=aM.minTickSize[0]*aJ[aM.minTickSize[1]]}}for(var aS=0;aS<aK.length-1;++aS){if(aT<(aK[aS][0]*aJ[aK[aS][1]]+aK[aS+1][0]*aJ[aK[aS+1][1]])/2&&aK[aS][0]*aJ[aK[aS][1]]>=aC){break}}aO=aK[aS][0];aN=aK[aS][1];if(aN=="year"){aQ=Math.pow(10,Math.floor(Math.log(aT/aJ.year)/Math.LN10));aI=(aT/aJ.year)/aQ;if(aI<1.5){aO=1}else{if(aI<3){aO=2}else{if(aI<7.5){aO=5}else{aO=10}}}aO*=aQ}aG.tickSize=aM.tickSize||[aO,aN];aB=function(aX){var a2=[],a0=aX.tickSize[0],a3=aX.tickSize[1],a1=new Date(aX.min);var aW=a0*aJ[a3];if(a3=="second"){a1.setUTCSeconds(a(a1.getUTCSeconds(),a0))}if(a3=="minute"){a1.setUTCMinutes(a(a1.getUTCMinutes(),a0))}if(a3=="hour"){a1.setUTCHours(a(a1.getUTCHours(),a0))}if(a3=="month"){a1.setUTCMonth(a(a1.getUTCMonth(),a0))}if(a3=="year"){a1.setUTCFullYear(a(a1.getUTCFullYear(),a0))}a1.setUTCMilliseconds(0);if(aW>=aJ.minute){a1.setUTCSeconds(0)}if(aW>=aJ.hour){a1.setUTCMinutes(0)}if(aW>=aJ.day){a1.setUTCHours(0)}if(aW>=aJ.day*4){a1.setUTCDate(1)}if(aW>=aJ.year){a1.setUTCMonth(0)}var a5=0,a4=Number.NaN,aY;do{aY=a4;a4=a1.getTime();a2.push(a4);if(a3=="month"){if(a0<1){a1.setUTCDate(1);var aV=a1.getTime();a1.setUTCMonth(a1.getUTCMonth()+1);var aZ=a1.getTime();a1.setTime(a4+a5*aJ.hour+(aZ-aV)*a0);a5=a1.getUTCHours();a1.setUTCHours(0)}else{a1.setUTCMonth(a1.getUTCMonth()+a0)}}else{if(a3=="year"){a1.setUTCFullYear(a1.getUTCFullYear()+a0)}else{a1.setTime(a4+aW)}}}while(a4<aX.max&&a4!=aY);return a2};aR=function(aV,aY){var a0=new Date(aV);if(aM.timeformat!=null){return c.plot.formatDate(a0,aM.timeformat,aM.monthNames)}var aW=aY.tickSize[0]*aJ[aY.tickSize[1]];var aX=aY.max-aY.min;var aZ=(aM.twelveHourClock)?" %p":"";if(aW<aJ.minute){fmt="%h:%M:%S"+aZ}else{if(aW<aJ.day){if(aX<2*aJ.day){fmt="%h:%M"+aZ}else{fmt="%b %d %h:%M"+aZ}}else{if(aW<aJ.month){fmt="%b %d"}else{if(aW<aJ.year){if(aX<aJ.year){fmt="%b"}else{fmt="%b %y"}}else{fmt="%y"}}}}return c.plot.formatDate(a0,fmt,aM.monthNames)}}else{var aU=aM.tickDecimals;var aP=-Math.floor(Math.log(aT)/Math.LN10);if(aU!=null&&aP>aU){aP=aU}aQ=Math.pow(10,-aP);aI=aT/aQ;if(aI<1.5){aO=1}else{if(aI<3){aO=2;if(aI>2.25&&(aU==null||aP+1<=aU)){aO=2.5;++aP}}else{if(aI<7.5){aO=5}else{aO=10}}}aO*=aQ;if(aM.minTickSize!=null&&aO<aM.minTickSize){aO=aM.minTickSize}aG.tickDecimals=Math.max(0,aU!=null?aU:aP);aG.tickSize=aM.tickSize||aO;aB=function(aX){var aZ=[];var a0=a(aX.min,aX.tickSize),aW=0,aV=Number.NaN,aY;do{aY=aV;aV=a0+aW*aX.tickSize;aZ.push(aV);++aW}while(aV<aX.max&&aV!=aY);return aZ};aR=function(aV,aW){return aV.toFixed(aW.tickDecimals)}}if(aM.alignTicksWithAxis!=null){var aF=(aG.direction=="x"?p:aw)[aM.alignTicksWithAxis-1];if(aF&&aF.used&&aF!=aG){var aL=aB(aG);if(aL.length>0){if(aM.min==null){aG.min=Math.min(aG.min,aL[0])}if(aM.max==null&&aL.length>1){aG.max=Math.max(aG.max,aL[aL.length-1])}}aB=function(aX){var aY=[],aV,aW;for(aW=0;aW<aF.ticks.length;++aW){aV=(aF.ticks[aW].v-aF.min)/(aF.max-aF.min);aV=aX.min+aV*(aX.max-aX.min);aY.push(aV)}return aY};if(aG.mode!="time"&&aM.tickDecimals==null){var aE=Math.max(0,-Math.floor(Math.log(aT)/Math.LN10)+1),aD=aB(aG);if(!(aD.length>1&&/\..*0$/.test((aD[1]-aD[0]).toFixed(aE)))){aG.tickDecimals=aE}}}}aG.tickGenerator=aB;if(c.isFunction(aM.tickFormatter)){aG.tickFormatter=function(aV,aW){return""+aM.tickFormatter(aV,aW)}}else{aG.tickFormatter=aR}}function P(aF){var aH=aF.options.ticks,aG=[];if(aH==null||(typeof aH=="number"&&aH>0)){aG=aF.tickGenerator(aF)}else{if(aH){if(c.isFunction(aH)){aG=aH({min:aF.min,max:aF.max})}else{aG=aH}}}var aE,aB;aF.ticks=[];for(aE=0;aE<aG.length;++aE){var aC=null;var aD=aG[aE];if(typeof aD=="object"){aB=+aD[0];if(aD.length>1){aC=aD[1]}}else{aB=+aD}if(aC==null){aC=aF.tickFormatter(aB,aF)}if(!isNaN(aB)){aF.ticks.push({v:aB,label:aC})}}}function ap(aB,aC){if(aB.options.autoscaleMargin&&aC.length>0){if(aB.options.min==null){aB.min=Math.min(aB.min,aC[0].v)}if(aB.options.max==null&&aC.length>1){aB.max=Math.max(aB.max,aC[aC.length-1].v)}}}function W(){H.clearRect(0,0,G,I);var aC=O.grid;if(aC.show&&aC.backgroundColor){N()}if(aC.show&&!aC.aboveData){ac()}for(var aB=0;aB<Q.length;++aB){an(ak.drawSeries,[H,Q[aB]]);d(Q[aB])}an(ak.draw,[H]);if(aC.show&&aC.aboveData){ac()}}function D(aB,aI){var aE,aH,aG,aD,aF=m();for(i=0;i<aF.length;++i){aE=aF[i];if(aE.direction==aI){aD=aI+aE.n+"axis";if(!aB[aD]&&aE.n==1){aD=aI+"axis"}if(aB[aD]){aH=aB[aD].from;aG=aB[aD].to;break}}}if(!aB[aD]){aE=aI=="x"?p[0]:aw[0];aH=aB[aI+"1"];aG=aB[aI+"2"]}if(aH!=null&&aG!=null&&aH>aG){var aC=aH;aH=aG;aG=aC}return{from:aH,to:aG,axis:aE}}function N(){H.save();H.translate(q.left,q.top);H.fillStyle=am(O.grid.backgroundColor,w,0,"rgba(255, 255, 255, 0)");H.fillRect(0,0,h,w);H.restore()}function ac(){var aF;H.save();H.translate(q.left,q.top);var aH=O.grid.markings;if(aH){if(c.isFunction(aH)){var aK=aq.getAxes();aK.xmin=aK.xaxis.min;aK.xmax=aK.xaxis.max;aK.ymin=aK.yaxis.min;aK.ymax=aK.yaxis.max;aH=aH(aK)}for(aF=0;aF<aH.length;++aF){var aD=aH[aF],aC=D(aD,"x"),aI=D(aD,"y");if(aC.from==null){aC.from=aC.axis.min}if(aC.to==null){aC.to=aC.axis.max}if(aI.from==null){aI.from=aI.axis.min}if(aI.to==null){aI.to=aI.axis.max}if(aC.to<aC.axis.min||aC.from>aC.axis.max||aI.to<aI.axis.min||aI.from>aI.axis.max){continue}aC.from=Math.max(aC.from,aC.axis.min);aC.to=Math.min(aC.to,aC.axis.max);aI.from=Math.max(aI.from,aI.axis.min);aI.to=Math.min(aI.to,aI.axis.max);if(aC.from==aC.to&&aI.from==aI.to){continue}aC.from=aC.axis.p2c(aC.from);aC.to=aC.axis.p2c(aC.to);aI.from=aI.axis.p2c(aI.from);aI.to=aI.axis.p2c(aI.to);if(aC.from==aC.to||aI.from==aI.to){H.beginPath();H.strokeStyle=aD.color||O.grid.markingsColor;H.lineWidth=aD.lineWidth||O.grid.markingsLineWidth;H.moveTo(aC.from,aI.from);H.lineTo(aC.to,aI.to);H.stroke()}else{H.fillStyle=aD.color||O.grid.markingsColor;H.fillRect(aC.from,aI.to,aC.to-aC.from,aI.from-aI.to)}}}var aK=m(),aM=O.grid.borderWidth;for(var aE=0;aE<aK.length;++aE){var aB=aK[aE],aG=aB.box,aQ=aB.tickLength,aN,aL,aP,aJ;if(!aB.show||aB.ticks.length==0){continue}H.strokeStyle=aB.options.tickColor||c.color.parse(aB.options.color).scale("a",0.22).toString();H.lineWidth=1;if(aB.direction=="x"){aN=0;if(aQ=="full"){aL=(aB.position=="top"?0:w)}else{aL=aG.top-q.top+(aB.position=="top"?aG.height:0)}}else{aL=0;if(aQ=="full"){aN=(aB.position=="left"?0:h)}else{aN=aG.left-q.left+(aB.position=="left"?aG.width:0)}}if(!aB.innermost){H.beginPath();aP=aJ=0;if(aB.direction=="x"){aP=h}else{aJ=w}if(H.lineWidth==1){aN=Math.floor(aN)+0.5;aL=Math.floor(aL)+0.5}H.moveTo(aN,aL);H.lineTo(aN+aP,aL+aJ);H.stroke()}H.beginPath();for(aF=0;aF<aB.ticks.length;++aF){var aO=aB.ticks[aF].v;aP=aJ=0;if(aO<aB.min||aO>aB.max||(aQ=="full"&&aM>0&&(aO==aB.min||aO==aB.max))){continue}if(aB.direction=="x"){aN=aB.p2c(aO);aJ=aQ=="full"?-w:aQ;if(aB.position=="top"){aJ=-aJ}}else{aL=aB.p2c(aO);aP=aQ=="full"?-h:aQ;if(aB.position=="left"){aP=-aP}}if(H.lineWidth==1){if(aB.direction=="x"){aN=Math.floor(aN)+0.5}else{aL=Math.floor(aL)+0.5}}H.moveTo(aN,aL);H.lineTo(aN+aP,aL+aJ)}H.stroke()}if(aM){H.lineWidth=aM;H.strokeStyle=O.grid.borderColor;H.strokeRect(-aM/2,-aM/2,h+aM,w+aM)}H.restore()}function k(){av.find(".tickLabels").remove();var aG=['<div class="tickLabels" style="font-size:smaller">'];var aJ=m();for(var aD=0;aD<aJ.length;++aD){var aC=aJ[aD],aF=aC.box;if(!aC.show){continue}aG.push('<div class="'+aC.direction+"Axis "+aC.direction+aC.n+'Axis" style="color:'+aC.options.color+'">');for(var aE=0;aE<aC.ticks.length;++aE){var aH=aC.ticks[aE];if(!aH.label||aH.v<aC.min||aH.v>aC.max){continue}var aK={},aI;if(aC.direction=="x"){aI="center";aK.left=Math.round(q.left+aC.p2c(aH.v)-aC.labelWidth/2);if(aC.position=="bottom"){aK.top=aF.top+aF.padding}else{aK.bottom=I-(aF.top+aF.height-aF.padding)}}else{aK.top=Math.round(q.top+aC.p2c(aH.v)-aC.labelHeight/2);if(aC.position=="left"){aK.right=G-(aF.left+aF.width-aF.padding);aI="right"}else{aK.left=aF.left+aF.padding;aI="left"}}aK.width=aC.labelWidth;var aB=["position:absolute","text-align:"+aI];for(var aL in aK){aB.push(aL+":"+aK[aL]+"px")}aG.push('<div class="tickLabel" style="'+aB.join(";")+'">'+aH.label+"</div>")}aG.push("</div>")}aG.push("</div>");av.append(aG.join(""))}function d(aB){if(aB.lines.show){at(aB)}if(aB.bars.show){e(aB)}if(aB.points.show){ao(aB)}}function at(aE){function aD(aP,aQ,aI,aU,aT){var aV=aP.points,aJ=aP.pointsize,aN=null,aM=null;H.beginPath();for(var aO=aJ;aO<aV.length;aO+=aJ){var aL=aV[aO-aJ],aS=aV[aO-aJ+1],aK=aV[aO],aR=aV[aO+1];if(aL==null||aK==null){continue}if(aS<=aR&&aS<aT.min){if(aR<aT.min){continue}aL=(aT.min-aS)/(aR-aS)*(aK-aL)+aL;aS=aT.min}else{if(aR<=aS&&aR<aT.min){if(aS<aT.min){continue}aK=(aT.min-aS)/(aR-aS)*(aK-aL)+aL;aR=aT.min}}if(aS>=aR&&aS>aT.max){if(aR>aT.max){continue}aL=(aT.max-aS)/(aR-aS)*(aK-aL)+aL;aS=aT.max}else{if(aR>=aS&&aR>aT.max){if(aS>aT.max){continue}aK=(aT.max-aS)/(aR-aS)*(aK-aL)+aL;aR=aT.max}}if(aL<=aK&&aL<aU.min){if(aK<aU.min){continue}aS=(aU.min-aL)/(aK-aL)*(aR-aS)+aS;aL=aU.min}else{if(aK<=aL&&aK<aU.min){if(aL<aU.min){continue}aR=(aU.min-aL)/(aK-aL)*(aR-aS)+aS;aK=aU.min}}if(aL>=aK&&aL>aU.max){if(aK>aU.max){continue}aS=(aU.max-aL)/(aK-aL)*(aR-aS)+aS;aL=aU.max}else{if(aK>=aL&&aK>aU.max){if(aL>aU.max){continue}aR=(aU.max-aL)/(aK-aL)*(aR-aS)+aS;aK=aU.max}}if(aL!=aN||aS!=aM){H.moveTo(aU.p2c(aL)+aQ,aT.p2c(aS)+aI)}aN=aK;aM=aR;H.lineTo(aU.p2c(aK)+aQ,aT.p2c(aR)+aI)}H.stroke()}function aF(aI,aQ,aP){var aW=aI.points,aV=aI.pointsize,aN=Math.min(Math.max(0,aP.min),aP.max),aX=0,aU,aT=false,aM=1,aL=0,aR=0;while(true){if(aV>0&&aX>aW.length+aV){break}aX+=aV;var aZ=aW[aX-aV],aK=aW[aX-aV+aM],aY=aW[aX],aJ=aW[aX+aM];if(aT){if(aV>0&&aZ!=null&&aY==null){aR=aX;aV=-aV;aM=2;continue}if(aV<0&&aX==aL+aV){H.fill();aT=false;aV=-aV;aM=1;aX=aL=aR+aV;continue}}if(aZ==null||aY==null){continue}if(aZ<=aY&&aZ<aQ.min){if(aY<aQ.min){continue}aK=(aQ.min-aZ)/(aY-aZ)*(aJ-aK)+aK;aZ=aQ.min}else{if(aY<=aZ&&aY<aQ.min){if(aZ<aQ.min){continue}aJ=(aQ.min-aZ)/(aY-aZ)*(aJ-aK)+aK;aY=aQ.min}}if(aZ>=aY&&aZ>aQ.max){if(aY>aQ.max){continue}aK=(aQ.max-aZ)/(aY-aZ)*(aJ-aK)+aK;aZ=aQ.max}else{if(aY>=aZ&&aY>aQ.max){if(aZ>aQ.max){continue}aJ=(aQ.max-aZ)/(aY-aZ)*(aJ-aK)+aK;aY=aQ.max}}if(!aT){H.beginPath();H.moveTo(aQ.p2c(aZ),aP.p2c(aN));aT=true}if(aK>=aP.max&&aJ>=aP.max){H.lineTo(aQ.p2c(aZ),aP.p2c(aP.max));H.lineTo(aQ.p2c(aY),aP.p2c(aP.max));continue}else{if(aK<=aP.min&&aJ<=aP.min){H.lineTo(aQ.p2c(aZ),aP.p2c(aP.min));H.lineTo(aQ.p2c(aY),aP.p2c(aP.min));continue}}var aO=aZ,aS=aY;if(aK<=aJ&&aK<aP.min&&aJ>=aP.min){aZ=(aP.min-aK)/(aJ-aK)*(aY-aZ)+aZ;aK=aP.min}else{if(aJ<=aK&&aJ<aP.min&&aK>=aP.min){aY=(aP.min-aK)/(aJ-aK)*(aY-aZ)+aZ;aJ=aP.min}}if(aK>=aJ&&aK>aP.max&&aJ<=aP.max){aZ=(aP.max-aK)/(aJ-aK)*(aY-aZ)+aZ;aK=aP.max}else{if(aJ>=aK&&aJ>aP.max&&aK<=aP.max){aY=(aP.max-aK)/(aJ-aK)*(aY-aZ)+aZ;aJ=aP.max}}if(aZ!=aO){H.lineTo(aQ.p2c(aO),aP.p2c(aK))}H.lineTo(aQ.p2c(aZ),aP.p2c(aK));H.lineTo(aQ.p2c(aY),aP.p2c(aJ));if(aY!=aS){H.lineTo(aQ.p2c(aY),aP.p2c(aJ));H.lineTo(aQ.p2c(aS),aP.p2c(aJ))}}}H.save();H.translate(q.left,q.top);H.lineJoin="round";var aG=aE.lines.lineWidth,aB=aE.shadowSize;if(aG>0&&aB>0){H.lineWidth=aB;H.strokeStyle="rgba(0,0,0,0.1)";var aH=Math.PI/18;aD(aE.datapoints,Math.sin(aH)*(aG/2+aB/2),Math.cos(aH)*(aG/2+aB/2),aE.xaxis,aE.yaxis);H.lineWidth=aB/2;aD(aE.datapoints,Math.sin(aH)*(aG/2+aB/4),Math.cos(aH)*(aG/2+aB/4),aE.xaxis,aE.yaxis)}H.lineWidth=aG;H.strokeStyle=aE.color;var aC=ae(aE.lines,aE.color,0,w);if(aC){H.fillStyle=aC;aF(aE.datapoints,aE.xaxis,aE.yaxis)}if(aG>0){aD(aE.datapoints,0,0,aE.xaxis,aE.yaxis)}H.restore()}function ao(aE){function aH(aN,aM,aU,aK,aS,aT,aQ,aJ){var aR=aN.points,aI=aN.pointsize;for(var aL=0;aL<aR.length;aL+=aI){var aP=aR[aL],aO=aR[aL+1];if(aP==null||aP<aT.min||aP>aT.max||aO<aQ.min||aO>aQ.max){continue}H.beginPath();aP=aT.p2c(aP);aO=aQ.p2c(aO)+aK;if(aJ=="circle"){H.arc(aP,aO,aM,0,aS?Math.PI:Math.PI*2,false)}else{aJ(H,aP,aO,aM,aS)}H.closePath();if(aU){H.fillStyle=aU;H.fill()}H.stroke()}}H.save();H.translate(q.left,q.top);var aG=aE.points.lineWidth,aC=aE.shadowSize,aB=aE.points.radius,aF=aE.points.symbol;if(aG>0&&aC>0){var aD=aC/2;H.lineWidth=aD;H.strokeStyle="rgba(0,0,0,0.1)";aH(aE.datapoints,aB,null,aD+aD/2,true,aE.xaxis,aE.yaxis,aF);H.strokeStyle="rgba(0,0,0,0.2)";aH(aE.datapoints,aB,null,aD/2,true,aE.xaxis,aE.yaxis,aF)}H.lineWidth=aG;H.strokeStyle=aE.color;aH(aE.datapoints,aB,ae(aE.points,aE.color),0,false,aE.xaxis,aE.yaxis,aF);H.restore()}function E(aN,aM,aV,aI,aQ,aF,aD,aL,aK,aU,aR,aC){var aE,aT,aJ,aP,aG,aB,aO,aH,aS;if(aR){aH=aB=aO=true;aG=false;aE=aV;aT=aN;aP=aM+aI;aJ=aM+aQ;if(aT<aE){aS=aT;aT=aE;aE=aS;aG=true;aB=false}}else{aG=aB=aO=true;aH=false;aE=aN+aI;aT=aN+aQ;aJ=aV;aP=aM;if(aP<aJ){aS=aP;aP=aJ;aJ=aS;aH=true;aO=false}}if(aT<aL.min||aE>aL.max||aP<aK.min||aJ>aK.max){return}if(aE<aL.min){aE=aL.min;aG=false}if(aT>aL.max){aT=aL.max;aB=false}if(aJ<aK.min){aJ=aK.min;aH=false}if(aP>aK.max){aP=aK.max;aO=false}aE=aL.p2c(aE);aJ=aK.p2c(aJ);aT=aL.p2c(aT);aP=aK.p2c(aP);if(aD){aU.beginPath();aU.moveTo(aE,aJ);aU.lineTo(aE,aP);aU.lineTo(aT,aP);aU.lineTo(aT,aJ);aU.fillStyle=aD(aJ,aP);aU.fill()}if(aC>0&&(aG||aB||aO||aH)){aU.beginPath();aU.moveTo(aE,aJ+aF);if(aG){aU.lineTo(aE,aP+aF)}else{aU.moveTo(aE,aP+aF)}if(aO){aU.lineTo(aT,aP+aF)}else{aU.moveTo(aT,aP+aF)}if(aB){aU.lineTo(aT,aJ+aF)}else{aU.moveTo(aT,aJ+aF)}if(aH){aU.lineTo(aE,aJ+aF)}else{aU.moveTo(aE,aJ+aF)}aU.stroke()}}function e(aD){function aC(aJ,aI,aL,aG,aK,aN,aM){var aO=aJ.points,aF=aJ.pointsize;for(var aH=0;aH<aO.length;aH+=aF){if(aO[aH]==null){continue}E(aO[aH],aO[aH+1],aO[aH+2],aI,aL,aG,aK,aN,aM,H,aD.bars.horizontal,aD.bars.lineWidth)}}H.save();H.translate(q.left,q.top);H.lineWidth=aD.bars.lineWidth;H.strokeStyle=aD.color;var aB=aD.bars.align=="left"?0:-aD.bars.barWidth/2;var aE=aD.bars.fill?function(aF,aG){return ae(aD.bars,aD.color,aF,aG)}:null;aC(aD.datapoints,aB,aB+aD.bars.barWidth,0,aE,aD.xaxis,aD.yaxis);H.restore()}function ae(aD,aB,aC,aF){var aE=aD.fill;if(!aE){return null}if(aD.fillColor){return am(aD.fillColor,aC,aF,aB)}var aG=c.color.parse(aB);aG.a=typeof aE=="number"?aE:0.4;aG.normalize();return aG.toString()}function o(){av.find(".legend").remove();if(!O.legend.show){return}var aH=[],aF=false,aN=O.legend.labelFormatter,aM,aJ;for(var aE=0;aE<Q.length;++aE){aM=Q[aE];aJ=aM.label;if(!aJ){continue}if(aE%O.legend.noColumns==0){if(aF){aH.push("</tr>")}aH.push("<tr>");aF=true}if(aN){aJ=aN(aJ,aM)}aH.push('<td class="legendColorBox"><div style="border:1px solid '+O.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+aM.color+';overflow:hidden"></div></div></td><td class="legendLabel">'+aJ+"</td>")}if(aF){aH.push("</tr>")}if(aH.length==0){return}var aL='<table style="font-size:smaller;color:'+O.grid.color+'">'+aH.join("")+"</table>";if(O.legend.container!=null){c(O.legend.container).html(aL)}else{var aI="",aC=O.legend.position,aD=O.legend.margin;if(aD[0]==null){aD=[aD,aD]}if(aC.charAt(0)=="n"){aI+="top:"+(aD[1]+q.top)+"px;"}else{if(aC.charAt(0)=="s"){aI+="bottom:"+(aD[1]+q.bottom)+"px;"}}if(aC.charAt(1)=="e"){aI+="right:"+(aD[0]+q.right)+"px;"}else{if(aC.charAt(1)=="w"){aI+="left:"+(aD[0]+q.left)+"px;"}}var aK=c('<div class="legend">'+aL.replace('style="','style="position:absolute;'+aI+";")+"</div>").appendTo(av);if(O.legend.backgroundOpacity!=0){var aG=O.legend.backgroundColor;if(aG==null){aG=O.grid.backgroundColor;if(aG&&typeof aG=="string"){aG=c.color.parse(aG)}else{aG=c.color.extract(aK,"background-color")}aG.a=1;aG=aG.toString()}var aB=aK.children();c('<div style="position:absolute;width:'+aB.width()+"px;height:"+aB.height()+"px;"+aI+"background-color:"+aG+';"> </div>').prependTo(aK).css("opacity",O.legend.backgroundOpacity)}}}var ab=[],M=null;function K(aI,aG,aD){var aO=O.grid.mouseActiveRadius,a0=aO*aO+1,aY=null,aR=false,aW,aU;for(aW=Q.length-1;aW>=0;--aW){if(!aD(Q[aW])){continue}var aP=Q[aW],aH=aP.xaxis,aF=aP.yaxis,aV=aP.datapoints.points,aT=aP.datapoints.pointsize,aQ=aH.c2p(aI),aN=aF.c2p(aG),aC=aO/aH.scale,aB=aO/aF.scale;if(aH.options.inverseTransform){aC=Number.MAX_VALUE}if(aF.options.inverseTransform){aB=Number.MAX_VALUE}if(aP.lines.show||aP.points.show){for(aU=0;aU<aV.length;aU+=aT){var aK=aV[aU],aJ=aV[aU+1];if(aK==null){continue}if(aK-aQ>aC||aK-aQ<-aC||aJ-aN>aB||aJ-aN<-aB){continue}var aM=Math.abs(aH.p2c(aK)-aI),aL=Math.abs(aF.p2c(aJ)-aG),aS=aM*aM+aL*aL;if(aS<a0){a0=aS;aY=[aW,aU/aT]}}}if(aP.bars.show&&!aY){var aE=aP.bars.align=="left"?0:-aP.bars.barWidth/2,aX=aE+aP.bars.barWidth;for(aU=0;aU<aV.length;aU+=aT){var aK=aV[aU],aJ=aV[aU+1],aZ=aV[aU+2];if(aK==null){continue}if(Q[aW].bars.horizontal?(aQ<=Math.max(aZ,aK)&&aQ>=Math.min(aZ,aK)&&aN>=aJ+aE&&aN<=aJ+aX):(aQ>=aK+aE&&aQ<=aK+aX&&aN>=Math.min(aZ,aJ)&&aN<=Math.max(aZ,aJ))){aY=[aW,aU/aT]}}}}if(aY){aW=aY[0];aU=aY[1];aT=Q[aW].datapoints.pointsize;return{datapoint:Q[aW].datapoints.points.slice(aU*aT,(aU+1)*aT),dataIndex:aU,series:Q[aW],seriesIndex:aW}}return null}function aa(aB){if(O.grid.hoverable){u("plothover",aB,function(aC){return aC.hoverable!=false})}}function l(aB){if(O.grid.hoverable){u("plothover",aB,function(aC){return false})}}function R(aB){u("plotclick",aB,function(aC){return aC.clickable!=false})}function u(aC,aB,aD){var aE=y.offset(),aH=aB.pageX-aE.left-q.left,aF=aB.pageY-aE.top-q.top,aJ=C({left:aH,top:aF});aJ.pageX=aB.pageX;aJ.pageY=aB.pageY;var aK=K(aH,aF,aD);if(aK){aK.pageX=parseInt(aK.series.xaxis.p2c(aK.datapoint[0])+aE.left+q.left);aK.pageY=parseInt(aK.series.yaxis.p2c(aK.datapoint[1])+aE.top+q.top)}if(O.grid.autoHighlight){for(var aG=0;aG<ab.length;++aG){var aI=ab[aG];if(aI.auto==aC&&!(aK&&aI.series==aK.series&&aI.point[0]==aK.datapoint[0]&&aI.point[1]==aK.datapoint[1])){T(aI.series,aI.point)}}if(aK){x(aK.series,aK.datapoint,aC)}}av.trigger(aC,[aJ,aK])}function f(){if(!M){M=setTimeout(s,30)}}function s(){M=null;A.save();A.clearRect(0,0,G,I);A.translate(q.left,q.top);var aC,aB;for(aC=0;aC<ab.length;++aC){aB=ab[aC];if(aB.series.bars.show){v(aB.series,aB.point)}else{ay(aB.series,aB.point)}}A.restore();an(ak.drawOverlay,[A])}function x(aD,aB,aF){if(typeof aD=="number"){aD=Q[aD]}if(typeof aB=="number"){var aE=aD.datapoints.pointsize;aB=aD.datapoints.points.slice(aE*aB,aE*(aB+1))}var aC=al(aD,aB);if(aC==-1){ab.push({series:aD,point:aB,auto:aF});f()}else{if(!aF){ab[aC].auto=false}}}function T(aD,aB){if(aD==null&&aB==null){ab=[];f()}if(typeof aD=="number"){aD=Q[aD]}if(typeof aB=="number"){aB=aD.data[aB]}var aC=al(aD,aB);if(aC!=-1){ab.splice(aC,1);f()}}function al(aD,aE){for(var aB=0;aB<ab.length;++aB){var aC=ab[aB];if(aC.series==aD&&aC.point[0]==aE[0]&&aC.point[1]==aE[1]){return aB}}return -1}function ay(aE,aD){var aC=aD[0],aI=aD[1],aH=aE.xaxis,aG=aE.yaxis;if(aC<aH.min||aC>aH.max||aI<aG.min||aI>aG.max){return}var aF=aE.points.radius+aE.points.lineWidth/2;A.lineWidth=aF;A.strokeStyle=c.color.parse(aE.color).scale("a",0.5).toString();var aB=1.5*aF,aC=aH.p2c(aC),aI=aG.p2c(aI);A.beginPath();if(aE.points.symbol=="circle"){A.arc(aC,aI,aB,0,2*Math.PI,false)}else{aE.points.symbol(A,aC,aI,aB,false)}A.closePath();A.stroke()}function v(aE,aB){A.lineWidth=aE.bars.lineWidth;A.strokeStyle=c.color.parse(aE.color).scale("a",0.5).toString();var aD=c.color.parse(aE.color).scale("a",0.5).toString();var aC=aE.bars.align=="left"?0:-aE.bars.barWidth/2;E(aB[0],aB[1],aB[2]||0,aC,aC+aE.bars.barWidth,0,function(){return aD},aE.xaxis,aE.yaxis,A,aE.bars.horizontal,aE.bars.lineWidth)}function am(aJ,aB,aH,aC){if(typeof aJ=="string"){return aJ}else{var aI=H.createLinearGradient(0,aH,0,aB);for(var aE=0,aD=aJ.colors.length;aE<aD;++aE){var aF=aJ.colors[aE];if(typeof aF!="string"){var aG=c.color.parse(aC);if(aF.brightness!=null){aG=aG.scale("rgb",aF.brightness)}if(aF.opacity!=null){aG.a*=aF.opacity}aF=aG.toString()}aI.addColorStop(aE/(aD-1),aF)}return aI}}}c.plot=function(g,e,d){var f=new b(c(g),e,d,c.plot.plugins);return f};c.plot.version="0.7";c.plot.plugins=[];c.plot.formatDate=function(l,f,h){var o=function(d){d=""+d;return d.length==1?"0"+d:d};var e=[];var p=false,j=false;var n=l.getUTCHours();var k=n<12;if(h==null){h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(f.search(/%p|%P/)!=-1){if(n>12){n=n-12}else{if(n==0){n=12}}}for(var g=0;g<f.length;++g){var m=f.charAt(g);if(p){switch(m){case"h":m=""+n;break;case"H":m=o(n);break;case"M":m=o(l.getUTCMinutes());break;case"S":m=o(l.getUTCSeconds());break;case"d":m=""+l.getUTCDate();break;case"m":m=""+(l.getUTCMonth()+1);break;case"y":m=""+l.getUTCFullYear();break;case"b":m=""+h[l.getUTCMonth()];break;case"p":m=(k)?("am"):("pm");break;case"P":m=(k)?("AM"):("PM");break;case"0":m="";j=true;break}if(m&&j){m=o(m);j=false}e.push(m);if(!j){p=false}}else{if(m=="%"){p=true}else{e.push(m)}}}return e.join("")};function a(e,d){return d*Math.floor(e/d)}})(jQuery); \ No newline at end of file diff --git a/themes/bootstrap/js/flot/jquery.flot.selection.min.js b/themes/bootstrap/js/flot/jquery.flot.selection.min.js new file mode 100644 index 00000000000..badc0052dbe --- /dev/null +++ b/themes/bootstrap/js/flot/jquery.flot.selection.min.js @@ -0,0 +1 @@ +(function(a){function b(k){var p={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false};var m={};var r=null;function e(s){if(p.active){l(s);k.getPlaceholder().trigger("plotselecting",[g()])}}function n(s){if(s.which!=1){return}document.body.focus();if(document.onselectstart!==undefined&&m.onselectstart==null){m.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!==undefined&&m.ondrag==null){m.ondrag=document.ondrag;document.ondrag=function(){return false}}d(p.first,s);p.active=true;r=function(t){j(t)};a(document).one("mouseup",r)}function j(s){r=null;if(document.onselectstart!==undefined){document.onselectstart=m.onselectstart}if(document.ondrag!==undefined){document.ondrag=m.ondrag}p.active=false;l(s);if(f()){i()}else{k.getPlaceholder().trigger("plotunselected",[]);k.getPlaceholder().trigger("plotselecting",[null])}return false}function g(){if(!f()){return null}var u={},t=p.first,s=p.second;a.each(k.getAxes(),function(v,w){if(w.used){var y=w.c2p(t[w.direction]),x=w.c2p(s[w.direction]);u[v]={from:Math.min(y,x),to:Math.max(y,x)}}});return u}function i(){var s=g();k.getPlaceholder().trigger("plotselected",[s]);if(s.xaxis&&s.yaxis){k.getPlaceholder().trigger("selected",[{x1:s.xaxis.from,y1:s.yaxis.from,x2:s.xaxis.to,y2:s.yaxis.to}])}}function h(t,u,s){return u<t?t:(u>s?s:u)}function d(w,t){var v=k.getOptions();var u=k.getPlaceholder().offset();var s=k.getPlotOffset();w.x=h(0,t.pageX-u.left-s.left,k.width());w.y=h(0,t.pageY-u.top-s.top,k.height());if(v.selection.mode=="y"){w.x=w==p.first?0:k.width()}if(v.selection.mode=="x"){w.y=w==p.first?0:k.height()}}function l(s){if(s.pageX==null){return}d(p.second,s);if(f()){p.show=true;k.triggerRedrawOverlay()}else{q(true)}}function q(s){if(p.show){p.show=false;k.triggerRedrawOverlay();if(!s){k.getPlaceholder().trigger("plotunselected",[])}}}function c(s,w){var t,y,z,A,x=k.getAxes();for(var u in x){t=x[u];if(t.direction==w){A=w+t.n+"axis";if(!s[A]&&t.n==1){A=w+"axis"}if(s[A]){y=s[A].from;z=s[A].to;break}}}if(!s[A]){t=w=="x"?k.getXAxes()[0]:k.getYAxes()[0];y=s[w+"1"];z=s[w+"2"]}if(y!=null&&z!=null&&y>z){var v=y;y=z;z=v}return{from:y,to:z,axis:t}}function o(t,s){var v,u,w=k.getOptions();if(w.selection.mode=="y"){p.first.x=0;p.second.x=k.width()}else{u=c(t,"x");p.first.x=u.axis.p2c(u.from);p.second.x=u.axis.p2c(u.to)}if(w.selection.mode=="x"){p.first.y=0;p.second.y=k.height()}else{u=c(t,"y");p.first.y=u.axis.p2c(u.from);p.second.y=u.axis.p2c(u.to)}p.show=true;k.triggerRedrawOverlay();if(!s&&f()){i()}}function f(){var s=5;return Math.abs(p.second.x-p.first.x)>=s&&Math.abs(p.second.y-p.first.y)>=s}k.clearSelection=q;k.setSelection=o;k.getSelection=g;k.hooks.bindEvents.push(function(t,s){var u=t.getOptions();if(u.selection.mode!=null){s.mousemove(e);s.mousedown(n)}});k.hooks.drawOverlay.push(function(v,D){if(p.show&&f()){var t=v.getPlotOffset();var s=v.getOptions();D.save();D.translate(t.left,t.top);var z=a.color.parse(s.selection.color);D.strokeStyle=z.scale("a",0.8).toString();D.lineWidth=1;D.lineJoin="round";D.fillStyle=z.scale("a",0.4).toString();var B=Math.min(p.first.x,p.second.x),A=Math.min(p.first.y,p.second.y),C=Math.abs(p.second.x-p.first.x),u=Math.abs(p.second.y-p.first.y);D.fillRect(B,A,C,u);D.strokeRect(B,A,C,u);D.restore()}});k.hooks.shutdown.push(function(t,s){s.unbind("mousemove",e);s.unbind("mousedown",n);if(r){a(document).unbind("mouseup",r)}})}a.plot.plugins.push({init:b,options:{selection:{mode:null,color:"#e8cfac"}},name:"selection",version:"1.1"})})(jQuery); \ No newline at end of file diff --git a/themes/bootstrap/js/jquery.swipe.min.js b/themes/bootstrap/js/jquery.swipe.min.js new file mode 100644 index 00000000000..68528d71561 --- /dev/null +++ b/themes/bootstrap/js/jquery.swipe.min.js @@ -0,0 +1,3 @@ +/*! jQuery Mobile v1.3.1 | Copyright 2010, 2013 jQuery Foundation, Inc. | jquery.org/license */ + +(function(e,t,n){typeof define=="function"&&define.amd?define(["jquery"],function(r){return n(r,e,t),r.mobile}):n(e.jQuery,e,t)})(this,document,function(e,t,n,r){(function(e,t,n,r){function x(e){while(e&&typeof e.originalEvent!="undefined")e=e.originalEvent;return e}function T(t,n){var i=t.type,s,o,a,l,c,h,p,d,v;t=e.Event(t),t.type=n,s=t.originalEvent,o=e.event.props,i.search(/^(mouse|click)/)>-1&&(o=f);if(s)for(p=o.length,l;p;)l=o[--p],t[l]=s[l];i.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1);if(i.search(/^touch/)!==-1){a=x(s),i=a.touches,c=a.changedTouches,h=i&&i.length?i[0]:c&&c.length?c[0]:r;if(h)for(d=0,v=u.length;d<v;d++)l=u[d],t[l]=h[l]}return t}function N(t){var n={},r,s;while(t){r=e.data(t,i);for(s in r)r[s]&&(n[s]=n.hasVirtualBinding=!0);t=t.parentNode}return n}function C(t,n){var r;while(t){r=e.data(t,i);if(r&&(!n||r[n]))return t;t=t.parentNode}return null}function k(){g=!1}function L(){g=!0}function A(){E=0,v.length=0,m=!1,L()}function O(){k()}function M(){_(),c=setTimeout(function(){c=0,A()},e.vmouse.resetTimerDuration)}function _(){c&&(clearTimeout(c),c=0)}function D(t,n,r){var i;if(r&&r[t]||!r&&C(n.target,t))i=T(n,t),e(n.target).trigger(i);return i}function P(t){var n=e.data(t.target,s);if(!m&&(!E||E!==n)){var r=D("v"+t.type,t);r&&(r.isDefaultPrevented()&&t.preventDefault(),r.isPropagationStopped()&&t.stopPropagation(),r.isImmediatePropagationStopped()&&t.stopImmediatePropagation())}}function H(t){var n=x(t).touches,r,i;if(n&&n.length===1){r=t.target,i=N(r);if(i.hasVirtualBinding){E=w++,e.data(r,s,E),_(),O(),d=!1;var o=x(t).touches[0];h=o.pageX,p=o.pageY,D("vmouseover",t,i),D("vmousedown",t,i)}}}function B(e){if(g)return;d||D("vmousecancel",e,N(e.target)),d=!0,M()}function j(t){if(g)return;var n=x(t).touches[0],r=d,i=e.vmouse.moveDistanceThreshold,s=N(t.target);d=d||Math.abs(n.pageX-h)>i||Math.abs(n.pageY-p)>i,d&&!r&&D("vmousecancel",t,s),D("vmousemove",t,s),M()}function F(e){if(g)return;L();var t=N(e.target),n;D("vmouseup",e,t);if(!d){var r=D("vclick",e,t);r&&r.isDefaultPrevented()&&(n=x(e).changedTouches[0],v.push({touchID:E,x:n.clientX,y:n.clientY}),m=!0)}D("vmouseout",e,t),d=!1,M()}function I(t){var n=e.data(t,i),r;if(n)for(r in n)if(n[r])return!0;return!1}function q(){}function R(t){var n=t.substr(1);return{setup:function(r,s){I(this)||e.data(this,i,{});var o=e.data(this,i);o[t]=!0,l[t]=(l[t]||0)+1,l[t]===1&&b.bind(n,P),e(this).bind(n,q),y&&(l.touchstart=(l.touchstart||0)+1,l.touchstart===1&&b.bind("touchstart",H).bind("touchend",F).bind("touchmove",j).bind("scroll",B))},teardown:function(r,s){--l[t],l[t]||b.unbind(n,P),y&&(--l.touchstart,l.touchstart||b.unbind("touchstart",H).unbind("touchmove",j).unbind("touchend",F).unbind("scroll",B));var o=e(this),u=e.data(this,i);u&&(u[t]=!1),o.unbind(n,q),I(this)||o.removeData(i)}}}var i="virtualMouseBindings",s="virtualTouchID",o="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),u="clientX clientY pageX pageY screenX screenY".split(" "),a=e.event.mouseHooks?e.event.mouseHooks.props:[],f=e.event.props.concat(a),l={},c=0,h=0,p=0,d=!1,v=[],m=!1,g=!1,y="addEventListener"in n,b=e(n),w=1,E=0,S;e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(var U=0;U<o.length;U++)e.event.special[o[U]]=R(o[U]);y&&n.addEventListener("click",function(t){var n=v.length,r=t.target,i,o,u,a,f,l;if(n){i=t.clientX,o=t.clientY,S=e.vmouse.clickDistanceThreshold,u=r;while(u){for(a=0;a<n;a++){f=v[a],l=0;if(u===r&&Math.abs(f.x-i)<S&&Math.abs(f.y-o)<S||e.data(u,s)===f.touchID){t.preventDefault(),t.stopPropagation();return}}u=u.parentNode}}},!0)})(e,t,n),function(e){e.mobile={}}(e),function(e,t){var r={touch:"ontouchend"in n};e.mobile.support=e.mobile.support||{},e.extend(e.support,r),e.extend(e.mobile.support,r)}(e),function(e,t,r){function l(t,n,r){var i=r.type;r.type=n,e.event.dispatch.call(t,r),r.type=i}var i=e(n);e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,n){e.fn[n]=function(e){return e?this.bind(n,e):this.trigger(n)},e.attrFn&&(e.attrFn[n]=!0)});var s=e.mobile.support.touch,o="touchmove scroll",u=s?"touchstart":"mousedown",a=s?"touchend":"mouseup",f=s?"touchmove":"mousemove";e.event.special.scrollstart={enabled:!0,setup:function(){function s(e,n){r=n,l(t,r?"scrollstart":"scrollstop",e)}var t=this,n=e(t),r,i;n.bind(o,function(t){if(!e.event.special.scrollstart.enabled)return;r||s(t,!0),clearTimeout(i),i=setTimeout(function(){s(t,!1)},50)})}},e.event.special.tap={tapholdThreshold:750,setup:function(){var t=this,n=e(t);n.bind("vmousedown",function(r){function a(){clearTimeout(u)}function f(){a(),n.unbind("vclick",c).unbind("vmouseup",a),i.unbind("vmousecancel",f)}function c(e){f(),s===e.target&&l(t,"tap",e)}if(r.which&&r.which!==1)return!1;var s=r.target,o=r.originalEvent,u;n.bind("vmouseup",a).bind("vclick",c),i.bind("vmousecancel",f),u=setTimeout(function(){l(t,"taphold",e.Event("taphold",{target:s}))},e.event.special.tap.tapholdThreshold)})}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:75,start:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t;return{time:(new Date).getTime(),coords:[n.pageX,n.pageY],origin:e(t.target)}},stop:function(e){var t=e.originalEvent.touches?e.originalEvent.touches[0]:e;return{time:(new Date).getTime(),coords:[t.pageX,t.pageY]}},handleSwipe:function(t,n){n.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-n.coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-n.coords[1])<e.event.special.swipe.verticalDistanceThreshold&&t.origin.trigger("swipe").trigger(t.coords[0]>n.coords[0]?"swipeleft":"swiperight")},setup:function(){var t=this,n=e(t);n.bind(u,function(t){function o(t){if(!i)return;s=e.event.special.swipe.stop(t),Math.abs(i.coords[0]-s.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault()}var i=e.event.special.swipe.start(t),s;n.bind(f,o).one(a,function(){n.unbind(f,o),i&&s&&e.event.special.swipe.handleSwipe(i,s),i=s=r})})}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe",swiperight:"swipe"},function(t,n){e.event.special[t]={setup:function(){e(this).bind(n,e.noop)}}})}(e,this)}); \ No newline at end of file diff --git a/themes/bootstrap/js/jquery.validate.min.js b/themes/bootstrap/js/jquery.validate.min.js new file mode 100644 index 00000000000..cbaf5109a43 --- /dev/null +++ b/themes/bootstrap/js/jquery.validate.min.js @@ -0,0 +1,2 @@ +/*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\n* https://github.com/jzaefferer/jquery-validation +* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT */(function(t){t.extend(t.fn,{validate:function(e){if(!this.length)return e&&e.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."),void 0;var i=t.data(this[0],"validator");return i?i:(this.attr("novalidate","novalidate"),i=new t.validator(e,this[0]),t.data(this[0],"validator",i),i.settings.onsubmit&&(this.validateDelegate(":submit","click",function(e){i.settings.submitHandler&&(i.submitButton=e.target),t(e.target).hasClass("cancel")&&(i.cancelSubmit=!0),void 0!==t(e.target).attr("formnovalidate")&&(i.cancelSubmit=!0)}),this.submit(function(e){function s(){var s;return i.settings.submitHandler?(i.submitButton&&(s=t("<input type='hidden'/>").attr("name",i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)),i.settings.submitHandler.call(i,i.currentForm,e),i.submitButton&&s.remove(),!1):!0}return i.settings.debug&&e.preventDefault(),i.cancelSubmit?(i.cancelSubmit=!1,s()):i.form()?i.pendingRequest?(i.formSubmitted=!0,!1):s():(i.focusInvalid(),!1)})),i)},valid:function(){if(t(this[0]).is("form"))return this.validate().form();var e=!0,i=t(this[0].form).validate();return this.each(function(){e=e&&i.element(this)}),e},removeAttrs:function(e){var i={},s=this;return t.each(e.split(/\s/),function(t,e){i[e]=s.attr(e),s.removeAttr(e)}),i},rules:function(e,i){var s=this[0];if(e){var r=t.data(s.form,"validator").settings,n=r.rules,a=t.validator.staticRules(s);switch(e){case"add":t.extend(a,t.validator.normalizeRule(i)),delete a.messages,n[s.name]=a,i.messages&&(r.messages[s.name]=t.extend(r.messages[s.name],i.messages));break;case"remove":if(!i)return delete n[s.name],a;var u={};return t.each(i.split(/\s/),function(t,e){u[e]=a[e],delete a[e]}),u}}var o=t.validator.normalizeRules(t.extend({},t.validator.classRules(s),t.validator.attributeRules(s),t.validator.dataRules(s),t.validator.staticRules(s)),s);if(o.required){var l=o.required;delete o.required,o=t.extend({required:l},o)}return o}}),t.extend(t.expr[":"],{blank:function(e){return!t.trim(""+t(e).val())},filled:function(e){return!!t.trim(""+t(e).val())},unchecked:function(e){return!t(e).prop("checked")}}),t.validator=function(e,i){this.settings=t.extend(!0,{},t.validator.defaults,e),this.currentForm=i,this.init()},t.validator.format=function(e,i){return 1===arguments.length?function(){var i=t.makeArray(arguments);return i.unshift(e),t.validator.format.apply(this,i)}:(arguments.length>2&&i.constructor!==Array&&(i=t.makeArray(arguments).slice(1)),i.constructor!==Array&&(i=[i]),t.each(i,function(t,i){e=e.replace(RegExp("\\{"+t+"\\}","g"),function(){return i})}),e)},t.extend(t.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:t([]),errorLabelContainer:t([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(t){this.lastActive=t,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(t)).hide())},onfocusout:function(t){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(t,e){(9!==e.which||""!==this.elementValue(t))&&(t.name in this.submitted||t===this.lastElement)&&this.element(t)},onclick:function(t){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).addClass(i).removeClass(s):t(e).addClass(i).removeClass(s)},unhighlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).removeClass(i).addClass(s):t(e).removeClass(i).addClass(s)}},setDefaults:function(e){t.extend(t.validator.defaults,e)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:t.validator.format("Please enter no more than {0} characters."),minlength:t.validator.format("Please enter at least {0} characters."),rangelength:t.validator.format("Please enter a value between {0} and {1} characters long."),range:t.validator.format("Please enter a value between {0} and {1}."),max:t.validator.format("Please enter a value less than or equal to {0}."),min:t.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function e(e){var i=t.data(this[0].form,"validator"),s="on"+e.type.replace(/^validate/,"");i.settings[s]&&i.settings[s].call(i,this[0],e)}this.labelContainer=t(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||t(this.currentForm),this.containers=t(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var i=this.groups={};t.each(this.settings.groups,function(e,s){"string"==typeof s&&(s=s.split(/\s/)),t.each(s,function(t,s){i[s]=e})});var s=this.settings.rules;t.each(s,function(e,i){s[e]=t.validator.normalizeRule(i)}),t(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",e).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",e),this.settings.invalidHandler&&t(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),t.extend(this.submitted,this.errorMap),this.invalid=t.extend({},this.errorMap),this.valid()||t(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var t=0,e=this.currentElements=this.elements();e[t];t++)this.check(e[t]);return this.valid()},element:function(e){e=this.validationTargetFor(this.clean(e)),this.lastElement=e,this.prepareElement(e),this.currentElements=t(e);var i=this.check(e)!==!1;return i?delete this.invalid[e.name]:this.invalid[e.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),i},showErrors:function(e){if(e){t.extend(this.errorMap,e),this.errorList=[];for(var i in e)this.errorList.push({message:e[i],element:this.findByName(i)[0]});this.successList=t.grep(this.successList,function(t){return!(t.name in e)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){t.fn.resetForm&&t(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e=0;for(var i in t)e++;return e},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{t(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(e){}},findLastActive:function(){var e=this.lastActive;return e&&1===t.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return t(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&e.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in i||!e.objectLength(t(this).rules())?!1:(i[this.name]=!0,!0)})},clean:function(e){return t(e)[0]},errors:function(){var e=this.settings.errorClass.replace(" ",".");return t(this.settings.errorElement+"."+e,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=t([]),this.toHide=t([]),this.currentElements=t([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(e){var i=t(e).attr("type"),s=t(e).val();return"radio"===i||"checkbox"===i?t("input[name='"+t(e).attr("name")+"']:checked").val():"string"==typeof s?s.replace(/\r/g,""):s},check:function(e){e=this.validationTargetFor(this.clean(e));var i,s=t(e).rules(),r=!1,n=this.elementValue(e);for(var a in s){var u={method:a,parameters:s[a]};try{if(i=t.validator.methods[a].call(this,n,e,u.parameters),"dependency-mismatch"===i){r=!0;continue}if(r=!1,"pending"===i)return this.toHide=this.toHide.not(this.errorsFor(e)),void 0;if(!i)return this.formatAndAdd(e,u),!1}catch(o){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+e.id+", check the '"+u.method+"' method.",o),o}}return r?void 0:(this.objectLength(s)&&this.successList.push(e),!0)},customDataMessage:function(e,i){return t(e).data("msg-"+i.toLowerCase())||e.attributes&&t(e).attr("data-msg-"+i.toLowerCase())},customMessage:function(t,e){var i=this.settings.messages[t];return i&&(i.constructor===String?i:i[e])},findDefined:function(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t];return void 0},defaultMessage:function(e,i){return this.findDefined(this.customMessage(e.name,i),this.customDataMessage(e,i),!this.settings.ignoreTitle&&e.title||void 0,t.validator.messages[i],"<strong>Warning: No message defined for "+e.name+"</strong>")},formatAndAdd:function(e,i){var s=this.defaultMessage(e,i.method),r=/\$?\{(\d+)\}/g;"function"==typeof s?s=s.call(this,i.parameters,e):r.test(s)&&(s=t.validator.format(s.replace(r,"{$1}"),i.parameters)),this.errorList.push({message:s,element:e}),this.errorMap[e.name]=s,this.submitted[e.name]=s},addWrapper:function(t){return this.settings.wrapper&&(t=t.add(t.parent(this.settings.wrapper))),t},defaultShowErrors:function(){var t,e;for(t=0;this.errorList[t];t++){var i=this.errorList[t];this.settings.highlight&&this.settings.highlight.call(this,i.element,this.settings.errorClass,this.settings.validClass),this.showLabel(i.element,i.message)}if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(t=0;this.successList[t];t++)this.showLabel(this.successList[t]);if(this.settings.unhighlight)for(t=0,e=this.validElements();e[t];t++)this.settings.unhighlight.call(this,e[t],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return t(this.errorList).map(function(){return this.element})},showLabel:function(e,i){var s=this.errorsFor(e);s.length?(s.removeClass(this.settings.validClass).addClass(this.settings.errorClass),s.html(i)):(s=t("<"+this.settings.errorElement+">").attr("for",this.idOrName(e)).addClass(this.settings.errorClass).html(i||""),this.settings.wrapper&&(s=s.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.append(s).length||(this.settings.errorPlacement?this.settings.errorPlacement(s,t(e)):s.insertAfter(e))),!i&&this.settings.success&&(s.text(""),"string"==typeof this.settings.success?s.addClass(this.settings.success):this.settings.success(s,e)),this.toShow=this.toShow.add(s)},errorsFor:function(e){var i=this.idOrName(e);return this.errors().filter(function(){return t(this).attr("for")===i})},idOrName:function(t){return this.groups[t.name]||(this.checkable(t)?t.name:t.id||t.name)},validationTargetFor:function(t){return this.checkable(t)&&(t=this.findByName(t.name).not(this.settings.ignore)[0]),t},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(e){return t(this.currentForm).find("[name='"+e+"']")},getLength:function(e,i){switch(i.nodeName.toLowerCase()){case"select":return t("option:selected",i).length;case"input":if(this.checkable(i))return this.findByName(i.name).filter(":checked").length}return e.length},depend:function(t,e){return this.dependTypes[typeof t]?this.dependTypes[typeof t](t,e):!0},dependTypes:{"boolean":function(t){return t},string:function(e,i){return!!t(e,i.form).length},"function":function(t,e){return t(e)}},optional:function(e){var i=this.elementValue(e);return!t.validator.methods.required.call(this,i,e)&&"dependency-mismatch"},startRequest:function(t){this.pending[t.name]||(this.pendingRequest++,this.pending[t.name]=!0)},stopRequest:function(e,i){this.pendingRequest--,0>this.pendingRequest&&(this.pendingRequest=0),delete this.pending[e.name],i&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(t(this.currentForm).submit(),this.formSubmitted=!1):!i&&0===this.pendingRequest&&this.formSubmitted&&(t(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(e){return t.data(e,"previousValue")||t.data(e,"previousValue",{old:null,valid:!0,message:this.defaultMessage(e,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(e,i){e.constructor===String?this.classRuleSettings[e]=i:t.extend(this.classRuleSettings,e)},classRules:function(e){var i={},s=t(e).attr("class");return s&&t.each(s.split(" "),function(){this in t.validator.classRuleSettings&&t.extend(i,t.validator.classRuleSettings[this])}),i},attributeRules:function(e){var i={},s=t(e),r=s[0].getAttribute("type");for(var n in t.validator.methods){var a;"required"===n?(a=s.get(0).getAttribute(n),""===a&&(a=!0),a=!!a):a=s.attr(n),/min|max/.test(n)&&(null===r||/number|range|text/.test(r))&&(a=Number(a)),a?i[n]=a:r===n&&"range"!==r&&(i[n]=!0)}return i.maxlength&&/-1|2147483647|524288/.test(i.maxlength)&&delete i.maxlength,i},dataRules:function(e){var i,s,r={},n=t(e);for(i in t.validator.methods)s=n.data("rule-"+i.toLowerCase()),void 0!==s&&(r[i]=s);return r},staticRules:function(e){var i={},s=t.data(e.form,"validator");return s.settings.rules&&(i=t.validator.normalizeRule(s.settings.rules[e.name])||{}),i},normalizeRules:function(e,i){return t.each(e,function(s,r){if(r===!1)return delete e[s],void 0;if(r.param||r.depends){var n=!0;switch(typeof r.depends){case"string":n=!!t(r.depends,i.form).length;break;case"function":n=r.depends.call(i,i)}n?e[s]=void 0!==r.param?r.param:!0:delete e[s]}}),t.each(e,function(s,r){e[s]=t.isFunction(r)?r(i):r}),t.each(["minlength","maxlength"],function(){e[this]&&(e[this]=Number(e[this]))}),t.each(["rangelength","range"],function(){var i;e[this]&&(t.isArray(e[this])?e[this]=[Number(e[this][0]),Number(e[this][1])]:"string"==typeof e[this]&&(i=e[this].split(/[\s,]+/),e[this]=[Number(i[0]),Number(i[1])]))}),t.validator.autoCreateRanges&&(e.min&&e.max&&(e.range=[e.min,e.max],delete e.min,delete e.max),e.minlength&&e.maxlength&&(e.rangelength=[e.minlength,e.maxlength],delete e.minlength,delete e.maxlength)),e},normalizeRule:function(e){if("string"==typeof e){var i={};t.each(e.split(/\s/),function(){i[this]=!0}),e=i}return e},addMethod:function(e,i,s){t.validator.methods[e]=i,t.validator.messages[e]=void 0!==s?s:t.validator.messages[e],3>i.length&&t.validator.addClassRules(e,t.validator.normalizeRule(e))},methods:{required:function(e,i,s){if(!this.depend(s,i))return"dependency-mismatch";if("select"===i.nodeName.toLowerCase()){var r=t(i).val();return r&&r.length>0}return this.checkable(i)?this.getLength(e,i)>0:t.trim(e).length>0},email:function(t,e){return this.optional(e)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t)},url:function(t,e){return this.optional(e)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(t)},date:function(t,e){return this.optional(e)||!/Invalid|NaN/.test(""+new Date(t))},dateISO:function(t,e){return this.optional(e)||/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(t)},number:function(t,e){return this.optional(e)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\d+$/.test(t)},creditcard:function(t,e){if(this.optional(e))return"dependency-mismatch";if(/[^0-9 \-]+/.test(t))return!1;var i=0,s=0,r=!1;t=t.replace(/\D/g,"");for(var n=t.length-1;n>=0;n--){var a=t.charAt(n);s=parseInt(a,10),r&&(s*=2)>9&&(s-=9),i+=s,r=!r}return 0===i%10},minlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s},maxlength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||s>=r},rangelength:function(e,i,s){var r=t.isArray(e)?e.length:this.getLength(t.trim(e),i);return this.optional(i)||r>=s[0]&&s[1]>=r},min:function(t,e,i){return this.optional(e)||t>=i},max:function(t,e,i){return this.optional(e)||i>=t},range:function(t,e,i){return this.optional(e)||t>=i[0]&&i[1]>=t},equalTo:function(e,i,s){var r=t(s);return this.settings.onfocusout&&r.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){t(i).valid()}),e===r.val()},remote:function(e,i,s){if(this.optional(i))return"dependency-mismatch";var r=this.previousValue(i);if(this.settings.messages[i.name]||(this.settings.messages[i.name]={}),r.originalMessage=this.settings.messages[i.name].remote,this.settings.messages[i.name].remote=r.message,s="string"==typeof s&&{url:s}||s,r.old===e)return r.valid;r.old=e;var n=this;this.startRequest(i);var a={};return a[i.name]=e,t.ajax(t.extend(!0,{url:s,mode:"abort",port:"validate"+i.name,dataType:"json",data:a,success:function(s){n.settings.messages[i.name].remote=r.originalMessage;var a=s===!0||"true"===s;if(a){var u=n.formSubmitted;n.prepareElement(i),n.formSubmitted=u,n.successList.push(i),delete n.invalid[i.name],n.showErrors()}else{var o={},l=s||n.defaultMessage(i,"remote");o[i.name]=r.message=t.isFunction(l)?l(e):l,n.invalid[i.name]=!0,n.showErrors(o)}r.valid=a,n.stopRequest(i,a)}},s)),"pending"}}}),t.format=t.validator.format})(jQuery),function(t){var e={};if(t.ajaxPrefilter)t.ajaxPrefilter(function(t,i,s){var r=t.port;"abort"===t.mode&&(e[r]&&e[r].abort(),e[r]=s)});else{var i=t.ajax;t.ajax=function(s){var r=("mode"in s?s:t.ajaxSettings).mode,n=("port"in s?s:t.ajaxSettings).port;return"abort"===r?(e[n]&&e[n].abort(),e[n]=i.apply(this,arguments),e[n]):i.apply(this,arguments)}}}(jQuery),function(t){t.extend(t.fn,{validateDelegate:function(e,i,s){return this.bind(i,function(i){var r=t(i.target);return r.is(e)?s.apply(r,arguments):void 0})}})}(jQuery); \ No newline at end of file diff --git a/themes/bootstrap/js/jsTree/hierarchyTree.js b/themes/bootstrap/js/jsTree/hierarchyTree.js new file mode 100644 index 00000000000..024c16e7907 --- /dev/null +++ b/themes/bootstrap/js/jsTree/hierarchyTree.js @@ -0,0 +1,287 @@ +/*global hierarchySettings, path, vufindString*/ + +var hierarchyID; +var baseTreeSearchFullURL; + +function showTreeError(msg) +{ + $("#hierarchyTreeHolder").html('<p class="error">' + msg + '</p>'); +} + +function getRecord(recordID) +{ + $.ajax({ + url: path + '/Hierarchy/GetRecord?' + $.param({id: recordID}), + dataType: 'html', + success: function(response) { + if (response) { + $('#hierarchyRecord').html(html_entity_decode(response)); + // Remove the old path highlighting + $('#hierarchyTree a').removeClass("jstree-highlight"); + // Add Current path highlighting + var jsTreeNode = $(":input[value='"+recordID+"']").parent(); + jsTreeNode.children("a").addClass("jstree-highlight"); + jsTreeNode.parents("li").children("a").addClass("jstree-highlight"); + } + } + }); +} + +function hideFullHierarchy(jsTreeNode) +{ + // Hide all nodes + $('#hierarchyTree li').hide(); + // Show the nodes on the current path + $(jsTreeNode).show().parents().show(); + // Show the nodes below the current path + $(jsTreeNode).find("li").show(); +} + +function scroll(scroller, mode) +{ + // Get the currently cicked item + var jsTreeNode = $(".jstree-clicked").parent('li'); + // Toggle display of closed nodes + $('#hierarchyTree li.jstree-closed').toggle(); + if (mode == "show") { + $('#hierarchyTree li').show(); + $(scroller).animate({ + scrollTop: -$(scroller).scrollTop() + }); + $('#toggleTree').html(vufindString.hideTree); + } else { + hideFullHierarchy(jsTreeNode); + $(scroller).animate({ + scrollTop: $(jsTreeNode).offset().top - $(scroller).offset().top + $(scroller).scrollTop() + }); + $('#toggleTree').html(vufindString.showTree); + } +} + +function changeNoResultLabel(display) +{ + if (display) { + $("#treeSearchNoResults").show(); + } else { + $("#treeSearchNoResults").hide(); + } +} + +function changeLimitReachedLabel(display) +{ + if (display) { + $("#treeSearchLimitReached").show(); + } else { + $("#treeSearchLimitReached").hide(); + } +} + +function doTreeSearch() +{ + var keyword = $("#treeSearchText").val(); + if (keyword == ""){ + changeNoResultLabel(true); + return; + } + var searchType = $("#treeSearchType").val(); + + $("#treeSearchLoadingImg").show(); + $.getJSON(path + '/Hierarchy/SearchTree?' + $.param({'lookfor': keyword, 'hierarchyID': hierarchyID, 'type': searchType}), function(results) + { + if (results["limitReached"] == true) { + if(typeof(baseTreeSearchFullURL) == "undefined" || baseTreeSearchFullURL == null){ + baseTreeSearchFullURL = $("#fullSearchLink").attr("href"); + } + $("#fullSearchLink").attr("href", baseTreeSearchFullURL + "?lookfor="+ keyword + "&filter[]=hierarchy_top_id:\"" + hierarchyID + "\""); + changeLimitReachedLabel(true); + } else { + changeLimitReachedLabel(false); + } + + if (results["results"].length >= 1) { + $("#hierarchyTree .jstree-search").removeClass("jstree-search"); + $("#hierarchyTree").jstree("close_all", hierarchyID); + changeNoResultLabel(false); + } else { + $("#hierarchyTree .jstree-search").removeClass("jstree-search"); + changeNoResultLabel(true); + } + + $.each(results["results"], function(key, val) + { + $("jstree-open").removeClass("jstree-open"); + var jsTreeNode = $('.jsTreeID:input[value="'+val+'"]').parent(); + if (jsTreeNode.hasClass("jstree-closed")) { + jsTreeNode.removeClass("jstree-closed").addClass("jstree-open"); + } + jsTreeNode.show().children('a:first').addClass("jstree-search"); + var parents = $(jsTreeNode).parents(); + parents.each(function() { + if ($(this).hasClass("jstree-closed")) { + $(this).removeClass("jstree-closed").addClass("jstree-open"); + } + $(this).show(); + }); + }); + if (results["results"].length == 1) { + $("#hierarchyTree .jstree-clicked").removeClass("jstree-clicked"); + // only do this for collection pages + if ($(".Collection").length != 0) { + getRecord(results["results"][0]); + } + } + $("#treeSearchLoadingImg").hide(); + }); +} + +$(document).ready(function() +{ + // Code for the search button + $('#treeSearch input[type="submit"]').click(doTreeSearch); + + hierarchyID = $("#hierarchyTree").find(".hiddenHierarchyId")[0].value; + var recordID = $("#hierarchyTree").find(".hiddenRecordId")[0].value; + var scroller = hierarchySettings.lightboxMode ? '#modalDialog' : '#hierarchyTree'; + var context = $("#hierarchyTree").find(".hiddenContext")[0].value; + + if (!hierarchySettings.fullHierarchy) { + // Set Up Partial Hierarchy View Toggle + $('#hierarchyTree').parent().prepend('<a href="#" id="toggleTree" class="closed">' + vufindString.showTree + '</a>'); + $('#toggleTree').click(function(e) + { + e.preventDefault(); + $(this).toggleClass("open"); + if ($(this).hasClass("open")) { + scroll(scroller, "show"); + } else { + scroll(scroller, "hide"); + } + $("#hierarchyTree").jstree("toggle_dots"); + }); + } + + $("#hierarchyTree") + .bind("loaded.jstree", function (event, data) + { + var idList = $('#hierarchyTree .JSTreeID'); + $(idList).each(function() + { + var id = $.trim($(this).text()); + $(this).before('<input type="hidden" class="jsTreeID '+context+ '" value="'+id+'" />'); + $(this).remove(); + }); + + $(".Collection").each(function() + { + var id = $(this).attr("value"); + $(this).next("a").click(function(e) + { + e.preventDefault(); + $("#hierarchyTree a").removeClass("jstree-clicked"); + $(this).addClass("jstree-clicked"); + // Open this node + $(this).parent().removeClass("jstree-closed").addClass("jstree-open"); + getRecord(id); + return false; + }); + }); + + $("#hierarchyTree a").click(function(e) + { + e.preventDefault(); + if (context == "Record") { + window.location = $(this).attr("href"); + } + if ($('#toggleTree').length > 0 && !$('#toggleTree').hasClass("open")) { + hideFullHierarchy($(this).parent()); + } + }); + + var jsTreeNode = $(".jsTreeID:input[value='"+recordID+"']").parent(); + // Open Nodes to Current Path + jsTreeNode.parents("li").removeClass("jstree-closed").addClass("jstree-open"); + // Initially Open Current node too + jsTreeNode.removeClass("jstree-closed").addClass("jstree-open"); + // Add clicked class + $("> a", jsTreeNode).addClass("jstree-clicked"); + // Add highlight class to parents + jsTreeNode.parents("li").children("a").addClass("jstree-highlight"); + + if (!hierarchySettings.fullHierarchy) { + // Initial hide of nodes outside current path + hideFullHierarchy(jsTreeNode); + $("#hierarchyTree").jstree("toggle_dots"); + } + // Scroll to the current record + $(scroller).delay(250).animate({ + scrollTop: jsTreeNode.offset().top - $(scroller).offset().top + $(scroller).scrollTop() + }); + }) + .jstree({ + "xml_data" : { + "ajax" : { + "url" : path + '/Hierarchy/GetTree?' + $.param({'hierarchyID': hierarchyID, 'id': recordID, 'context': context, mode: "Tree"}), + success: function(data) + { + // Necessary as data is a string + var dataAsXML = $.parseXML(data); + if(dataAsXML) { + var error = $(dataAsXML).find("error"); + if (error.length > 0) { + showTreeError($(error).text()); + return false; + } else { + return data; + } + } else { + showTreeError("Unable to Parse XML"); + } + }, + failure: function() + { + showTreeError("Unable to Load Tree"); + } + }, + "xsl" : "nest" + }, + "plugins" : [ "themes", "xml_data", "ui" ], + "themes" : { + "url": path + '/themes/bootstrap/js/jsTree/themes/vufind/style.css' + } + }).bind("open_node.jstree close_node.jstree", function (e, data) + { + $(data.args[0]).find("li").show(); + }); + + $('#treeSearch').show(); + $('#treeSearchText').bind('keypress', function(e) + { + var code = (e.keyCode ? e.keyCode : e.which); + if(code == 13) { + // Enter keycode should call the search code + doTreeSearch(); + } + }); +}); + +function html_entity_decode(string, quote_style) { + var hash_map = {}, + symbol = '', + tmp_str = '', + entity = ''; + tmp_str = string.toString(); + + delete(hash_map['&']); + hash_map['&'] = '&'; + hash_map['>'] = '>'; + hash_map['<'] = '<'; + + for (symbol in hash_map) { + entity = hash_map[symbol]; + tmp_str = tmp_str.split(entity).join(symbol); + } + tmp_str = tmp_str.split(''').join("'"); + + return tmp_str; +} + diff --git a/themes/bootstrap/js/jsTree/jquery.jstree.js b/themes/bootstrap/js/jsTree/jquery.jstree.js new file mode 100644 index 00000000000..eec1b7639d3 --- /dev/null +++ b/themes/bootstrap/js/jsTree/jquery.jstree.js @@ -0,0 +1,4571 @@ +/* + * jsTree 1.0-rc3 + * http://jstree.com/ + * + * Copyright (c) 2010 Ivan Bozhanov (vakata.com) + * + * Licensed same as jquery - under the terms of either the MIT License or the GPL Version 2 License + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * $Date: 2011-02-09 01:17:14 +0200 (ÑÑ€, 09 февр 2011) $ + * $Revision: 236 $ + */ + +/*jslint browser: true, onevar: true, undef: true, bitwise: true, strict: true */ +/*global window : false, clearInterval: false, clearTimeout: false, document: false, setInterval: false, setTimeout: false, jQuery: false, navigator: false, XSLTProcessor: false, DOMParser: false, XMLSerializer: false*/ + +"use strict"; + +// top wrapper to prevent multiple inclusion (is this OK?) +(function () { if(jQuery && jQuery.jstree) { return; } + var is_ie6 = false, is_ie7 = false, is_ff2 = false; + +/* + * jsTree core + */ +(function ($) { + // Common functions not related to jsTree + // decided to move them to a `vakata` "namespace" + $.vakata = {}; + // CSS related functions + $.vakata.css = { + get_css : function(rule_name, delete_flag, sheet) { + rule_name = rule_name.toLowerCase(); + var css_rules = sheet.cssRules || sheet.rules, + j = 0; + do { + if(css_rules.length && j > css_rules.length + 5) { return false; } + if(css_rules[j].selectorText && css_rules[j].selectorText.toLowerCase() == rule_name) { + if(delete_flag === true) { + if(sheet.removeRule) { sheet.removeRule(j); } + if(sheet.deleteRule) { sheet.deleteRule(j); } + return true; + } + else { return css_rules[j]; } + } + } + while (css_rules[++j]); + return false; + }, + add_css : function(rule_name, sheet) { + if($.jstree.css.get_css(rule_name, false, sheet)) { return false; } + if(sheet.insertRule) { sheet.insertRule(rule_name + ' { }', 0); } else { sheet.addRule(rule_name, null, 0); } + return $.vakata.css.get_css(rule_name); + }, + remove_css : function(rule_name, sheet) { + return $.vakata.css.get_css(rule_name, true, sheet); + }, + add_sheet : function(opts) { + var tmp = false, is_new = true; + if(opts.str) { + if(opts.title) { tmp = $("style[id='" + opts.title + "-stylesheet']")[0]; } + if(tmp) { is_new = false; } + else { + tmp = document.createElement("style"); + tmp.setAttribute('type',"text/css"); + if(opts.title) { tmp.setAttribute("id", opts.title + "-stylesheet"); } + } + if(tmp.styleSheet) { + if(is_new) { + document.getElementsByTagName("head")[0].appendChild(tmp); + tmp.styleSheet.cssText = opts.str; + } + else { + tmp.styleSheet.cssText = tmp.styleSheet.cssText + " " + opts.str; + } + } + else { + tmp.appendChild(document.createTextNode(opts.str)); + document.getElementsByTagName("head")[0].appendChild(tmp); + } + return tmp.sheet || tmp.styleSheet; + } + if(opts.url) { + if(document.createStyleSheet) { + try { tmp = document.createStyleSheet(opts.url); } catch (e) { } + } + else { + tmp = document.createElement('link'); + tmp.rel = 'stylesheet'; + tmp.type = 'text/css'; + tmp.media = "all"; + tmp.href = opts.url; + document.getElementsByTagName("head")[0].appendChild(tmp); + return tmp.styleSheet; + } + } + } + }; + + // private variables + var instances = [], // instance array (used by $.jstree.reference/create/focused) + focused_instance = -1, // the index in the instance array of the currently focused instance + plugins = {}, // list of included plugins + prepared_move = {}; // for the move_node function + + // jQuery plugin wrapper (thanks to jquery UI widget function) + $.fn.jstree = function (settings) { + var isMethodCall = (typeof settings == 'string'), // is this a method call like $().jstree("open_node") + args = Array.prototype.slice.call(arguments, 1), + returnValue = this; + + // if a method call execute the method on all selected instances + if(isMethodCall) { + if(settings.substring(0, 1) == '_') { return returnValue; } + this.each(function() { + var instance = instances[$.data(this, "jstree_instance_id")], + methodValue = (instance && $.isFunction(instance[settings])) ? instance[settings].apply(instance, args) : instance; + if(typeof methodValue !== "undefined" && (settings.indexOf("is_") === 0 || (methodValue !== true && methodValue !== false))) { returnValue = methodValue; return false; } + }); + } + else { + this.each(function() { + // extend settings and allow for multiple hashes and $.data + var instance_id = $.data(this, "jstree_instance_id"), + a = [], + b = settings ? $.extend({}, true, settings) : {}, + c = $(this), + s = false, + t = []; + a = a.concat(args); + if(c.data("jstree")) { a.push(c.data("jstree")); } + b = a.length ? $.extend.apply(null, [true, b].concat(a)) : b; + + // if an instance already exists, destroy it first + if(typeof instance_id !== "undefined" && instances[instance_id]) { instances[instance_id].destroy(); } + // push a new empty object to the instances array + instance_id = parseInt(instances.push({}),10) - 1; + // store the jstree instance id to the container element + $.data(this, "jstree_instance_id", instance_id); + // clean up all plugins + b.plugins = $.isArray(b.plugins) ? b.plugins : $.jstree.defaults.plugins.slice(); + b.plugins.unshift("core"); + // only unique plugins + b.plugins = b.plugins.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(","); + + // extend defaults with passed data + s = $.extend(true, {}, $.jstree.defaults, b); + s.plugins = b.plugins; + $.each(plugins, function (i, val) { + if($.inArray(i, s.plugins) === -1) { s[i] = null; delete s[i]; } + else { t.push(i); } + }); + s.plugins = t; + + // push the new object to the instances array (at the same time set the default classes to the container) and init + instances[instance_id] = new $.jstree._instance(instance_id, $(this).addClass("jstree jstree-" + instance_id), s); + // init all activated plugins for this instance + $.each(instances[instance_id]._get_settings().plugins, function (i, val) { instances[instance_id].data[val] = {}; }); + $.each(instances[instance_id]._get_settings().plugins, function (i, val) { if(plugins[val]) { plugins[val].__init.apply(instances[instance_id]); } }); + // initialize the instance + setTimeout(function() { if(instances[instance_id]) { instances[instance_id].init(); } }, 0); + }); + } + // return the jquery selection (or if it was a method call that returned a value - the returned value) + return returnValue; + }; + // object to store exposed functions and objects + $.jstree = { + defaults : { + plugins : [] + }, + _focused : function () { return instances[focused_instance] || null; }, + _reference : function (needle) { + // get by instance id + if(instances[needle]) { return instances[needle]; } + // get by DOM (if still no luck - return null + var o = $(needle); + if(!o.length && typeof needle === "string") { o = $("#" + needle); } + if(!o.length) { return null; } + return instances[o.closest(".jstree").data("jstree_instance_id")] || null; + }, + _instance : function (index, container, settings) { + // for plugins to store data in + this.data = { core : {} }; + this.get_settings = function () { return $.extend(true, {}, settings); }; + this._get_settings = function () { return settings; }; + this.get_index = function () { return index; }; + this.get_container = function () { return container; }; + this.get_container_ul = function () { return container.children("ul:eq(0)"); }; + this._set_settings = function (s) { + settings = $.extend(true, {}, settings, s); + }; + }, + _fn : { }, + plugin : function (pname, pdata) { + pdata = $.extend({}, { + __init : $.noop, + __destroy : $.noop, + _fn : {}, + defaults : false + }, pdata); + plugins[pname] = pdata; + + $.jstree.defaults[pname] = pdata.defaults; + $.each(pdata._fn, function (i, val) { + val.plugin = pname; + val.old = $.jstree._fn[i]; + $.jstree._fn[i] = function () { + var rslt, + func = val, + args = Array.prototype.slice.call(arguments), + evnt = new $.Event("before.jstree"), + rlbk = false; + + if(this.data.core.locked === true && i !== "unlock" && i !== "is_locked") { return; } + + // Check if function belongs to the included plugins of this instance + do { + if(func && func.plugin && $.inArray(func.plugin, this._get_settings().plugins) !== -1) { break; } + func = func.old; + } while(func); + if(!func) { return; } + + // context and function to trigger events, then finally call the function + if(i.indexOf("_") === 0) { + rslt = func.apply(this, args); + } + else { + rslt = this.get_container().triggerHandler(evnt, { "func" : i, "inst" : this, "args" : args, "plugin" : func.plugin }); + if(rslt === false) { return; } + if(typeof rslt !== "undefined") { args = rslt; } + + rslt = func.apply( + $.extend({}, this, { + __callback : function (data) { + this.get_container().triggerHandler( i + '.jstree', { "inst" : this, "args" : args, "rslt" : data, "rlbk" : rlbk }); + }, + __rollback : function () { + rlbk = this.get_rollback(); + return rlbk; + }, + __call_old : function (replace_arguments) { + return func.old.apply(this, (replace_arguments ? Array.prototype.slice.call(arguments, 1) : args ) ); + } + }), args); + } + + // return the result + return rslt; + }; + $.jstree._fn[i].old = val.old; + $.jstree._fn[i].plugin = pname; + }); + }, + rollback : function (rb) { + if(rb) { + if(!$.isArray(rb)) { rb = [ rb ]; } + $.each(rb, function (i, val) { + instances[val.i].set_rollback(val.h, val.d); + }); + } + } + }; + // set the prototype for all instances + $.jstree._fn = $.jstree._instance.prototype = {}; + + // load the css when DOM is ready + $(function() { + // code is copied from jQuery ($.browser is deprecated + there is a bug in IE) + var u = navigator.userAgent.toLowerCase(), + v = (u.match( /.+?(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1], + css_string = '' + + '.jstree ul, .jstree li { display:block; margin:0 0 0 0; padding:0 0 0 0; list-style-type:none; } ' + + '.jstree li { display:block; min-height:18px; line-height:18px; white-space:nowrap; margin-left:18px; min-width:18px; } ' + + '.jstree-rtl li { margin-left:0; margin-right:18px; } ' + + '.jstree > ul > li { margin-left:0px; } ' + + '.jstree-rtl > ul > li { margin-right:0px; } ' + + '.jstree ins { display:inline-block; text-decoration:none; width:18px; height:18px; margin:0 0 0 0; padding:0; } ' + + '.jstree a { display:inline-block; line-height:16px; height:16px; color:black; white-space:nowrap; text-decoration:none; padding:1px 2px; margin:0; } ' + + '.jstree a:focus { outline: none; } ' + + '.jstree a > ins { height:16px; width:16px; } ' + + '.jstree a > .jstree-icon { margin-right:3px; } ' + + '.jstree-rtl a > .jstree-icon { margin-left:3px; margin-right:0; } ' + + 'li.jstree-open > ul { display:block; } ' + + 'li.jstree-closed > ul { display:none; } '; + // Correct IE 6 (does not support the > CSS selector) + if(/msie/.test(u) && parseInt(v, 10) == 6) { + is_ie6 = true; + + // fix image flicker and lack of caching + try { + document.execCommand("BackgroundImageCache", false, true); + } catch (err) { } + + css_string += '' + + '.jstree li { height:18px; margin-left:0; margin-right:0; } ' + + '.jstree li li { margin-left:18px; } ' + + '.jstree-rtl li li { margin-left:0px; margin-right:18px; } ' + + 'li.jstree-open ul { display:block; } ' + + 'li.jstree-closed ul { display:none !important; } ' + + '.jstree li a { display:inline; border-width:0 !important; padding:0px 2px !important; } ' + + '.jstree li a ins { height:16px; width:16px; margin-right:3px; } ' + + '.jstree-rtl li a ins { margin-right:0px; margin-left:3px; } '; + } + // Correct IE 7 (shifts anchor nodes onhover) + if(/msie/.test(u) && parseInt(v, 10) == 7) { + is_ie7 = true; + css_string += '.jstree li a { border-width:0 !important; padding:0px 2px !important; } '; + } + // correct ff2 lack of display:inline-block + if(!/compatible/.test(u) && /mozilla/.test(u) && parseFloat(v, 10) < 1.9) { + is_ff2 = true; + css_string += '' + + '.jstree ins { display:-moz-inline-box; } ' + + '.jstree li { line-height:12px; } ' + // WHY?? + '.jstree a { display:-moz-inline-box; } ' + + '.jstree .jstree-no-icons .jstree-checkbox { display:-moz-inline-stack !important; } '; + /* this shouldn't be here as it is theme specific */ + } + // the default stylesheet + $.vakata.css.add_sheet({ str : css_string, title : "jstree" }); + }); + + // core functions (open, close, create, update, delete) + $.jstree.plugin("core", { + __init : function () { + this.data.core.locked = false; + this.data.core.to_open = this.get_settings().core.initially_open; + this.data.core.to_load = this.get_settings().core.initially_load; + }, + defaults : { + html_titles : false, + animation : 500, + initially_open : [], + initially_load : [], + open_parents : true, + notify_plugins : true, + rtl : false, + load_open : false, + strings : { + loading : "Loading ...", + new_node : "New node", + multiple_selection : "Multiple selection" + } + }, + _fn : { + init : function () { + this.set_focus(); + if(this._get_settings().core.rtl) { + this.get_container().addClass("jstree-rtl").css("direction", "rtl"); + } + this.get_container().html("<ul><li class='jstree-last jstree-leaf'><ins> </ins><a class='jstree-loading' href='#'><ins class='jstree-icon'> </ins>" + this._get_string("loading") + "</a></li></ul>"); + this.data.core.li_height = this.get_container_ul().find("li.jstree-closed, li.jstree-leaf").eq(0).height() || 18; + + this.get_container() + .delegate("li > ins", "click.jstree", $.proxy(function (event) { + var trgt = $(event.target); + // if(trgt.is("ins") && event.pageY - trgt.offset().top < this.data.core.li_height) { this.toggle_node(trgt); } + this.toggle_node(trgt); + }, this)) + .bind("mousedown.jstree", $.proxy(function () { + this.set_focus(); // This used to be setTimeout(set_focus,0) - why? + }, this)) + .bind("dblclick.jstree", function (event) { + var sel; + if(document.selection && document.selection.empty) { document.selection.empty(); } + else { + if(window.getSelection) { + sel = window.getSelection(); + try { + sel.removeAllRanges(); + sel.collapse(); + } catch (err) { } + } + } + }); + if(this._get_settings().core.notify_plugins) { + this.get_container() + .bind("load_node.jstree", $.proxy(function (e, data) { + var o = this._get_node(data.rslt.obj), + t = this; + if(o === -1) { o = this.get_container_ul(); } + if(!o.length) { return; } + o.find("li").each(function () { + var th = $(this); + if(th.data("jstree")) { + $.each(th.data("jstree"), function (plugin, values) { + if(t.data[plugin] && $.isFunction(t["_" + plugin + "_notify"])) { + t["_" + plugin + "_notify"].call(t, th, values); + } + }); + } + }); + }, this)); + } + if(this._get_settings().core.load_open) { + this.get_container() + .bind("load_node.jstree", $.proxy(function (e, data) { + var o = this._get_node(data.rslt.obj), + t = this; + if(o === -1) { o = this.get_container_ul(); } + if(!o.length) { return; } + o.find("li.jstree-open:not(:has(ul))").each(function () { + t.load_node(this, $.noop, $.noop); + }); + }, this)); + } + this.__callback(); + this.load_node(-1, function () { this.loaded(); this.reload_nodes(); }); + }, + destroy : function () { + var i, + n = this.get_index(), + s = this._get_settings(), + _this = this; + + $.each(s.plugins, function (i, val) { + try { plugins[val].__destroy.apply(_this); } catch(err) { } + }); + this.__callback(); + // set focus to another instance if this one is focused + if(this.is_focused()) { + for(i in instances) { + if(instances.hasOwnProperty(i) && i != n) { + instances[i].set_focus(); + break; + } + } + } + // if no other instance found + if(n === focused_instance) { focused_instance = -1; } + // remove all traces of jstree in the DOM (only the ones set using jstree*) and cleans all events + this.get_container() + .unbind(".jstree") + .undelegate(".jstree") + .removeData("jstree_instance_id") + .find("[class^='jstree']") + .andSelf() + .attr("class", function () { return this.className.replace(/jstree[^ ]*|$/ig,''); }); + $(document) + .unbind(".jstree-" + n) + .undelegate(".jstree-" + n); + // remove the actual data + instances[n] = null; + delete instances[n]; + }, + + _core_notify : function (n, data) { + if(data.opened) { + this.open_node(n, false, true); + } + }, + + lock : function () { + this.data.core.locked = true; + this.get_container().children("ul").addClass("jstree-locked").css("opacity","0.7"); + this.__callback({}); + }, + unlock : function () { + this.data.core.locked = false; + this.get_container().children("ul").removeClass("jstree-locked").css("opacity","1"); + this.__callback({}); + }, + is_locked : function () { return this.data.core.locked; }, + save_opened : function () { + var _this = this; + this.data.core.to_open = []; + this.get_container_ul().find("li.jstree-open").each(function () { + if(this.id) { _this.data.core.to_open.push("#" + this.id.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:")); } + }); + this.__callback(_this.data.core.to_open); + }, + save_loaded : function () { }, + reload_nodes : function (is_callback) { + var _this = this, + done = true, + current = [], + remaining = []; + if(!is_callback) { + this.data.core.reopen = false; + this.data.core.refreshing = true; + this.data.core.to_open = $.map($.makeArray(this.data.core.to_open), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); }); + this.data.core.to_load = $.map($.makeArray(this.data.core.to_load), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); }); + if(this.data.core.to_open.length) { + this.data.core.to_load = this.data.core.to_load.concat(this.data.core.to_open); + } + } + if(this.data.core.to_load.length) { + $.each(this.data.core.to_load, function (i, val) { + if(val == "#") { return true; } + if($(val).length) { current.push(val); } + else { remaining.push(val); } + }); + if(current.length) { + this.data.core.to_load = remaining; + $.each(current, function (i, val) { + if(!_this._is_loaded(val)) { + _this.load_node(val, function () { _this.reload_nodes(true); }, function () { _this.reload_nodes(true); }); + done = false; + } + }); + } + } + if(this.data.core.to_open.length) { + $.each(this.data.core.to_open, function (i, val) { + _this.open_node(val, false, true); + }); + } + if(done) { + // TODO: find a more elegant approach to syncronizing returning requests + if(this.data.core.reopen) { clearTimeout(this.data.core.reopen); } + this.data.core.reopen = setTimeout(function () { _this.__callback({}, _this); }, 50); + this.data.core.refreshing = false; + this.reopen(); + } + }, + reopen : function () { + var _this = this; + if(this.data.core.to_open.length) { + $.each(this.data.core.to_open, function (i, val) { + _this.open_node(val, false, true); + }); + } + this.__callback({}); + }, + refresh : function (obj) { + var _this = this; + this.save_opened(); + if(!obj) { obj = -1; } + obj = this._get_node(obj); + if(!obj) { obj = -1; } + if(obj !== -1) { obj.children("UL").remove(); } + else { this.get_container_ul().empty(); } + this.load_node(obj, function () { _this.__callback({ "obj" : obj}); _this.reload_nodes(); }); + }, + // Dummy function to fire after the first load (so that there is a jstree.loaded event) + loaded : function () { + this.__callback(); + }, + // deal with focus + set_focus : function () { + if(this.is_focused()) { return; } + var f = $.jstree._focused(); + if(f) { f.unset_focus(); } + + this.get_container().addClass("jstree-focused"); + focused_instance = this.get_index(); + this.__callback(); + }, + is_focused : function () { + return focused_instance == this.get_index(); + }, + unset_focus : function () { + if(this.is_focused()) { + this.get_container().removeClass("jstree-focused"); + focused_instance = -1; + } + this.__callback(); + }, + + // traverse + _get_node : function (obj) { + var $obj = $(obj, this.get_container()); + if($obj.is(".jstree") || obj == -1) { return -1; } + $obj = $obj.closest("li", this.get_container()); + return $obj.length ? $obj : false; + }, + _get_next : function (obj, strict) { + obj = this._get_node(obj); + if(obj === -1) { return this.get_container().find("> ul > li:first-child"); } + if(!obj.length) { return false; } + if(strict) { return (obj.nextAll("li").size() > 0) ? obj.nextAll("li:eq(0)") : false; } + + if(obj.hasClass("jstree-open")) { return obj.find("li:eq(0)"); } + else if(obj.nextAll("li").size() > 0) { return obj.nextAll("li:eq(0)"); } + else { return obj.parentsUntil(".jstree","li").next("li").eq(0); } + }, + _get_prev : function (obj, strict) { + obj = this._get_node(obj); + if(obj === -1) { return this.get_container().find("> ul > li:last-child"); } + if(!obj.length) { return false; } + if(strict) { return (obj.prevAll("li").length > 0) ? obj.prevAll("li:eq(0)") : false; } + + if(obj.prev("li").length) { + obj = obj.prev("li").eq(0); + while(obj.hasClass("jstree-open")) { obj = obj.children("ul:eq(0)").children("li:last"); } + return obj; + } + else { var o = obj.parentsUntil(".jstree","li:eq(0)"); return o.length ? o : false; } + }, + _get_parent : function (obj) { + obj = this._get_node(obj); + if(obj == -1 || !obj.length) { return false; } + var o = obj.parentsUntil(".jstree", "li:eq(0)"); + return o.length ? o : -1; + }, + _get_children : function (obj) { + obj = this._get_node(obj); + if(obj === -1) { return this.get_container().children("ul:eq(0)").children("li"); } + if(!obj.length) { return false; } + return obj.children("ul:eq(0)").children("li"); + }, + get_path : function (obj, id_mode) { + var p = [], + _this = this; + obj = this._get_node(obj); + if(obj === -1 || !obj || !obj.length) { return false; } + obj.parentsUntil(".jstree", "li").each(function () { + p.push( id_mode ? this.id : _this.get_text(this) ); + }); + p.reverse(); + p.push( id_mode ? obj.attr("id") : this.get_text(obj) ); + return p; + }, + + // string functions + _get_string : function (key) { + return this._get_settings().core.strings[key] || key; + }, + + is_open : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-open"); }, + is_closed : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-closed"); }, + is_leaf : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-leaf"); }, + correct_state : function (obj) { + obj = this._get_node(obj); + if(!obj || obj === -1) { return false; } + obj.removeClass("jstree-closed jstree-open").addClass("jstree-leaf").children("ul").remove(); + this.__callback({ "obj" : obj }); + }, + // open/close + open_node : function (obj, callback, skip_animation) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + if(!obj.hasClass("jstree-closed")) { if(callback) { callback.call(); } return false; } + var s = skip_animation || is_ie6 ? 0 : this._get_settings().core.animation, + t = this; + if(!this._is_loaded(obj)) { + obj.children("a").addClass("jstree-loading"); + this.load_node(obj, function () { t.open_node(obj, callback, skip_animation); }, callback); + } + else { + if(this._get_settings().core.open_parents) { + obj.parentsUntil(".jstree",".jstree-closed").each(function () { + t.open_node(this, false, true); + }); + } + if(s) { obj.children("ul").css("display","none"); } + obj.removeClass("jstree-closed").addClass("jstree-open").children("a").removeClass("jstree-loading"); + if(s) { obj.children("ul").stop(true, true).slideDown(s, function () { this.style.display = ""; t.after_open(obj); }); } + else { t.after_open(obj); } + this.__callback({ "obj" : obj }); + if(callback) { callback.call(); } + } + }, + after_open : function (obj) { this.__callback({ "obj" : obj }); }, + close_node : function (obj, skip_animation) { + obj = this._get_node(obj); + var s = skip_animation || is_ie6 ? 0 : this._get_settings().core.animation, + t = this; + if(!obj.length || !obj.hasClass("jstree-open")) { return false; } + if(s) { obj.children("ul").attr("style","display:block !important"); } + obj.removeClass("jstree-open").addClass("jstree-closed"); + if(s) { obj.children("ul").stop(true, true).slideUp(s, function () { this.style.display = ""; t.after_close(obj); }); } + else { t.after_close(obj); } + this.__callback({ "obj" : obj }); + }, + after_close : function (obj) { this.__callback({ "obj" : obj }); }, + toggle_node : function (obj) { + obj = this._get_node(obj); + if(obj.hasClass("jstree-closed")) { return this.open_node(obj); } + if(obj.hasClass("jstree-open")) { return this.close_node(obj); } + }, + open_all : function (obj, do_animation, original_obj) { + obj = obj ? this._get_node(obj) : -1; + if(!obj || obj === -1) { obj = this.get_container_ul(); } + if(original_obj) { + obj = obj.find("li.jstree-closed"); + } + else { + original_obj = obj; + if(obj.is(".jstree-closed")) { obj = obj.find("li.jstree-closed").andSelf(); } + else { obj = obj.find("li.jstree-closed"); } + } + var _this = this; + obj.each(function () { + var __this = this; + if(!_this._is_loaded(this)) { _this.open_node(this, function() { _this.open_all(__this, do_animation, original_obj); }, !do_animation); } + else { _this.open_node(this, false, !do_animation); } + }); + // so that callback is fired AFTER all nodes are open + if(original_obj.find('li.jstree-closed').length === 0) { this.__callback({ "obj" : original_obj }); } + }, + close_all : function (obj, do_animation) { + var _this = this; + obj = obj ? this._get_node(obj) : this.get_container(); + if(!obj || obj === -1) { obj = this.get_container_ul(); } + obj.find("li.jstree-open").andSelf().each(function () { _this.close_node(this, !do_animation); }); + this.__callback({ "obj" : obj }); + }, + clean_node : function (obj) { + obj = obj && obj != -1 ? $(obj) : this.get_container_ul(); + obj = obj.is("li") ? obj.find("li").andSelf() : obj.find("li"); + obj.removeClass("jstree-last") + .filter("li:last-child").addClass("jstree-last").end() + .filter(":has(li)") + .not(".jstree-open").removeClass("jstree-leaf").addClass("jstree-closed"); + obj.not(".jstree-open, .jstree-closed").addClass("jstree-leaf").children("ul").remove(); + this.__callback({ "obj" : obj }); + }, + // rollback + get_rollback : function () { + this.__callback(); + return { i : this.get_index(), h : this.get_container().children("ul").clone(true), d : this.data }; + }, + set_rollback : function (html, data) { + this.get_container().empty().append(html); + this.data = data; + this.__callback(); + }, + // Dummy functions to be overwritten by any datastore plugin included + load_node : function (obj, s_call, e_call) { this.__callback({ "obj" : obj }); }, + _is_loaded : function (obj) { return true; }, + + // Basic operations: create + create_node : function (obj, position, js, callback, is_loaded) { + obj = this._get_node(obj); + position = typeof position === "undefined" ? "last" : position; + var d = $("<li />"), + s = this._get_settings().core, + tmp; + + if(obj !== -1 && !obj.length) { return false; } + if(!is_loaded && !this._is_loaded(obj)) { this.load_node(obj, function () { this.create_node(obj, position, js, callback, true); }); return false; } + + this.__rollback(); + + if(typeof js === "string") { js = { "data" : js }; } + if(!js) { js = {}; } + if(js.attr) { d.attr(js.attr); } + if(js.metadata) { d.data(js.metadata); } + if(js.state) { d.addClass("jstree-" + js.state); } + if(!js.data) { js.data = this._get_string("new_node"); } + if(!$.isArray(js.data)) { tmp = js.data; js.data = []; js.data.push(tmp); } + $.each(js.data, function (i, m) { + tmp = $("<a />"); + if($.isFunction(m)) { m = m.call(this, js); } + if(typeof m == "string") { tmp.attr('href','#')[ s.html_titles ? "html" : "text" ](m); } + else { + if(!m.attr) { m.attr = {}; } + if(!m.attr.href) { m.attr.href = '#'; } + tmp.attr(m.attr)[ s.html_titles ? "html" : "text" ](m.title); + if(m.language) { tmp.addClass(m.language); } + } + tmp.prepend("<ins class='jstree-icon'> </ins>"); + if(!m.icon && js.icon) { m.icon = js.icon; } + if(m.icon) { + if(m.icon.indexOf("/") === -1) { tmp.children("ins").addClass(m.icon); } + else { tmp.children("ins").css("background","url('" + m.icon + "') center center no-repeat"); } + } + d.append(tmp); + }); + d.prepend("<ins class='jstree-icon'> </ins>"); + if(obj === -1) { + obj = this.get_container(); + if(position === "before") { position = "first"; } + if(position === "after") { position = "last"; } + } + switch(position) { + case "before": obj.before(d); tmp = this._get_parent(obj); break; + case "after" : obj.after(d); tmp = this._get_parent(obj); break; + case "inside": + case "first" : + if(!obj.children("ul").length) { obj.append("<ul />"); } + obj.children("ul").prepend(d); + tmp = obj; + break; + case "last": + if(!obj.children("ul").length) { obj.append("<ul />"); } + obj.children("ul").append(d); + tmp = obj; + break; + default: + if(!obj.children("ul").length) { obj.append("<ul />"); } + if(!position) { position = 0; } + tmp = obj.children("ul").children("li").eq(position); + if(tmp.length) { tmp.before(d); } + else { obj.children("ul").append(d); } + tmp = obj; + break; + } + if(tmp === -1 || tmp.get(0) === this.get_container().get(0)) { tmp = -1; } + this.clean_node(tmp); + this.__callback({ "obj" : d, "parent" : tmp }); + if(callback) { callback.call(this, d); } + return d; + }, + // Basic operations: rename (deal with text) + get_text : function (obj) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + var s = this._get_settings().core.html_titles; + obj = obj.children("a:eq(0)"); + if(s) { + obj = obj.clone(); + obj.children("INS").remove(); + return obj.html(); + } + else { + obj = obj.contents().filter(function() { return this.nodeType == 3; })[0]; + return obj.nodeValue; + } + }, + set_text : function (obj, val) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + obj = obj.children("a:eq(0)"); + if(this._get_settings().core.html_titles) { + var tmp = obj.children("INS").clone(); + obj.html(val).prepend(tmp); + this.__callback({ "obj" : obj, "name" : val }); + return true; + } + else { + obj = obj.contents().filter(function() { return this.nodeType == 3; })[0]; + this.__callback({ "obj" : obj, "name" : val }); + return (obj.nodeValue = val); + } + }, + rename_node : function (obj, val) { + obj = this._get_node(obj); + this.__rollback(); + if(obj && obj.length && this.set_text.apply(this, Array.prototype.slice.call(arguments))) { this.__callback({ "obj" : obj, "name" : val }); } + }, + // Basic operations: deleting nodes + delete_node : function (obj) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + this.__rollback(); + var p = this._get_parent(obj), prev = $([]), t = this; + obj.each(function () { + prev = prev.add(t._get_prev(this)); + }); + obj = obj.detach(); + if(p !== -1 && p.find("> ul > li").length === 0) { + p.removeClass("jstree-open jstree-closed").addClass("jstree-leaf"); + } + this.clean_node(p); + this.__callback({ "obj" : obj, "prev" : prev, "parent" : p }); + return obj; + }, + prepare_move : function (o, r, pos, cb, is_cb) { + var p = {}; + + p.ot = $.jstree._reference(o) || this; + p.o = p.ot._get_node(o); + p.r = r === - 1 ? -1 : this._get_node(r); + p.p = (typeof pos === "undefined" || pos === false) ? "last" : pos; // TODO: move to a setting + if(!is_cb && prepared_move.o && prepared_move.o[0] === p.o[0] && prepared_move.r[0] === p.r[0] && prepared_move.p === p.p) { + this.__callback(prepared_move); + if(cb) { cb.call(this, prepared_move); } + return; + } + p.ot = $.jstree._reference(p.o) || this; + p.rt = $.jstree._reference(p.r) || this; // r === -1 ? p.ot : $.jstree._reference(p.r) || this + if(p.r === -1 || !p.r) { + p.cr = -1; + switch(p.p) { + case "first": + case "before": + case "inside": + p.cp = 0; + break; + case "after": + case "last": + p.cp = p.rt.get_container().find(" > ul > li").length; + break; + default: + p.cp = p.p; + break; + } + } + else { + if(!/^(before|after)$/.test(p.p) && !this._is_loaded(p.r)) { + return this.load_node(p.r, function () { this.prepare_move(o, r, pos, cb, true); }); + } + switch(p.p) { + case "before": + p.cp = p.r.index(); + p.cr = p.rt._get_parent(p.r); + break; + case "after": + p.cp = p.r.index() + 1; + p.cr = p.rt._get_parent(p.r); + break; + case "inside": + case "first": + p.cp = 0; + p.cr = p.r; + break; + case "last": + p.cp = p.r.find(" > ul > li").length; + p.cr = p.r; + break; + default: + p.cp = p.p; + p.cr = p.r; + break; + } + } + p.np = p.cr == -1 ? p.rt.get_container() : p.cr; + p.op = p.ot._get_parent(p.o); + p.cop = p.o.index(); + if(p.op === -1) { p.op = p.ot ? p.ot.get_container() : this.get_container(); } + if(!/^(before|after)$/.test(p.p) && p.op && p.np && p.op[0] === p.np[0] && p.o.index() < p.cp) { p.cp++; } + //if(p.p === "before" && p.op && p.np && p.op[0] === p.np[0] && p.o.index() < p.cp) { p.cp--; } + p.or = p.np.find(" > ul > li:nth-child(" + (p.cp + 1) + ")"); + prepared_move = p; + this.__callback(prepared_move); + if(cb) { cb.call(this, prepared_move); } + }, + check_move : function () { + var obj = prepared_move, ret = true, r = obj.r === -1 ? this.get_container() : obj.r; + if(!obj || !obj.o || obj.or[0] === obj.o[0]) { return false; } + if(obj.op && obj.np && obj.op[0] === obj.np[0] && obj.cp - 1 === obj.o.index()) { return false; } + obj.o.each(function () { + if(r.parentsUntil(".jstree", "li").andSelf().index(this) !== -1) { ret = false; return false; } + }); + return ret; + }, + move_node : function (obj, ref, position, is_copy, is_prepared, skip_check) { + if(!is_prepared) { + return this.prepare_move(obj, ref, position, function (p) { + this.move_node(p, false, false, is_copy, true, skip_check); + }); + } + if(is_copy) { + prepared_move.cy = true; + } + if(!skip_check && !this.check_move()) { return false; } + + this.__rollback(); + var o = false; + if(is_copy) { + o = obj.o.clone(true); + o.find("*[id]").andSelf().each(function () { + if(this.id) { this.id = "copy_" + this.id; } + }); + } + else { o = obj.o; } + + if(obj.or.length) { obj.or.before(o); } + else { + if(!obj.np.children("ul").length) { $("<ul />").appendTo(obj.np); } + obj.np.children("ul:eq(0)").append(o); + } + + try { + obj.ot.clean_node(obj.op); + obj.rt.clean_node(obj.np); + if(!obj.op.find("> ul > li").length) { + obj.op.removeClass("jstree-open jstree-closed").addClass("jstree-leaf").children("ul").remove(); + } + } catch (e) { } + + if(is_copy) { + prepared_move.cy = true; + prepared_move.oc = o; + } + this.__callback(prepared_move); + return prepared_move; + }, + _get_move : function () { return prepared_move; } + } + }); +})(jQuery); +//*/ + +/* + * jsTree ui plugin + * This plugins handles selecting/deselecting/hovering/dehovering nodes + */ +(function ($) { + var scrollbar_width, e1, e2; + $(function() { + if (/msie/.test(navigator.userAgent.toLowerCase())) { + e1 = $('<textarea cols="10" rows="2"></textarea>').css({ position: 'absolute', top: -1000, left: 0 }).appendTo('body'); + e2 = $('<textarea cols="10" rows="2" style="overflow: hidden;"></textarea>').css({ position: 'absolute', top: -1000, left: 0 }).appendTo('body'); + scrollbar_width = e1.width() - e2.width(); + e1.add(e2).remove(); + } + else { + e1 = $('<div />').css({ width: 100, height: 100, overflow: 'auto', position: 'absolute', top: -1000, left: 0 }) + .prependTo('body').append('<div />').find('div').css({ width: '100%', height: 200 }); + scrollbar_width = 100 - e1.width(); + e1.parent().remove(); + } + }); + $.jstree.plugin("ui", { + __init : function () { + this.data.ui.selected = $(); + this.data.ui.last_selected = false; + this.data.ui.hovered = null; + this.data.ui.to_select = this.get_settings().ui.initially_select; + + this.get_container() + .delegate("a", "click.jstree", $.proxy(function (event) { + event.preventDefault(); + event.currentTarget.blur(); + if(!$(event.currentTarget).hasClass("jstree-loading")) { + this.select_node(event.currentTarget, true, event); + } + }, this)) + .delegate("a", "mouseenter.jstree", $.proxy(function (event) { + if(!$(event.currentTarget).hasClass("jstree-loading")) { + this.hover_node(event.target); + } + }, this)) + .delegate("a", "mouseleave.jstree", $.proxy(function (event) { + if(!$(event.currentTarget).hasClass("jstree-loading")) { + this.dehover_node(event.target); + } + }, this)) + .bind("reopen.jstree", $.proxy(function () { + this.reselect(); + }, this)) + .bind("get_rollback.jstree", $.proxy(function () { + this.dehover_node(); + this.save_selected(); + }, this)) + .bind("set_rollback.jstree", $.proxy(function () { + this.reselect(); + }, this)) + .bind("close_node.jstree", $.proxy(function (event, data) { + var s = this._get_settings().ui, + obj = this._get_node(data.rslt.obj), + clk = (obj && obj.length) ? obj.children("ul").find("a.jstree-clicked") : $(), + _this = this; + if(s.selected_parent_close === false || !clk.length) { return; } + clk.each(function () { + _this.deselect_node(this); + if(s.selected_parent_close === "select_parent") { _this.select_node(obj); } + }); + }, this)) + .bind("delete_node.jstree", $.proxy(function (event, data) { + var s = this._get_settings().ui.select_prev_on_delete, + obj = this._get_node(data.rslt.obj), + clk = (obj && obj.length) ? obj.find("a.jstree-clicked") : [], + _this = this; + clk.each(function () { _this.deselect_node(this); }); + if(s && clk.length) { + data.rslt.prev.each(function () { + if(this.parentNode) { _this.select_node(this); return false; /* if return false is removed all prev nodes will be selected */} + }); + } + }, this)) + .bind("move_node.jstree", $.proxy(function (event, data) { + if(data.rslt.cy) { + data.rslt.oc.find("a.jstree-clicked").removeClass("jstree-clicked"); + } + }, this)); + }, + defaults : { + select_limit : -1, // 0, 1, 2 ... or -1 for unlimited + select_multiple_modifier : "ctrl", // on, or ctrl, shift, alt + select_range_modifier : "shift", + selected_parent_close : "select_parent", // false, "deselect", "select_parent" + selected_parent_open : true, + select_prev_on_delete : true, + disable_selecting_children : false, + initially_select : [] + }, + _fn : { + _get_node : function (obj, allow_multiple) { + if(typeof obj === "undefined" || obj === null) { return allow_multiple ? this.data.ui.selected : this.data.ui.last_selected; } + var $obj = $(obj, this.get_container()); + if($obj.is(".jstree") || obj == -1) { return -1; } + $obj = $obj.closest("li", this.get_container()); + return $obj.length ? $obj : false; + }, + _ui_notify : function (n, data) { + if(data.selected) { + this.select_node(n, false); + } + }, + save_selected : function () { + var _this = this; + this.data.ui.to_select = []; + this.data.ui.selected.each(function () { if(this.id) { _this.data.ui.to_select.push("#" + this.id.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:")); } }); + this.__callback(this.data.ui.to_select); + }, + reselect : function () { + var _this = this, + s = this.data.ui.to_select; + s = $.map($.makeArray(s), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); }); + // this.deselect_all(); WHY deselect, breaks plugin state notifier? + $.each(s, function (i, val) { if(val && val !== "#") { _this.select_node(val); } }); + this.data.ui.selected = this.data.ui.selected.filter(function () { return this.parentNode; }); + this.__callback(); + }, + refresh : function (obj) { + this.save_selected(); + return this.__call_old(); + }, + hover_node : function (obj) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + //if(this.data.ui.hovered && obj.get(0) === this.data.ui.hovered.get(0)) { return; } + if(!obj.hasClass("jstree-hovered")) { this.dehover_node(); } + this.data.ui.hovered = obj.children("a").addClass("jstree-hovered").parent(); + this._fix_scroll(obj); + this.__callback({ "obj" : obj }); + }, + dehover_node : function () { + var obj = this.data.ui.hovered, p; + if(!obj || !obj.length) { return false; } + p = obj.children("a").removeClass("jstree-hovered").parent(); + if(this.data.ui.hovered[0] === p[0]) { this.data.ui.hovered = null; } + this.__callback({ "obj" : obj }); + }, + select_node : function (obj, check, e) { + obj = this._get_node(obj); + if(obj == -1 || !obj || !obj.length) { return false; } + var s = this._get_settings().ui, + is_multiple = (s.select_multiple_modifier == "on" || (s.select_multiple_modifier !== false && e && e[s.select_multiple_modifier + "Key"])), + is_range = (s.select_range_modifier !== false && e && e[s.select_range_modifier + "Key"] && this.data.ui.last_selected && this.data.ui.last_selected[0] !== obj[0] && this.data.ui.last_selected.parent()[0] === obj.parent()[0]), + is_selected = this.is_selected(obj), + proceed = true, + t = this; + if(check) { + if(s.disable_selecting_children && is_multiple && + ( + (obj.parentsUntil(".jstree","li").children("a.jstree-clicked").length) || + (obj.children("ul").find("a.jstree-clicked:eq(0)").length) + ) + ) { + return false; + } + proceed = false; + switch(!0) { + case (is_range): + this.data.ui.last_selected.addClass("jstree-last-selected"); + obj = obj[ obj.index() < this.data.ui.last_selected.index() ? "nextUntil" : "prevUntil" ](".jstree-last-selected").andSelf(); + if(s.select_limit == -1 || obj.length < s.select_limit) { + this.data.ui.last_selected.removeClass("jstree-last-selected"); + this.data.ui.selected.each(function () { + if(this !== t.data.ui.last_selected[0]) { t.deselect_node(this); } + }); + is_selected = false; + proceed = true; + } + else { + proceed = false; + } + break; + case (is_selected && !is_multiple): + this.deselect_all(); + is_selected = false; + proceed = true; + break; + case (!is_selected && !is_multiple): + if(s.select_limit == -1 || s.select_limit > 0) { + this.deselect_all(); + proceed = true; + } + break; + case (is_selected && is_multiple): + this.deselect_node(obj); + break; + case (!is_selected && is_multiple): + if(s.select_limit == -1 || this.data.ui.selected.length + 1 <= s.select_limit) { + proceed = true; + } + break; + } + } + if(proceed && !is_selected) { + if(!is_range) { this.data.ui.last_selected = obj; } + obj.children("a").addClass("jstree-clicked"); + if(s.selected_parent_open) { + obj.parents(".jstree-closed").each(function () { t.open_node(this, false, true); }); + } + this.data.ui.selected = this.data.ui.selected.add(obj); + this._fix_scroll(obj.eq(0)); + this.__callback({ "obj" : obj, "e" : e }); + } + }, + _fix_scroll : function (obj) { + var c = this.get_container()[0], t; + if(c.scrollHeight > c.offsetHeight) { + obj = this._get_node(obj); + if(!obj || obj === -1 || !obj.length || !obj.is(":visible")) { return; } + t = obj.offset().top - this.get_container().offset().top; + if(t < 0) { + c.scrollTop = c.scrollTop + t - 1; + } + if(t + this.data.core.li_height + (c.scrollWidth > c.offsetWidth ? scrollbar_width : 0) > c.offsetHeight) { + c.scrollTop = c.scrollTop + (t - c.offsetHeight + this.data.core.li_height + 1 + (c.scrollWidth > c.offsetWidth ? scrollbar_width : 0)); + } + } + }, + deselect_node : function (obj) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + if(this.is_selected(obj)) { + obj.children("a").removeClass("jstree-clicked"); + this.data.ui.selected = this.data.ui.selected.not(obj); + if(this.data.ui.last_selected.get(0) === obj.get(0)) { this.data.ui.last_selected = this.data.ui.selected.eq(0); } + this.__callback({ "obj" : obj }); + } + }, + toggle_select : function (obj) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + if(this.is_selected(obj)) { this.deselect_node(obj); } + else { this.select_node(obj); } + }, + is_selected : function (obj) { return this.data.ui.selected.index(this._get_node(obj)) >= 0; }, + get_selected : function (context) { + return context ? $(context).find("a.jstree-clicked").parent() : this.data.ui.selected; + }, + deselect_all : function (context) { + var ret = context ? $(context).find("a.jstree-clicked").parent() : this.get_container().find("a.jstree-clicked").parent(); + ret.children("a.jstree-clicked").removeClass("jstree-clicked"); + this.data.ui.selected = $([]); + this.data.ui.last_selected = false; + this.__callback({ "obj" : ret }); + } + } + }); + // include the selection plugin by default + $.jstree.defaults.plugins.push("ui"); +})(jQuery); +//*/ + +/* + * jsTree CRRM plugin + * Handles creating/renaming/removing/moving nodes by user interaction. + */ +(function ($) { + $.jstree.plugin("crrm", { + __init : function () { + this.get_container() + .bind("move_node.jstree", $.proxy(function (e, data) { + if(this._get_settings().crrm.move.open_onmove) { + var t = this; + data.rslt.np.parentsUntil(".jstree").andSelf().filter(".jstree-closed").each(function () { + t.open_node(this, false, true); + }); + } + }, this)); + }, + defaults : { + input_width_limit : 200, + move : { + always_copy : false, // false, true or "multitree" + open_onmove : true, + default_position : "last", + check_move : function (m) { return true; } + } + }, + _fn : { + _show_input : function (obj, callback) { + obj = this._get_node(obj); + var rtl = this._get_settings().core.rtl, + w = this._get_settings().crrm.input_width_limit, + w1 = obj.children("ins").width(), + w2 = obj.find("> a:visible > ins").width() * obj.find("> a:visible > ins").length, + t = this.get_text(obj), + h1 = $("<div />", { css : { "position" : "absolute", "top" : "-200px", "left" : (rtl ? "0px" : "-1000px"), "visibility" : "hidden" } }).appendTo("body"), + h2 = obj.css("position","relative").append( + $("<input />", { + "value" : t, + "class" : "jstree-rename-input", + // "size" : t.length, + "css" : { + "padding" : "0", + "border" : "1px solid silver", + "position" : "absolute", + "left" : (rtl ? "auto" : (w1 + w2 + 4) + "px"), + "right" : (rtl ? (w1 + w2 + 4) + "px" : "auto"), + "top" : "0px", + "height" : (this.data.core.li_height - 2) + "px", + "lineHeight" : (this.data.core.li_height - 2) + "px", + "width" : "150px" // will be set a bit further down + }, + "blur" : $.proxy(function () { + var i = obj.children(".jstree-rename-input"), + v = i.val(); + if(v === "") { v = t; } + h1.remove(); + i.remove(); // rollback purposes + this.set_text(obj,t); // rollback purposes + this.rename_node(obj, v); + callback.call(this, obj, v, t); + obj.css("position",""); + }, this), + "keyup" : function (event) { + var key = event.keyCode || event.which; + if(key == 27) { this.value = t; this.blur(); return; } + else if(key == 13) { this.blur(); return; } + else { + h2.width(Math.min(h1.text("pW" + this.value).width(),w)); + } + }, + "keypress" : function(event) { + var key = event.keyCode || event.which; + if(key == 13) { return false; } + } + }) + ).children(".jstree-rename-input"); + this.set_text(obj, ""); + h1.css({ + fontFamily : h2.css('fontFamily') || '', + fontSize : h2.css('fontSize') || '', + fontWeight : h2.css('fontWeight') || '', + fontStyle : h2.css('fontStyle') || '', + fontStretch : h2.css('fontStretch') || '', + fontVariant : h2.css('fontVariant') || '', + letterSpacing : h2.css('letterSpacing') || '', + wordSpacing : h2.css('wordSpacing') || '' + }); + h2.width(Math.min(h1.text("pW" + h2[0].value).width(),w))[0].select(); + }, + rename : function (obj) { + obj = this._get_node(obj); + this.__rollback(); + var f = this.__callback; + this._show_input(obj, function (obj, new_name, old_name) { + f.call(this, { "obj" : obj, "new_name" : new_name, "old_name" : old_name }); + }); + }, + create : function (obj, position, js, callback, skip_rename) { + var t, _this = this; + obj = this._get_node(obj); + if(!obj) { obj = -1; } + this.__rollback(); + t = this.create_node(obj, position, js, function (t) { + var p = this._get_parent(t), + pos = $(t).index(); + if(callback) { callback.call(this, t); } + if(p.length && p.hasClass("jstree-closed")) { this.open_node(p, false, true); } + if(!skip_rename) { + this._show_input(t, function (obj, new_name, old_name) { + _this.__callback({ "obj" : obj, "name" : new_name, "parent" : p, "position" : pos }); + }); + } + else { _this.__callback({ "obj" : t, "name" : this.get_text(t), "parent" : p, "position" : pos }); } + }); + return t; + }, + remove : function (obj) { + obj = this._get_node(obj, true); + var p = this._get_parent(obj), prev = this._get_prev(obj); + this.__rollback(); + obj = this.delete_node(obj); + if(obj !== false) { this.__callback({ "obj" : obj, "prev" : prev, "parent" : p }); } + }, + check_move : function () { + if(!this.__call_old()) { return false; } + var s = this._get_settings().crrm.move; + if(!s.check_move.call(this, this._get_move())) { return false; } + return true; + }, + move_node : function (obj, ref, position, is_copy, is_prepared, skip_check) { + var s = this._get_settings().crrm.move; + if(!is_prepared) { + if(typeof position === "undefined") { position = s.default_position; } + if(position === "inside" && !s.default_position.match(/^(before|after)$/)) { position = s.default_position; } + return this.__call_old(true, obj, ref, position, is_copy, false, skip_check); + } + // if the move is already prepared + if(s.always_copy === true || (s.always_copy === "multitree" && obj.rt.get_index() !== obj.ot.get_index() )) { + is_copy = true; + } + this.__call_old(true, obj, ref, position, is_copy, true, skip_check); + }, + + cut : function (obj) { + obj = this._get_node(obj, true); + if(!obj || !obj.length) { return false; } + this.data.crrm.cp_nodes = false; + this.data.crrm.ct_nodes = obj; + this.__callback({ "obj" : obj }); + }, + copy : function (obj) { + obj = this._get_node(obj, true); + if(!obj || !obj.length) { return false; } + this.data.crrm.ct_nodes = false; + this.data.crrm.cp_nodes = obj; + this.__callback({ "obj" : obj }); + }, + paste : function (obj) { + obj = this._get_node(obj); + if(!obj || !obj.length) { return false; } + var nodes = this.data.crrm.ct_nodes ? this.data.crrm.ct_nodes : this.data.crrm.cp_nodes; + if(!this.data.crrm.ct_nodes && !this.data.crrm.cp_nodes) { return false; } + if(this.data.crrm.ct_nodes) { this.move_node(this.data.crrm.ct_nodes, obj); this.data.crrm.ct_nodes = false; } + if(this.data.crrm.cp_nodes) { this.move_node(this.data.crrm.cp_nodes, obj, false, true); } + this.__callback({ "obj" : obj, "nodes" : nodes }); + } + } + }); + // include the crr plugin by default + // $.jstree.defaults.plugins.push("crrm"); +})(jQuery); +//*/ + +/* + * jsTree themes plugin + * Handles loading and setting themes, as well as detecting path to themes, etc. + */ +(function ($) { + var themes_loaded = []; + // this variable stores the path to the themes folder - if left as false - it will be autodetected + $.jstree._themes = false; + $.jstree.plugin("themes", { + __init : function () { + this.get_container() + .bind("init.jstree", $.proxy(function () { + var s = this._get_settings().themes; + this.data.themes.dots = s.dots; + this.data.themes.icons = s.icons; + this.set_theme(s.theme, s.url); + }, this)) + .bind("loaded.jstree", $.proxy(function () { + // bound here too, as simple HTML tree's won't honor dots & icons otherwise + if(!this.data.themes.dots) { this.hide_dots(); } + else { this.show_dots(); } + if(!this.data.themes.icons) { this.hide_icons(); } + else { this.show_icons(); } + }, this)); + }, + defaults : { + theme : "default", + url : false, + dots : true, + icons : true + }, + _fn : { + set_theme : function (theme_name, theme_url) { + if(!theme_name) { return false; } + if(!theme_url) { theme_url = $.jstree._themes + theme_name + '/style.css'; } + if($.inArray(theme_url, themes_loaded) == -1) { + $.vakata.css.add_sheet({ "url" : theme_url }); + themes_loaded.push(theme_url); + } + if(this.data.themes.theme != theme_name) { + this.get_container().removeClass('jstree-' + this.data.themes.theme); + this.data.themes.theme = theme_name; + } + this.get_container().addClass('jstree-' + theme_name); + if(!this.data.themes.dots) { this.hide_dots(); } + else { this.show_dots(); } + if(!this.data.themes.icons) { this.hide_icons(); } + else { this.show_icons(); } + this.__callback(); + }, + get_theme : function () { return this.data.themes.theme; }, + + show_dots : function () { this.data.themes.dots = true; this.get_container().children("ul").removeClass("jstree-no-dots"); }, + hide_dots : function () { this.data.themes.dots = false; this.get_container().children("ul").addClass("jstree-no-dots"); }, + toggle_dots : function () { if(this.data.themes.dots) { this.hide_dots(); } else { this.show_dots(); } }, + + show_icons : function () { this.data.themes.icons = true; this.get_container().children("ul").removeClass("jstree-no-icons"); }, + hide_icons : function () { this.data.themes.icons = false; this.get_container().children("ul").addClass("jstree-no-icons"); }, + toggle_icons: function () { if(this.data.themes.icons) { this.hide_icons(); } else { this.show_icons(); } } + } + }); + // autodetect themes path + $(function () { + if($.jstree._themes === false) { + $("script").each(function () { + if(this.src.toString().match(/jquery\.jstree[^\/]*?\.js(\?.*)?$/)) { + $.jstree._themes = this.src.toString().replace(/jquery\.jstree[^\/]*?\.js(\?.*)?$/, "") + 'themes/'; + return false; + } + }); + } + if($.jstree._themes === false) { $.jstree._themes = "themes/"; } + }); + // include the themes plugin by default + $.jstree.defaults.plugins.push("themes"); +})(jQuery); +//*/ + +/* + * jsTree hotkeys plugin + * Enables keyboard navigation for all tree instances + * Depends on the jstree ui & jquery hotkeys plugins + */ +(function ($) { + var bound = []; + function exec(i, event) { + var f = $.jstree._focused(), tmp; + if(f && f.data && f.data.hotkeys && f.data.hotkeys.enabled) { + tmp = f._get_settings().hotkeys[i]; + if(tmp) { return tmp.call(f, event); } + } + } + $.jstree.plugin("hotkeys", { + __init : function () { + if(typeof $.hotkeys === "undefined") { throw "jsTree hotkeys: jQuery hotkeys plugin not included."; } + if(!this.data.ui) { throw "jsTree hotkeys: jsTree UI plugin not included."; } + $.each(this._get_settings().hotkeys, function (i, v) { + if(v !== false && $.inArray(i, bound) == -1) { + $(document).bind("keydown", i, function (event) { return exec(i, event); }); + bound.push(i); + } + }); + this.get_container() + .bind("lock.jstree", $.proxy(function () { + if(this.data.hotkeys.enabled) { this.data.hotkeys.enabled = false; this.data.hotkeys.revert = true; } + }, this)) + .bind("unlock.jstree", $.proxy(function () { + if(this.data.hotkeys.revert) { this.data.hotkeys.enabled = true; } + }, this)); + this.enable_hotkeys(); + }, + defaults : { + "up" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_prev(o)); + return false; + }, + "ctrl+up" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_prev(o)); + return false; + }, + "shift+up" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_prev(o)); + return false; + }, + "down" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_next(o)); + return false; + }, + "ctrl+down" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_next(o)); + return false; + }, + "shift+down" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_next(o)); + return false; + }, + "left" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o) { + if(o.hasClass("jstree-open")) { this.close_node(o); } + else { this.hover_node(this._get_prev(o)); } + } + return false; + }, + "ctrl+left" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o) { + if(o.hasClass("jstree-open")) { this.close_node(o); } + else { this.hover_node(this._get_prev(o)); } + } + return false; + }, + "shift+left" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o) { + if(o.hasClass("jstree-open")) { this.close_node(o); } + else { this.hover_node(this._get_prev(o)); } + } + return false; + }, + "right" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o && o.length) { + if(o.hasClass("jstree-closed")) { this.open_node(o); } + else { this.hover_node(this._get_next(o)); } + } + return false; + }, + "ctrl+right" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o && o.length) { + if(o.hasClass("jstree-closed")) { this.open_node(o); } + else { this.hover_node(this._get_next(o)); } + } + return false; + }, + "shift+right" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o && o.length) { + if(o.hasClass("jstree-closed")) { this.open_node(o); } + else { this.hover_node(this._get_next(o)); } + } + return false; + }, + "space" : function () { + if(this.data.ui.hovered) { this.data.ui.hovered.children("a:eq(0)").click(); } + return false; + }, + "ctrl+space" : function (event) { + event.type = "click"; + if(this.data.ui.hovered) { this.data.ui.hovered.children("a:eq(0)").trigger(event); } + return false; + }, + "shift+space" : function (event) { + event.type = "click"; + if(this.data.ui.hovered) { this.data.ui.hovered.children("a:eq(0)").trigger(event); } + return false; + }, + "f2" : function () { this.rename(this.data.ui.hovered || this.data.ui.last_selected); }, + "del" : function () { this.remove(this.data.ui.hovered || this._get_node(null)); } + }, + _fn : { + enable_hotkeys : function () { + this.data.hotkeys.enabled = true; + }, + disable_hotkeys : function () { + this.data.hotkeys.enabled = false; + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree JSON plugin + * The JSON data store. Datastores are build by overriding the `load_node` and `_is_loaded` functions. + */ +(function ($) { + $.jstree.plugin("json_data", { + __init : function() { + var s = this._get_settings().json_data; + if(s.progressive_unload) { + this.get_container().bind("after_close.jstree", function (e, data) { + data.rslt.obj.children("ul").remove(); + }); + } + }, + defaults : { + // `data` can be a function: + // * accepts two arguments - node being loaded and a callback to pass the result to + // * will be executed in the current tree's scope & ajax won't be supported + data : false, + ajax : false, + correct_state : true, + progressive_render : false, + progressive_unload : false + }, + _fn : { + load_node : function (obj, s_call, e_call) { var _this = this; this.load_node_json(obj, function () { _this.__callback({ "obj" : _this._get_node(obj) }); s_call.call(this); }, e_call); }, + _is_loaded : function (obj) { + var s = this._get_settings().json_data; + obj = this._get_node(obj); + return obj == -1 || !obj || (!s.ajax && !s.progressive_render && !$.isFunction(s.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").length > 0; + }, + refresh : function (obj) { + obj = this._get_node(obj); + var s = this._get_settings().json_data; + if(obj && obj !== -1 && s.progressive_unload && ($.isFunction(s.data) || !!s.ajax)) { + obj.removeData("jstree_children"); + } + return this.__call_old(); + }, + load_node_json : function (obj, s_call, e_call) { + var s = this.get_settings().json_data, d, + error_func = function () {}, + success_func = function () {}; + obj = this._get_node(obj); + + if(obj && obj !== -1 && (s.progressive_render || s.progressive_unload) && !obj.is(".jstree-open, .jstree-leaf") && obj.children("ul").children("li").length === 0 && obj.data("jstree_children")) { + d = this._parse_json(obj.data("jstree_children"), obj); + if(d) { + obj.append(d); + if(!s.progressive_unload) { obj.removeData("jstree_children"); } + } + this.clean_node(obj); + if(s_call) { s_call.call(this); } + return; + } + + if(obj && obj !== -1) { + if(obj.data("jstree_is_loading")) { return; } + else { obj.data("jstree_is_loading",true); } + } + switch(!0) { + case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied."; + // function option added here for easier model integration (also supporting async - see callback) + case ($.isFunction(s.data)): + s.data.call(this, obj, $.proxy(function (d) { + d = this._parse_json(d, obj); + if(!d) { + if(obj === -1 || !obj) { + if(s.correct_state) { this.get_container().children("ul").empty(); } + } + else { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree_is_loading"); + if(s.correct_state) { this.correct_state(obj); } + } + if(e_call) { e_call.call(this); } + } + else { + if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); } + else { obj.append(d).children("a.jstree-loading").removeClass("jstree-loading"); obj.removeData("jstree_is_loading"); } + this.clean_node(obj); + if(s_call) { s_call.call(this); } + } + }, this)); + break; + case (!!s.data && !s.ajax) || (!!s.data && !!s.ajax && (!obj || obj === -1)): + if(!obj || obj == -1) { + d = this._parse_json(s.data, obj); + if(d) { + this.get_container().children("ul").empty().append(d.children()); + this.clean_node(); + } + else { + if(s.correct_state) { this.get_container().children("ul").empty(); } + } + } + if(s_call) { s_call.call(this); } + break; + case (!s.data && !!s.ajax) || (!!s.data && !!s.ajax && obj && obj !== -1): + error_func = function (x, t, e) { + var ef = this.get_settings().json_data.ajax.error; + if(ef) { ef.call(this, x, t, e); } + if(obj != -1 && obj.length) { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree_is_loading"); + if(t === "success" && s.correct_state) { this.correct_state(obj); } + } + else { + if(t === "success" && s.correct_state) { this.get_container().children("ul").empty(); } + } + if(e_call) { e_call.call(this); } + }; + success_func = function (d, t, x) { + var sf = this.get_settings().json_data.ajax.success; + if(sf) { d = sf.call(this,d,t,x) || d; } + if(d === "" || (d && d.toString && d.toString().replace(/^[\s\n]+$/,"") === "") || (!$.isArray(d) && !$.isPlainObject(d))) { + return error_func.call(this, x, t, ""); + } + d = this._parse_json(d, obj); + if(d) { + if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); } + else { obj.append(d).children("a.jstree-loading").removeClass("jstree-loading"); obj.removeData("jstree_is_loading"); } + this.clean_node(obj); + if(s_call) { s_call.call(this); } + } + else { + if(obj === -1 || !obj) { + if(s.correct_state) { + this.get_container().children("ul").empty(); + if(s_call) { s_call.call(this); } + } + } + else { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree_is_loading"); + if(s.correct_state) { + this.correct_state(obj); + if(s_call) { s_call.call(this); } + } + } + } + }; + s.ajax.context = this; + s.ajax.error = error_func; + s.ajax.success = success_func; + if(!s.ajax.dataType) { s.ajax.dataType = "json"; } + if($.isFunction(s.ajax.url)) { s.ajax.url = s.ajax.url.call(this, obj); } + if($.isFunction(s.ajax.data)) { s.ajax.data = s.ajax.data.call(this, obj); } + $.ajax(s.ajax); + break; + } + }, + _parse_json : function (js, obj, is_callback) { + var d = false, + p = this._get_settings(), + s = p.json_data, + t = p.core.html_titles, + tmp, i, j, ul1, ul2; + + if(!js) { return d; } + if(s.progressive_unload && obj && obj !== -1) { + obj.data("jstree_children", d); + } + if($.isArray(js)) { + d = $(); + if(!js.length) { return false; } + for(i = 0, j = js.length; i < j; i++) { + tmp = this._parse_json(js[i], obj, true); + if(tmp.length) { d = d.add(tmp); } + } + } + else { + if(typeof js == "string") { js = { data : js }; } + if(!js.data && js.data !== "") { return d; } + d = $("<li />"); + if(js.attr) { d.attr(js.attr); } + if(js.metadata) { d.data(js.metadata); } + if(js.state) { d.addClass("jstree-" + js.state); } + if(!$.isArray(js.data)) { tmp = js.data; js.data = []; js.data.push(tmp); } + $.each(js.data, function (i, m) { + tmp = $("<a />"); + if($.isFunction(m)) { m = m.call(this, js); } + if(typeof m == "string") { tmp.attr('href','#')[ t ? "html" : "text" ](m); } + else { + if(!m.attr) { m.attr = {}; } + if(!m.attr.href) { m.attr.href = '#'; } + tmp.attr(m.attr)[ t ? "html" : "text" ](m.title); + if(m.language) { tmp.addClass(m.language); } + } + tmp.prepend("<ins class='jstree-icon'> </ins>"); + if(!m.icon && js.icon) { m.icon = js.icon; } + if(m.icon) { + if(m.icon.indexOf("/") === -1) { tmp.children("ins").addClass(m.icon); } + else { tmp.children("ins").css("background","url('" + m.icon + "') center center no-repeat"); } + } + d.append(tmp); + }); + d.prepend("<ins class='jstree-icon'> </ins>"); + if(js.children) { + if(s.progressive_render && js.state !== "open") { + d.addClass("jstree-closed").data("jstree_children", js.children); + } + else { + if(s.progressive_unload) { d.data("jstree_children", js.children); } + if($.isArray(js.children) && js.children.length) { + tmp = this._parse_json(js.children, obj, true); + if(tmp.length) { + ul2 = $("<ul />"); + ul2.append(tmp); + d.append(ul2); + } + } + } + } + } + if(!is_callback) { + ul1 = $("<ul />"); + ul1.append(d); + d = ul1; + } + return d; + }, + get_json : function (obj, li_attr, a_attr, is_callback) { + var result = [], + s = this._get_settings(), + _this = this, + tmp1, tmp2, li, a, t, lang; + obj = this._get_node(obj); + if(!obj || obj === -1) { obj = this.get_container().find("> ul > li"); } + li_attr = $.isArray(li_attr) ? li_attr : [ "id", "class" ]; + if(!is_callback && this.data.types) { li_attr.push(s.types.type_attr); } + a_attr = $.isArray(a_attr) ? a_attr : [ ]; + + obj.each(function () { + li = $(this); + tmp1 = { data : [] }; + if(li_attr.length) { tmp1.attr = { }; } + $.each(li_attr, function (i, v) { + tmp2 = li.attr(v); + if(tmp2 && tmp2.length && tmp2.replace(/jstree[^ ]*/ig,'').length) { + tmp1.attr[v] = (" " + tmp2).replace(/ jstree[^ ]*/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,""); + } + }); + if(li.hasClass("jstree-open")) { tmp1.state = "open"; } + if(li.hasClass("jstree-closed")) { tmp1.state = "closed"; } + if(li.data()) { tmp1.metadata = li.data(); } + a = li.children("a"); + a.each(function () { + t = $(this); + if( + a_attr.length || + $.inArray("languages", s.plugins) !== -1 || + t.children("ins").get(0).style.backgroundImage.length || + (t.children("ins").get(0).className && t.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').length) + ) { + lang = false; + if($.inArray("languages", s.plugins) !== -1 && $.isArray(s.languages) && s.languages.length) { + $.each(s.languages, function (l, lv) { + if(t.hasClass(lv)) { + lang = lv; + return false; + } + }); + } + tmp2 = { attr : { }, title : _this.get_text(t, lang) }; + $.each(a_attr, function (k, z) { + tmp2.attr[z] = (" " + (t.attr(z) || "")).replace(/ jstree[^ ]*/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,""); + }); + if($.inArray("languages", s.plugins) !== -1 && $.isArray(s.languages) && s.languages.length) { + $.each(s.languages, function (k, z) { + if(t.hasClass(z)) { tmp2.language = z; return true; } + }); + } + if(t.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').replace(/^\s+$/ig,"").length) { + tmp2.icon = t.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,""); + } + if(t.children("ins").get(0).style.backgroundImage.length) { + tmp2.icon = t.children("ins").get(0).style.backgroundImage.replace("url(","").replace(")",""); + } + } + else { + tmp2 = _this.get_text(t); + } + if(a.length > 1) { tmp1.data.push(tmp2); } + else { tmp1.data = tmp2; } + }); + li = li.find("> ul > li"); + if(li.length) { tmp1.children = _this.get_json(li, li_attr, a_attr, true); } + result.push(tmp1); + }); + return result; + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree languages plugin + * Adds support for multiple language versions in one tree + * This basically allows for many titles coexisting in one node, but only one of them being visible at any given time + * This is useful for maintaining the same structure in many languages (hence the name of the plugin) + */ +(function ($) { + $.jstree.plugin("languages", { + __init : function () { this._load_css(); }, + defaults : [], + _fn : { + set_lang : function (i) { + var langs = this._get_settings().languages, + st = false, + selector = ".jstree-" + this.get_index() + ' a'; + if(!$.isArray(langs) || langs.length === 0) { return false; } + if($.inArray(i,langs) == -1) { + if(!!langs[i]) { i = langs[i]; } + else { return false; } + } + if(i == this.data.languages.current_language) { return true; } + st = $.vakata.css.get_css(selector + "." + this.data.languages.current_language, false, this.data.languages.language_css); + if(st !== false) { st.style.display = "none"; } + st = $.vakata.css.get_css(selector + "." + i, false, this.data.languages.language_css); + if(st !== false) { st.style.display = ""; } + this.data.languages.current_language = i; + this.__callback(i); + return true; + }, + get_lang : function () { + return this.data.languages.current_language; + }, + _get_string : function (key, lang) { + var langs = this._get_settings().languages, + s = this._get_settings().core.strings; + if($.isArray(langs) && langs.length) { + lang = (lang && $.inArray(lang,langs) != -1) ? lang : this.data.languages.current_language; + } + if(s[lang] && s[lang][key]) { return s[lang][key]; } + if(s[key]) { return s[key]; } + return key; + }, + get_text : function (obj, lang) { + obj = this._get_node(obj) || this.data.ui.last_selected; + if(!obj.size()) { return false; } + var langs = this._get_settings().languages, + s = this._get_settings().core.html_titles; + if($.isArray(langs) && langs.length) { + lang = (lang && $.inArray(lang,langs) != -1) ? lang : this.data.languages.current_language; + obj = obj.children("a." + lang); + } + else { obj = obj.children("a:eq(0)"); } + if(s) { + obj = obj.clone(); + obj.children("INS").remove(); + return obj.html(); + } + else { + obj = obj.contents().filter(function() { return this.nodeType == 3; })[0]; + return obj.nodeValue; + } + }, + set_text : function (obj, val, lang) { + obj = this._get_node(obj) || this.data.ui.last_selected; + if(!obj.size()) { return false; } + var langs = this._get_settings().languages, + s = this._get_settings().core.html_titles, + tmp; + if($.isArray(langs) && langs.length) { + lang = (lang && $.inArray(lang,langs) != -1) ? lang : this.data.languages.current_language; + obj = obj.children("a." + lang); + } + else { obj = obj.children("a:eq(0)"); } + if(s) { + tmp = obj.children("INS").clone(); + obj.html(val).prepend(tmp); + this.__callback({ "obj" : obj, "name" : val, "lang" : lang }); + return true; + } + else { + obj = obj.contents().filter(function() { return this.nodeType == 3; })[0]; + this.__callback({ "obj" : obj, "name" : val, "lang" : lang }); + return (obj.nodeValue = val); + } + }, + _load_css : function () { + var langs = this._get_settings().languages, + str = "/* languages css */", + selector = ".jstree-" + this.get_index() + ' a', + ln; + if($.isArray(langs) && langs.length) { + this.data.languages.current_language = langs[0]; + for(ln = 0; ln < langs.length; ln++) { + str += selector + "." + langs[ln] + " {"; + if(langs[ln] != this.data.languages.current_language) { str += " display:none; "; } + str += " } "; + } + this.data.languages.language_css = $.vakata.css.add_sheet({ 'str' : str, 'title' : "jstree-languages" }); + } + }, + create_node : function (obj, position, js, callback) { + var t = this.__call_old(true, obj, position, js, function (t) { + var langs = this._get_settings().languages, + a = t.children("a"), + ln; + if($.isArray(langs) && langs.length) { + for(ln = 0; ln < langs.length; ln++) { + if(!a.is("." + langs[ln])) { + t.append(a.eq(0).clone().removeClass(langs.join(" ")).addClass(langs[ln])); + } + } + a.not("." + langs.join(", .")).remove(); + } + if(callback) { callback.call(this, t); } + }); + return t; + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree cookies plugin + * Stores the currently opened/selected nodes in a cookie and then restores them + * Depends on the jquery.cookie plugin + */ +(function ($) { + $.jstree.plugin("cookies", { + __init : function () { + if(typeof $.cookie === "undefined") { throw "jsTree cookie: jQuery cookie plugin not included."; } + + var s = this._get_settings().cookies, + tmp; + if(!!s.save_loaded) { + tmp = $.cookie(s.save_loaded); + if(tmp && tmp.length) { this.data.core.to_load = tmp.split(","); } + } + if(!!s.save_opened) { + tmp = $.cookie(s.save_opened); + if(tmp && tmp.length) { this.data.core.to_open = tmp.split(","); } + } + if(!!s.save_selected) { + tmp = $.cookie(s.save_selected); + if(tmp && tmp.length && this.data.ui) { this.data.ui.to_select = tmp.split(","); } + } + this.get_container() + .one( ( this.data.ui ? "reselect" : "reopen" ) + ".jstree", $.proxy(function () { + this.get_container() + .bind("open_node.jstree close_node.jstree select_node.jstree deselect_node.jstree", $.proxy(function (e) { + if(this._get_settings().cookies.auto_save) { this.save_cookie((e.handleObj.namespace + e.handleObj.type).replace("jstree","")); } + }, this)); + }, this)); + }, + defaults : { + save_loaded : "jstree_load", + save_opened : "jstree_open", + save_selected : "jstree_select", + auto_save : true, + cookie_options : {} + }, + _fn : { + save_cookie : function (c) { + if(this.data.core.refreshing) { return; } + var s = this._get_settings().cookies; + if(!c) { // if called manually and not by event + if(s.save_loaded) { + this.save_loaded(); + $.cookie(s.save_loaded, this.data.core.to_load.join(","), s.cookie_options); + } + if(s.save_opened) { + this.save_opened(); + $.cookie(s.save_opened, this.data.core.to_open.join(","), s.cookie_options); + } + if(s.save_selected && this.data.ui) { + this.save_selected(); + $.cookie(s.save_selected, this.data.ui.to_select.join(","), s.cookie_options); + } + return; + } + switch(c) { + case "open_node": + case "close_node": + if(!!s.save_opened) { + this.save_opened(); + $.cookie(s.save_opened, this.data.core.to_open.join(","), s.cookie_options); + } + if(!!s.save_loaded) { + this.save_loaded(); + $.cookie(s.save_loaded, this.data.core.to_load.join(","), s.cookie_options); + } + break; + case "select_node": + case "deselect_node": + if(!!s.save_selected && this.data.ui) { + this.save_selected(); + $.cookie(s.save_selected, this.data.ui.to_select.join(","), s.cookie_options); + } + break; + } + } + } + }); + // include cookies by default + // $.jstree.defaults.plugins.push("cookies"); +})(jQuery); +//*/ + +/* + * jsTree sort plugin + * Sorts items alphabetically (or using any other function) + */ +(function ($) { + $.jstree.plugin("sort", { + __init : function () { + this.get_container() + .bind("load_node.jstree", $.proxy(function (e, data) { + var obj = this._get_node(data.rslt.obj); + obj = obj === -1 ? this.get_container().children("ul") : obj.children("ul"); + this.sort(obj); + }, this)) + .bind("rename_node.jstree create_node.jstree create.jstree", $.proxy(function (e, data) { + this.sort(data.rslt.obj.parent()); + }, this)) + .bind("move_node.jstree", $.proxy(function (e, data) { + var m = data.rslt.np == -1 ? this.get_container() : data.rslt.np; + this.sort(m.children("ul")); + }, this)); + }, + defaults : function (a, b) { return this.get_text(a) > this.get_text(b) ? 1 : -1; }, + _fn : { + sort : function (obj) { + var s = this._get_settings().sort, + t = this; + obj.append($.makeArray(obj.children("li")).sort($.proxy(s, t))); + obj.find("> li > ul").each(function() { t.sort($(this)); }); + this.clean_node(obj); + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree DND plugin + * Drag and drop plugin for moving/copying nodes + */ +(function ($) { + var o = false, + r = false, + m = false, + ml = false, + sli = false, + sti = false, + dir1 = false, + dir2 = false, + last_pos = false; + $.vakata.dnd = { + is_down : false, + is_drag : false, + helper : false, + scroll_spd : 10, + init_x : 0, + init_y : 0, + threshold : 5, + helper_left : 5, + helper_top : 10, + user_data : {}, + + drag_start : function (e, data, html) { + if($.vakata.dnd.is_drag) { $.vakata.drag_stop({}); } + try { + e.currentTarget.unselectable = "on"; + e.currentTarget.onselectstart = function() { return false; }; + if(e.currentTarget.style) { e.currentTarget.style.MozUserSelect = "none"; } + } catch(err) { } + $.vakata.dnd.init_x = e.pageX; + $.vakata.dnd.init_y = e.pageY; + $.vakata.dnd.user_data = data; + $.vakata.dnd.is_down = true; + $.vakata.dnd.helper = $("<div id='vakata-dragged' />").html(html); //.fadeTo(10,0.25); + $(document).bind("mousemove", $.vakata.dnd.drag); + $(document).bind("mouseup", $.vakata.dnd.drag_stop); + return false; + }, + drag : function (e) { + if(!$.vakata.dnd.is_down) { return; } + if(!$.vakata.dnd.is_drag) { + if(Math.abs(e.pageX - $.vakata.dnd.init_x) > 5 || Math.abs(e.pageY - $.vakata.dnd.init_y) > 5) { + $.vakata.dnd.helper.appendTo("body"); + $.vakata.dnd.is_drag = true; + $(document).triggerHandler("drag_start.vakata", { "event" : e, "data" : $.vakata.dnd.user_data }); + } + else { return; } + } + + // maybe use a scrolling parent element instead of document? + if(e.type === "mousemove") { // thought of adding scroll in order to move the helper, but mouse poisition is n/a + var d = $(document), t = d.scrollTop(), l = d.scrollLeft(); + if(e.pageY - t < 20) { + if(sti && dir1 === "down") { clearInterval(sti); sti = false; } + if(!sti) { dir1 = "up"; sti = setInterval(function () { $(document).scrollTop($(document).scrollTop() - $.vakata.dnd.scroll_spd); }, 150); } + } + else { + if(sti && dir1 === "up") { clearInterval(sti); sti = false; } + } + if($(window).height() - (e.pageY - t) < 20) { + if(sti && dir1 === "up") { clearInterval(sti); sti = false; } + if(!sti) { dir1 = "down"; sti = setInterval(function () { $(document).scrollTop($(document).scrollTop() + $.vakata.dnd.scroll_spd); }, 150); } + } + else { + if(sti && dir1 === "down") { clearInterval(sti); sti = false; } + } + + if(e.pageX - l < 20) { + if(sli && dir2 === "right") { clearInterval(sli); sli = false; } + if(!sli) { dir2 = "left"; sli = setInterval(function () { $(document).scrollLeft($(document).scrollLeft() - $.vakata.dnd.scroll_spd); }, 150); } + } + else { + if(sli && dir2 === "left") { clearInterval(sli); sli = false; } + } + if($(window).width() - (e.pageX - l) < 20) { + if(sli && dir2 === "left") { clearInterval(sli); sli = false; } + if(!sli) { dir2 = "right"; sli = setInterval(function () { $(document).scrollLeft($(document).scrollLeft() + $.vakata.dnd.scroll_spd); }, 150); } + } + else { + if(sli && dir2 === "right") { clearInterval(sli); sli = false; } + } + } + + $.vakata.dnd.helper.css({ left : (e.pageX + $.vakata.dnd.helper_left) + "px", top : (e.pageY + $.vakata.dnd.helper_top) + "px" }); + $(document).triggerHandler("drag.vakata", { "event" : e, "data" : $.vakata.dnd.user_data }); + }, + drag_stop : function (e) { + if(sli) { clearInterval(sli); } + if(sti) { clearInterval(sti); } + $(document).unbind("mousemove", $.vakata.dnd.drag); + $(document).unbind("mouseup", $.vakata.dnd.drag_stop); + $(document).triggerHandler("drag_stop.vakata", { "event" : e, "data" : $.vakata.dnd.user_data }); + $.vakata.dnd.helper.remove(); + $.vakata.dnd.init_x = 0; + $.vakata.dnd.init_y = 0; + $.vakata.dnd.user_data = {}; + $.vakata.dnd.is_down = false; + $.vakata.dnd.is_drag = false; + } + }; + $(function() { + var css_string = '#vakata-dragged { display:block; margin:0 0 0 0; padding:4px 4px 4px 24px; position:absolute; top:-2000px; line-height:16px; z-index:10000; } '; + $.vakata.css.add_sheet({ str : css_string, title : "vakata" }); + }); + + $.jstree.plugin("dnd", { + __init : function () { + this.data.dnd = { + active : false, + after : false, + inside : false, + before : false, + off : false, + prepared : false, + w : 0, + to1 : false, + to2 : false, + cof : false, + cw : false, + ch : false, + i1 : false, + i2 : false, + mto : false + }; + this.get_container() + .bind("mouseenter.jstree", $.proxy(function (e) { + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) { + if(this.data.themes) { + m.attr("class", "jstree-" + this.data.themes.theme); + if(ml) { ml.attr("class", "jstree-" + this.data.themes.theme); } + $.vakata.dnd.helper.attr("class", "jstree-dnd-helper jstree-" + this.data.themes.theme); + } + //if($(e.currentTarget).find("> ul > li").length === 0) { + if(e.currentTarget === e.target && $.vakata.dnd.user_data.obj && $($.vakata.dnd.user_data.obj).length && $($.vakata.dnd.user_data.obj).parents(".jstree:eq(0)")[0] !== e.target) { // node should not be from the same tree + var tr = $.jstree._reference(e.target), dc; + if(tr.data.dnd.foreign) { + dc = tr._get_settings().dnd.drag_check.call(this, { "o" : o, "r" : tr.get_container(), is_root : true }); + if(dc === true || dc.inside === true || dc.before === true || dc.after === true) { + $.vakata.dnd.helper.children("ins").attr("class","jstree-ok"); + } + } + else { + tr.prepare_move(o, tr.get_container(), "last"); + if(tr.check_move()) { + $.vakata.dnd.helper.children("ins").attr("class","jstree-ok"); + } + } + } + } + }, this)) + .bind("mouseup.jstree", $.proxy(function (e) { + //if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree && $(e.currentTarget).find("> ul > li").length === 0) { + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree && e.currentTarget === e.target && $.vakata.dnd.user_data.obj && $($.vakata.dnd.user_data.obj).length && $($.vakata.dnd.user_data.obj).parents(".jstree:eq(0)")[0] !== e.target) { // node should not be from the same tree + var tr = $.jstree._reference(e.currentTarget), dc; + if(tr.data.dnd.foreign) { + dc = tr._get_settings().dnd.drag_check.call(this, { "o" : o, "r" : tr.get_container(), is_root : true }); + if(dc === true || dc.inside === true || dc.before === true || dc.after === true) { + tr._get_settings().dnd.drag_finish.call(this, { "o" : o, "r" : tr.get_container(), is_root : true }); + } + } + else { + tr.move_node(o, tr.get_container(), "last", e[tr._get_settings().dnd.copy_modifier + "Key"]); + } + } + }, this)) + .bind("mouseleave.jstree", $.proxy(function (e) { + if(e.relatedTarget && e.relatedTarget.id && e.relatedTarget.id === "jstree-marker-line") { + return false; + } + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) { + if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); } + if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); } + if(this.data.dnd.to1) { clearTimeout(this.data.dnd.to1); } + if(this.data.dnd.to2) { clearTimeout(this.data.dnd.to2); } + if($.vakata.dnd.helper.children("ins").hasClass("jstree-ok")) { + $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid"); + } + } + }, this)) + .bind("mousemove.jstree", $.proxy(function (e) { + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) { + var cnt = this.get_container()[0]; + + // Horizontal scroll + if(e.pageX + 24 > this.data.dnd.cof.left + this.data.dnd.cw) { + if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); } + this.data.dnd.i1 = setInterval($.proxy(function () { this.scrollLeft += $.vakata.dnd.scroll_spd; }, cnt), 100); + } + else if(e.pageX - 24 < this.data.dnd.cof.left) { + if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); } + this.data.dnd.i1 = setInterval($.proxy(function () { this.scrollLeft -= $.vakata.dnd.scroll_spd; }, cnt), 100); + } + else { + if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); } + } + + // Vertical scroll + if(e.pageY + 24 > this.data.dnd.cof.top + this.data.dnd.ch) { + if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); } + this.data.dnd.i2 = setInterval($.proxy(function () { this.scrollTop += $.vakata.dnd.scroll_spd; }, cnt), 100); + } + else if(e.pageY - 24 < this.data.dnd.cof.top) { + if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); } + this.data.dnd.i2 = setInterval($.proxy(function () { this.scrollTop -= $.vakata.dnd.scroll_spd; }, cnt), 100); + } + else { + if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); } + } + + } + }, this)) + .bind("scroll.jstree", $.proxy(function (e) { + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree && m && ml) { + m.hide(); + ml.hide(); + } + }, this)) + .delegate("a", "mousedown.jstree", $.proxy(function (e) { + if(e.which === 1) { + this.start_drag(e.currentTarget, e); + return false; + } + }, this)) + .delegate("a", "mouseenter.jstree", $.proxy(function (e) { + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) { + this.dnd_enter(e.currentTarget); + } + }, this)) + .delegate("a", "mousemove.jstree", $.proxy(function (e) { + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) { + if(!r || !r.length || r.children("a")[0] !== e.currentTarget) { + this.dnd_enter(e.currentTarget); + } + if(typeof this.data.dnd.off.top === "undefined") { this.data.dnd.off = $(e.target).offset(); } + this.data.dnd.w = (e.pageY - (this.data.dnd.off.top || 0)) % this.data.core.li_height; + if(this.data.dnd.w < 0) { this.data.dnd.w += this.data.core.li_height; } + this.dnd_show(); + } + }, this)) + .delegate("a", "mouseleave.jstree", $.proxy(function (e) { + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) { + if(e.relatedTarget && e.relatedTarget.id && e.relatedTarget.id === "jstree-marker-line") { + return false; + } + if(m) { m.hide(); } + if(ml) { ml.hide(); } + /* + var ec = $(e.currentTarget).closest("li"), + er = $(e.relatedTarget).closest("li"); + if(er[0] !== ec.prev()[0] && er[0] !== ec.next()[0]) { + if(m) { m.hide(); } + if(ml) { ml.hide(); } + } + */ + this.data.dnd.mto = setTimeout( + (function (t) { return function () { t.dnd_leave(e); }; })(this), + 0); + } + }, this)) + .delegate("a", "mouseup.jstree", $.proxy(function (e) { + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) { + this.dnd_finish(e); + } + }, this)); + + $(document) + .bind("drag_stop.vakata", $.proxy(function () { + if(this.data.dnd.to1) { clearTimeout(this.data.dnd.to1); } + if(this.data.dnd.to2) { clearTimeout(this.data.dnd.to2); } + if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); } + if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); } + this.data.dnd.after = false; + this.data.dnd.before = false; + this.data.dnd.inside = false; + this.data.dnd.off = false; + this.data.dnd.prepared = false; + this.data.dnd.w = false; + this.data.dnd.to1 = false; + this.data.dnd.to2 = false; + this.data.dnd.i1 = false; + this.data.dnd.i2 = false; + this.data.dnd.active = false; + this.data.dnd.foreign = false; + if(m) { m.css({ "top" : "-2000px" }); } + if(ml) { ml.css({ "top" : "-2000px" }); } + }, this)) + .bind("drag_start.vakata", $.proxy(function (e, data) { + if(data.data.jstree) { + var et = $(data.event.target); + if(et.closest(".jstree").hasClass("jstree-" + this.get_index())) { + this.dnd_enter(et); + } + } + }, this)); + /* + .bind("keydown.jstree-" + this.get_index() + " keyup.jstree-" + this.get_index(), $.proxy(function(e) { + if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree && !this.data.dnd.foreign) { + var h = $.vakata.dnd.helper.children("ins"); + if(e[this._get_settings().dnd.copy_modifier + "Key"] && h.hasClass("jstree-ok")) { + h.parent().html(h.parent().html().replace(/ \(Copy\)$/, "") + " (Copy)"); + } + else { + h.parent().html(h.parent().html().replace(/ \(Copy\)$/, "")); + } + } + }, this)); */ + + + + var s = this._get_settings().dnd; + if(s.drag_target) { + $(document) + .delegate(s.drag_target, "mousedown.jstree-" + this.get_index(), $.proxy(function (e) { + o = e.target; + $.vakata.dnd.drag_start(e, { jstree : true, obj : e.target }, "<ins class='jstree-icon'></ins>" + $(e.target).text() ); + if(this.data.themes) { + if(m) { m.attr("class", "jstree-" + this.data.themes.theme); } + if(ml) { ml.attr("class", "jstree-" + this.data.themes.theme); } + $.vakata.dnd.helper.attr("class", "jstree-dnd-helper jstree-" + this.data.themes.theme); + } + $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid"); + var cnt = this.get_container(); + this.data.dnd.cof = cnt.offset(); + this.data.dnd.cw = parseInt(cnt.width(),10); + this.data.dnd.ch = parseInt(cnt.height(),10); + this.data.dnd.foreign = true; + e.preventDefault(); + }, this)); + } + if(s.drop_target) { + $(document) + .delegate(s.drop_target, "mouseenter.jstree-" + this.get_index(), $.proxy(function (e) { + if(this.data.dnd.active && this._get_settings().dnd.drop_check.call(this, { "o" : o, "r" : $(e.target), "e" : e })) { + $.vakata.dnd.helper.children("ins").attr("class","jstree-ok"); + } + }, this)) + .delegate(s.drop_target, "mouseleave.jstree-" + this.get_index(), $.proxy(function (e) { + if(this.data.dnd.active) { + $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid"); + } + }, this)) + .delegate(s.drop_target, "mouseup.jstree-" + this.get_index(), $.proxy(function (e) { + if(this.data.dnd.active && $.vakata.dnd.helper.children("ins").hasClass("jstree-ok")) { + this._get_settings().dnd.drop_finish.call(this, { "o" : o, "r" : $(e.target), "e" : e }); + } + }, this)); + } + }, + defaults : { + copy_modifier : "ctrl", + check_timeout : 100, + open_timeout : 500, + drop_target : ".jstree-drop", + drop_check : function (data) { return true; }, + drop_finish : $.noop, + drag_target : ".jstree-draggable", + drag_finish : $.noop, + drag_check : function (data) { return { after : false, before : false, inside : true }; } + }, + _fn : { + dnd_prepare : function () { + if(!r || !r.length) { return; } + this.data.dnd.off = r.offset(); + if(this._get_settings().core.rtl) { + this.data.dnd.off.right = this.data.dnd.off.left + r.width(); + } + if(this.data.dnd.foreign) { + var a = this._get_settings().dnd.drag_check.call(this, { "o" : o, "r" : r }); + this.data.dnd.after = a.after; + this.data.dnd.before = a.before; + this.data.dnd.inside = a.inside; + this.data.dnd.prepared = true; + return this.dnd_show(); + } + this.prepare_move(o, r, "before"); + this.data.dnd.before = this.check_move(); + this.prepare_move(o, r, "after"); + this.data.dnd.after = this.check_move(); + if(this._is_loaded(r)) { + this.prepare_move(o, r, "inside"); + this.data.dnd.inside = this.check_move(); + } + else { + this.data.dnd.inside = false; + } + this.data.dnd.prepared = true; + return this.dnd_show(); + }, + dnd_show : function () { + if(!this.data.dnd.prepared) { return; } + var o = ["before","inside","after"], + r = false, + rtl = this._get_settings().core.rtl, + pos; + if(this.data.dnd.w < this.data.core.li_height/3) { o = ["before","inside","after"]; } + else if(this.data.dnd.w <= this.data.core.li_height*2/3) { + o = this.data.dnd.w < this.data.core.li_height/2 ? ["inside","before","after"] : ["inside","after","before"]; + } + else { o = ["after","inside","before"]; } + $.each(o, $.proxy(function (i, val) { + if(this.data.dnd[val]) { + $.vakata.dnd.helper.children("ins").attr("class","jstree-ok"); + r = val; + return false; + } + }, this)); + if(r === false) { $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid"); } + + pos = rtl ? (this.data.dnd.off.right - 18) : (this.data.dnd.off.left + 10); + switch(r) { + case "before": + m.css({ "left" : pos + "px", "top" : (this.data.dnd.off.top - 6) + "px" }).show(); + if(ml) { ml.css({ "left" : (pos + 8) + "px", "top" : (this.data.dnd.off.top - 1) + "px" }).show(); } + break; + case "after": + m.css({ "left" : pos + "px", "top" : (this.data.dnd.off.top + this.data.core.li_height - 6) + "px" }).show(); + if(ml) { ml.css({ "left" : (pos + 8) + "px", "top" : (this.data.dnd.off.top + this.data.core.li_height - 1) + "px" }).show(); } + break; + case "inside": + m.css({ "left" : pos + ( rtl ? -4 : 4) + "px", "top" : (this.data.dnd.off.top + this.data.core.li_height/2 - 5) + "px" }).show(); + if(ml) { ml.hide(); } + break; + default: + m.hide(); + if(ml) { ml.hide(); } + break; + } + last_pos = r; + return r; + }, + dnd_open : function () { + this.data.dnd.to2 = false; + this.open_node(r, $.proxy(this.dnd_prepare,this), true); + }, + dnd_finish : function (e) { + if(this.data.dnd.foreign) { + if(this.data.dnd.after || this.data.dnd.before || this.data.dnd.inside) { + this._get_settings().dnd.drag_finish.call(this, { "o" : o, "r" : r, "p" : last_pos }); + } + } + else { + this.dnd_prepare(); + this.move_node(o, r, last_pos, e[this._get_settings().dnd.copy_modifier + "Key"]); + } + o = false; + r = false; + m.hide(); + if(ml) { ml.hide(); } + }, + dnd_enter : function (obj) { + if(this.data.dnd.mto) { + clearTimeout(this.data.dnd.mto); + this.data.dnd.mto = false; + } + var s = this._get_settings().dnd; + this.data.dnd.prepared = false; + r = this._get_node(obj); + if(s.check_timeout) { + // do the calculations after a minimal timeout (users tend to drag quickly to the desired location) + if(this.data.dnd.to1) { clearTimeout(this.data.dnd.to1); } + this.data.dnd.to1 = setTimeout($.proxy(this.dnd_prepare, this), s.check_timeout); + } + else { + this.dnd_prepare(); + } + if(s.open_timeout) { + if(this.data.dnd.to2) { clearTimeout(this.data.dnd.to2); } + if(r && r.length && r.hasClass("jstree-closed")) { + // if the node is closed - open it, then recalculate + this.data.dnd.to2 = setTimeout($.proxy(this.dnd_open, this), s.open_timeout); + } + } + else { + if(r && r.length && r.hasClass("jstree-closed")) { + this.dnd_open(); + } + } + }, + dnd_leave : function (e) { + this.data.dnd.after = false; + this.data.dnd.before = false; + this.data.dnd.inside = false; + $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid"); + m.hide(); + if(ml) { ml.hide(); } + if(r && r[0] === e.target.parentNode) { + if(this.data.dnd.to1) { + clearTimeout(this.data.dnd.to1); + this.data.dnd.to1 = false; + } + if(this.data.dnd.to2) { + clearTimeout(this.data.dnd.to2); + this.data.dnd.to2 = false; + } + } + }, + start_drag : function (obj, e) { + o = this._get_node(obj); + if(this.data.ui && this.is_selected(o)) { o = this._get_node(null, true); } + var dt = o.length > 1 ? this._get_string("multiple_selection") : this.get_text(o), + cnt = this.get_container(); + if(!this._get_settings().core.html_titles) { dt = dt.replace(/</ig,"<").replace(/>/ig,">"); } + $.vakata.dnd.drag_start(e, { jstree : true, obj : o }, "<ins class='jstree-icon'></ins>" + dt ); + if(this.data.themes) { + if(m) { m.attr("class", "jstree-" + this.data.themes.theme); } + if(ml) { ml.attr("class", "jstree-" + this.data.themes.theme); } + $.vakata.dnd.helper.attr("class", "jstree-dnd-helper jstree-" + this.data.themes.theme); + } + this.data.dnd.cof = cnt.offset(); + this.data.dnd.cw = parseInt(cnt.width(),10); + this.data.dnd.ch = parseInt(cnt.height(),10); + this.data.dnd.active = true; + } + } + }); + $(function() { + var css_string = '' + + '#vakata-dragged ins { display:block; text-decoration:none; width:16px; height:16px; margin:0 0 0 0; padding:0; position:absolute; top:4px; left:4px; ' + + ' -moz-border-radius:4px; border-radius:4px; -webkit-border-radius:4px; ' + + '} ' + + '#vakata-dragged .jstree-ok { background:green; } ' + + '#vakata-dragged .jstree-invalid { background:red; } ' + + '#jstree-marker { padding:0; margin:0; font-size:12px; overflow:hidden; height:12px; width:8px; position:absolute; top:-30px; z-index:10001; background-repeat:no-repeat; display:none; background-color:transparent; text-shadow:1px 1px 1px white; color:black; line-height:10px; } ' + + '#jstree-marker-line { padding:0; margin:0; line-height:0%; font-size:1px; overflow:hidden; height:1px; width:100px; position:absolute; top:-30px; z-index:10000; background-repeat:no-repeat; display:none; background-color:#456c43; ' + + ' cursor:pointer; border:1px solid #eeeeee; border-left:0; -moz-box-shadow: 0px 0px 2px #666; -webkit-box-shadow: 0px 0px 2px #666; box-shadow: 0px 0px 2px #666; ' + + ' -moz-border-radius:1px; border-radius:1px; -webkit-border-radius:1px; ' + + '}' + + ''; + $.vakata.css.add_sheet({ str : css_string, title : "jstree" }); + m = $("<div />").attr({ id : "jstree-marker" }).hide().html("»") + .bind("mouseleave mouseenter", function (e) { + m.hide(); + ml.hide(); + e.preventDefault(); + e.stopImmediatePropagation(); + return false; + }) + .appendTo("body"); + ml = $("<div />").attr({ id : "jstree-marker-line" }).hide() + .bind("mouseup", function (e) { + if(r && r.length) { + r.children("a").trigger(e); + e.preventDefault(); + e.stopImmediatePropagation(); + return false; + } + }) + .bind("mouseleave", function (e) { + var rt = $(e.relatedTarget); + if(rt.is(".jstree") || rt.closest(".jstree").length === 0) { + if(r && r.length) { + r.children("a").trigger(e); + m.hide(); + ml.hide(); + e.preventDefault(); + e.stopImmediatePropagation(); + return false; + } + } + }) + .appendTo("body"); + $(document).bind("drag_start.vakata", function (e, data) { + if(data.data.jstree) { m.show(); if(ml) { ml.show(); } } + }); + $(document).bind("drag_stop.vakata", function (e, data) { + if(data.data.jstree) { m.hide(); if(ml) { ml.hide(); } } + }); + }); +})(jQuery); +//*/ + +/* + * jsTree checkbox plugin + * Inserts checkboxes in front of every node + * Depends on the ui plugin + * DOES NOT WORK NICELY WITH MULTITREE DRAG'N'DROP + */ +(function ($) { + $.jstree.plugin("checkbox", { + __init : function () { + this.data.checkbox.noui = this._get_settings().checkbox.override_ui; + if(this.data.ui && this.data.checkbox.noui) { + this.select_node = this.deselect_node = this.deselect_all = $.noop; + this.get_selected = this.get_checked; + } + + this.get_container() + .bind("open_node.jstree create_node.jstree clean_node.jstree refresh.jstree", $.proxy(function (e, data) { + this._prepare_checkboxes(data.rslt.obj); + }, this)) + .bind("loaded.jstree", $.proxy(function (e) { + this._prepare_checkboxes(); + }, this)) + .delegate( (this.data.ui && this.data.checkbox.noui ? "a" : "ins.jstree-checkbox") , "click.jstree", $.proxy(function (e) { + e.preventDefault(); + if(this._get_node(e.target).hasClass("jstree-checked")) { this.uncheck_node(e.target); } + else { this.check_node(e.target); } + if(this.data.ui && this.data.checkbox.noui) { + this.save_selected(); + if(this.data.cookies) { this.save_cookie("select_node"); } + } + else { + e.stopImmediatePropagation(); + return false; + } + }, this)); + }, + defaults : { + override_ui : false, + two_state : false, + real_checkboxes : false, + checked_parent_open : true, + real_checkboxes_names : function (n) { return [ ("check_" + (n[0].id || Math.ceil(Math.random() * 10000))) , 1]; } + }, + __destroy : function () { + this.get_container() + .find("input.jstree-real-checkbox").removeClass("jstree-real-checkbox").end() + .find("ins.jstree-checkbox").remove(); + }, + _fn : { + _checkbox_notify : function (n, data) { + if(data.checked) { + this.check_node(n, false); + } + }, + _prepare_checkboxes : function (obj) { + obj = !obj || obj == -1 ? this.get_container().find("> ul > li") : this._get_node(obj); + if(obj === false) { return; } // added for removing root nodes + var c, _this = this, t, ts = this._get_settings().checkbox.two_state, rc = this._get_settings().checkbox.real_checkboxes, rcn = this._get_settings().checkbox.real_checkboxes_names; + obj.each(function () { + t = $(this); + c = t.is("li") && (t.hasClass("jstree-checked") || (rc && t.children(":checked").length)) ? "jstree-checked" : "jstree-unchecked"; + t.find("li").andSelf().each(function () { + var $t = $(this), nm; + $t.children("a" + (_this.data.languages ? "" : ":eq(0)") ).not(":has(.jstree-checkbox)").prepend("<ins class='jstree-checkbox'> </ins>").parent().not(".jstree-checked, .jstree-unchecked").addClass( ts ? "jstree-unchecked" : c ); + if(rc) { + if(!$t.children(":checkbox").length) { + nm = rcn.call(_this, $t); + $t.prepend("<input type='checkbox' class='jstree-real-checkbox' id='" + nm[0] + "' name='" + nm[0] + "' value='" + nm[1] + "' />"); + } + else { + $t.children(":checkbox").addClass("jstree-real-checkbox"); + } + } + if(!ts) { + if(c === "jstree-checked" || $t.hasClass("jstree-checked") || $t.children(':checked').length) { + $t.find("li").andSelf().addClass("jstree-checked").children(":checkbox").prop("checked", true); + } + } + else { + if($t.hasClass("jstree-checked") || $t.children(':checked').length) { + $t.addClass("jstree-checked").children(":checkbox").prop("checked", true); + } + } + }); + }); + if(!ts) { + obj.find(".jstree-checked").parent().parent().each(function () { _this._repair_state(this); }); + } + }, + change_state : function (obj, state) { + obj = this._get_node(obj); + var coll = false, rc = this._get_settings().checkbox.real_checkboxes; + if(!obj || obj === -1) { return false; } + state = (state === false || state === true) ? state : obj.hasClass("jstree-checked"); + if(this._get_settings().checkbox.two_state) { + if(state) { + obj.removeClass("jstree-checked").addClass("jstree-unchecked"); + if(rc) { obj.children(":checkbox").prop("checked", false); } + } + else { + obj.removeClass("jstree-unchecked").addClass("jstree-checked"); + if(rc) { obj.children(":checkbox").prop("checked", true); } + } + } + else { + if(state) { + coll = obj.find("li").andSelf(); + if(!coll.filter(".jstree-checked, .jstree-undetermined").length) { return false; } + coll.removeClass("jstree-checked jstree-undetermined").addClass("jstree-unchecked"); + if(rc) { coll.children(":checkbox").prop("checked", false); } + } + else { + coll = obj.find("li").andSelf(); + if(!coll.filter(".jstree-unchecked, .jstree-undetermined").length) { return false; } + coll.removeClass("jstree-unchecked jstree-undetermined").addClass("jstree-checked"); + if(rc) { coll.children(":checkbox").prop("checked", true); } + if(this.data.ui) { this.data.ui.last_selected = obj; } + this.data.checkbox.last_selected = obj; + } + obj.parentsUntil(".jstree", "li").each(function () { + var $this = $(this); + if(state) { + if($this.children("ul").children("li.jstree-checked, li.jstree-undetermined").length) { + $this.parentsUntil(".jstree", "li").andSelf().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined"); + if(rc) { $this.parentsUntil(".jstree", "li").andSelf().children(":checkbox").prop("checked", false); } + return false; + } + else { + $this.removeClass("jstree-checked jstree-undetermined").addClass("jstree-unchecked"); + if(rc) { $this.children(":checkbox").prop("checked", false); } + } + } + else { + if($this.children("ul").children("li.jstree-unchecked, li.jstree-undetermined").length) { + $this.parentsUntil(".jstree", "li").andSelf().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined"); + if(rc) { $this.parentsUntil(".jstree", "li").andSelf().children(":checkbox").prop("checked", false); } + return false; + } + else { + $this.removeClass("jstree-unchecked jstree-undetermined").addClass("jstree-checked"); + if(rc) { $this.children(":checkbox").prop("checked", true); } + } + } + }); + } + if(this.data.ui && this.data.checkbox.noui) { this.data.ui.selected = this.get_checked(); } + this.__callback(obj); + return true; + }, + check_node : function (obj) { + if(this.change_state(obj, false)) { + obj = this._get_node(obj); + if(this._get_settings().checkbox.checked_parent_open) { + var t = this; + obj.parents(".jstree-closed").each(function () { t.open_node(this, false, true); }); + } + this.__callback({ "obj" : obj }); + } + }, + uncheck_node : function (obj) { + if(this.change_state(obj, true)) { this.__callback({ "obj" : this._get_node(obj) }); } + }, + check_all : function () { + var _this = this, + coll = this._get_settings().checkbox.two_state ? this.get_container_ul().find("li") : this.get_container_ul().children("li"); + coll.each(function () { + _this.change_state(this, false); + }); + this.__callback(); + }, + uncheck_all : function () { + var _this = this, + coll = this._get_settings().checkbox.two_state ? this.get_container_ul().find("li") : this.get_container_ul().children("li"); + coll.each(function () { + _this.change_state(this, true); + }); + this.__callback(); + }, + + is_checked : function(obj) { + obj = this._get_node(obj); + return obj.length ? obj.is(".jstree-checked") : false; + }, + get_checked : function (obj, get_all) { + obj = !obj || obj === -1 ? this.get_container() : this._get_node(obj); + return get_all || this._get_settings().checkbox.two_state ? obj.find(".jstree-checked") : obj.find("> ul > .jstree-checked, .jstree-undetermined > ul > .jstree-checked"); + }, + get_unchecked : function (obj, get_all) { + obj = !obj || obj === -1 ? this.get_container() : this._get_node(obj); + return get_all || this._get_settings().checkbox.two_state ? obj.find(".jstree-unchecked") : obj.find("> ul > .jstree-unchecked, .jstree-undetermined > ul > .jstree-unchecked"); + }, + + show_checkboxes : function () { this.get_container().children("ul").removeClass("jstree-no-checkboxes"); }, + hide_checkboxes : function () { this.get_container().children("ul").addClass("jstree-no-checkboxes"); }, + + _repair_state : function (obj) { + obj = this._get_node(obj); + if(!obj.length) { return; } + if(this._get_settings().checkbox.two_state) { + obj.find('li').andSelf().not('.jstree-checked').removeClass('jstree-undetermined').addClass('jstree-unchecked').children(':checkbox').prop('checked', true); + return; + } + var rc = this._get_settings().checkbox.real_checkboxes, + a = obj.find("> ul > .jstree-checked").length, + b = obj.find("> ul > .jstree-undetermined").length, + c = obj.find("> ul > li").length; + if(c === 0) { if(obj.hasClass("jstree-undetermined")) { this.change_state(obj, false); } } + else if(a === 0 && b === 0) { this.change_state(obj, true); } + else if(a === c) { this.change_state(obj, false); } + else { + obj.parentsUntil(".jstree","li").andSelf().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined"); + if(rc) { obj.parentsUntil(".jstree", "li").andSelf().children(":checkbox").prop("checked", false); } + } + }, + reselect : function () { + if(this.data.ui && this.data.checkbox.noui) { + var _this = this, + s = this.data.ui.to_select; + s = $.map($.makeArray(s), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); }); + this.deselect_all(); + $.each(s, function (i, val) { _this.check_node(val); }); + this.__callback(); + } + else { + this.__call_old(); + } + }, + save_loaded : function () { + var _this = this; + this.data.core.to_load = []; + this.get_container_ul().find("li.jstree-closed.jstree-undetermined").each(function () { + if(this.id) { _this.data.core.to_load.push("#" + this.id); } + }); + } + } + }); + $(function() { + var css_string = '.jstree .jstree-real-checkbox { display:none; } '; + $.vakata.css.add_sheet({ str : css_string, title : "jstree" }); + }); +})(jQuery); +//*/ + +/* + * jsTree XML plugin + * The XML data store. Datastores are build by overriding the `load_node` and `_is_loaded` functions. + */ +(function ($) { + + /* Edited Out LOS 03/04/12 - See http://code.google.com/p/jstree/issues/detail?id=907 + $.vakata.xslt = function (xml, xsl, callback) { + var rs = "", xm, xs, processor, support; + // TODO: IE9 no XSLTProcessor, no document.recalc + if(document.recalc) { + xm = document.createElement('xml'); + xs = document.createElement('xml'); + xm.innerHTML = xml; + xs.innerHTML = xsl; + $("body").append(xm).append(xs); + setTimeout( (function (xm, xs, callback) { + return function () { + callback.call(null, xm.transformNode(xs.XMLDocument)); + setTimeout( (function (xm, xs) { return function () { $(xm).remove(); $(xs).remove(); }; })(xm, xs), 200); + }; + })(xm, xs, callback), 100); + return true; + } + */ + // Added LOS 03/04/12 + $.vakata.xslt = function (xml, xsl, callback) { + var rs = "", xm, xs, processor, support; + if(window.ActiveXObject) { + var xslt = new ActiveXObject("Msxml2.XSLTemplate"); + var xmlDoc = new ActiveXObject("Msxml2.DOMDocument"); + var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); + xmlDoc.loadXML(xml); + xslDoc.loadXML(xsl); + xslt.stylesheet = xslDoc; + var xslProc = xslt.createProcessor(); + xslProc.input = xmlDoc; + xslProc.transform(); + callback.call(null, xslProc.output); + + return true; + } + if(typeof window.DOMParser !== "undefined" && typeof window.XMLHttpRequest !== "undefined" && typeof window.XSLTProcessor === "undefined") { + xml = new DOMParser().parseFromString(xml, "text/xml"); + xsl = new DOMParser().parseFromString(xsl, "text/xml"); + // alert(xml.transformNode()); + // callback.call(null, new XMLSerializer().serializeToString(rs)); + + } + if(typeof window.DOMParser !== "undefined" && typeof window.XMLHttpRequest !== "undefined" && typeof window.XSLTProcessor !== "undefined") { + processor = new XSLTProcessor(); + support = $.isFunction(processor.transformDocument) ? (typeof window.XMLSerializer !== "undefined") : true; + if(!support) { return false; } + xml = new DOMParser().parseFromString(xml, "text/xml"); + xsl = new DOMParser().parseFromString(xsl, "text/xml"); + if($.isFunction(processor.transformDocument)) { + rs = document.implementation.createDocument("", "", null); + processor.transformDocument(xml, xsl, rs, null); + callback.call(null, new XMLSerializer().serializeToString(rs)); + return true; + } + else { + processor.importStylesheet(xsl); + rs = processor.transformToFragment(xml, document); + callback.call(null, $("<div />").append(rs).html()); + return true; + } + } + return false; + }; + var xsl = { + 'nest' : '<' + '?xml version="1.0" encoding="utf-8" ?>' + + '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >' + + '<xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" standalone="no" indent="no" media-type="text/html" />' + + '<xsl:template match="/">' + + ' <xsl:call-template name="nodes">' + + ' <xsl:with-param name="node" select="/root" />' + + ' </xsl:call-template>' + + '</xsl:template>' + + '<xsl:template name="nodes">' + + ' <xsl:param name="node" />' + + ' <ul>' + + ' <xsl:for-each select="$node/item">' + + ' <xsl:variable name="children" select="count(./item) > 0" />' + + ' <li>' + + ' <xsl:attribute name="class">' + + ' <xsl:if test="position() = last()">jstree-last </xsl:if>' + + ' <xsl:choose>' + + ' <xsl:when test="@state = \'open\'">jstree-open </xsl:when>' + + ' <xsl:when test="$children or @hasChildren or @state = \'closed\'">jstree-closed </xsl:when>' + + ' <xsl:otherwise>jstree-leaf </xsl:otherwise>' + + ' </xsl:choose>' + + ' <xsl:value-of select="@class" />' + + ' </xsl:attribute>' + + ' <xsl:for-each select="@*">' + + ' <xsl:if test="name() != \'class\' and name() != \'state\' and name() != \'hasChildren\'">' + + ' <xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>' + + ' </xsl:if>' + + ' </xsl:for-each>' + + ' <ins class="jstree-icon"><xsl:text> </xsl:text></ins>' + + ' <xsl:for-each select="content/name">' + + ' <a>' + + ' <xsl:attribute name="href">' + + ' <xsl:choose>' + + ' <xsl:when test="@href"><xsl:value-of select="@href" /></xsl:when>' + + ' <xsl:otherwise>#</xsl:otherwise>' + + ' </xsl:choose>' + + ' </xsl:attribute>' + + ' <xsl:attribute name="class"><xsl:value-of select="@lang" /> <xsl:value-of select="@class" /></xsl:attribute>' + + ' <xsl:attribute name="style"><xsl:value-of select="@style" /></xsl:attribute>' + + ' <xsl:for-each select="@*">' + + ' <xsl:if test="name() != \'style\' and name() != \'class\' and name() != \'href\'">' + + ' <xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>' + + ' </xsl:if>' + + ' </xsl:for-each>' + + ' <ins>' + + ' <xsl:attribute name="class">jstree-icon ' + + ' <xsl:if test="string-length(attribute::icon) > 0 and not(contains(@icon,\'/\'))"><xsl:value-of select="@icon" /></xsl:if>' + + ' </xsl:attribute>' + + ' <xsl:if test="string-length(attribute::icon) > 0 and contains(@icon,\'/\')"><xsl:attribute name="style">background:url(<xsl:value-of select="@icon" />) center center no-repeat;</xsl:attribute></xsl:if>' + + ' <xsl:text> </xsl:text>' + + ' </ins>' + + ' <xsl:copy-of select="./child::node()" />' + + ' </a>' + + ' </xsl:for-each>' + + ' <xsl:if test="$children or @hasChildren"><xsl:call-template name="nodes"><xsl:with-param name="node" select="current()" /></xsl:call-template></xsl:if>' + + ' </li>' + + ' </xsl:for-each>' + + ' </ul>' + + '</xsl:template>' + + '</xsl:stylesheet>', + + 'flat' : '<' + '?xml version="1.0" encoding="utf-8" ?>' + + '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >' + + '<xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" standalone="no" indent="no" media-type="text/xml" />' + + '<xsl:template match="/">' + + ' <ul>' + + ' <xsl:for-each select="//item[not(@parent_id) or @parent_id=0 or not(@parent_id = //item/@id)]">' + /* the last `or` may be removed */ + ' <xsl:call-template name="nodes">' + + ' <xsl:with-param name="node" select="." />' + + ' <xsl:with-param name="is_last" select="number(position() = last())" />' + + ' </xsl:call-template>' + + ' </xsl:for-each>' + + ' </ul>' + + '</xsl:template>' + + '<xsl:template name="nodes">' + + ' <xsl:param name="node" />' + + ' <xsl:param name="is_last" />' + + ' <xsl:variable name="children" select="count(//item[@parent_id=$node/attribute::id]) > 0" />' + + ' <li>' + + ' <xsl:attribute name="class">' + + ' <xsl:if test="$is_last = true()">jstree-last </xsl:if>' + + ' <xsl:choose>' + + ' <xsl:when test="@state = \'open\'">jstree-open </xsl:when>' + + ' <xsl:when test="$children or @hasChildren or @state = \'closed\'">jstree-closed </xsl:when>' + + ' <xsl:otherwise>jstree-leaf </xsl:otherwise>' + + ' </xsl:choose>' + + ' <xsl:value-of select="@class" />' + + ' </xsl:attribute>' + + ' <xsl:for-each select="@*">' + + ' <xsl:if test="name() != \'parent_id\' and name() != \'hasChildren\' and name() != \'class\' and name() != \'state\'">' + + ' <xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>' + + ' </xsl:if>' + + ' </xsl:for-each>' + + ' <ins class="jstree-icon"><xsl:text> </xsl:text></ins>' + + ' <xsl:for-each select="content/name">' + + ' <a>' + + ' <xsl:attribute name="href">' + + ' <xsl:choose>' + + ' <xsl:when test="@href"><xsl:value-of select="@href" /></xsl:when>' + + ' <xsl:otherwise>#</xsl:otherwise>' + + ' </xsl:choose>' + + ' </xsl:attribute>' + + ' <xsl:attribute name="class"><xsl:value-of select="@lang" /> <xsl:value-of select="@class" /></xsl:attribute>' + + ' <xsl:attribute name="style"><xsl:value-of select="@style" /></xsl:attribute>' + + ' <xsl:for-each select="@*">' + + ' <xsl:if test="name() != \'style\' and name() != \'class\' and name() != \'href\'">' + + ' <xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>' + + ' </xsl:if>' + + ' </xsl:for-each>' + + ' <ins>' + + ' <xsl:attribute name="class">jstree-icon ' + + ' <xsl:if test="string-length(attribute::icon) > 0 and not(contains(@icon,\'/\'))"><xsl:value-of select="@icon" /></xsl:if>' + + ' </xsl:attribute>' + + ' <xsl:if test="string-length(attribute::icon) > 0 and contains(@icon,\'/\')"><xsl:attribute name="style">background:url(<xsl:value-of select="@icon" />) center center no-repeat;</xsl:attribute></xsl:if>' + + ' <xsl:text> </xsl:text>' + + ' </ins>' + + ' <xsl:copy-of select="./child::node()" />' + + ' </a>' + + ' </xsl:for-each>' + + ' <xsl:if test="$children">' + + ' <ul>' + + ' <xsl:for-each select="//item[@parent_id=$node/attribute::id]">' + + ' <xsl:call-template name="nodes">' + + ' <xsl:with-param name="node" select="." />' + + ' <xsl:with-param name="is_last" select="number(position() = last())" />' + + ' </xsl:call-template>' + + ' </xsl:for-each>' + + ' </ul>' + + ' </xsl:if>' + + ' </li>' + + '</xsl:template>' + + '</xsl:stylesheet>' + }, + escape_xml = function(string) { + return string + .toString() + .replace(/&/g, '&') + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + }; + $.jstree.plugin("xml_data", { + defaults : { + data : false, + ajax : false, + xsl : "flat", + clean_node : false, + correct_state : true, + get_skip_empty : false, + get_include_preamble : true + }, + _fn : { + load_node : function (obj, s_call, e_call) { var _this = this; this.load_node_xml(obj, function () { _this.__callback({ "obj" : _this._get_node(obj) }); s_call.call(this); }, e_call); }, + _is_loaded : function (obj) { + var s = this._get_settings().xml_data; + obj = this._get_node(obj); + return obj == -1 || !obj || (!s.ajax && !$.isFunction(s.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").size() > 0; + }, + load_node_xml : function (obj, s_call, e_call) { + var s = this.get_settings().xml_data, + error_func = function () {}, + success_func = function () {}; + + obj = this._get_node(obj); + if(obj && obj !== -1) { + if(obj.data("jstree_is_loading")) { return; } + else { obj.data("jstree_is_loading",true); } + } + switch(!0) { + case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied."; + case ($.isFunction(s.data)): + s.data.call(this, obj, $.proxy(function (d) { + this.parse_xml(d, $.proxy(function (d) { + if(d) { + d = d.replace(/ ?xmlns="[^"]*"/ig, ""); + if(d.length > 10) { + d = $(d); + if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); } + else { obj.children("a.jstree-loading").removeClass("jstree-loading"); obj.append(d); obj.removeData("jstree_is_loading"); } + if(s.clean_node) { this.clean_node(obj); } + if(s_call) { s_call.call(this); } + } + else { + if(obj && obj !== -1) { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree_is_loading"); + if(s.correct_state) { + this.correct_state(obj); + if(s_call) { s_call.call(this); } + } + } + else { + if(s.correct_state) { + this.get_container().children("ul").empty(); + if(s_call) { s_call.call(this); } + } + } + } + } + }, this)); + }, this)); + break; + case (!!s.data && !s.ajax) || (!!s.data && !!s.ajax && (!obj || obj === -1)): + if(!obj || obj == -1) { + this.parse_xml(s.data, $.proxy(function (d) { + if(d) { + d = d.replace(/ ?xmlns="[^"]*"/ig, ""); + if(d.length > 10) { + d = $(d); + this.get_container().children("ul").empty().append(d.children()); + if(s.clean_node) { this.clean_node(obj); } + if(s_call) { s_call.call(this); } + } + } + else { + if(s.correct_state) { + this.get_container().children("ul").empty(); + if(s_call) { s_call.call(this); } + } + } + }, this)); + } + break; + case (!s.data && !!s.ajax) || (!!s.data && !!s.ajax && obj && obj !== -1): + error_func = function (x, t, e) { + var ef = this.get_settings().xml_data.ajax.error; + if(ef) { ef.call(this, x, t, e); } + if(obj !== -1 && obj.length) { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree_is_loading"); + if(t === "success" && s.correct_state) { this.correct_state(obj); } + } + else { + if(t === "success" && s.correct_state) { this.get_container().children("ul").empty(); } + } + if(e_call) { e_call.call(this); } + }; + success_func = function (d, t, x) { + d = x.responseText; + var sf = this.get_settings().xml_data.ajax.success; + if(sf) { d = sf.call(this,d,t,x) || d; } + if(d === "" || (d && d.toString && d.toString().replace(/^[\s\n]+$/,"") === "")) { + return error_func.call(this, x, t, ""); + } + this.parse_xml(d, $.proxy(function (d) { + if(d) { + d = d.replace(/ ?xmlns="[^"]*"/ig, ""); + if(d.length > 10) { + d = $(d); + if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); } + else { obj.children("a.jstree-loading").removeClass("jstree-loading"); obj.append(d); obj.removeData("jstree_is_loading"); } + if(s.clean_node) { this.clean_node(obj); } + if(s_call) { s_call.call(this); } + } + else { + if(obj && obj !== -1) { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree_is_loading"); + if(s.correct_state) { + this.correct_state(obj); + if(s_call) { s_call.call(this); } + } + } + else { + if(s.correct_state) { + this.get_container().children("ul").empty(); + if(s_call) { s_call.call(this); } + } + } + } + } + }, this)); + }; + s.ajax.context = this; + s.ajax.error = error_func; + s.ajax.success = success_func; + if(!s.ajax.dataType) { s.ajax.dataType = "xml"; } + if($.isFunction(s.ajax.url)) { s.ajax.url = s.ajax.url.call(this, obj); } + if($.isFunction(s.ajax.data)) { s.ajax.data = s.ajax.data.call(this, obj); } + $.ajax(s.ajax); + break; + } + }, + parse_xml : function (xml, callback) { + var s = this._get_settings().xml_data; + $.vakata.xslt(xml, xsl[s.xsl], callback); + }, + get_xml : function (tp, obj, li_attr, a_attr, is_callback) { + var result = "", + s = this._get_settings(), + _this = this, + tmp1, tmp2, li, a, lang; + if(!tp) { tp = "flat"; } + if(!is_callback) { is_callback = 0; } + obj = this._get_node(obj); + if(!obj || obj === -1) { obj = this.get_container().find("> ul > li"); } + li_attr = $.isArray(li_attr) ? li_attr : [ "id", "class" ]; + if(!is_callback && this.data.types && $.inArray(s.types.type_attr, li_attr) === -1) { li_attr.push(s.types.type_attr); } + + a_attr = $.isArray(a_attr) ? a_attr : [ ]; + + if(!is_callback) { + if(s.xml_data.get_include_preamble) { + result += '<' + '?xml version="1.0" encoding="UTF-8"?' + '>'; + } + result += "<root>"; + } + obj.each(function () { + result += "<item"; + li = $(this); + $.each(li_attr, function (i, v) { + var t = li.attr(v); + if(!s.xml_data.get_skip_empty || typeof t !== "undefined") { + result += " " + v + "=\"" + escape_xml((" " + (t || "")).replace(/ jstree[^ ]*/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,"")) + "\""; + } + }); + if(li.hasClass("jstree-open")) { result += " state=\"open\""; } + if(li.hasClass("jstree-closed")) { result += " state=\"closed\""; } + if(tp === "flat") { result += " parent_id=\"" + escape_xml(is_callback) + "\""; } + result += ">"; + result += "<content>"; + a = li.children("a"); + a.each(function () { + tmp1 = $(this); + lang = false; + result += "<name"; + if($.inArray("languages", s.plugins) !== -1) { + $.each(s.languages, function (k, z) { + if(tmp1.hasClass(z)) { result += " lang=\"" + escape_xml(z) + "\""; lang = z; return false; } + }); + } + if(a_attr.length) { + $.each(a_attr, function (k, z) { + var t = tmp1.attr(z); + if(!s.xml_data.get_skip_empty || typeof t !== "undefined") { + result += " " + z + "=\"" + escape_xml((" " + t || "").replace(/ jstree[^ ]*/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,"")) + "\""; + } + }); + } + if(tmp1.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').replace(/^\s+$/ig,"").length) { + result += ' icon="' + escape_xml(tmp1.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,"")) + '"'; + } + if(tmp1.children("ins").get(0).style.backgroundImage.length) { + result += ' icon="' + escape_xml(tmp1.children("ins").get(0).style.backgroundImage.replace("url(","").replace(")","").replace(/'/ig,"").replace(/"/ig,"")) + '"'; + } + result += ">"; + result += "<![CDATA[" + _this.get_text(tmp1, lang) + "]]>"; + result += "</name>"; + }); + result += "</content>"; + tmp2 = li[0].id || true; + li = li.find("> ul > li"); + if(li.length) { tmp2 = _this.get_xml(tp, li, li_attr, a_attr, tmp2); } + else { tmp2 = ""; } + if(tp == "nest") { result += tmp2; } + result += "</item>"; + if(tp == "flat") { result += tmp2; } + }); + if(!is_callback) { result += "</root>"; } + return result; + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree search plugin + * Enables both sync and async search on the tree + * DOES NOT WORK WITH JSON PROGRESSIVE RENDER + */ +(function ($) { + $.expr[':'].jstree_contains = function(a,i,m){ + return (a.textContent || a.innerText || "").toLowerCase().indexOf(m[3].toLowerCase())>=0; + }; + $.expr[':'].jstree_title_contains = function(a,i,m) { + return (a.getAttribute("title") || "").toLowerCase().indexOf(m[3].toLowerCase())>=0; + }; + $.jstree.plugin("search", { + __init : function () { + this.data.search.str = ""; + this.data.search.result = $(); + if(this._get_settings().search.show_only_matches) { + this.get_container() + .bind("search.jstree", function (e, data) { + $(this).children("ul").find("li").hide().removeClass("jstree-last"); + data.rslt.nodes.parentsUntil(".jstree").andSelf().show() + .filter("ul").each(function () { $(this).children("li:visible").eq(-1).addClass("jstree-last"); }); + }) + .bind("clear_search.jstree", function () { + $(this).children("ul").find("li").css("display","").end().end().jstree("clean_node", -1); + }); + } + }, + defaults : { + ajax : false, + search_method : "jstree_contains", // for case insensitive - jstree_contains + show_only_matches : false + }, + _fn : { + search : function (str, skip_async) { + if($.trim(str) === "") { this.clear_search(); return; } + var s = this.get_settings().search, + t = this, + error_func = function () { }, + success_func = function () { }; + this.data.search.str = str; + + if(!skip_async && s.ajax !== false && this.get_container_ul().find("li.jstree-closed:not(:has(ul)):eq(0)").length > 0) { + this.search.supress_callback = true; + error_func = function () { }; + success_func = function (d, t, x) { + var sf = this.get_settings().search.ajax.success; + if(sf) { d = sf.call(this,d,t,x) || d; } + this.data.search.to_open = d; + this._search_open(); + }; + s.ajax.context = this; + s.ajax.error = error_func; + s.ajax.success = success_func; + if($.isFunction(s.ajax.url)) { s.ajax.url = s.ajax.url.call(this, str); } + if($.isFunction(s.ajax.data)) { s.ajax.data = s.ajax.data.call(this, str); } + if(!s.ajax.data) { s.ajax.data = { "search_string" : str }; } + if(!s.ajax.dataType || /^json/.exec(s.ajax.dataType)) { s.ajax.dataType = "json"; } + $.ajax(s.ajax); + return; + } + if(this.data.search.result.length) { this.clear_search(); } + this.data.search.result = this.get_container().find("a" + (this.data.languages ? "." + this.get_lang() : "" ) + ":" + (s.search_method) + "(" + this.data.search.str + ")"); + this.data.search.result.addClass("jstree-search").parent().parents(".jstree-closed").each(function () { + t.open_node(this, false, true); + }); + this.__callback({ nodes : this.data.search.result, str : str }); + }, + clear_search : function (str) { + this.data.search.result.removeClass("jstree-search"); + this.__callback(this.data.search.result); + this.data.search.result = $(); + }, + _search_open : function (is_callback) { + var _this = this, + done = true, + current = [], + remaining = []; + if(this.data.search.to_open.length) { + $.each(this.data.search.to_open, function (i, val) { + if(val == "#") { return true; } + if($(val).length && $(val).is(".jstree-closed")) { current.push(val); } + else { remaining.push(val); } + }); + if(current.length) { + this.data.search.to_open = remaining; + $.each(current, function (i, val) { + _this.open_node(val, function () { _this._search_open(true); }); + }); + done = false; + } + } + if(done) { this.search(this.data.search.str, true); } + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree contextmenu plugin + */ +(function ($) { + $.vakata.context = { + hide_on_mouseleave : false, + + cnt : $("<div id='vakata-contextmenu' />"), + vis : false, + tgt : false, + par : false, + func : false, + data : false, + rtl : false, + show : function (s, t, x, y, d, p, rtl) { + $.vakata.context.rtl = !!rtl; + var html = $.vakata.context.parse(s), h, w; + if(!html) { return; } + $.vakata.context.vis = true; + $.vakata.context.tgt = t; + $.vakata.context.par = p || t || null; + $.vakata.context.data = d || null; + $.vakata.context.cnt + .html(html) + .css({ "visibility" : "hidden", "display" : "block", "left" : 0, "top" : 0 }); + + if($.vakata.context.hide_on_mouseleave) { + $.vakata.context.cnt + .one("mouseleave", function(e) { $.vakata.context.hide(); }); + } + + h = $.vakata.context.cnt.height(); + w = $.vakata.context.cnt.width(); + if(x + w > $(document).width()) { + x = $(document).width() - (w + 5); + $.vakata.context.cnt.find("li > ul").addClass("right"); + } + if(y + h > $(document).height()) { + y = y - (h + t[0].offsetHeight); + $.vakata.context.cnt.find("li > ul").addClass("bottom"); + } + + $.vakata.context.cnt + .css({ "left" : x, "top" : y }) + .find("li:has(ul)") + .bind("mouseenter", function (e) { + var w = $(document).width(), + h = $(document).height(), + ul = $(this).children("ul").show(); + if(w !== $(document).width()) { ul.toggleClass("right"); } + if(h !== $(document).height()) { ul.toggleClass("bottom"); } + }) + .bind("mouseleave", function (e) { + $(this).children("ul").hide(); + }) + .end() + .css({ "visibility" : "visible" }) + .show(); + $(document).triggerHandler("context_show.vakata"); + }, + hide : function () { + $.vakata.context.vis = false; + $.vakata.context.cnt.attr("class","").css({ "visibility" : "hidden" }); + $(document).triggerHandler("context_hide.vakata"); + }, + parse : function (s, is_callback) { + if(!s) { return false; } + var str = "", + tmp = false, + was_sep = true; + if(!is_callback) { $.vakata.context.func = {}; } + str += "<ul>"; + $.each(s, function (i, val) { + if(!val) { return true; } + $.vakata.context.func[i] = val.action; + if(!was_sep && val.separator_before) { + str += "<li class='vakata-separator vakata-separator-before'></li>"; + } + was_sep = false; + str += "<li class='" + (val._class || "") + (val._disabled ? " jstree-contextmenu-disabled " : "") + "'><ins "; + if(val.icon && val.icon.indexOf("/") === -1) { str += " class='" + val.icon + "' "; } + if(val.icon && val.icon.indexOf("/") !== -1) { str += " style='background:url(" + val.icon + ") center center no-repeat;' "; } + str += "> </ins><a href='#' rel='" + i + "'>"; + if(val.submenu) { + str += "<span style='float:" + ($.vakata.context.rtl ? "left" : "right") + ";'>»</span>"; + } + str += val.label + "</a>"; + if(val.submenu) { + tmp = $.vakata.context.parse(val.submenu, true); + if(tmp) { str += tmp; } + } + str += "</li>"; + if(val.separator_after) { + str += "<li class='vakata-separator vakata-separator-after'></li>"; + was_sep = true; + } + }); + str = str.replace(/<li class\='vakata-separator vakata-separator-after'\><\/li\>$/,""); + str += "</ul>"; + $(document).triggerHandler("context_parse.vakata"); + return str.length > 10 ? str : false; + }, + exec : function (i) { + if($.isFunction($.vakata.context.func[i])) { + // if is string - eval and call it! + $.vakata.context.func[i].call($.vakata.context.data, $.vakata.context.par); + return true; + } + else { return false; } + } + }; + $(function () { + var css_string = '' + + '#vakata-contextmenu { display:block; visibility:hidden; left:0; top:-200px; position:absolute; margin:0; padding:0; min-width:180px; background:#ebebeb; border:1px solid silver; z-index:10000; *width:180px; } ' + + '#vakata-contextmenu ul { min-width:180px; *width:180px; } ' + + '#vakata-contextmenu ul, #vakata-contextmenu li { margin:0; padding:0; list-style-type:none; display:block; } ' + + '#vakata-contextmenu li { line-height:20px; min-height:20px; position:relative; padding:0px; } ' + + '#vakata-contextmenu li a { padding:1px 6px; line-height:17px; display:block; text-decoration:none; margin:1px 1px 0 1px; } ' + + '#vakata-contextmenu li ins { float:left; width:16px; height:16px; text-decoration:none; margin-right:2px; } ' + + '#vakata-contextmenu li a:hover, #vakata-contextmenu li.vakata-hover > a { background:gray; color:white; } ' + + '#vakata-contextmenu li ul { display:none; position:absolute; top:-2px; left:100%; background:#ebebeb; border:1px solid gray; } ' + + '#vakata-contextmenu .right { right:100%; left:auto; } ' + + '#vakata-contextmenu .bottom { bottom:-1px; top:auto; } ' + + '#vakata-contextmenu li.vakata-separator { min-height:0; height:1px; line-height:1px; font-size:1px; overflow:hidden; margin:0 2px; background:silver; /* border-top:1px solid #fefefe; */ padding:0; } '; + $.vakata.css.add_sheet({ str : css_string, title : "vakata" }); + $.vakata.context.cnt + .delegate("a","click", function (e) { e.preventDefault(); }) + .delegate("a","mouseup", function (e) { + if(!$(this).parent().hasClass("jstree-contextmenu-disabled") && $.vakata.context.exec($(this).attr("rel"))) { + $.vakata.context.hide(); + } + else { $(this).blur(); } + }) + .delegate("a","mouseover", function () { + $.vakata.context.cnt.find(".vakata-hover").removeClass("vakata-hover"); + }) + .appendTo("body"); + $(document).bind("mousedown", function (e) { if($.vakata.context.vis && !$.contains($.vakata.context.cnt[0], e.target)) { $.vakata.context.hide(); } }); + if(typeof $.hotkeys !== "undefined") { + $(document) + .bind("keydown", "up", function (e) { + if($.vakata.context.vis) { + var o = $.vakata.context.cnt.find("ul:visible").last().children(".vakata-hover").removeClass("vakata-hover").prevAll("li:not(.vakata-separator)").first(); + if(!o.length) { o = $.vakata.context.cnt.find("ul:visible").last().children("li:not(.vakata-separator)").last(); } + o.addClass("vakata-hover"); + e.stopImmediatePropagation(); + e.preventDefault(); + } + }) + .bind("keydown", "down", function (e) { + if($.vakata.context.vis) { + var o = $.vakata.context.cnt.find("ul:visible").last().children(".vakata-hover").removeClass("vakata-hover").nextAll("li:not(.vakata-separator)").first(); + if(!o.length) { o = $.vakata.context.cnt.find("ul:visible").last().children("li:not(.vakata-separator)").first(); } + o.addClass("vakata-hover"); + e.stopImmediatePropagation(); + e.preventDefault(); + } + }) + .bind("keydown", "right", function (e) { + if($.vakata.context.vis) { + $.vakata.context.cnt.find(".vakata-hover").children("ul").show().children("li:not(.vakata-separator)").removeClass("vakata-hover").first().addClass("vakata-hover"); + e.stopImmediatePropagation(); + e.preventDefault(); + } + }) + .bind("keydown", "left", function (e) { + if($.vakata.context.vis) { + $.vakata.context.cnt.find(".vakata-hover").children("ul").hide().children(".vakata-separator").removeClass("vakata-hover"); + e.stopImmediatePropagation(); + e.preventDefault(); + } + }) + .bind("keydown", "esc", function (e) { + $.vakata.context.hide(); + e.preventDefault(); + }) + .bind("keydown", "space", function (e) { + $.vakata.context.cnt.find(".vakata-hover").last().children("a").click(); + e.preventDefault(); + }); + } + }); + + $.jstree.plugin("contextmenu", { + __init : function () { + this.get_container() + .delegate("a", "contextmenu.jstree", $.proxy(function (e) { + e.preventDefault(); + if(!$(e.currentTarget).hasClass("jstree-loading")) { + this.show_contextmenu(e.currentTarget, e.pageX, e.pageY); + } + }, this)) + .delegate("a", "click.jstree", $.proxy(function (e) { + if(this.data.contextmenu) { + $.vakata.context.hide(); + } + }, this)) + .bind("destroy.jstree", $.proxy(function () { + // TODO: move this to descruct method + if(this.data.contextmenu) { + $.vakata.context.hide(); + } + }, this)); + $(document).bind("context_hide.vakata", $.proxy(function () { this.data.contextmenu = false; }, this)); + }, + defaults : { + select_node : false, // requires UI plugin + show_at_node : true, + items : { // Could be a function that should return an object like this one + "create" : { + "separator_before" : false, + "separator_after" : true, + "label" : "Create", + "action" : function (obj) { this.create(obj); } + }, + "rename" : { + "separator_before" : false, + "separator_after" : false, + "label" : "Rename", + "action" : function (obj) { this.rename(obj); } + }, + "remove" : { + "separator_before" : false, + "icon" : false, + "separator_after" : false, + "label" : "Delete", + "action" : function (obj) { if(this.is_selected(obj)) { this.remove(); } else { this.remove(obj); } } + }, + "ccp" : { + "separator_before" : true, + "icon" : false, + "separator_after" : false, + "label" : "Edit", + "action" : false, + "submenu" : { + "cut" : { + "separator_before" : false, + "separator_after" : false, + "label" : "Cut", + "action" : function (obj) { this.cut(obj); } + }, + "copy" : { + "separator_before" : false, + "icon" : false, + "separator_after" : false, + "label" : "Copy", + "action" : function (obj) { this.copy(obj); } + }, + "paste" : { + "separator_before" : false, + "icon" : false, + "separator_after" : false, + "label" : "Paste", + "action" : function (obj) { this.paste(obj); } + } + } + } + } + }, + _fn : { + show_contextmenu : function (obj, x, y) { + obj = this._get_node(obj); + var s = this.get_settings().contextmenu, + a = obj.children("a:visible:eq(0)"), + o = false, + i = false; + if(s.select_node && this.data.ui && !this.is_selected(obj)) { + this.deselect_all(); + this.select_node(obj, true); + } + if(s.show_at_node || typeof x === "undefined" || typeof y === "undefined") { + o = a.offset(); + x = o.left; + y = o.top + this.data.core.li_height; + } + i = obj.data("jstree") && obj.data("jstree").contextmenu ? obj.data("jstree").contextmenu : s.items; + if($.isFunction(i)) { i = i.call(this, obj); } + this.data.contextmenu = true; + $.vakata.context.show(i, a, x, y, this, obj, this._get_settings().core.rtl); + if(this.data.themes) { $.vakata.context.cnt.attr("class", "jstree-" + this.data.themes.theme + "-context"); } + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree types plugin + * Adds support types of nodes + * You can set an attribute on each li node, that represents its type. + * According to the type setting the node may get custom icon/validation rules + */ +(function ($) { + $.jstree.plugin("types", { + __init : function () { + var s = this._get_settings().types; + this.data.types.attach_to = []; + this.get_container() + .bind("init.jstree", $.proxy(function () { + var types = s.types, + attr = s.type_attr, + icons_css = "", + _this = this; + + $.each(types, function (i, tp) { + $.each(tp, function (k, v) { + if(!/^(max_depth|max_children|icon|valid_children)$/.test(k)) { _this.data.types.attach_to.push(k); } + }); + if(!tp.icon) { return true; } + if( tp.icon.image || tp.icon.position) { + if(i == "default") { icons_css += '.jstree-' + _this.get_index() + ' a > .jstree-icon { '; } + else { icons_css += '.jstree-' + _this.get_index() + ' li[' + attr + '="' + i + '"] > a > .jstree-icon { '; } + if(tp.icon.image) { icons_css += ' background-image:url(' + tp.icon.image + '); '; } + if(tp.icon.position){ icons_css += ' background-position:' + tp.icon.position + '; '; } + else { icons_css += ' background-position:0 0; '; } + icons_css += '} '; + } + }); + if(icons_css !== "") { $.vakata.css.add_sheet({ 'str' : icons_css, title : "jstree-types" }); } + }, this)) + .bind("before.jstree", $.proxy(function (e, data) { + var s, t, + o = this._get_settings().types.use_data ? this._get_node(data.args[0]) : false, + d = o && o !== -1 && o.length ? o.data("jstree") : false; + if(d && d.types && d.types[data.func] === false) { e.stopImmediatePropagation(); return false; } + if($.inArray(data.func, this.data.types.attach_to) !== -1) { + if(!data.args[0] || (!data.args[0].tagName && !data.args[0].jquery)) { return; } + s = this._get_settings().types.types; + t = this._get_type(data.args[0]); + if( + ( + (s[t] && typeof s[t][data.func] !== "undefined") || + (s["default"] && typeof s["default"][data.func] !== "undefined") + ) && this._check(data.func, data.args[0]) === false + ) { + e.stopImmediatePropagation(); + return false; + } + } + }, this)); + if(is_ie6) { + this.get_container() + .bind("load_node.jstree set_type.jstree", $.proxy(function (e, data) { + var r = data && data.rslt && data.rslt.obj && data.rslt.obj !== -1 ? this._get_node(data.rslt.obj).parent() : this.get_container_ul(), + c = false, + s = this._get_settings().types; + $.each(s.types, function (i, tp) { + if(tp.icon && (tp.icon.image || tp.icon.position)) { + c = i === "default" ? r.find("li > a > .jstree-icon") : r.find("li[" + s.type_attr + "='" + i + "'] > a > .jstree-icon"); + if(tp.icon.image) { c.css("backgroundImage","url(" + tp.icon.image + ")"); } + c.css("backgroundPosition", tp.icon.position || "0 0"); + } + }); + }, this)); + } + }, + defaults : { + // defines maximum number of root nodes (-1 means unlimited, -2 means disable max_children checking) + max_children : -1, + // defines the maximum depth of the tree (-1 means unlimited, -2 means disable max_depth checking) + max_depth : -1, + // defines valid node types for the root nodes + valid_children : "all", + + // whether to use $.data + use_data : false, + // where is the type stores (the rel attribute of the LI element) + type_attr : "rel", + // a list of types + types : { + // the default type + "default" : { + "max_children" : -1, + "max_depth" : -1, + "valid_children": "all" + + // Bound functions - you can bind any other function here (using boolean or function) + //"select_node" : true + } + } + }, + _fn : { + _types_notify : function (n, data) { + if(data.type && this._get_settings().types.use_data) { + this.set_type(data.type, n); + } + }, + _get_type : function (obj) { + obj = this._get_node(obj); + return (!obj || !obj.length) ? false : obj.attr(this._get_settings().types.type_attr) || "default"; + }, + set_type : function (str, obj) { + obj = this._get_node(obj); + var ret = (!obj.length || !str) ? false : obj.attr(this._get_settings().types.type_attr, str); + if(ret) { this.__callback({ obj : obj, type : str}); } + return ret; + }, + _check : function (rule, obj, opts) { + obj = this._get_node(obj); + var v = false, t = this._get_type(obj), d = 0, _this = this, s = this._get_settings().types, data = false; + if(obj === -1) { + if(!!s[rule]) { v = s[rule]; } + else { return; } + } + else { + if(t === false) { return; } + data = s.use_data ? obj.data("jstree") : false; + if(data && data.types && typeof data.types[rule] !== "undefined") { v = data.types[rule]; } + else if(!!s.types[t] && typeof s.types[t][rule] !== "undefined") { v = s.types[t][rule]; } + else if(!!s.types["default"] && typeof s.types["default"][rule] !== "undefined") { v = s.types["default"][rule]; } + } + if($.isFunction(v)) { v = v.call(this, obj); } + if(rule === "max_depth" && obj !== -1 && opts !== false && s.max_depth !== -2 && v !== 0) { + // also include the node itself - otherwise if root node it is not checked + obj.children("a:eq(0)").parentsUntil(".jstree","li").each(function (i) { + // check if current depth already exceeds global tree depth + if(s.max_depth !== -1 && s.max_depth - (i + 1) <= 0) { v = 0; return false; } + d = (i === 0) ? v : _this._check(rule, this, false); + // check if current node max depth is already matched or exceeded + if(d !== -1 && d - (i + 1) <= 0) { v = 0; return false; } + // otherwise - set the max depth to the current value minus current depth + if(d >= 0 && (d - (i + 1) < v || v < 0) ) { v = d - (i + 1); } + // if the global tree depth exists and it minus the nodes calculated so far is less than `v` or `v` is unlimited + if(s.max_depth >= 0 && (s.max_depth - (i + 1) < v || v < 0) ) { v = s.max_depth - (i + 1); } + }); + } + return v; + }, + check_move : function () { + if(!this.__call_old()) { return false; } + var m = this._get_move(), + s = m.rt._get_settings().types, + mc = m.rt._check("max_children", m.cr), + md = m.rt._check("max_depth", m.cr), + vc = m.rt._check("valid_children", m.cr), + ch = 0, d = 1, t; + + if(vc === "none") { return false; } + if($.isArray(vc) && m.ot && m.ot._get_type) { + m.o.each(function () { + if($.inArray(m.ot._get_type(this), vc) === -1) { d = false; return false; } + }); + if(d === false) { return false; } + } + if(s.max_children !== -2 && mc !== -1) { + ch = m.cr === -1 ? this.get_container().find("> ul > li").not(m.o).length : m.cr.find("> ul > li").not(m.o).length; + if(ch + m.o.length > mc) { return false; } + } + if(s.max_depth !== -2 && md !== -1) { + d = 0; + if(md === 0) { return false; } + if(typeof m.o.d === "undefined") { + // TODO: deal with progressive rendering and async when checking max_depth (how to know the depth of the moved node) + t = m.o; + while(t.length > 0) { + t = t.find("> ul > li"); + d ++; + } + m.o.d = d; + } + if(md - m.o.d < 0) { return false; } + } + return true; + }, + create_node : function (obj, position, js, callback, is_loaded, skip_check) { + if(!skip_check && (is_loaded || this._is_loaded(obj))) { + var p = (typeof position == "string" && position.match(/^before|after$/i) && obj !== -1) ? this._get_parent(obj) : this._get_node(obj), + s = this._get_settings().types, + mc = this._check("max_children", p), + md = this._check("max_depth", p), + vc = this._check("valid_children", p), + ch; + if(typeof js === "string") { js = { data : js }; } + if(!js) { js = {}; } + if(vc === "none") { return false; } + if($.isArray(vc)) { + if(!js.attr || !js.attr[s.type_attr]) { + if(!js.attr) { js.attr = {}; } + js.attr[s.type_attr] = vc[0]; + } + else { + if($.inArray(js.attr[s.type_attr], vc) === -1) { return false; } + } + } + if(s.max_children !== -2 && mc !== -1) { + ch = p === -1 ? this.get_container().find("> ul > li").length : p.find("> ul > li").length; + if(ch + 1 > mc) { return false; } + } + if(s.max_depth !== -2 && md !== -1 && (md - 1) < 0) { return false; } + } + return this.__call_old(true, obj, position, js, callback, is_loaded, skip_check); + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree HTML plugin + * The HTML data store. Datastores are build by replacing the `load_node` and `_is_loaded` functions. + */ +(function ($) { + $.jstree.plugin("html_data", { + __init : function () { + // this used to use html() and clean the whitespace, but this way any attached data was lost + this.data.html_data.original_container_html = this.get_container().find(" > ul > li").clone(true); + // remove white space from LI node - otherwise nodes appear a bit to the right + this.data.html_data.original_container_html.find("li").andSelf().contents().filter(function() { return this.nodeType == 3; }).remove(); + }, + defaults : { + data : false, + ajax : false, + correct_state : true + }, + _fn : { + load_node : function (obj, s_call, e_call) { var _this = this; this.load_node_html(obj, function () { _this.__callback({ "obj" : _this._get_node(obj) }); s_call.call(this); }, e_call); }, + _is_loaded : function (obj) { + obj = this._get_node(obj); + return obj == -1 || !obj || (!this._get_settings().html_data.ajax && !$.isFunction(this._get_settings().html_data.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").size() > 0; + }, + load_node_html : function (obj, s_call, e_call) { + var d, + s = this.get_settings().html_data, + error_func = function () {}, + success_func = function () {}; + obj = this._get_node(obj); + if(obj && obj !== -1) { + if(obj.data("jstree_is_loading")) { return; } + else { obj.data("jstree_is_loading",true); } + } + switch(!0) { + case ($.isFunction(s.data)): + s.data.call(this, obj, $.proxy(function (d) { + if(d && d !== "" && d.toString && d.toString().replace(/^[\s\n]+$/,"") !== "") { + d = $(d); + if(!d.is("ul")) { d = $("<ul />").append(d); } + if(obj == -1 || !obj) { this.get_container().children("ul").empty().append(d.children()).find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'> </ins>").end().filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); } + else { obj.children("a.jstree-loading").removeClass("jstree-loading"); obj.append(d).children("ul").find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'> </ins>").end().filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); obj.removeData("jstree_is_loading"); } + this.clean_node(obj); + if(s_call) { s_call.call(this); } + } + else { + if(obj && obj !== -1) { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree_is_loading"); + if(s.correct_state) { + this.correct_state(obj); + if(s_call) { s_call.call(this); } + } + } + else { + if(s.correct_state) { + this.get_container().children("ul").empty(); + if(s_call) { s_call.call(this); } + } + } + } + }, this)); + break; + case (!s.data && !s.ajax): + if(!obj || obj == -1) { + this.get_container() + .children("ul").empty() + .append(this.data.html_data.original_container_html) + .find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'> </ins>").end() + .filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); + this.clean_node(); + } + if(s_call) { s_call.call(this); } + break; + case (!!s.data && !s.ajax) || (!!s.data && !!s.ajax && (!obj || obj === -1)): + if(!obj || obj == -1) { + d = $(s.data); + if(!d.is("ul")) { d = $("<ul />").append(d); } + this.get_container() + .children("ul").empty().append(d.children()) + .find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'> </ins>").end() + .filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); + this.clean_node(); + } + if(s_call) { s_call.call(this); } + break; + case (!s.data && !!s.ajax) || (!!s.data && !!s.ajax && obj && obj !== -1): + obj = this._get_node(obj); + error_func = function (x, t, e) { + var ef = this.get_settings().html_data.ajax.error; + if(ef) { ef.call(this, x, t, e); } + if(obj != -1 && obj.length) { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree_is_loading"); + if(t === "success" && s.correct_state) { this.correct_state(obj); } + } + else { + if(t === "success" && s.correct_state) { this.get_container().children("ul").empty(); } + } + if(e_call) { e_call.call(this); } + }; + success_func = function (d, t, x) { + var sf = this.get_settings().html_data.ajax.success; + if(sf) { d = sf.call(this,d,t,x) || d; } + if(d === "" || (d && d.toString && d.toString().replace(/^[\s\n]+$/,"") === "")) { + return error_func.call(this, x, t, ""); + } + if(d) { + d = $(d); + if(!d.is("ul")) { d = $("<ul />").append(d); } + if(obj == -1 || !obj) { this.get_container().children("ul").empty().append(d.children()).find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'> </ins>").end().filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); } + else { obj.children("a.jstree-loading").removeClass("jstree-loading"); obj.append(d).children("ul").find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'> </ins>").end().filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); obj.removeData("jstree_is_loading"); } + this.clean_node(obj); + if(s_call) { s_call.call(this); } + } + else { + if(obj && obj !== -1) { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree_is_loading"); + if(s.correct_state) { + this.correct_state(obj); + if(s_call) { s_call.call(this); } + } + } + else { + if(s.correct_state) { + this.get_container().children("ul").empty(); + if(s_call) { s_call.call(this); } + } + } + } + }; + s.ajax.context = this; + s.ajax.error = error_func; + s.ajax.success = success_func; + if(!s.ajax.dataType) { s.ajax.dataType = "html"; } + if($.isFunction(s.ajax.url)) { s.ajax.url = s.ajax.url.call(this, obj); } + if($.isFunction(s.ajax.data)) { s.ajax.data = s.ajax.data.call(this, obj); } + $.ajax(s.ajax); + break; + } + } + } + }); + // include the HTML data plugin by default + $.jstree.defaults.plugins.push("html_data"); +})(jQuery); +//*/ + +/* + * jsTree themeroller plugin + * Adds support for jQuery UI themes. Include this at the end of your plugins list, also make sure "themes" is not included. + */ +(function ($) { + $.jstree.plugin("themeroller", { + __init : function () { + var s = this._get_settings().themeroller; + this.get_container() + .addClass("ui-widget-content") + .addClass("jstree-themeroller") + .delegate("a","mouseenter.jstree", function (e) { + if(!$(e.currentTarget).hasClass("jstree-loading")) { + $(this).addClass(s.item_h); + } + }) + .delegate("a","mouseleave.jstree", function () { + $(this).removeClass(s.item_h); + }) + .bind("init.jstree", $.proxy(function (e, data) { + data.inst.get_container().find("> ul > li > .jstree-loading > ins").addClass("ui-icon-refresh"); + this._themeroller(data.inst.get_container().find("> ul > li")); + }, this)) + .bind("open_node.jstree create_node.jstree", $.proxy(function (e, data) { + this._themeroller(data.rslt.obj); + }, this)) + .bind("loaded.jstree refresh.jstree", $.proxy(function (e) { + this._themeroller(); + }, this)) + .bind("close_node.jstree", $.proxy(function (e, data) { + this._themeroller(data.rslt.obj); + }, this)) + .bind("delete_node.jstree", $.proxy(function (e, data) { + this._themeroller(data.rslt.parent); + }, this)) + .bind("correct_state.jstree", $.proxy(function (e, data) { + data.rslt.obj + .children("ins.jstree-icon").removeClass(s.opened + " " + s.closed + " ui-icon").end() + .find("> a > ins.ui-icon") + .filter(function() { + return this.className.toString() + .replace(s.item_clsd,"").replace(s.item_open,"").replace(s.item_leaf,"") + .indexOf("ui-icon-") === -1; + }).removeClass(s.item_open + " " + s.item_clsd).addClass(s.item_leaf || "jstree-no-icon"); + }, this)) + .bind("select_node.jstree", $.proxy(function (e, data) { + data.rslt.obj.children("a").addClass(s.item_a); + }, this)) + .bind("deselect_node.jstree deselect_all.jstree", $.proxy(function (e, data) { + this.get_container() + .find("a." + s.item_a).removeClass(s.item_a).end() + .find("a.jstree-clicked").addClass(s.item_a); + }, this)) + .bind("dehover_node.jstree", $.proxy(function (e, data) { + data.rslt.obj.children("a").removeClass(s.item_h); + }, this)) + .bind("hover_node.jstree", $.proxy(function (e, data) { + this.get_container() + .find("a." + s.item_h).not(data.rslt.obj).removeClass(s.item_h); + data.rslt.obj.children("a").addClass(s.item_h); + }, this)) + .bind("move_node.jstree", $.proxy(function (e, data) { + this._themeroller(data.rslt.o); + this._themeroller(data.rslt.op); + }, this)); + }, + __destroy : function () { + var s = this._get_settings().themeroller, + c = [ "ui-icon" ]; + $.each(s, function (i, v) { + v = v.split(" "); + if(v.length) { c = c.concat(v); } + }); + this.get_container() + .removeClass("ui-widget-content") + .find("." + c.join(", .")).removeClass(c.join(" ")); + }, + _fn : { + _themeroller : function (obj) { + var s = this._get_settings().themeroller; + obj = !obj || obj == -1 ? this.get_container_ul() : this._get_node(obj).parent(); + obj + .find("li.jstree-closed") + .children("ins.jstree-icon").removeClass(s.opened).addClass("ui-icon " + s.closed).end() + .children("a").addClass(s.item) + .children("ins.jstree-icon").addClass("ui-icon") + .filter(function() { + return this.className.toString() + .replace(s.item_clsd,"").replace(s.item_open,"").replace(s.item_leaf,"") + .indexOf("ui-icon-") === -1; + }).removeClass(s.item_leaf + " " + s.item_open).addClass(s.item_clsd || "jstree-no-icon") + .end() + .end() + .end() + .end() + .find("li.jstree-open") + .children("ins.jstree-icon").removeClass(s.closed).addClass("ui-icon " + s.opened).end() + .children("a").addClass(s.item) + .children("ins.jstree-icon").addClass("ui-icon") + .filter(function() { + return this.className.toString() + .replace(s.item_clsd,"").replace(s.item_open,"").replace(s.item_leaf,"") + .indexOf("ui-icon-") === -1; + }).removeClass(s.item_leaf + " " + s.item_clsd).addClass(s.item_open || "jstree-no-icon") + .end() + .end() + .end() + .end() + .find("li.jstree-leaf") + .children("ins.jstree-icon").removeClass(s.closed + " ui-icon " + s.opened).end() + .children("a").addClass(s.item) + .children("ins.jstree-icon").addClass("ui-icon") + .filter(function() { + return this.className.toString() + .replace(s.item_clsd,"").replace(s.item_open,"").replace(s.item_leaf,"") + .indexOf("ui-icon-") === -1; + }).removeClass(s.item_clsd + " " + s.item_open).addClass(s.item_leaf || "jstree-no-icon"); + } + }, + defaults : { + "opened" : "ui-icon-triangle-1-se", + "closed" : "ui-icon-triangle-1-e", + "item" : "ui-state-default", + "item_h" : "ui-state-hover", + "item_a" : "ui-state-active", + "item_open" : "ui-icon-folder-open", + "item_clsd" : "ui-icon-folder-collapsed", + "item_leaf" : "ui-icon-document" + } + }); + $(function() { + var css_string = '' + + '.jstree-themeroller .ui-icon { overflow:visible; } ' + + '.jstree-themeroller a { padding:0 2px; } ' + + '.jstree-themeroller .jstree-no-icon { display:none; }'; + $.vakata.css.add_sheet({ str : css_string, title : "jstree" }); + }); +})(jQuery); +//*/ + +/* + * jsTree unique plugin + * Forces different names amongst siblings (still a bit experimental) + * NOTE: does not check language versions (it will not be possible to have nodes with the same title, even in different languages) + */ +(function ($) { + $.jstree.plugin("unique", { + __init : function () { + this.get_container() + .bind("before.jstree", $.proxy(function (e, data) { + var nms = [], res = true, p, t; + if(data.func == "move_node") { + // obj, ref, position, is_copy, is_prepared, skip_check + if(data.args[4] === true) { + if(data.args[0].o && data.args[0].o.length) { + data.args[0].o.children("a").each(function () { nms.push($(this).text().replace(/^\s+/g,"")); }); + res = this._check_unique(nms, data.args[0].np.find("> ul > li").not(data.args[0].o), "move_node"); + } + } + } + if(data.func == "create_node") { + // obj, position, js, callback, is_loaded + if(data.args[4] || this._is_loaded(data.args[0])) { + p = this._get_node(data.args[0]); + if(data.args[1] && (data.args[1] === "before" || data.args[1] === "after")) { + p = this._get_parent(data.args[0]); + if(!p || p === -1) { p = this.get_container(); } + } + if(typeof data.args[2] === "string") { nms.push(data.args[2]); } + else if(!data.args[2] || !data.args[2].data) { nms.push(this._get_string("new_node")); } + else { nms.push(data.args[2].data); } + res = this._check_unique(nms, p.find("> ul > li"), "create_node"); + } + } + if(data.func == "rename_node") { + // obj, val + nms.push(data.args[1]); + t = this._get_node(data.args[0]); + p = this._get_parent(t); + if(!p || p === -1) { p = this.get_container(); } + res = this._check_unique(nms, p.find("> ul > li").not(t), "rename_node"); + } + if(!res) { + e.stopPropagation(); + return false; + } + }, this)); + }, + defaults : { + error_callback : $.noop + }, + _fn : { + _check_unique : function (nms, p, func) { + var cnms = []; + p.children("a").each(function () { cnms.push($(this).text().replace(/^\s+/g,"")); }); + if(!cnms.length || !nms.length) { return true; } + cnms = cnms.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(","); + if((cnms.length + nms.length) != cnms.concat(nms).sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(",").length) { + this._get_settings().unique.error_callback.call(null, nms, p, func); + return false; + } + return true; + }, + check_move : function () { + if(!this.__call_old()) { return false; } + var p = this._get_move(), nms = []; + if(p.o && p.o.length) { + p.o.children("a").each(function () { nms.push($(this).text().replace(/^\s+/g,"")); }); + return this._check_unique(nms, p.np.find("> ul > li").not(p.o), "check_move"); + } + return true; + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree wholerow plugin + * Makes select and hover work on the entire width of the node + * MAY BE HEAVY IN LARGE DOM + */ +(function ($) { + $.jstree.plugin("wholerow", { + __init : function () { + if(!this.data.ui) { throw "jsTree wholerow: jsTree UI plugin not included."; } + this.data.wholerow.html = false; + this.data.wholerow.to = false; + this.get_container() + .bind("init.jstree", $.proxy(function (e, data) { + this._get_settings().core.animation = 0; + }, this)) + .bind("open_node.jstree create_node.jstree clean_node.jstree loaded.jstree", $.proxy(function (e, data) { + this._prepare_wholerow_span( data && data.rslt && data.rslt.obj ? data.rslt.obj : -1 ); + }, this)) + .bind("search.jstree clear_search.jstree reopen.jstree after_open.jstree after_close.jstree create_node.jstree delete_node.jstree clean_node.jstree", $.proxy(function (e, data) { + if(this.data.to) { clearTimeout(this.data.to); } + this.data.to = setTimeout( (function (t, o) { return function() { t._prepare_wholerow_ul(o); }; })(this, data && data.rslt && data.rslt.obj ? data.rslt.obj : -1), 0); + }, this)) + .bind("deselect_all.jstree", $.proxy(function (e, data) { + this.get_container().find(" > .jstree-wholerow .jstree-clicked").removeClass("jstree-clicked " + (this.data.themeroller ? this._get_settings().themeroller.item_a : "" )); + }, this)) + .bind("select_node.jstree deselect_node.jstree ", $.proxy(function (e, data) { + data.rslt.obj.each(function () { + var ref = data.inst.get_container().find(" > .jstree-wholerow li:visible:eq(" + ( parseInt((($(this).offset().top - data.inst.get_container().offset().top + data.inst.get_container()[0].scrollTop) / data.inst.data.core.li_height),10)) + ")"); + // ref.children("a")[e.type === "select_node" ? "addClass" : "removeClass"]("jstree-clicked"); + ref.children("a").attr("class",data.rslt.obj.children("a").attr("class")); + }); + }, this)) + .bind("hover_node.jstree dehover_node.jstree", $.proxy(function (e, data) { + this.get_container().find(" > .jstree-wholerow .jstree-hovered").removeClass("jstree-hovered " + (this.data.themeroller ? this._get_settings().themeroller.item_h : "" )); + if(e.type === "hover_node") { + var ref = this.get_container().find(" > .jstree-wholerow li:visible:eq(" + ( parseInt(((data.rslt.obj.offset().top - this.get_container().offset().top + this.get_container()[0].scrollTop) / this.data.core.li_height),10)) + ")"); + // ref.children("a").addClass("jstree-hovered"); + ref.children("a").attr("class",data.rslt.obj.children(".jstree-hovered").attr("class")); + } + }, this)) + .delegate(".jstree-wholerow-span, ins.jstree-icon, li", "click.jstree", function (e) { + var n = $(e.currentTarget); + if(e.target.tagName === "A" || (e.target.tagName === "INS" && n.closest("li").is(".jstree-open, .jstree-closed"))) { return; } + n.closest("li").children("a:visible:eq(0)").click(); + e.stopImmediatePropagation(); + }) + .delegate("li", "mouseover.jstree", $.proxy(function (e) { + e.stopImmediatePropagation(); + if($(e.currentTarget).children(".jstree-hovered, .jstree-clicked").length) { return false; } + this.hover_node(e.currentTarget); + return false; + }, this)) + .delegate("li", "mouseleave.jstree", $.proxy(function (e) { + if($(e.currentTarget).children("a").hasClass("jstree-hovered").length) { return; } + this.dehover_node(e.currentTarget); + }, this)); + if(is_ie7 || is_ie6) { + $.vakata.css.add_sheet({ str : ".jstree-" + this.get_index() + " { position:relative; } ", title : "jstree" }); + } + }, + defaults : { + }, + __destroy : function () { + this.get_container().children(".jstree-wholerow").remove(); + this.get_container().find(".jstree-wholerow-span").remove(); + }, + _fn : { + _prepare_wholerow_span : function (obj) { + obj = !obj || obj == -1 ? this.get_container().find("> ul > li") : this._get_node(obj); + if(obj === false) { return; } // added for removing root nodes + obj.each(function () { + $(this).find("li").andSelf().each(function () { + var $t = $(this); + if($t.children(".jstree-wholerow-span").length) { return true; } + $t.prepend("<span class='jstree-wholerow-span' style='width:" + ($t.parentsUntil(".jstree","li").length * 18) + "px;'> </span>"); + }); + }); + }, + _prepare_wholerow_ul : function () { + var o = this.get_container().children("ul").eq(0), h = o.html(); + o.addClass("jstree-wholerow-real"); + if(this.data.wholerow.last_html !== h) { + this.data.wholerow.last_html = h; + this.get_container().children(".jstree-wholerow").remove(); + this.get_container().append( + o.clone().removeClass("jstree-wholerow-real") + .wrapAll("<div class='jstree-wholerow' />").parent() + .width(o.parent()[0].scrollWidth) + .css("top", (o.height() + ( is_ie7 ? 5 : 0)) * -1 ) + .find("li[id]").each(function () { this.removeAttribute("id"); }).end() + ); + } + } + } + }); + $(function() { + var css_string = '' + + '.jstree .jstree-wholerow-real { position:relative; z-index:1; } ' + + '.jstree .jstree-wholerow-real li { cursor:pointer; } ' + + '.jstree .jstree-wholerow-real a { border-left-color:transparent !important; border-right-color:transparent !important; } ' + + '.jstree .jstree-wholerow { position:relative; z-index:0; height:0; } ' + + '.jstree .jstree-wholerow ul, .jstree .jstree-wholerow li { width:100%; } ' + + '.jstree .jstree-wholerow, .jstree .jstree-wholerow ul, .jstree .jstree-wholerow li, .jstree .jstree-wholerow a { margin:0 !important; padding:0 !important; } ' + + '.jstree .jstree-wholerow, .jstree .jstree-wholerow ul, .jstree .jstree-wholerow li { background:transparent !important; }' + + '.jstree .jstree-wholerow ins, .jstree .jstree-wholerow span, .jstree .jstree-wholerow input { display:none !important; }' + + '.jstree .jstree-wholerow a, .jstree .jstree-wholerow a:hover { text-indent:-9999px; !important; width:100%; padding:0 !important; border-right-width:0px !important; border-left-width:0px !important; } ' + + '.jstree .jstree-wholerow-span { position:absolute; left:0; margin:0px; padding:0; height:18px; border-width:0; padding:0; z-index:0; }'; + if(is_ff2) { + css_string += '' + + '.jstree .jstree-wholerow a { display:block; height:18px; margin:0; padding:0; border:0; } ' + + '.jstree .jstree-wholerow-real a { border-color:transparent !important; } '; + } + if(is_ie7 || is_ie6) { + css_string += '' + + '.jstree .jstree-wholerow, .jstree .jstree-wholerow li, .jstree .jstree-wholerow ul, .jstree .jstree-wholerow a { margin:0; padding:0; line-height:18px; } ' + + '.jstree .jstree-wholerow a { display:block; height:18px; line-height:18px; overflow:hidden; } '; + } + $.vakata.css.add_sheet({ str : css_string, title : "jstree" }); + }); +})(jQuery); +//*/ + +/* +* jsTree model plugin +* This plugin gets jstree to use a class model to retrieve data, creating great dynamism +*/ +(function ($) { + var nodeInterface = ["getChildren","getChildrenCount","getAttr","getName","getProps"], + validateInterface = function(obj, inter) { + var valid = true; + obj = obj || {}; + inter = [].concat(inter); + $.each(inter, function (i, v) { + if(!$.isFunction(obj[v])) { valid = false; return false; } + }); + return valid; + }; + $.jstree.plugin("model", { + __init : function () { + if(!this.data.json_data) { throw "jsTree model: jsTree json_data plugin not included."; } + this._get_settings().json_data.data = function (n, b) { + var obj = (n == -1) ? this._get_settings().model.object : n.data("jstree_model"); + if(!validateInterface(obj, nodeInterface)) { return b.call(null, false); } + if(this._get_settings().model.async) { + obj.getChildren($.proxy(function (data) { + this.model_done(data, b); + }, this)); + } + else { + this.model_done(obj.getChildren(), b); + } + }; + }, + defaults : { + object : false, + id_prefix : false, + async : false + }, + _fn : { + model_done : function (data, callback) { + var ret = [], + s = this._get_settings(), + _this = this; + + if(!$.isArray(data)) { data = [data]; } + $.each(data, function (i, nd) { + var r = nd.getProps() || {}; + r.attr = nd.getAttr() || {}; + if(nd.getChildrenCount()) { r.state = "closed"; } + r.data = nd.getName(); + if(!$.isArray(r.data)) { r.data = [r.data]; } + if(_this.data.types && $.isFunction(nd.getType)) { + r.attr[s.types.type_attr] = nd.getType(); + } + if(r.attr.id && s.model.id_prefix) { r.attr.id = s.model.id_prefix + r.attr.id; } + if(!r.metadata) { r.metadata = { }; } + r.metadata.jstree_model = nd; + ret.push(r); + }); + callback.call(null, ret); + } + } + }); +})(jQuery); +//*/ + +})(); diff --git a/themes/bootstrap/js/jsTree/themes/apple/bg.jpg b/themes/bootstrap/js/jsTree/themes/apple/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3aad05d8fadd75f8d9e02866f695b486f0b46343 GIT binary patch literal 331 zcmex=<NpH&0WUXCHwH!~28I+MWcdGvLC~c%IlGd9k%5JQfx!kS^p1hgF(p4Kl_BK- zP=xXSZH5*GHWn5ZRu(o^RyIyHAm-*^W8>iF;o{=v;^GnD0RsUZK7IjyJ|1CV5fNcw z8EI*08F@HhWM^mR<>8eO5Ri}(6%>_%OAyQWe}F-dgF%IXk(p7Dfk}{&S&;Gn5r#;h zvzdX8L;}n#9E^<UqRfm;ECP%SOsHxZ7X~ql2m)0zBIyVESWxKyEe0NDpn5@OK?Zw< XOYd45;+|jbJ!N~<NG0n8|Nol+zjH3u literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/apple/d.png b/themes/bootstrap/js/jsTree/themes/apple/d.png new file mode 100644 index 0000000000000000000000000000000000000000..2463ba6df91e1668434abdd623bbca914a4fcbe6 GIT binary patch literal 7765 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 b_WuI_=b@>S5J7qt00000NkvXXu0mjf{8{<q literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/apple/dot_for_ie.gif b/themes/bootstrap/js/jsTree/themes/apple/dot_for_ie.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0cc5fda7cfb9539720de442a3caca9c9a3fc4cb GIT binary patch literal 43 vcmZ?wbhEHbWMW`qXkcKFla>7c|G(l-7DfgJMg|=QAOOiQFfqBrF<1it%E1S( literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/apple/style.css b/themes/bootstrap/js/jsTree/themes/apple/style.css new file mode 100644 index 00000000000..d0c4163cef0 --- /dev/null +++ b/themes/bootstrap/js/jsTree/themes/apple/style.css @@ -0,0 +1,61 @@ +/* + * jsTree apple theme 1.0 + * Supported features: dots/no-dots, icons/no-icons, focused, loading + * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search + */ + +.jstree-apple > ul { background:url("bg.jpg") left top repeat; } +.jstree-apple li, +.jstree-apple ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; } +.jstree-apple li { background-position:-90px 0; background-repeat:repeat-y; } +.jstree-apple li.jstree-last { background:transparent; } +.jstree-apple .jstree-open > ins { background-position:-72px 0; } +.jstree-apple .jstree-closed > ins { background-position:-54px 0; } +.jstree-apple .jstree-leaf > ins { background-position:-36px 0; } + +.jstree-apple a { border-radius:4px; -moz-border-radius:4px; -webkit-border-radius:4px; text-shadow:1px 1px 1px white; } +.jstree-apple .jstree-hovered { background:#e7f4f9; border:1px solid #d8f0fa; padding:0 3px 0 1px; text-shadow:1px 1px 1px silver; } +.jstree-apple .jstree-clicked { background:#beebff; border:1px solid #99defd; padding:0 3px 0 1px; } +.jstree-apple a .jstree-icon { background-position:-56px -20px; } +.jstree-apple a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; } + +.jstree-apple.jstree-focused { background:white; } + +.jstree-apple .jstree-no-dots li, +.jstree-apple .jstree-no-dots .jstree-leaf > ins { background:transparent; } +.jstree-apple .jstree-no-dots .jstree-open > ins { background-position:-18px 0; } +.jstree-apple .jstree-no-dots .jstree-closed > ins { background-position:0 0; } + +.jstree-apple .jstree-no-icons a .jstree-icon { display:none; } + +.jstree-apple .jstree-search { font-style:italic; } + +.jstree-apple .jstree-no-icons .jstree-checkbox { display:inline-block; } +.jstree-apple .jstree-no-checkboxes .jstree-checkbox { display:none !important; } +.jstree-apple .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; } +.jstree-apple .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; } +.jstree-apple .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; } +.jstree-apple .jstree-checked > a > .checkbox:hover { background-position:-38px -37px; } +.jstree-apple .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; } +.jstree-apple .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; } + +#vakata-dragged.jstree-apple ins { background:transparent !important; } +#vakata-dragged.jstree-apple .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; } +#vakata-dragged.jstree-apple .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; } +#jstree-marker.jstree-apple { background:url("d.png") -41px -57px no-repeat !important; text-indent:-100px; } + +.jstree-apple a.jstree-search { color:aqua; } +.jstree-apple .jstree-locked a { color:silver; cursor:default; } + +#vakata-contextmenu.jstree-apple-context, +#vakata-contextmenu.jstree-apple-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; } +#vakata-contextmenu.jstree-apple-context li { } +#vakata-contextmenu.jstree-apple-context a { color:black; } +#vakata-contextmenu.jstree-apple-context a:hover, +#vakata-contextmenu.jstree-apple-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; } +#vakata-contextmenu.jstree-apple-context li.jstree-contextmenu-disabled a, +#vakata-contextmenu.jstree-apple-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 4px; } +#vakata-contextmenu.jstree-apple-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; } +#vakata-contextmenu.jstree-apple-context li ul { margin-left:-4px; } + +/* TODO: IE6 support - the `>` selectors */ \ No newline at end of file diff --git a/themes/bootstrap/js/jsTree/themes/apple/throbber.gif b/themes/bootstrap/js/jsTree/themes/apple/throbber.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b33f7e54f4e55b6b8774d86d96895db9af044b4 GIT binary patch literal 1849 zcma*odr(tX9tZI2z31lM+(&YVk%mZ}5P~KlG2s=WSbGzm0!x7^P##Mnh7t-jP!X0Q zk_SQ}Po-L1tlDK;6l?(>v)e5ZBQx4|Y-Q?nr@Px3?9h(3ZWr3^tj=`TP57gKr87N$ zp2wWee1GRRCwo_xahnw)5cxNPJbCg2L6DV|6`#+yw6v6!mDS$f9-JvFD^n;GQ&UrZ zzh5jCkByB101O60U0q#p_1BM>Cv-vP?&s4@g_((4_1L=L$(a91)0=J91Gas#R{McE znYG^9*0A5YZ>#;~+Wkn(W5B0^yELIYLP!K}mB~<)AM@1&nqekynuaEGqP<JE0#l+( z*R9joTN$nZ{F;;f_Nv(QpzP65;W)SYC;1+?>rzoH|KodRXJy)%+w_fu3nE5>@Bd_b zqC$EQ;{c`T&?EsNO|igL9gC7Ygxv?aQUEXMq?~>wg{EyW;VcJ37CUF#HjrT=KQO_* zS>M9yydXk18D(+QDJ1>r);Lav_uYKp$T?4vr{Q$lTo&pKv^?(>L-)G2*lwH!Ah7k? z7oH<8h-(KTKt5V6$8gF)C7Io&P5=SjTh)=zV=E2EUhQZ<Wjvi)ks6lL7NUI41Suec z%#@RZvp$b|KCxLd`PA8_!Ub^;+J%TE^_K&d6(i&k---epB#nC`b3_`MdhtuWMEe%I z(wJ2$`EGgJTz=trW>P##L8S{d%UK>>+y82>+FV+#^BzW7u3F)Bb>=lYQ%%j`F>ASe zo*cw@V#u6T`A2He;70mR(V&iV&-7{qP~=SRf&jm9-T{*ZeZ}$rd0#6c&fLG^xJcf5 z+p<`wJYgW+_s*V{uI$nMB;%8`S_3>PfGOj3Rq}@Cx^+j?rk92fANSFDBYnOqQ>Vdj z)(|$AhP4t&Lb=Gvo2#3Gl%9<=Gv`Mz?Po@P4iLF!x}GUWJICDlFk-hS^Whyh7x~VH z@0vD1>HYD4&e+~yzS*-sFR{9`{QEEZO1zg7>R&7cHts-6j!xHVdA8eI+ZlVzd%`es zJT@$#GX(gvCJ1oJN%yLBK}{V=V;seo;!w|Yte!W1%5qLNFWqvZW>h&IiH+oPT=b@E zPhGzv5=(Un*X>v`><w7vN-j#h05gB-F9AZf<&Z~SLlC&Nz^-G6DuPj|`n3d!<l7n! z^9j1qeh2{s+i0tZ4@>%8h_nj^NdY<en;#4d>cE6NHS_ifkCV$*D)Tqrbu`s;<=t<4 zAHNqNV?6(g<1PY-w@#I-WYFViz?9TrkMr)u0g`O`u|>T;k|2sV*YF^pun<C(O34ry z@yg-q+#%4rv$|41Y!PHPrjmV%@S3%TUelmz%~6?hLG4%mWKO9NB}mrI%KlhB`{^!g zT?{Y#<ON%sq<!{buD;iH%`hL}N;>vT;$SuTy{j3Gv)yqD!R_CF>yR)MzmmYS5v+~R zXAdD<Jm>%ng9?df;wd8GxR#%3O+gz};Vo;)sK%Bj-q>Oq%R7JU-KD?vYu>#2UjaDo z&8$>5xW~?KPD_#XFToU1hIb*VOMidUr6iYiO0N|i-7s`T8!cFT`rN!^1Pt78J93i6 z5HI1wIM$94m{3SLDvISDe6$ZG1;eq_D9RTaaC>=cO{@Bs>$IlP<c+8wUtK_tPUz3j z)>CPJJ$h$)-3vzNUQ6<Wm&Z5JfeG_o#I^S?ZP9*QGjsiJM3jH{?94}z{@d%97nOVw zacge+X&InNUL3U(BUlor87ff?2qEf2c|yCI=Id~LI~<KyVA#R%nwHS3S<^IBTu|Jj zW^-Xv#UBDqOwy>OsN#_zWxey!_9%hxwH2_dEJi=yY|1c7nDm2_Lm!Cof8-R_+9UkS zcBE(o47yE)oMR(Q=dp1a2wTX5Kv<M)VDKP@wb$5DNEX!VTUn1Pd`taYrL9bpe}d9v zqx3tu5NTGv8=X63WXPWMm1T8=ujh#QvSw5|(EZJ3$quU9*?0NxQKGsTrnFNF-ygOt zYWPggi66%$nuj|v6!Ow2)>vGyLqlWTa7V&!A*|w|)ax~1_~aJ0=_Lilg*0iQk7#ZD EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/classic/d.gif b/themes/bootstrap/js/jsTree/themes/classic/d.gif new file mode 100644 index 0000000000000000000000000000000000000000..6eb0004ce3544f9973ddbd5a2c450fc0e1a354b1 GIT binary patch literal 3003 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 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/classic/d.png b/themes/bootstrap/js/jsTree/themes/classic/d.png new file mode 100644 index 0000000000000000000000000000000000000000..275daeca2d6ae2ba9cf59bd23a194d13a35a825d GIT binary patch literal 7535 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 FV1ky2eG>ox literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/classic/dot_for_ie.gif b/themes/bootstrap/js/jsTree/themes/classic/dot_for_ie.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0cc5fda7cfb9539720de442a3caca9c9a3fc4cb GIT binary patch literal 43 vcmZ?wbhEHbWMW`qXkcKFla>7c|G(l-7DfgJMg|=QAOOiQFfqBrF<1it%E1S( literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/classic/style.css b/themes/bootstrap/js/jsTree/themes/classic/style.css new file mode 100644 index 00000000000..0351b4cef5d --- /dev/null +++ b/themes/bootstrap/js/jsTree/themes/classic/style.css @@ -0,0 +1,77 @@ +/* + * jsTree classic theme 1.0 + * Supported features: dots/no-dots, icons/no-icons, focused, loading + * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search + */ + +.jstree-classic li, +.jstree-classic ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; } +.jstree-classic li { background-position:-90px 0; background-repeat:repeat-y; } +.jstree-classic li.jstree-last { background:transparent; } +.jstree-classic .jstree-open > ins { background-position:-72px 0; } +.jstree-classic .jstree-closed > ins { background-position:-54px 0; } +.jstree-classic .jstree-leaf > ins { background-position:-36px 0; } + +.jstree-classic .jstree-hovered { background:#e7f4f9; border:1px solid #e7f4f9; padding:0 2px 0 1px; } +.jstree-classic .jstree-clicked { background:navy; border:1px solid navy; padding:0 2px 0 1px; color:white; } +.jstree-classic a .jstree-icon { background-position:-56px -19px; } +.jstree-classic .jstree-open > a .jstree-icon { background-position:-56px -36px; } +.jstree-classic a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; } + +.jstree-classic.jstree-focused { background:white; } + +.jstree-classic .jstree-no-dots li, +.jstree-classic .jstree-no-dots .jstree-leaf > ins { background:transparent; } +.jstree-classic .jstree-no-dots .jstree-open > ins { background-position:-18px 0; } +.jstree-classic .jstree-no-dots .jstree-closed > ins { background-position:0 0; } + +.jstree-classic .jstree-no-icons a .jstree-icon { display:none; } + +.jstree-classic .jstree-search { font-style:italic; } + +.jstree-classic .jstree-no-icons .jstree-checkbox { display:inline-block; } +.jstree-classic .jstree-no-checkboxes .jstree-checkbox { display:none !important; } +.jstree-classic .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; } +.jstree-classic .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; } +.jstree-classic .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; } +.jstree-classic .jstree-checked > a > .jstree-checkbox:hover { background-position:-38px -37px; } +.jstree-classic .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; } +.jstree-classic .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; } + +#vakata-dragged.jstree-classic ins { background:transparent !important; } +#vakata-dragged.jstree-classic .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; } +#vakata-dragged.jstree-classic .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; } +#jstree-marker.jstree-classic { background:url("d.png") -41px -57px no-repeat !important; text-indent:-100px; } + +.jstree-classic a.jstree-search { color:aqua; } +.jstree-classic .jstree-locked a { color:silver; cursor:default; } + +#vakata-contextmenu.jstree-classic-context, +#vakata-contextmenu.jstree-classic-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; } +#vakata-contextmenu.jstree-classic-context li { } +#vakata-contextmenu.jstree-classic-context a { color:black; } +#vakata-contextmenu.jstree-classic-context a:hover, +#vakata-contextmenu.jstree-classic-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; } +#vakata-contextmenu.jstree-classic-context li.jstree-contextmenu-disabled a, +#vakata-contextmenu.jstree-classic-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 4px; } +#vakata-contextmenu.jstree-classic-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; } +#vakata-contextmenu.jstree-classic-context li ul { margin-left:-4px; } + +/* IE6 BEGIN */ +.jstree-classic li, +.jstree-classic ins, +#vakata-dragged.jstree-classic .jstree-invalid, +#vakata-dragged.jstree-classic .jstree-ok, +#jstree-marker.jstree-classic { _background-image:url("d.gif"); } +.jstree-classic .jstree-open ins { _background-position:-72px 0; } +.jstree-classic .jstree-closed ins { _background-position:-54px 0; } +.jstree-classic .jstree-leaf ins { _background-position:-36px 0; } +.jstree-classic .jstree-open a ins.jstree-icon { _background-position:-56px -36px; } +.jstree-classic .jstree-closed a ins.jstree-icon { _background-position:-56px -19px; } +.jstree-classic .jstree-leaf a ins.jstree-icon { _background-position:-56px -19px; } +#vakata-contextmenu.jstree-classic-context ins { _display:none; } +#vakata-contextmenu.jstree-classic-context li { _zoom:1; } +.jstree-classic .jstree-undetermined a .jstree-checkbox { _background-position:-20px -19px; } +.jstree-classic .jstree-checked a .jstree-checkbox { _background-position:-38px -19px; } +.jstree-classic .jstree-unchecked a .jstree-checkbox { _background-position:-2px -19px; } +/* IE6 END */ \ No newline at end of file diff --git a/themes/bootstrap/js/jsTree/themes/classic/throbber.gif b/themes/bootstrap/js/jsTree/themes/classic/throbber.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b33f7e54f4e55b6b8774d86d96895db9af044b4 GIT binary patch literal 1849 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 EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/default-rtl/d.gif b/themes/bootstrap/js/jsTree/themes/default-rtl/d.gif new file mode 100644 index 0000000000000000000000000000000000000000..d85aba049b5c45649fcbb889a3765c39f3a3678a GIT binary patch literal 2872 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 Wyk?VI+|VR%xy)xy^O_GNAOJf<b&a<G literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/default-rtl/d.png b/themes/bootstrap/js/jsTree/themes/default-rtl/d.png new file mode 100644 index 0000000000000000000000000000000000000000..5179cf64e4adc0a09bf0d0e321cf5665d722f5a3 GIT binary patch literal 7459 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 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/default-rtl/dots.gif b/themes/bootstrap/js/jsTree/themes/default-rtl/dots.gif new file mode 100644 index 0000000000000000000000000000000000000000..00433648c0769d3b473e6c972e6314f16e5a29f6 GIT binary patch literal 132 zcmZ?wbhEHb6k^C>XkcKFm6iVg|G(l-7DfgJMg|=QAOOiQFh%$DujG2o@7!&2t}F81 zi%)NALp7pQE0R)nt;u<`&t1p+tMlofyEoVVvS#&m4*XdBM8(|u%G$3jZi&HJrDaFc ka&IroI(@dv{ej`poLAGXzuGqAZ(00B0V}?F8Vn590H|{~1^@s6 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/default-rtl/style.css b/themes/bootstrap/js/jsTree/themes/default-rtl/style.css new file mode 100644 index 00000000000..1343cf343e0 --- /dev/null +++ b/themes/bootstrap/js/jsTree/themes/default-rtl/style.css @@ -0,0 +1,84 @@ +/* + * jsTree default-rtl theme 1.0 + * Supported features: dots/no-dots, icons/no-icons, focused, loading + * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search + */ + +.jstree-default-rtl li, +.jstree-default-rtl ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; } +.jstree-default-rtl li { background-position:-90px 0; background-repeat:repeat-y; } +.jstree-default-rtl li.jstree-last { background:transparent; } +.jstree-default-rtl .jstree-open > ins { background-position:-72px 0; } +.jstree-default-rtl .jstree-closed > ins { background-position:-54px 0; } +.jstree-default-rtl .jstree-leaf > ins { background-position:-36px 0; } + +.jstree-default-rtl .jstree-hovered { background:#e7f4f9; border:1px solid #d8f0fa; padding:0 2px 0 1px; } +.jstree-default-rtl .jstree-clicked { background:#beebff; border:1px solid #99defd; padding:0 2px 0 1px; } +.jstree-default-rtl a .jstree-icon { background-position:-56px -19px; } +.jstree-default-rtl a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; } + +.jstree-default-rtl.jstree-focused { background:#ffffee; } + +.jstree-default-rtl .jstree-no-dots li, +.jstree-default-rtl .jstree-no-dots .jstree-leaf > ins { background:transparent; } +.jstree-default-rtl .jstree-no-dots .jstree-open > ins { background-position:-18px 0; } +.jstree-default-rtl .jstree-no-dots .jstree-closed > ins { background-position:0 0; } + +.jstree-default-rtl .jstree-no-icons a .jstree-icon { display:none; } + +.jstree-default-rtl .jstree-search { font-style:italic; } + +.jstree-default-rtl .jstree-no-icons .jstree-checkbox { display:inline-block; } +.jstree-default-rtl .jstree-no-checkboxes .jstree-checkbox { display:none !important; } +.jstree-default-rtl .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; } +.jstree-default-rtl .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; } +.jstree-default-rtl .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; } +.jstree-default-rtl .jstree-checked > a > .jstree-checkbox:hover { background-position:-38px -37px; } +.jstree-default-rtl .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; } +.jstree-default-rtl .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; } + +#vakata-dragged.jstree-default-rtl ins { background:transparent !important; } +#vakata-dragged.jstree-default-rtl .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; } +#vakata-dragged.jstree-default-rtl .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; } +#jstree-marker.jstree-default-rtl { background:url("d.png") -41px -57px no-repeat !important; text-indent:-100px; } + +.jstree-default-rtl a.jstree-search { color:aqua; } +.jstree-default-rtl .jstree-locked a { color:silver; cursor:default; } + +#vakata-contextmenu.jstree-default-rtl-context, +#vakata-contextmenu.jstree-default-rtl-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; } +#vakata-contextmenu.jstree-default-rtl-context li { } +#vakata-contextmenu.jstree-default-rtl-context a { color:black; } +#vakata-contextmenu.jstree-default-rtl-context a:hover, +#vakata-contextmenu.jstree-default-rtl-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; } +#vakata-contextmenu.jstree-default-rtl-context li.jstree-contextmenu-disabled a, +#vakata-contextmenu.jstree-default-rtl-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 4px; } +#vakata-contextmenu.jstree-default-rtl-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; } +#vakata-contextmenu.jstree-default-rtl-context li ul { margin-left:-4px; } + +/* IE6 BEGIN */ +.jstree-default-rtl li, +.jstree-default-rtl ins, +#vakata-dragged.jstree-default-rtl .jstree-invalid, +#vakata-dragged.jstree-default-rtl .jstree-ok, +#jstree-marker.jstree-default-rtl { _background-image:url("d.gif"); } +.jstree-default-rtl .jstree-open ins { _background-position:-72px 0; } +.jstree-default-rtl .jstree-closed ins { _background-position:-54px 0; } +.jstree-default-rtl .jstree-leaf ins { _background-position:-36px 0; } +.jstree-default-rtl a ins.jstree-icon { _background-position:-56px -19px; } +#vakata-contextmenu.jstree-default-rtl-context ins { _display:none; } +#vakata-contextmenu.jstree-default-rtl-context li { _zoom:1; } +.jstree-default-rtl .jstree-undetermined a .jstree-checkbox { _background-position:-18px -19px; } +.jstree-default-rtl .jstree-checked a .jstree-checkbox { _background-position:-36px -19px; } +.jstree-default-rtl .jstree-unchecked a .jstree-checkbox { _background-position:0px -19px; } +/* IE6 END */ + +/* RTL part */ +.jstree-default-rtl .jstree-hovered, .jstree-default-rtl .jstree-clicked { padding:0 1px 0 2px; } +.jstree-default-rtl li { background-image:url("dots.gif"); background-position: 100% 0px; } +.jstree-default-rtl .jstree-checked > a > .jstree-checkbox { background-position:-36px -19px; margin-left:2px; } +.jstree-default-rtl .jstree-unchecked > a > .jstree-checkbox { background-position:0px -19px; margin-left:2px; } +.jstree-default-rtl .jstree-undetermined > a > .jstree-checkbox { background-position:-18px -19px; margin-left:2px; } +.jstree-default-rtl .jstree-checked > a > .jstree-checkbox:hover { background-position:-36px -37px; } +.jstree-default-rtl .jstree-unchecked > a > .jstree-checkbox:hover { background-position:0px -37px; } +.jstree-default-rtl .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-18px -37px; } \ No newline at end of file diff --git a/themes/bootstrap/js/jsTree/themes/default-rtl/throbber.gif b/themes/bootstrap/js/jsTree/themes/default-rtl/throbber.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b33f7e54f4e55b6b8774d86d96895db9af044b4 GIT binary patch literal 1849 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 EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/default/d.gif b/themes/bootstrap/js/jsTree/themes/default/d.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e958d38716d93d4050a993398dec77490f836c7 GIT binary patch literal 2944 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 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/default/d.png b/themes/bootstrap/js/jsTree/themes/default/d.png new file mode 100644 index 0000000000000000000000000000000000000000..8540175a04b0cd303e3966d1727f30ee9b8a7254 GIT binary patch literal 7635 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 B#iIZK literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/default/style.css b/themes/bootstrap/js/jsTree/themes/default/style.css new file mode 100644 index 00000000000..7ef6a043080 --- /dev/null +++ b/themes/bootstrap/js/jsTree/themes/default/style.css @@ -0,0 +1,74 @@ +/* + * jsTree default theme 1.0 + * Supported features: dots/no-dots, icons/no-icons, focused, loading + * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search + */ + +.jstree-default li, +.jstree-default ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; } +.jstree-default li { background-position:-90px 0; background-repeat:repeat-y; } +.jstree-default li.jstree-last { background:transparent; } +.jstree-default .jstree-open > ins { background-position:-72px 0; } +.jstree-default .jstree-closed > ins { background-position:-54px 0; } +.jstree-default .jstree-leaf > ins { background-position:-36px 0; } + +.jstree-default .jstree-hovered { background:#e7f4f9; border:1px solid #d8f0fa; padding:0 2px 0 1px; } +.jstree-default .jstree-clicked { background:#beebff; border:1px solid #99defd; padding:0 2px 0 1px; } +.jstree-default a .jstree-icon { background-position:-56px -19px; } +.jstree-default a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; } + +.jstree-default.jstree-focused { background:#ffffee; } + +.jstree-default .jstree-no-dots li, +.jstree-default .jstree-no-dots .jstree-leaf > ins { background:transparent; } +.jstree-default .jstree-no-dots .jstree-open > ins { background-position:-18px 0; } +.jstree-default .jstree-no-dots .jstree-closed > ins { background-position:0 0; } + +.jstree-default .jstree-no-icons a .jstree-icon { display:none; } + +.jstree-default .jstree-search { font-style:italic; } + +.jstree-default .jstree-no-icons .jstree-checkbox { display:inline-block; } +.jstree-default .jstree-no-checkboxes .jstree-checkbox { display:none !important; } +.jstree-default .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; } +.jstree-default .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; } +.jstree-default .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; } +.jstree-default .jstree-checked > a > .jstree-checkbox:hover { background-position:-38px -37px; } +.jstree-default .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; } +.jstree-default .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; } + +#vakata-dragged.jstree-default ins { background:transparent !important; } +#vakata-dragged.jstree-default .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; } +#vakata-dragged.jstree-default .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; } +#jstree-marker.jstree-default { background:url("d.png") -41px -57px no-repeat !important; text-indent:-100px; } + +.jstree-default a.jstree-search { color:aqua; } +.jstree-default .jstree-locked a { color:silver; cursor:default; } + +#vakata-contextmenu.jstree-default-context, +#vakata-contextmenu.jstree-default-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; } +#vakata-contextmenu.jstree-default-context li { } +#vakata-contextmenu.jstree-default-context a { color:black; } +#vakata-contextmenu.jstree-default-context a:hover, +#vakata-contextmenu.jstree-default-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; } +#vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a, +#vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 4px; } +#vakata-contextmenu.jstree-default-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; } +#vakata-contextmenu.jstree-default-context li ul { margin-left:-4px; } + +/* IE6 BEGIN */ +.jstree-default li, +.jstree-default ins, +#vakata-dragged.jstree-default .jstree-invalid, +#vakata-dragged.jstree-default .jstree-ok, +#jstree-marker.jstree-default { _background-image:url("d.gif"); } +.jstree-default .jstree-open ins { _background-position:-72px 0; } +.jstree-default .jstree-closed ins { _background-position:-54px 0; } +.jstree-default .jstree-leaf ins { _background-position:-36px 0; } +.jstree-default a ins.jstree-icon { _background-position:-56px -19px; } +#vakata-contextmenu.jstree-default-context ins { _display:none; } +#vakata-contextmenu.jstree-default-context li { _zoom:1; } +.jstree-default .jstree-undetermined a .jstree-checkbox { _background-position:-20px -19px; } +.jstree-default .jstree-checked a .jstree-checkbox { _background-position:-38px -19px; } +.jstree-default .jstree-unchecked a .jstree-checkbox { _background-position:-2px -19px; } +/* IE6 END */ \ No newline at end of file diff --git a/themes/bootstrap/js/jsTree/themes/default/throbber.gif b/themes/bootstrap/js/jsTree/themes/default/throbber.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b33f7e54f4e55b6b8774d86d96895db9af044b4 GIT binary patch literal 1849 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 EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/vufind/d.gif b/themes/bootstrap/js/jsTree/themes/vufind/d.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e958d38716d93d4050a993398dec77490f836c7 GIT binary patch literal 2944 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 literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/vufind/d.png b/themes/bootstrap/js/jsTree/themes/vufind/d.png new file mode 100644 index 0000000000000000000000000000000000000000..e59444b954a4e8a9d6d5cf0ad76e552256a0dee4 GIT binary patch literal 7426 zcmV+d9sS~oP)<h;3K|Lk000e1NJLTq003+N002k`1^@s66I&4N00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+<Lqi~Na&Km7Y-Iodc-oy)XH-+^7Crag z^g>IBfRsybQWXdwQbLP>6p<z>Aqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uh<iVD~V z<RPMtgQJLw%KPDaqifc@_vX$1wbwr9tn;0-&j-K=43<bUQ8j=JsX`tR;Dg7+#^K~H zK!FM*Z~zbpvt%K2{UZSY_<lS*D<Z%Lz5oGu(+dayz)hRLFdT>f59&ghTmgWD0l;*T zI7<kC6aYYajzXpYKt=(8otP$50H6c_V9R4-;{Z@C0AMG7=F<Rxo%or10RUT+Ar%3j zkpLhQWr#!oXgdI`&sK^>09Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-<?i z0%4j!F2Z@488U%158(66005wo6%pWr^Zj_v4zAA5HjcIqUoGmt2LB>rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_<lS*MWK+n+1cgf z<k(8YLR(?VSAG6x!e78w{cQPuJpA|d;J)G{fihizM+Erb!p!tcr5w+a34~(Y=8s4G zw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@r6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@u zU1J0GOD7Ombim^G008p4Z^6_k2m^p<gW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm z2mk;?pn)o|K^yeJ7%adB9Ki+L!3+FgHiSYX#KJ-lLJDMn9CBbOtb#%)hRv`YDqt_v zKpix|QD}yfa1JiQRk#j4a1Z)n2%f<xynzV>LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifq<Ex{*7`05XF7hP+2Hl!3BQJ=6@fL%FCo z8iYoo3(#bAF`ADSpqtQgv>H8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ<AYmRsNLWl*PS{AOARHt#5!wki2?K;t z!Y3k=s7tgax)J%r7-BLphge7~Bi0g+6E6^Zh(p9TBoc{3GAFr^0!gu?RMHaCM$&Fl zBk3%un>0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 z<uv66WtcKSRim0x-Ke2d5jBrmLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_ zbh;7Ul^#x)&{xvS=|||7=mYe33=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vF<Q0r40Q)j6=sE4X&sBct1q<&fbi3VB2Ov6t@q*0);U*o*SAPZv|vv@2aYYnT0 zb%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KOarm5cP6_8Ir<e17iry6O zDdH&`rZh~sF=bq9s+O0QSgS~@QL9Jmy*94xr=6y~MY~!1fet~(N+(<=M`w@D1)b+p z*;C!83a1uLJv#NSE~;y#8=<>IcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a<fJbF^|4I#xQ~n$Dc= zKYhjYmgz5NSkDm8*fZm{6U!;YX`NG>(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-k<Mujg;0Lz*3buG=3$G&ehepthlN*$KaOySSQ^nWmo<0M+(UEUMEXRQ zMBbZcF;6+KElM>iKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BK<z=<L*0kfKU@CX*zeqbYQT4(^U>T#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot<a{81DF0~rvGr5Xr~8u`lav1h z1DNytV>2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000s#Nkl<Zc-rioeRy0|oyR}t+<Rvx?=Q_uo2Kt*OA8cBL4{fh6txz`^#v@YzEHr$ z1u6OzpJm+@Q9&2b<teW2)*@OcAXT6OLW^3Z3swuXr8H?NfwXC+d1>C~<<7nLoc&`a zlSyWhCT*%D&3T^tOmgnIzd7f8&-eFw6QQ+ctc{!|N7{rZPp;IbvK%qSu#wfw)L&-K zoH=Op_U+pz`nxw=a{4=o2M^W_>6y{AE;GXy4Q2xdGvQ&8)3*&3tkJeEbFg1Ln2G+q zY}oOFHX7D7;+&2X1#6_Q%N#7FyZeT6A_r0p$9u9*gkhs$U1JOzVe1;Paaez!BQ-u7 z?09n^TA!$KJ{bnR`y}@FIhgqjw63AZ8BR?wY8f_K+X*r3-RANRcY8Ok>$ttd;|cnP zD|kGa?cKhv!Fq{fxx^9H#%$OKvteTl8)Mj58)Mj58)MjrXV}`cYqe!r7>3bnz(5SN zZJX<^yRMfjx_0ea?f3gJq=^us-{%DajfbbyfO4di{mw-Qfy4j-uIFTw^Y?12|MlB? z_UySFs;j52zK*ie3HW>gw!ipWo_S`|u+1qMhxz?}7A#mmNlD3|9t?-WY~H*%tv?V5 zaQWqzV_6na6~&N7#^*idk!58Qi`qQ()KmS+2?PR3a8jEgB}xf8W9{+zYd^nv@;Co5 zhRm2gl|OFX!t^QAxMAf@+;i`3bc7u8OD7L&9F_!3N=a^RE=nmJ$H6d6q!dUg5kg=H z17Qe+Au)u+G|jY41TaKg<jV)Q5;cO97F1&CYz!;_q9VS*oh=?YlyLflnMjciYPamJ zwk`l%-1s~U6Vo*CNk99V_w%N`9f0@cUV_%?^SSA!o5;({OUg4%lm9(q#m9jOeTD|F z-?RR=uInb*+}YX5nl)>B4O;P~8#1a4*Y#*^?_lc0aw6dfhw59HG-WDM$N1uxZ`BX} z&wq+x&vbNy<v0$W=k<VPn0V4dDv59f+BESzFSAh;f|%=YAi9G&a{~}F$TG_DiLCg2 z9U|;?P+pu*)q!2iaHnGknGrBknpCy!BSbT&=bnRMX*|!xz+_j`ZVt$;l$I0#@cX)l z&`xQ;3tczsicbLbU)uZV4jm0uR9$)IPgC!o{@CmP9E-*H`Rvcl2P&?qdTdjFvey6n zCux1Lm_uh*h#%koQyd5K3-WpRf&2K(vTMlp<qto@lB&w{l9yo^n5K#6xo8ZO(wL@! z_H;%y74MU1p=k)!k=1GdZxc|3_)Q-muw9!hQ2-pFwxbDMrXhnIrQprxx7gP47}<G( z*b%|JigOW$rn;$`UD4+-OO8_AR13i2#x5qQ!i<ZIMx*FRsAAfT8H*l>d>kSn;V6wt z@w{{-Bp#Ud@%hs##$WaJTW{@;Mxz66obmp2HSTS{9011wGvNyuhJo_b@aGb{H@}-< zsm_O#60LP|jIhKpJQ+b($fhyeLAH@Y7oFfFY^6620<g1TJFQ2v5HkdVbb0M|3qRX? z2Z5<Ue9F&Zbr9;ID0dv2kN%8$>#w*6<8!py$McEO8)*zSrpbA9+LFtGdO{uI$qPzu zxy03?aqrIkw$iu><z@;{p$<_t`|RaUUQn{?%-yejWqsx1bAgIA@YGOjnbL8<q)hA; zpihPkOI3?Xsf=EkloHQ#ky502lbPC)_C|d8F-=LfQIP1Z<F$r^>~495DfYz~S=!y2 zLXEW6?~KpIh|w6T$21Fg%iKz9I7G~aywD`RKI3*4&Rob7)la0!&~{{E{@n8~>e%(t z{*bF#drr}+rzU)Wm;x`cJ|zU#T=IeczPuufkgL(rkjS5V{_>7pFYO<y^Px2)%pgg` z2GNc?Tkm-uj^iMuOoF16O8zdTL>k610Sh}JTH5N#GIFt`fs`%SuEWu2BMqHR*p5QG zzJ8xC4wP`qS@-arEnntf>1zahu#;`z#5W}BLU!jwZa(8aE}C^Ap7t_^5UR6HuA5(U z^K+G#;3!R-qp&@VqcpaPkM~Qkz4*OipJe6IOMd*(@c}-)t?i~E1EzFuz=jZq9XG@J zIuzY1F$t>cf@Sru5`~~G6sFb<;x~H6MRX_u6u7D<Y|ltCshK<REWSAN+uU7s8_l_U z2$-N1*b0i=iQF>%9u`hpi0wuQn1ReHs-s0jJWV74Ql}fg9Hj{*bfPrr)!#i{b+m}% zVVL7&_IOVk!%|(_?!HvE4QRg-UmJ<K1UsXcL@`a023{y|T!?wlo)sBj;hLDTnOiZ7 z)!fP5Rku+m_h1@=oM;6%%)XP0-m?hX4P)s3*{(tzBI3otNd+$A^)Srz=mk{wSQYB% zcN4oEj7;vm>q00LPWD-rd2$&R|6&)@G}BIql(JX$A#)Z(QXndDZ2>}}y&mK1dEhw; z<(ZV`OhF(SD4iK{LY!VYoz>jQgZsWkljCsRtgmz7)CGi{uEd7)&vvizkP%Z5@-$Y$ z5wKPKXMf^*Eh&=VSyB-4blk=@9x^hx^y2F4ZtZu*CAk4&F*sNkWX1L0zzP(SpO<^` zyhPi!v28o~v)}Je2ArPfCC8<DjlE8ocCk!@i^qQi$8ia(4lE<ZR$1WsJc<M5ESb8L zfaSx}nPWQBH1YfWXswwyWj49RcM`Q-&MKdSVMq{hn`&8Bzo5nT{3W>JgJ<3fura0o z*BQp9_H6`&X$3RM{N8`8O6$A#``<^)shoH2m+<+D_~eqWQB(6Ai!MBqE3Uk1_!*{@ z!Y~YG%|0FFdTC$?Ln0F{j}QXabu$`y*L4YnLM)yCQI^d62)ZAqRtSk{NIJSYa6N}i zs`<!~BNP=CCHv+T&g)k#2ZO<k{Z4K5qr;tsnlh;(ZDWItje60dYkB?kjc6LMqZ64o z?^b^M^eXa;C$Ri;pBi3<MIsTNfBt!VKHq>z+f-m8kx0gb@aD~%F-;Rw46M6d<t3B0 zndEHSwyl>pn#%6J^HYf=@;|CwyYh=X_QZo|>Bq7xa<UGw{nhVKS}}vR_Ksm=*jPPm ztR6Pj{x0>fu{OrAv34>UcHqa$wX^~V)9RCI=|50bc8Jsd<>6k2vS$5NTKcjP(nLrD ztyND7pl@13YqWAvu`ttDY)F$Md^redrVLkUo~96>g@JZ$bS#u6XSB7R0;WHQvPCQL zmrWbggKnsm;4}B8^&9?NDwf=Vv~p0fPK4p_C+FrMeR-%@7xlmU_w<wG&!ck59T<Uv z%qPu==c(Lq3m_2Er0&^oj%bDrDGn3Tz|0$m_FR+`MH&`J17XCO65phFpENCm;X`D~ zcqGRDsdn3-D$esNCPT&oX1veo3?=~f5YmV<*RT*~fOqPv*y+AOwjo*QKRb<qBdHzN zU$1E8p`0kn4&y~TQFaJrhvS!Hqns$(iJ}}E`pHfRA<?eQf#?njPCE((L9)hmky{ca zw<Jn-aR>^6l%E#m5WCQBG<hKU<|KtQX{)cMZU0};o`Y5%TDfSYc&EOK?P?qOB?`01 z<+;OK@a(QpZ^P0eTkSb$F9!JNt~zS15J_94dSwmMcUq#g8g#{(vP&~EOlxQi?&p!n z@5wF{oLA>(&XltNXg#!xKX^NORh)HuD`&W|QO__lb)x~a>!964s;D~)u2tgFag`?q zu7wF92VHUIG&0s#qFv40yZ?v1E6%kr)sj3Ke4Ogyy}c^V|DJal(X1V(jt%Q!SPb2r z+mot0?*q~UL!-4qN+WL1j?o5Fan8i9WO_;+VSj%W=U`98dCjyNC_Vd=91iX}g&5Wi znCqY%8=+O)$ZM7G$a>hO2Ldd?mJ_WwXXTafovGKba_hehSaDu6`&-ODb4jnr;nZT7 zazT4&7cf#{s1&wod5rftgd9@EIiuSz493m)AomBa<i>qamHk>;#rdvDtC=<HLX;EE z=(wC34D%dREQ<66l8#`~rB1L-yT?wDoM^>aXb<h$6i=DY{lJa;;5A-LR-EsewVDg& zUW6OzKpG~7KX1fmI*!wZ#Zl@Fn%9eMdJw01uodTlb(zMAc2YF{ecTWH*LK0n`7ypb z>smfAa~@ta9@8muMtlZi=oRNg5UlJFF((x7bVB&7p3RWH00;xETr6~Ehe3HrGcf3i zv$V3~YB&?i%m7v(&YW?lE#Mp31=!(sO5Xc^kiJBm9uK6Ym3?Y4OnWZEu*g5-613~| zWHGv3ZXuJ|2ZTVou|6?b0x#Fb4YzQ`c?<dM{0lOUNy;-U+)#6mSK3RCL$t9PUtwjk zuW07t<e}&tvne7CZ)B7+Y8mE5ItV^}H`1RS&sGeS=FuAMIe3xuN~(&5Ir7K5k)}VH zrs`LW=Ok=qIQ^azrs*&1kcQdI5lPxNo$f4YCp_vIHdYTCVQs7)Ho|g=V+<Q(SWo+* z5XJr7yIqLDF;9~aL%L1{hMhFPo|`e_=Fi-I`|jUOm~eI9doNa2uK4O*cfGQ;sOYjm z&e0F#CNBSIRON&I?{D4j_zm_dzNPZKAMIYX^PGFmxwgMCPiAF(^~mbgT5sH_TkgL< z_H0?%^6q<om@r{^c*BO6uBp-C#~<(9QdoFde{vGd50nD$0cHV}3E<?3uI1fyO`0@O z4`$qugl6AZI(O}xw>9mJyr4G)*XU_?oOX5JF~5Qv_ZWr_78dH(OE1;#-FNHO`|gYV zuB>d?=CZP7p*3q_debJYpL|m5?b~(avB$dpSYCeF0D$EKbDEo*b#rsG1{MP|GJ!Ud z0UPYqYr*4IPhb3nO-r8$TvI;1@97=4s`CBcyWy(m%kxW0b{u($a5TcI&n#VEa7)F9 zQ^$EQC+2y$ZEZxhY@zc9KOlGaZfoJKw{G~*s#P1ZUDu+v7LFc;citgTP>_>TSa`tz zO2A5h#tS<()7;#=1$Zw|4rGrO^*H2;bJmw9e(>g%=WRT9=B$FU!h-jTt4kN_hnj)_ zxnHR~>s!}<a#LO&WmV0)QC{50Z?D>4)6wPyQ=A0xE4Zr~N=^85Dd03W6I!>9>;(%j z&p#jC-j1*=$jd{;V!V3ioxgr(-@c!mdu$uV1JA4jpt-sE*^-iyk0tIm0AYIa%cDQj zVO=}^ynni)bTip)xi8jiW!!|~+1G#J+!w^Ml1mE;bIY&0`t0Xw)c=+3stsZ49DLHx z8`Z6QU;0Dqa{X}Q>nSQp3n32u3cj`%^qe?o!UZDRw&8DX#{AHSFnm5@j-y{)zy8;U z_U!rk6>w;<!9^d?E(L7j^=x~jGi=bgL^oy_wG9n1$Jc=CdA#1-PC<6j?5mc~`Lo|= z<nD|8xvcqUCnVkyXsPoZsM$Vlg?_kkX9mNsfrF0-adWL{&Mfl0Gqu+7w?C?@(XklD z;>EnVd-v|Q_w2cOnb!3~jRaFb+fq_eat6>g(g7RNTT}X%hhP5d7VFBLuea1Ub+ynH z@~CTSrcS&(V_)=7<&7<!C>uNnj@0<~*1S~uY5h?Bs{=~5tc%M7foU<VaS{}80K29J z`^6U-KY8->!tvuT9t(w!GY-?gJp95t+s9vD|F+ra*bs|ATf0M7ry>>s+lF9`^=93x z<)7D&)a@Qf=msH{PY_~Vc2`%fodTAd_zYK7k@L5|<;`EZbluYx70ZXZxNDZKWbynD zlTeB6Bwz74MHrR@?V-A74(%viQCDL&*indtAQFaX6zXgI)xq7RSLlapUl~Z?BZjf8 zP>2V!VliJN1*ovkN2d@;W7GA<8)U!oif{g+MGrnZe*Bfk0oKQWw-f5nIprAE16uv& zrmC`Q8xC0w$~EyElg3*A{+8;}FX)F4?>uH8ZdtR%xN&AoN@5AHI{kk37{=4DX#Gr6 z-1R4F+k|Uspr*!@rg{1RB2~A2>I2sP(c&Q<H^WlY<I}DCO0V{HO=&UOro7c&Gww>g z;m}_Pk^2*tZU3~nv-207#l<MYphHRyc-}@Y68WlxoA$uQ2I8*^v?#^js;hs|dHC?! z0mM2$2au`;M-^DZlC2j)2(FrNK7z<G9gIHDJpz@k-~Zj5tgO#R+S-0&!7ZQF`XIpL zLQJ;dN0soYRv~_AYyHh-P^U9YB$3edCj#d}zyP`uYA_9~Q=#(kt}d@60F#Mqhn2!O zClj+qGGL>k;yl!n$*I7wcXb|asEN^2!G`_+0OQpDXR;tfwg3PC07*qoM6N<$f*m-F AjsO4v literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/jsTree/themes/vufind/style.css b/themes/bootstrap/js/jsTree/themes/vufind/style.css new file mode 100644 index 00000000000..cec1829ce45 --- /dev/null +++ b/themes/bootstrap/js/jsTree/themes/vufind/style.css @@ -0,0 +1,80 @@ +/* + * jsTree vufind theme 1.0 + * Supported features: dots/no-dots, icons/no-icons, focused, loading + * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search + */ + +/*to make long titles wrap*/ +.jstree ins { cursor:pointer; } +.jstree a { white-space:normal !important; height: auto; padding:1px 2px; } +.jstree li > ins { vertical-align:top; } + +.jstree-default li, +.jstree-default ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; } +.jstree-default li { background-position:-90px 0; background-repeat:repeat-y; } +.jstree-default li.jstree-last { background:transparent; } +.jstree-default .jstree-open > ins { background-position:-72px 0; } +.jstree-default .jstree-closed > ins { background-position:-54px 0; } +.jstree-default .jstree-leaf > ins { background-position:-36px 0; } + +.jstree-default .jstree-hovered { background:#DEF; border:1px solid #F9F9F9; padding:0 2px 0 1px; } +.jstree-default .jstree-clicked { background:#006DCC; border:1px solid #006DCC; color:#FFF; padding:0 2px 0 1px; } +.jstree-default a .jstree-icon { background-position:-56px -19px; } +.jstree-default a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; } + +.jstree-default.jstree-focused { background:#FFF; } + +.jstree-default .jstree-no-dots li, +.jstree-default .jstree-no-dots .jstree-leaf > ins { background:transparent; } +.jstree-default .jstree-no-dots .jstree-open > ins { background-position:-18px 0; } +.jstree-default .jstree-no-dots .jstree-closed > ins { background-position:0 0; } + +.jstree-default .jstree-no-icons a .jstree-icon { display:none; } + +.jstree-default .jstree-search { font-style:italic; } + +.jstree-default .jstree-no-icons .jstree-checkbox { display:inline-block; } +.jstree-default .jstree-no-checkboxes .jstree-checkbox { display:none !important; } +.jstree-default .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; } +.jstree-default .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; } +.jstree-default .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; } +.jstree-default .jstree-checked > a > .jstree-checkbox:hover { background-position:-38px -37px; } +.jstree-default .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; } +.jstree-default .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; } + +#vakata-dragged.jstree-default ins { background:transparent !important; } +#vakata-dragged.jstree-default .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; } +#vakata-dragged.jstree-default .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; } +#jstree-marker.jstree-default { background:url("d.png") -41px -57px no-repeat !important; text-indent:-100px; } + +.jstree-default a.jstree-search { color:#9B4F42; } +.jstree-default .jstree-locked a { color:silver; cursor:default; } + +#vakata-contextmenu.jstree-default-context, +#vakata-contextmenu.jstree-default-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; } +#vakata-contextmenu.jstree-default-context li { } +#vakata-contextmenu.jstree-default-context a { color:#222222; } +#vakata-contextmenu.jstree-default-context a:hover, +#vakata-contextmenu.jstree-default-context .vakata-hover > a { padding:0 5px; background:#006DCC; border:1px solid #006DCC; color:#222222; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; } +#vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a, +#vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 4px; } +#vakata-contextmenu.jstree-default-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; } +#vakata-contextmenu.jstree-default-context li ul { margin-left:-4px; } + + +/* IE6 BEGIN */ +.jstree-default li, +.jstree-default ins, +#vakata-dragged.jstree-default .jstree-invalid, +#vakata-dragged.jstree-default .jstree-ok, +#jstree-marker.jstree-default { _background-image:url("d.gif"); } +.jstree-default .jstree-open ins { _background-position:-72px 0; } +.jstree-default .jstree-closed ins { _background-position:-54px 0; } +.jstree-default .jstree-leaf ins { _background-position:-36px 0; } +.jstree-default a ins.jstree-icon { _background-position:-56px -19px; } +#vakata-contextmenu.jstree-default-context ins { _display:none; } +#vakata-contextmenu.jstree-default-context li { _zoom:1; } +.jstree-default .jstree-undetermined a .jstree-checkbox { _background-position:-20px -19px; } +.jstree-default .jstree-checked a .jstree-checkbox { _background-position:-38px -19px; } +.jstree-default .jstree-unchecked a .jstree-checkbox { _background-position:-2px -19px; } +/* IE6 END */ \ No newline at end of file diff --git a/themes/bootstrap/js/jsTree/themes/vufind/throbber.gif b/themes/bootstrap/js/jsTree/themes/vufind/throbber.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b33f7e54f4e55b6b8774d86d96895db9af044b4 GIT binary patch literal 1849 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 EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/themes/bootstrap/js/lightbox.js b/themes/bootstrap/js/lightbox.js new file mode 100644 index 00000000000..3ed8cdade6f --- /dev/null +++ b/themes/bootstrap/js/lightbox.js @@ -0,0 +1,326 @@ +/***********************/ +/* ====== SETUP ====== */ +/***********************/ +// Checkbox actions and link hijacking +function registerModalEvents(modal) { + // New list + $('#make-list').click(function() { + var id = $(this).find('#edit-save-form input[name="id"]').val(); + var source = $(this).find('#edit-save-form input[name="source"]').val(); + var parts = this.href.split('?'); + var get = deparam(parts[1]); + get['id'] = 'NEW'; + return getLightbox('MyResearch', 'EditList', get); + }); + // Select all checkboxes + $(modal).find('.checkbox-select-all').change(function() { + $(this).closest('.modal-body').find('.checkbox-select-item').attr('checked', this.checked); + }); + // Highlight which submit button clicked + $(modal).find("form input[type=submit]").click(function() { + $(this).attr("clicked", "true"); + $(this).prepend('<i class="icon-spinner icon-spin"></i> '); +}); +} +// Prevent forms from submitting in the lightbox +// Go through AJAX instead +function registerModalForms(modal) { + $(modal).find('form').submit(function(){ + ajaxSubmit($(this), closeLightbox); + return false + }); + $(modal).find('form[name="cartForm"]').unbind('submit').submit(function(){ + cartSubmit($(this)); + return false + }); + $(modal).find('form[name="newList"]').unbind('submit').submit(function(){ + ajaxSubmit($(this), changeModalContent); + return false + }); + $(modal).find('form[name="loginForm"]').unbind('submit') + .submit(function(){ajaxLogin(this);return false}); +} +// Default lightbox behaviour +// Tell links to open lightboxes +$(document).ready(function() { + // Hijack modal forms + $('#modal').on('show', function() { + registerModalForms(this); + registerModalEvents(this); + }); + // Reset Content + $('#modal').on('hidden', function() { + closeLightbox(); + }); + /* --- MODAL LINK EVENTS --- */ + // Save record links + $('.save-record').click(function() { + var parts = this.href.split('/'); + return getLightbox(parts[parts.length-3],'Save',{id:$(this).attr('id')}); + }); + // Cart lightbox + $('#cartItems').click(function() { + return getLightbox('Cart','Cart'); + }); + // Hierarchy links + $('.hierarchyTreeLink a').click(function() { + var id = $(this).parent().parent().parent().find(".hiddenId")[0].value; + var hierarchyID = $(this).parent().find(".hiddenHierarchyId")[0].value; + return getLightbox('Record','AjaxTab',{id:id},{hierarchy:hierarchyID,tab:'HierarchyTree'}); + }); + // Hierarchy links + $('.help-link').click(function() { + var split = this.href.split('='); + return getLightbox('Help','Home',{topic:split[1]}); + }); + // Modal title + $('.modal-link,.help-link').click(function() { + $('#modal .modal-header h3').html($(this).attr('title')); + }); +}); + +/****************************/ +/* ====== GET LIGHTBOX ====== */ +/****************************/ +// Get a template and display it in a lightbox +var lastLightboxURL,lastLightboxPOST; // Replacement for empty form actions +var lightboxShown = false; // is the lightbox deployed? +// Make a URL and pass it down +function getLightbox(controller, action, get, post, callback) { + var url = path+'/AJAX/JSON?method=getLightbox&submodule='+controller+'&subaction='+action; + if(get && get !== {}) url += '&'+$.param(get); + return getLightboxByUrl(url, post, callback); +} +// AJAX the content and put it into a lightbox +// Callback if necessary +function getLightboxByUrl(url, post, callback) { + $.ajax({ + type:'POST', + url:url, + data:post, + success:changeModalContent, + error:function(d,e) { + console.log(d,e); + } + }); + if(!lightboxShown) { + $('#modal').modal('show'); + lightboxShown = true; + } + lastLightboxURL = url; + lastLightboxPOST = post; + if(callback) callback(); + return false; +} + +/****************************/ +/* ====== AJAX MAGIC ====== */ +/****************************/ +// Submit a form via AJAX and show the result +function ajaxSubmit($form, callback) { + // Default callback is to close + if(!callback) callback = closeLightbox; + // Gather all the data + var inputs = $form.find('*[name]'); + var data = {}; + for(var i=0;i<inputs.length;i++) { + var currentName = inputs[i].name; + var array = currentName.substring(currentName.length-2) == '[]'; + if(array && !data[currentName]) { + data[currentName] = []; + } + // Submit buttons + if(inputs[i].type == 'submit') { + if($(inputs[i]).attr('clicked') == 'true') { + data[currentName] = inputs[i].value; + } + // Radio buttons + } else if(inputs[i].type == 'radio') { + if(inputs[i].checked) { + if(array) { + data[currentName][data[currentName].length] = inputs[i].value; + } else { + data[currentName] = inputs[i].value; + } + } + // Checkboxes + } else if($(inputs[i]).attr('type') != 'checkbox' || inputs[i].checked) { + if(array) { + data[currentName][data[currentName].length] = inputs[i].value; + } else { + data[currentName] = inputs[i].value; + } + } + }; + // If we have an action: parse + var POST = $form.attr('method') && $form.attr('method').toUpperCase() == 'POST'; + if($form.attr('action')) { + // Parse action location + action = $form.attr('action').substring($form.attr('action').indexOf(path)+path.length+1); + params = action.split('?'); + action = action.split('/'); + var get = params.length > 1 ? deparam(params[1]) : data['id'] ? {id:data['id']} : {}; + if(POST) { + getLightbox(action[0], action[action.length-1], get, data, callback); + } else { + getLightbox(action[0], action[action.length-1], data, {}, callback); + } + // If not: fake context by using the previous action + } else if(POST) { + getLightboxByUrl(lastLightboxURL, data, callback); + } else { + getLightboxByUrl(lastLightboxURL, {}, callback); + } + $(this).find('.modal-body').html(vufindString.loading); +} +// AJAX action specifically for logging in (encrypted) +function ajaxLogin(form) { + $.ajax({ + url: path + '/AJAX/JSON?method=getSalt', + dataType: 'json', + success: function(response) { + if (response.status == 'OK') { + var salt = response.data; + + // get the user entered username/password + var password = form.password.value; + var username = form.username.value; + + // encrypt the password with the salt + password = rc4Encrypt(salt, password); + + // hex encode the encrypted password + password = hexEncode(password); + + // login via ajax + $.ajax({ + type: 'POST', + url: path + '/AJAX/JSON?method=login', + dataType: 'json', + data: {username:username, password:password}, + success: function(response) { + if (response.status == 'OK') { + // Hide "log in" options and show "log out" options: + $('#loginOptions').hide(); + $('.logoutOptions').show(); + + // Update user save statuses if the current context calls for it: + if (typeof(checkSaveStatuses) == 'function') { + checkSaveStatuses(); + } + + // refresh the comment list so the "Delete" links will show + $('.commentList').each(function(){ + var recordId = $('#record_id').val(); + var recordSource = extractSource($('#record')); + refreshCommentList(recordId, recordSource); + }); + + // and we update the modal + getLightboxByUrl(lastLightboxURL, lastLightboxPOST); + } else { + displayLightboxError(response.data); + } + } + }); + } else { + displayLightboxError(response.data); + } + } + }); +} + +function cartSubmit($form) { + var submit = $form.find('input[type="submit"][clicked=true]').attr('name'); + switch(submit) { + case 'saveCart': + case 'email': + case 'export': + ajaxSubmit($form, changeModalContent); + break; + case 'delete': + case 'empty': + ajaxSubmit($form, closeLightbox); + break; + case 'print': + //redirect page + var checks = $form.find('input[type="checkbox"]:checked'); + var data = {}; + for(var i=0;i<checks.length;i++) { + data[checks[i].name] = checks[i].value; + } + $.ajax({ + url:path+'/Cart/PrintCart', + data:data, + success:function(html) { + var newDoc = document.open("text/html", "replace"); + newDoc.write(html); + newDoc.close() + }, + error:function(d,e) { + console.log(d,e); + } + }); + break; + } +} + +/**********************************/ +/* ====== LIGHTBOX ACTIONS ====== */ +/**********************************/ +// Cart actions based on submission +// Change the content of the lightbox +function changeModalContent(html) { + $('#modal .modal-body').html(html); + registerModalEvents($('#modal')); + registerModalForms($('#modal')); +} +// Close the lightbox and run update functions +function closeLightbox() { + lightboxShown = false; + $('#modal').modal('hide'); + // Reset content + $('#modal').removeData('modal'); + $('#modal').find('.modal-body').html(vufindString.loading); + // Perform checks to update the page + if(checkSaveStatuses) checkSaveStatuses(); + // Update cart items + var cart = getFullCartItems(); + var id = $('#cartId'); + if(id.length > 0) { + id = id.val(); + $('#cart-add,#cart-remove').addClass('hidden'); + if(cart.indexOf(id) > -1) { + $('#cart-remove').removeClass('hidden'); + } else { + $('#cart-add').removeClass('hidden'); + } + } + $('#cartItems strong').html(cart.length); +} +// Make an error box appear in the lightbox, or insert one +function displayLightboxError(message) { + var alert = $('#modal .modal-body .alert'); + if(alert.length > 0) { + $(alert).html(message); + } else { + $('#modal .modal-body').prepend('<div class="alert alert-error">'+message+'</div>'); + } +} + +/* ====== SUPPORT ====== */ +function deparam(url) { + var request = {}; + var pairs = url.substring(url.indexOf('?') + 1).split('&'); + for (var i = 0; i < pairs.length; i++) { + var pair = pairs[i].split('='); + var name = decodeURIComponent(pair[0]); + if(pair[0].substring(pair[0].length-2) == '[]') { + if(!request[name]) request[name] = []; + request[name][request[name].length] = pair[1]; + } else { + request[name] = decodeURIComponent(pair[1]); + } + } + return request; +} \ No newline at end of file diff --git a/themes/bootstrap/js/masonry.min.js b/themes/bootstrap/js/masonry.min.js new file mode 100644 index 00000000000..7398e283215 --- /dev/null +++ b/themes/bootstrap/js/masonry.min.js @@ -0,0 +1,9 @@ +/** + * Vanilla Masonry v1.0.7 + * Dynamic layouts for the flip-side of CSS Floats + * http://vanilla-masonry.desandro.com + * + * Licensed under the MIT license. + * Copyright 2012 David DeSandro + */ +(function(a,b){function e(a){return new RegExp("(^|\\s+)"+a+"(\\s+|$)")}function o(a,b,c){if(c.indexOf("%")===-1)return c;var d=a.style,e=d.width,f;return d.width=c,f=b.width,d.width=e,f}function p(a,b,c){var d=b!=="height",e=d?a.offsetWidth:a.offsetHeight,f=d?"Left":"Top",g=d?"Right":"Bottom",h=j(a),i=parseFloat(h["padding"+f])||0,k=parseFloat(h["padding"+g])||0,l=parseFloat(h["border"+f+"Width"])||0,m=parseFloat(h["border"+g+"Width"])||0,p=h["margin"+f],q=h["margin"+g],r,s;n||(p=o(a,h,p),q=o(a,h,q)),r=parseFloat(p)||0,s=parseFloat(q)||0;if(e>0)c?e+=r+s:e-=i+k+l+m;else{e=h[b];if(e<0||e===null)e=a.style[b]||0;e=parseFloat(e)||0,c&&(e+=i+k+r+s+l+m)}return e}function q(b,c,d){b.addEventListener?b.addEventListener(c,d,!1):b.attachEvent&&(b["e"+c+d]=d,b[c+d]=function(){b["e"+c+d](a.event)},b.attachEvent("on"+c,b[c+d]))}function r(a,b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&(a.detachEvent("on"+b,a[b+c]),a[b+c]=null,a["e"+b+c]=null)}function s(a,b){if(!a)return;this.element=a,this.options={};for(var c in s.defaults)this.options[c]=s.defaults[c];for(c in b)this.options[c]=b[c];this._create(),this.build()}"use strict";var c=a.document,d="classList"in c.createElement("div"),f=d?function(a,b){return a.classList.contains(b)}:function(a,b){return e(b).test(a.className)},g=d?function(a,b){a.classList.add(b)}:function(a,b){f(a,b)||(a.className=a.className+" "+b)},h=d?function(a,b){a.classList.remove(b)}:function(a,b){a.className=a.className.replace(e(b)," ")},i=c.defaultView,j=i&&i.getComputedStyle?function(a){return i.getComputedStyle(a,null)}:function(a){return a.currentStyle},k=c.getElementsByTagName("body")[0],l=c.createElement("div"),m=k||c.createElement("body");l.style.marginTop="1%",m.appendChild(l);var n=j(l).marginTop!=="1%";m.removeChild(l);var t=["position","height"];s.defaults={isResizable:!0,gutterWidth:0,isRTL:!1,isFitWidth:!1},s.prototype={_getBricks:function(a){var b;for(var c=0,d=a.length;c<d;c++)b=a[c],b.style.position="absolute",g(b,"masonry-brick"),this.bricks.push(b)},_create:function(){this.reloadItems();var b=this.element.style;this._originalStyle={};for(var c=0,d=t.length;c<d;c++){var e=t[c];this._originalStyle[e]=b[e]||""}this.element.style.position="relative",this.horizontalDirection=this.options.isRTL?"right":"left",this.offset={};var f=j(this.element),h=this.options.isRTL?"paddingRight":"paddingLeft";this.offset.y=parseFloat(f.paddingTop)||0,this.offset.x=parseFloat(f[h])||0,this.isFluid=this.options.columnWidth&&typeof this.options.columnWidth=="function";var i=this;setTimeout(function(){g(i.element,"masonry")}),this.options.isResizable&&q(a,"resize",function(){i._handleResize()})},build:function(a){this._getColumns(),this._reLayout(a)},_getColumns:function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,b=p(a,"width");this.columnWidth=this.isFluid?this.options.columnWidth(b):this.options.columnWidth||p(this.bricks[0],"width",!0)||b,this.columnWidth+=this.options.gutterWidth,this.cols=Math.floor((b+this.options.gutterWidth)/this.columnWidth),this.cols=Math.max(this.cols,1)},reloadItems:function(){this.bricks=[],this._getBricks(this.element.children)},_reLayout:function(a){var b=this.cols;this.colYs=[];while(b--)this.colYs.push(0);this.layout(this.bricks,a)},layout:function(a,b){if(!a||!a.length)return;var c,d,e,f,g,h,i;for(var j=0,k=a.length;j<k;j++){c=a[j];if(c.nodeType!==1)continue;d=Math.ceil(p(c,"width",!0)/this.columnWidth),d=Math.min(d,this.cols);if(d===1)i=this.colYs;else{e=this.cols+1-d,i=[];for(h=0;h<e;h++)g=this.colYs.slice(h,h+d),i[h]=Math.max.apply(Math,g)}var l=Math.min.apply(Math,i);for(var m=0,n=i.length;m<n;m++)if(i[m]===l)break;c.style.top=l+this.offset.y+"px",c.style[this.horizontalDirection]=this.columnWidth*m+this.offset.x+"px";var o=l+p(c,"height",!0),q=this.cols+1-n;for(h=0;h<q;h++)this.colYs[m+h]=o}var r={};this.element.style.height=Math.max.apply(Math,this.colYs)+"px";if(this.options.isFitWidth){var s=0;j=this.cols;while(--j){if(this.colYs[j]!==0)break;s++}this.element.style.width=(this.cols-s)*this.columnWidth-this.options.gutterWidth+"px"}b&&b.call(a)},_handleResize:function(){function b(){a.resize(),a._resizeTimeout=null}var a=this;this._resizeTimeout&&clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(b,100)},resize:function(){var a=this.cols;this._getColumns(),(this.isFluid||this.cols!==a)&&this._reLayout()},reload:function(a){this.reloadItems(),this.build(a)},appended:function(a,b,c){var d=this,e=function(){d._appended(a,c)};if(b){var f=p(this.element,"height")+"px";for(var g=0,h=a.length;g<h;g++)a[g].style.top=f;setTimeout(e,1)}else e()},_appended:function(a,b){this._getBricks(a),this.layout(a,b)},destroy:function(){var b;for(var c=0,d=this.bricks.length;c<d;c++)b=this.bricks[c],b.style.position="",b.style.top="",b.style.left="",h(b,"masonry-brick");var e=this.element.style;d=t.length;for(c=0;c<d;c++){var f=t[c];e[f]=this._originalStyle[f]}h(this.element,"masonry"),this.resizeHandler&&r(a,"resize",this.resizeHandler)}},s.getWH=p,a.Masonry=s})(window); \ No newline at end of file diff --git a/themes/bootstrap/js/openurl.js b/themes/bootstrap/js/openurl.js new file mode 100644 index 00000000000..467cdb563b0 --- /dev/null +++ b/themes/bootstrap/js/openurl.js @@ -0,0 +1,38 @@ +/*global extractClassParams, path*/ + +function loadResolverLinks($target, openUrl) { + $target.addClass('ajax_availability'); + var url = path + '/AJAX/JSON?' + $.param({method:'getResolverLinks',openurl:openUrl}); + $.ajax({ + dataType: 'json', + url: url, + success: function(response) { + if (response.status == 'OK') { + $target.removeClass('ajax_availability') + .empty().append(response.data); + } else { + $target.removeClass('ajax_availability').addClass('error') + .empty().append(response.data); + } + } + }); +} + +$(document).ready(function() { + // assign action to the openUrlWindow link class + $('a.openUrlWindow').click(function(){ + var params = extractClassParams(this); + var settings = params.window_settings; + window.open($(this).attr('href'), 'openurl', settings); + return false; + }); + + // assign action to the openUrlEmbed link class + $('a.openUrlEmbed').click(function(){ + var params = extractClassParams(this); + var openUrl = $(this).children('span.openUrl:first').attr('title'); + $(this).hide(); + loadResolverLinks($('#openUrlEmbed'+params.openurl_id).show(), openUrl); + return false; + }); +}); \ No newline at end of file diff --git a/themes/bootstrap/js/preview.js b/themes/bootstrap/js/preview.js new file mode 100644 index 00000000000..793d225bb4c --- /dev/null +++ b/themes/bootstrap/js/preview.js @@ -0,0 +1,160 @@ +// functions to get rights codes for previews +function getHathiOptions() { + return $('[class*="hathiPreviewDiv"]').attr("class").split('__')[1].split(','); +} +function getGoogleOptions() { + return $('[class*="googlePreviewDiv"]').attr("class").split('__')[1].split(','); +} +function getOLOptions() { + return $('[class*="olPreviewDiv"]').attr("class").split('__')[1].split(','); +} + +function getHTPreviews(skeys) { + skeys = skeys.replace(/(ISBN|LCCN|OCLC)/gi, '$1:').toLowerCase(); + var bibkeys = skeys.split(/\s+/); + // fetch 20 books at time if there are more than 20 + // since hathitrust only allows 20 at a time + // as per http://vufind.org/jira/browse/VUFIND-317 + var batch = []; + for(var i = 0; i < bibkeys.length; i++) { + batch.push(bibkeys[i]); + if ((i > 0 && i % 20 == 0) || i == bibkeys.length-1) { + var script = 'http://catalog.hathitrust.org/api/volumes/brief/json/' + + batch.join('|') + '&callback=processHTBookInfo'; + $.getScript(script); + batch = []; + } + } +} + +function processBookInfo(booksInfo, previewClass) { + // assign the correct rights string depending on source + var viewOptions = (previewClass == 'previewGBS') + ? getGoogleOptions() : getOLOptions(); + for (var bibkey in booksInfo) { + var bookInfo = booksInfo[bibkey]; + if (bookInfo) { + if (viewOptions.indexOf(bookInfo.preview)>= 0) { + var $link = $('.' + previewClass + '.' + bibkey); + $link.attr('href', bookInfo.preview_url).show(); + } + } + } +} + +function processGBSBookInfo(booksInfo) { + processBookInfo(booksInfo, 'previewGBS'); +} + +function processOLBookInfo(booksInfo) { + processBookInfo(booksInfo, 'previewOL'); +} + +function processHTBookInfo(booksInfo) { + for (var b in booksInfo) { + var bibkey = b.replace(/:/, '').toUpperCase(); + var $link = $('.previewHT.' + bibkey); + var items = booksInfo[b].items; + for (var i = 0; i < items.length; i++) { + // check if items possess an eligible rights code + if (getHathiOptions().indexOf(items[i].rightsCode) >= 0) { + $link.attr('href', items[i].itemURL).show(); + } + } + } +} + +/** + * Array.indexOf is not universally supported + * We need to set it for users who don't have it. + * + * developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf + */ +function setIndexOf() { + Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { + "use strict"; + if (this == null) { + throw new TypeError(); + } + var t = Object(this); + /*jslint bitwise: false*/ + var len = t.length >>> 0; + /*jslint bitwise: true*/ + if (len === 0) { + return -1; + } + var n = 0; + if (arguments.length > 1) { + n = Number(arguments[1]); + if (n != n) { // shortcut for verifying if it's NaN + n = 0; + } else if (n != 0 && n != Infinity && n != -Infinity) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + } + if (n >= len) { + return -1; + } + var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); + for (; k < len; k++) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + }; +} + +function getBookPreviews() { + var skeys = ''; + $('.previewBibkeys').each(function(){ + skeys += $(this).attr('class'); + }); + skeys = skeys.replace(/previewBibkeys/g, '').replace(/^\s+|\s+$/g, ''); + var bibkeys = skeys.split(/\s+/); + var script; + + // fetch Google preview if enabled + if ($('.previewGBS').length > 0) { + // checks if query string might break URI limit - if not, run as normal + if (bibkeys.length <= 150){ + script = 'https://encrypted.google.com/books?jscmd=viewapi&bibkeys=' + + bibkeys.join(',') + '&callback=processGBSBookInfo'; + $.getScript(script); + } else { + // if so, break request into chunks of 100 + var keyString = ''; + // loop through array + for (var i=0; i < bibkeys.length; i++){ + keyString += bibkeys[i] + ','; + // send request when there are 100 requests ready or when there are no + // more elements to be sent + if ((i > 0 && i % 100 == 0) || i == bibkeys.length-1) { + script = 'https://encrypted.google.com/books?jscmd=viewapi&bibkeys=' + + keyString + '&callback=processGBSBookInfo'; + $.getScript(script); + keyString = ''; + } + } + } + } + + // fetch OpenLibrary preview if enabled + if ($('.previewOL').length > 0) { + script = 'http://openlibrary.org/api/books?bibkeys=' + + bibkeys.join(',') + '&callback=processOLBookInfo'; + $.getScript(script); + } + + // fetch HathiTrust preview if enabled + if ($('.previewHT').length > 0) { + getHTPreviews(skeys); + } +} + +$(document).ready(function() { + if (!Array.prototype.indexOf) { + setIndexOf(); + } + getBookPreviews(); +}); \ No newline at end of file diff --git a/themes/bootstrap/js/pubdate_vis.js b/themes/bootstrap/js/pubdate_vis.js new file mode 100644 index 00000000000..ad90054c87e --- /dev/null +++ b/themes/bootstrap/js/pubdate_vis.js @@ -0,0 +1,119 @@ +/*global htmlEncode*/ + +function PadDigits(n, totalDigits) +{ + if (n <= 0){ + n= 1; + } + n = n.toString(); + var pd = ''; + if (totalDigits > n.length) + { + for (var i=0; i < (totalDigits-n.length); i++) + { + pd += '0'; + } + } + return pd + n; +} + +function loadVis(facetFields, searchParams, baseURL, zooming) { + // options for the graph, TODO: make configurable + var options = { + series: { + bars: { + show: true, + align: "center", + fill: true, + fillColor: "rgb(0,0,0)" + } + }, + colors: ["#0088CC"], + legend: { noColumns: 2 }, + xaxis: { tickDecimals: 0 }, + yaxis: { min: 0, ticks: [] }, + selection: {mode: "x"}, + grid: { backgroundColor: null /*"#ffffff"*/ } + }; + + // AJAX call + var url = baseURL + '/AJAX/json?method=getVisData&facetFields=' + encodeURIComponent(facetFields) + '&' + searchParams; + $.getJSON(url, function (data) { + if (data.status == 'OK') { + $.each(data['data'], function(key, val) { + //check if there is data to display, if there isn't hide the box + if (val['data'] == undefined || val['data'].length == 0) { + return; + } + $("#datevis" + key + "xWrapper").show(); + + // plot graph + var placeholder = $("#datevis" + key + "x"); + + //set up the hasFilter variable + var hasFilter = true; + + //set the has filter + if (val['min'] == 0 && val['max']== 0) { + hasFilter = false; + } + + //check if the min and max value have been set otherwise set them to the ends of the graph + if (val['min'] == 0) { + val['min'] = val['data'][0][0] - 5; + } + if (val['max']== 0) { + val['max'] = parseInt(val['data'][val['data'].length - 1][0], 10) + 5; + } + + if (zooming) { + //check the first and last elements of the data array against min and max value (+padding) + //if the element exists leave it, otherwise create a new marker with a minus one value + if (val['data'][val['data'].length - 1][0] != parseInt(val['max'], 10) + 5) { + val['data'].push([parseInt(val['max'], 10) + 5, -1]); + } + if (val['data'][0][0] != val['min'] - 5) { + val['data'].push([val['min'] - 5, -1]); + } + //check for values outside the selected range and remove them by setting them to null + for (var i=0; i<val['data'].length; i++) { + if (val['data'][i][0] < val['min'] -5 || val['data'][i][0] > parseInt(val['max'], 10) + 5) { + //remove this + val['data'].splice(i,1); + i--; + } + } + + } else { + //no zooming means that we need to specifically set the margins + //do the last one first to avoid getting the new last element + val['data'].push([parseInt(val['data'][val['data'].length - 1][0], 10) + 5, -1]); + //now get the first element + val['data'].push([val['data'][0][0] - 5, -1]); + } + + + var plot = $.plot(placeholder, [val], options); + if (hasFilter) { + // mark pre-selected area + plot.setSelection({ x1: val['min'] , x2: val['max']}); + } + // selection handler + placeholder.bind("plotselected", function (event, ranges) { + var from = Math.floor(ranges.xaxis.from); + var to = Math.ceil(ranges.xaxis.to); + location.href = val['removalURL'] + '&daterange[]=' + key + '&' + key + 'to=' + PadDigits(to,4) + '&' + key + 'from=' + PadDigits(from,4); + }); + + if (hasFilter) { + var newdiv = document.createElement('div'); + var text = document.getElementById("clearButtonText").innerHTML; + newdiv.setAttribute('id', 'clearButton' + key); + newdiv.innerHTML = '<a href="' + htmlEncode(val['removalURL']) + '">' + text + '</a>'; + newdiv.className += "dateVisClear"; + placeholder.append(newdiv); + } + }); + } + }); +} \ No newline at end of file diff --git a/themes/bootstrap/js/rc4.js b/themes/bootstrap/js/rc4.js new file mode 100644 index 00000000000..df042c0eee8 --- /dev/null +++ b/themes/bootstrap/js/rc4.js @@ -0,0 +1,100 @@ +/* RC4 symmetric cipher encryption/decryption + * Copyright (c) 2006 by Ali Farhadi. + * released under the terms of the Gnu Public License. + * see the GPL for details. + * + * Email: ali[at]farhadi[dot]ir + * Website: http://farhadi.ir/ + */ + +/** + * Encrypt given plain text using the key with RC4 algorithm. + * All parameters and return value are in binary format. + * + * @param string key - secret key for encryption + * @param string pt - plain text to be encrypted + * @return string + */ +function rc4Encrypt(key, pt) { + s = new Array(); + for (var i=0; i<256; i++) { + s[i] = i; + } + var j = 0; + var x; + for (i=0; i<256; i++) { + j = (j + s[i] + key.charCodeAt(i % key.length)) % 256; + x = s[i]; + s[i] = s[j]; + s[j] = x; + } + i = 0; + j = 0; + var ct = ''; + for (var y=0; y<pt.length; y++) { + i = (i + 1) % 256; + j = (j + s[i]) % 256; + x = s[i]; + s[i] = s[j]; + s[j] = x; + ct += String.fromCharCode(pt.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]); + } + return ct; +} + +/** + * Decrypt given cipher text using the key with RC4 algorithm. + * All parameters and return value are in binary format. + * + * @param string key - secret key for decryption + * @param string ct - cipher text to be decrypted + * @return string +*/ +function rc4Decrypt(key, ct) { + return rc4Encrypt(key, ct); +} + +/* Hexadecimal conversion methods. + * Copyright (c) 2006 by Ali Farhadi. + * released under the terms of the Gnu Public License. + * see the GPL for details. + * + * Email: ali[at]farhadi[dot]ir + * Website: http://farhadi.ir/ + */ + +//Encodes data to Hex(base16) format +function hexEncode(data){ + var b16_digits = '0123456789abcdef'; + var b16_map = new Array(); + for (var i=0; i<256; i++) { + b16_map[i] = b16_digits.charAt(i >> 4) + b16_digits.charAt(i & 15); + } + + var result = new Array(); + for (var i=0; i<data.length; i++) { + result[i] = b16_map[data.charCodeAt(i)]; + } + + return result.join(''); +} + +//Decodes Hex(base16) formated data +function hexDecode(data){ + var b16_digits = '0123456789abcdef'; + var b16_map = new Array(); + for (var i=0; i<256; i++) { + b16_map[b16_digits.charAt(i >> 4) + b16_digits.charAt(i & 15)] = String.fromCharCode(i); + } + if (!data.match(/^[a-f0-9]*$/i)) return false;// return false if input data is not a valid Hex string + + if (data.length % 2) data = '0'+data; + + var result = new Array(); + var j=0; + for (var i=0; i<data.length; i+=2) { + result[j++] = b16_map[data.substr(i,2)]; + } + + return result.join(''); +} \ No newline at end of file diff --git a/themes/bootstrap/js/record.js b/themes/bootstrap/js/record.js new file mode 100644 index 00000000000..ae2fab2419d --- /dev/null +++ b/themes/bootstrap/js/record.js @@ -0,0 +1,145 @@ +/*global __dialogHandle, displayFormError, extractController, extractSource, getLightbox, path, toggleMenu*/ + +/** + * Functions and event handlers specific to record pages. + */ + +function checkRequestIsValid(element, requestURL) { + var recordId = requestURL.match(/\/Record\/([^\/]+)\//)[1]; + var vars = {}, hash; + var hashes = requestURL.slice(requestURL.indexOf('?') + 1).split('&'); + + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + var x = hash[0]; + var y = hash[1]; + vars[x] = y; + } + vars['id'] = recordId; + + var url = path + '/AJAX/JSON?' + $.param({method:'checkRequestIsValid', id: recordId, data: vars}); + $.ajax({ + dataType: 'json', + cache: false, + url: url, + success: function(response) { + if (response.status == 'OK') { + if (response.data.status) { + $(element).removeClass('disabled').html(response.data.msg); + } else { + $(element).remove(); + } + } else if (response.status == 'NEED_AUTH') { + $(element).replaceWith('<span class="holdBlocked">' + response.data.msg + '</span>'); + } + } + }); +} + +function setUpCheckRequest() { + $('.checkRequest').each(function(i) { + if($(this).hasClass('checkRequest')) { + var isValid = checkRequestIsValid(this, this.href); + } + }); +} + +function deleteRecordComment(element, recordId, recordSource, commentId) { + var url = path + '/AJAX/JSON?' + $.param({method:'deleteRecordComment',id:commentId}); + $.ajax({ + dataType: 'json', + url: url, + success: function(response) { + if (response.status == 'OK') { + $($(element).parents('li')[0]).remove(); + } + } + }); +} + +function refreshCommentList(recordId, recordSource) { + var url = path + '/AJAX/JSON?' + $.param({method:'getRecordCommentsAsHTML',id:recordId,'source':recordSource}); + $.ajax({ + dataType: 'json', + url: url, + success: function(response) { + if (response.status == 'OK') { + $('#commentList').empty(); + $('#commentList').append(response.data); + $('input[type="submit"]').button('reset'); + $('#commentList a.deleteRecordComment').unbind('click').click(function() { + var commentId = $(this).attr('id').substr('recordComment'.length); + deleteRecordComment(this, recordId, recordSource, commentId); + return false; + }); + } + } + }); +} + +function registerAjaxCommentRecord() { + $('form[name="commentRecord"]').unbind('submit').submit(function(){ + if (!$(this).valid()) { return false; } + var form = this; + var id = form.id.value; + var recordSource = form.source.value; + var url = path + '/AJAX/JSON?' + $.param({method:'commentRecord'}); + var data = { + comment:form.comment.value, + id:id, + source:recordSource + }; + $.ajax({ + type:'POST', + url: url, + data: data, + dataType: 'json', + success: function(response) { + var form = 'form[name="commentRecord"]'; + if (response.status == 'OK') { + refreshCommentList(id, recordSource); + $(form).find('textarea[name="comment"]').val(''); + } else if (response.status == 'NEED_AUTH') { + return getLightbox('MyResearch', 'Login'); + } else { + $('#modal').find('.modal-body').html(response.data+'!'); + $('#modal').find('.modal-header h3').html('Error!'); + $('#modal').modal('show'); + } + } + }); + $(form).find('input[type="submit"]').button('loading'); + return false; + }); +} + +$(document).ready(function(){ + var id = document.getElementById('record_id').value; + + // register the record comment form to be submitted via AJAX + registerAjaxCommentRecord(); + + // Cite lightbox + $('#cite-record').click(function() { + var params = extractClassParams(this); + return getLightbox(params['controller'], 'Cite', {id:id}); + }); + // SMS lightbox + $('#sms-record').click(function() { + var params = extractClassParams(this); + return getLightbox(params['controller'], 'SMS', {id:id}); + }); + // Mail lightbox + $('#mail-record').click(function() { + var params = extractClassParams(this); + return getLightbox(params['controller'], 'Email', {id:id}); + }); + // Save lightbox + $('#save-record').click(function() { + var params = extractClassParams(this); + return getLightbox(params['controller'], 'Save', {id:id}); + }); + + setUpCheckRequest(); +}); diff --git a/themes/bootstrap/templates/Auth/AbstractBase/login.phtml b/themes/bootstrap/templates/Auth/AbstractBase/login.phtml new file mode 100644 index 00000000000..ef6f561fcf7 --- /dev/null +++ b/themes/bootstrap/templates/Auth/AbstractBase/login.phtml @@ -0,0 +1,12 @@ +<div class="control-group"> + <label class="control-label" for="login_username"><?=$this->transEsc('Username')?>:</label> + <div class="controls"> + <input id="login_username" type="text" name="username" value="<?=$this->escapeHtml($this->request->get('username'))?>"/> + </div> +</div> +<div class="control-group"> + <label class="control-label" for="login_password"><?=$this->transEsc('Password')?>:</label> + <div class="controls"> + <input id="login_password" type="password" name="password"/> + </div> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/Auth/Database/create.phtml b/themes/bootstrap/templates/Auth/Database/create.phtml new file mode 100644 index 00000000000..74493eee976 --- /dev/null +++ b/themes/bootstrap/templates/Auth/Database/create.phtml @@ -0,0 +1,36 @@ +<div class="control-group"> + <label class="control-label" for="account_firstname"><?=$this->transEsc('First Name')?>:</label> + <div class="controls"> + <input id="account_firstname" type="text" name="firstname" value="<?=$this->escapeHtml($this->request->get('firstname'))?>"/> + </div> +</div> +<div class="control-group"> + <label class="control-label" for="account_lastname"><?=$this->transEsc('Last Name')?>:</label> + <div class="controls"> + <input id="account_lastname" type="text" name="lastname" value="<?=$this->escapeHtml($this->request->get('lastname'))?>"/> + </div> +</div> +<div class="control-group"> + <label class="control-label" for="account_email"><?=$this->transEsc('Email Address')?>:</label> + <div class="controls"> + <input id="account_email" type="text" name="email" value="<?=$this->escapeHtml($this->request->get('email'))?>"/> + </div> +</div> +<div class="control-group"> + <label class="control-label" for="account_username"><?=$this->transEsc('Desired Username')?>:</label> + <div class="controls"> + <input id="account_username" type="text" name="username" value="<?=$this->escapeHtml($this->request->get('username'))?>"/> + </div> +</div> +<div class="control-group"> + <label class="control-label" for="account_password"><?=$this->transEsc('Password')?>:</label> + <div class="controls"> + <input id="account_password" type="password" name="password"/> + </div> +</div> +<div class="control-group"> + <label class="control-label" for="account_password2"><?=$this->transEsc('Password Again')?>:</label> + <div class="controls"> + <input id="account_password2" type="password" name="password2"/> + </div> +</div> diff --git a/themes/bootstrap/templates/Helpers/openurl.phtml b/themes/bootstrap/templates/Helpers/openurl.phtml new file mode 100644 index 00000000000..469722bf8cb --- /dev/null +++ b/themes/bootstrap/templates/Helpers/openurl.phtml @@ -0,0 +1,31 @@ +<? + $this->headScript()->appendFile("openurl.js"); + if ($this->openUrlEmbed) { + $class = ' class="fulltext openUrlEmbed openurl_id:' . $this->openUrlId . '"'; + } elseif ($this->openUrlWindow) { + $class = ' class="fulltext openUrlWindow window_settings:' . $this->escapeHtml($this->openUrlWindow) . '"'; + } else { + $class = ''; + } +?> +<a href="<?=$this->escapeHtml($this->openUrlBase . '?' . $this->openUrl)?>"<?=$class?>> + <? /* put the openUrl here in a span (COinS almost) so we can retrieve it later */ ?> + <span title="<?=$this->escapeHtml($this->openUrl)?>" class="openUrl"></span> + <? if ($this->openUrlGraphic): ?> + <? + $style = ''; + if ($this->openUrlGraphicWidth) { + $style .= 'width:' . $this->escapeHtml($this->openUrlGraphicWidth) . 'px;'; + } + if ($this->openUrlGraphicHeight) { + $style .= 'height:' . $this->escapeHtml($this->openUrlGraphicHeight) . 'px;'; + } + ?> + <img src="<?=$this->escapeHtml($this->openUrlGraphic)?>" alt="<?=$this->transEsc('Get full text')?>" style="<?=$style?>" /> + <? else: ?> + <?=$this->transEsc('Get full text')?> + <? endif; ?> +</a> +<? if ($this->openUrlEmbed): ?> + <div id="openUrlEmbed<?=$this->openUrlId?>" class="resolver hide"><?=$this->transEsc('Loading')?>...</div> +<? endif; ?> diff --git a/themes/bootstrap/templates/Recommend/AuthorFacets.phtml b/themes/bootstrap/templates/Recommend/AuthorFacets.phtml new file mode 100644 index 00000000000..32017af4c53 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/AuthorFacets.phtml @@ -0,0 +1,22 @@ +<? if ($this->recommend->getResults()->getResultTotal() > 0): ?> + <? $similarAuthors = $this->recommend->getSimilarAuthors(); ?> + <? if (!empty($similarAuthors['list'])): ?> + <div class="row-fluid"> + <p>Author Results for <strong><?=$this->escapeHtml($this->recommend->getSearchTerm()) ?></strong></p> + <div class="span4"> + <? foreach($similarAuthors['list'] as $i => $author): ?> + <? if ($i == 5): ?> + <a href="<?=$this->url('author-search') . '?lookfor=' . urlencode($this->recommend->getSearchTerm()) ?>"><strong><?=$this->transEsc("see all") ?> <?=(isset($similarAuthors['count']) && $similarAuthors['count']) ? $similarAuthors['count'] : ''?> »</strong></a> + </div> + <div class="span4"> + <? endif; ?> + <a href="<?=$this->url('author-home') . '?author=' . urlencode($author['value'])?>"><?=$author['value'] ?><? /* count disabled -- uncomment to add: echo ' - ' . $author['count']; */ ?></a> + <? if ($i+1<count($similarAuthors['list'])): ?> + <br/> + <? endif; ?> + <? endforeach; ?> + </div> + </div> + <br/> + <? endif; ?> +<? endif; ?> diff --git a/themes/bootstrap/templates/Recommend/AuthorInfo.phtml b/themes/bootstrap/templates/Recommend/AuthorInfo.phtml new file mode 100644 index 00000000000..b2838a8d898 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/AuthorInfo.phtml @@ -0,0 +1,14 @@ +<? $this->info = $this->recommend->getAuthorInfo() ?> +<? if (!(empty($this->info['description']) || empty($this->info))): ?> +<div class="well"> + <p class="lead"><?=$this->info['name'] ?></p> + + <? if (isset($this->info['image'])): ?> + <img class="pull-left pad" src="<?=$this->info['image'] ?>" alt="<?=$this->escapeHtml($this->info['altimage']) ?>" width="150px"/> + <? endif; ?> + + <?=preg_replace('/___baseurl___/', $this->url('search-results'), $this->info['description']) ?> + + <a class="wikipedia" href="http://<?=$this->info['wiki_lang'] ?>.wikipedia.org/wiki/<?=$this->escapeHtml($this->info['name']/*url*/) ?>" target="new"><?=$this->translate('wiki_link') ?></a> +</div> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/AuthorityRecommend.phtml b/themes/bootstrap/templates/Recommend/AuthorityRecommend.phtml new file mode 100644 index 00000000000..5a7cbdbfb8b --- /dev/null +++ b/themes/bootstrap/templates/Recommend/AuthorityRecommend.phtml @@ -0,0 +1,19 @@ +<? + $data = $this->recommend->getRecommendations(); + $results = $this->recommend->getResults(); +?> +<? if (is_array($data) && !empty($data)): ?> + <div class="authoritybox"> + <div><strong><?=$this->transEsc('See also')?>:</strong></div> + <div> + <? for ($i = 0; $i < count($data); $i++): ?> + <? + // Generate a new search URL that replaces the user's current term with the authority term: + $url = $this->url($results->getOptions()->getSearchAction()) + . $results->getUrlQuery()->replaceTerm($results->getParams()->getDisplayQuery(), $data[$i]['heading']); + ?> + <a href="<?=$url?>"><?=$this->escapeHtml($data[$i]['heading'])?></a><? if ($i != count($data) - 1): ?>, <? endif; ?> + <? endfor; ?> + </div> + </div> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/CatalogResults.phtml b/themes/bootstrap/templates/Recommend/CatalogResults.phtml new file mode 100644 index 00000000000..fbd0863666b --- /dev/null +++ b/themes/bootstrap/templates/Recommend/CatalogResults.phtml @@ -0,0 +1,40 @@ +<? $searchObject = $this->recommend->getResults(); $results = $searchObject->getResults(); if (!empty($results)): ?> +<div class="sidegroup"> + <h4><?=$this->transEsc('Catalog Results')?></h4> + + <ul class="similar"> + <? foreach ($results as $driver): ?> + <li> + <? $formats = $driver->getFormats(); $format = isset($formats[0]) ? $formats[0] : ''; ?> + <span class="<?=$this->record($driver)->getFormatClass($format)?>"> + <a href="<?=$this->recordLink()->getUrl($driver)?>" class="title"><? + $summHighlightedTitle = $driver->getHighlightedTitle(); + $summTitle = $driver->getTitle(); + if (!empty($summHighlightedTitle)) { + echo $this->highlight($this->addEllipsis($summHighlightedTitle, $summTitle)); + } else if (!empty($summTitle)) { + echo $this->escapeHtml($this->truncate($summTitle, 180)); + } else { + echo $this->transEsc('Title not available'); + } + ?></a> + </span> + <? $summAuthor = $driver->getPrimaryAuthor(); if (!empty($summAuthor)): ?> + <br /> + <?=$this->transEsc('By')?>: + <a href="<?=$this->record($driver)->getLink('author', $summAuthor)?>"><? + $summHighlightedAuthor = $driver->getHighlightedAuthor(); + echo !empty($summHighlightedAuthor) + ? $this->highlight($summHighlightedAuthor) + : $this->escapeHtml($summAuthor); + ?></a> + <? endif; ?> + <? $summDate = $driver->getPublicationDates(); if (!empty($summDate)): ?> + <br/><?=$this->transEsc('Published')?>: (<?=$this->escapeHtml($summDate[0])?>) + <? endif; ?> + </li> + <? endforeach; ?> + </ul> + <p><a href="<?=$this->url($searchObject->getOptions()->getSearchAction()) . $searchObject->getUrlQuery()->setLimit($searchObject->getOptions()->getDefaultLimit())?>"><?=$this->transEsc('More catalog results')?>...</a></p> +</div> +<? endif ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/CollectionSideFacets.phtml b/themes/bootstrap/templates/Recommend/CollectionSideFacets.phtml new file mode 100644 index 00000000000..e9789737198 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/CollectionSideFacets.phtml @@ -0,0 +1,37 @@ +<? + $this->overrideSideFacetCaption = 'In This Collection'; +?> +<? if ($this->recommend->keywordFilterEnabled()): ?> + <? + $keywordFilter = $this->recommend->getKeywordFilter(); + if (!empty($keywordFilter)) { + $this->extraSideFacetFilters = array( + 'Keyword' => array( + array( + 'value' => $keywordFilter, + 'displayText' => $keywordFilter, + 'specialType' => 'keyword' + ) + ) + ); + } + ?> + <? ob_start() ?> + <dl class="narrowList navmenu"> + <dt><?=$this->transEsc('Keyword Filter')?></dt> + <dd> + <form method="get" action="" name="keywordFilterForm" id="keywordFilterForm" class="keywordFilterForm"> + <input id="keywordFilter_lookfor" type="text" name="lookfor" value="<?=$this->escapeHtml($keywordFilter)?>"/> + <? foreach ($this->recommend->getResults()->getParams()->getFilterList(true) as $field => $filters): ?> + <? foreach ($filters as $filter): ?> + <input type="hidden" name="filter[]" value="<?=$this->escapeHtml($filter['field'])?>:"<?=$this->escapeHtml($filter['value'])?>"" /> + <? endforeach; ?> + <? endforeach; ?> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Set')?>"/> + </form> + </dd> + </dl> + <? $this->sideFacetExtraControls = ob_get_contents(); ?> + <? ob_end_clean(); ?> +<? endif; ?> +<?=$this->render('Recommend/SideFacets.phtml')?> diff --git a/themes/bootstrap/templates/Recommend/EuropeanaResults.phtml b/themes/bootstrap/templates/Recommend/EuropeanaResults.phtml new file mode 100644 index 00000000000..207e095a2fd --- /dev/null +++ b/themes/bootstrap/templates/Recommend/EuropeanaResults.phtml @@ -0,0 +1,32 @@ +<? $data = $this->recommend->getResults(); if (is_array($data)): ?> + <div class="sidegroup rssResults"> + <div class="suggestionHeader"> + <a href="http://www.europeana.eu/portal/" title="Europeana.eu" target="_blank"> + <img src="<?=$this->imageLink(strtolower($data['feedTitle']) . '.png')?>"/> + </a> + </div> + <div class="clearfix"></div> + <div> + <ul class="unstyled"> + <? $i = 0; foreach ($data['worksArray'] as $workKey => $work): ?> + <li class="suggestedResult <? (++$i % 2) ? 'alt ' : ''?>record<?=$i?>"> + <div class="resultitem"> + <? if (isset($work['enclosure'])): ?> + <span class="europeanaImg"><img class="img-polaroid" src="<?=$this->escapeHtml($work['enclosure'])?>" id="europeanaImage<?=$this->escapeHtml($workKey)?>"/></span> + <? endif; ?> + <a href="<?=$this->escapeHtml($work['link'])?>" target="_blank"> + <span><?=$this->escapeHtml($this->truncate($work['title'], 90))?></span> + </a> + <div class="clearfix"></div> + </li> + <? endforeach; ?> + </ul> + <p class="olSubjectMore"> + <a href="<?=$this->escapeHtml($data['sourceLink'])?>" title="<?=$this->escapeHtml($data['feedTitle'])?>" target="_blank"> + <?=$this->transEsc('more')?>... + </a> + </p> + </div> + </div> + <div class="clearfix"></div> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/EuropeanaResultsDeferred.phtml b/themes/bootstrap/templates/Recommend/EuropeanaResultsDeferred.phtml new file mode 100644 index 00000000000..9e36fdf0f81 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/EuropeanaResultsDeferred.phtml @@ -0,0 +1,9 @@ +<? + // Set up Javascript for use below: + $loadJs = 'var url = path + "/AJAX/Recommend?' . $this->recommend->getUrlParams() . '";' + . "\$('#EuropeanaDeferredRecommend').load(url);"; +?> +<div id="EuropeanaDeferredRecommend"> + <p><?=$this->transEsc("Loading")?>... <img src="<?=$this->imageLink('ajax_loading.gif')?>" /></p> + <?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $loadJs, 'SET')?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/ExpandFacets.phtml b/themes/bootstrap/templates/Recommend/ExpandFacets.phtml new file mode 100644 index 00000000000..7d21b32b6a8 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/ExpandFacets.phtml @@ -0,0 +1,17 @@ +<? + $expandFacetSet = $this->recommend->getExpandedSet(); + // Get empty search object to use as basis for parameter generation below: + $blankResults = $this->recommend->getEmptyResults(); +?> +<? if ($expandFacetSet): ?> + <div class="sidegroup"> + <? foreach ($expandFacetSet as $title=>$cluster): ?> + <h4><?=$this->translate($cluster['label']) ?></h4> + <ul class="unstyled"> + <? foreach ($cluster['list'] as $thisFacet): ?> + <li><a href="<?=$this->url('search-results') . $blankResults->getUrlQuery()->addFacet($title, $thisFacet['value'])?>"><?=$this->escapeHtml($thisFacet['displayText'])?></a></li> + <? endforeach; ?> + </ul> + <? endforeach; ?> + </div> +<? endif; ?> diff --git a/themes/bootstrap/templates/Recommend/FacetCloud.phtml b/themes/bootstrap/templates/Recommend/FacetCloud.phtml new file mode 100644 index 00000000000..4ece12d9566 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/FacetCloud.phtml @@ -0,0 +1,28 @@ +<? + $expandFacetSet = $this->recommend->getExpandedSet(); + // Get empty search object to use as basis for parameter generation below: + $blankResults = $this->recommend->getEmptyResults(); + $cloudLimit = $this->recommend->getFacetLimit(); +?> +<? if ($expandFacetSet): ?> + <div class="sidegroup"> + <? foreach ($expandFacetSet as $title=>$facets): ?> + <dl class="narrowList navmenu"> + <dt><?=$this->translate($facets['label']) ?></dt> + <? + foreach ($facets['list'] as $i => $facetItem) { + if ($i < $cloudLimit) { + echo (($i == 0) ? '' : ', ') + . '<a href="' . $blankResults->getUrlQuery()->addFacet($title, $facetItem['value']) . '">' + . $this->escapeHtml($facetItem['displayText']) + . '</a> (' . $this->escapeHtml($facetItem['count']) . ')'; + } else { + echo ', ...'; + break; + } + } + ?> + </dl> + <? endforeach; ?> + </div> +<? endif; ?> diff --git a/themes/bootstrap/templates/Recommend/FavoriteFacets.phtml b/themes/bootstrap/templates/Recommend/FavoriteFacets.phtml new file mode 100644 index 00000000000..cd221930b8e --- /dev/null +++ b/themes/bootstrap/templates/Recommend/FavoriteFacets.phtml @@ -0,0 +1,37 @@ +<? $results = $this->recommend->getResults(); ?> +<? $sideFacetSet = $this->recommend->getFacetSet(); ?> + +<? if (isset($sideFacetSet['lists']) && !empty($sideFacetSet['lists']['list'])): ?> + <h4 class="list"><?=$this->transEsc($sideFacetSet['lists']['label'])?></h4> + <ul class="nav nav-list"> + <? foreach ($sideFacetSet['lists']['list'] as $current): ?> + <li<? if ($current['isApplied']): ?> class="active"<? endif ?>> + <a href="<?=$this->url('userList', array('id' => $current['value']))?>"><?=$this->escapeHtml($current['displayText'])?> <span class="pull-right"><?=$this->escapeHtml($current['count'])?></span></a> + </li> + <? endforeach; ?> + </ul> +<? endif; ?> + +<? if (isset($sideFacetSet['tags']) && !empty($sideFacetSet['tags']['list'])): ?> + <h4 class="tag"><?=$this->transEsc($sideFacetSet['tags']['label'])?></h4> + <ul class="nav nav-list"> + <? $filterList = $results->getParams()->getFilterList(true); + $tagFilterList = isset($filterList[$sideFacetSet['tags']['label']]) ? $filterList[$sideFacetSet['tags']['label']] : null; ?> + <? if (!empty($tagFilterList)): ?> + <? $field = $sideFacetSet['tags']['label']; ?> + <? foreach ($tagFilterList as $filter): ?> + <? $removeLink = $this->currentPath().$results->getUrlQuery()->removeFacet($filter['field'], $filter['value']); ?> + <li class="active"> + <a href="<?=$removeLink?>"><i class="icon-remove"></i> <?=$this->escapeHtml($filter['displayText'])?> <span class="pull-right"><?=$this->escapeHtml($filter['count'])?></span></a> + </li> + <? endforeach; ?> + <? endif; ?> + <? foreach($sideFacetSet['tags']['list'] as $thisFacet): ?> + <? if(!$thisFacet['isApplied']): ?> + <li> + <a href="<?=$this->currentPath().$results->getUrlQuery()->addFacet('tags', $thisFacet['value'])?>"><i class="icon-plus"></i> <?=$this->escapeHtml($thisFacet['displayText'])?> <span class="pull-right"><?=$this->escapeHtml($thisFacet['count'])?></span></a> + </li> + <? endif ?> + <? endforeach; ?> + </ul> +<? endif; ?> diff --git a/themes/bootstrap/templates/Recommend/OpenLibrarySubjects.phtml b/themes/bootstrap/templates/Recommend/OpenLibrarySubjects.phtml new file mode 100644 index 00000000000..0ff984e793e --- /dev/null +++ b/themes/bootstrap/templates/Recommend/OpenLibrarySubjects.phtml @@ -0,0 +1,31 @@ +<? $data = $this->recommend->getResult(); if (is_array($data)): ?> +<div class="sidegroup"> + <h4>Open Library <? /* Intentionally not translated -- this is a site name, not a phrase */ ?></h4> + <div><?=$this->transEsc('Results for')?> <?=$this->escapeHtml($data['subject'])?> ...</div> + <ul class="similar"> + <? foreach ($data['worksArray'] as $work): ?> + <li> + <a href="http://openlibrary.org<?=$work['key']?>" title="<?=$this->transEsc('Get full text')?>" target="_blank"> + <span class="olSubjectCover"> + <? if (isset($work['cover_id']) && !empty($work['cover_id'])): ?> + <img src="http://covers.openlibrary.org/b/<?=$this->escapeHtml($work['cover_id_type'])?>/<?=$this->escapeHtml($work['cover_id'])?>-S.jpg" class="olSubjectImage" alt="<?=$this->escapeHtml($work['title'])?>" /> + <? else: ?> + <img src="<?=$this->imageLink('noCover2.gif')?>" class="olSubjectImage" alt="<?=$this->escapeHtml($work['title'])?>" /> + <? endif; ?> + </span> + <span><?=$this->escapeHtml($this->truncate($work['title'], 50))?></span> + <? if (isset($work['mainAuthor'])): ?> + <span class="olSubjectAuthor"><?=$this->transEsc('by')?> <?=$this->escapeHtml($this->truncate($work['mainAuthor'], 40))?></span> + <? endif; ?> + </a> + <div class="clearfix"></div> + </li> + <? endforeach; ?> + </ul> + <p class="olSubjectMore"> + <a href="http://openlibrary.org/subjects" title="Open Library" target="_blank"> + <?=$this->transEsc('more')?>... + </a> + </p> +</div> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/OpenLibrarySubjectsDeferred.phtml b/themes/bootstrap/templates/Recommend/OpenLibrarySubjectsDeferred.phtml new file mode 100644 index 00000000000..e3c0de443f1 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/OpenLibrarySubjectsDeferred.phtml @@ -0,0 +1,9 @@ +<? + // Set up Javascript for use below: + $loadJs = 'var url = path + "/AJAX/Recommend?' . $this->recommend->getUrlParams() . '";' + . "\$('#openLibraryDeferredRecommend').load(url);"; +?> +<div id="openLibraryDeferredRecommend"> + <p><?=$this->transEsc("Loading")?>... <img src="<?=$this->imageLink('ajax_loading.gif')?>" /></p> + <?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $loadJs, 'SET')?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/PubDateVisAjax.phtml b/themes/bootstrap/templates/Recommend/PubDateVisAjax.phtml new file mode 100644 index 00000000000..b1677741242 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/PubDateVisAjax.phtml @@ -0,0 +1,27 @@ +<? $visFacets = $this->recommend->getVisFacets(); ?> +<? if ($visFacets): ?> + + <? /* load jQuery flot */ ?> +<?$this->headScript()->appendFile('flot/excanvas.min.js', null, array('conditional' => 'IE')); + $this->headScript()->appendFile('flot/jquery.flot.min.js'); + $this->headScript()->appendFile('flot/jquery.flot.selection.min.js'); + $this->headScript()->appendFile('pubdate_vis.js'); ?> + + <? foreach ($visFacets as $facetField=>$facetRange): ?> + <div class="authorbox"> + <div id="datevis<?=$this->escapeHtml($facetField)?>xWrapper" style="display: none;"> + <strong><?=$this->translate($facetRange['label']) ?></strong> + <? /* space the flot visualisation */ ?> + <div id="datevis<?=$facetField ?>x" style="margin:0 10px;width:auto;height:80px;cursor:crosshair;"></div> + <div id="clearButtonText" style="display: none"><?=$this->translate('Clear') ?></div> + </div> + </div> + <? endforeach; ?> + <? + $js = "loadVis('" . $this->recommend->getFacetFields() . "', '" + . $this->recommend->getSearchParams() . "', path, " + . $this->recommend->getZooming() . ");"; + echo $this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $js, 'SET'); + ?> + +<? endif; ?> diff --git a/themes/bootstrap/templates/Recommend/ResultGoogleMapAjax.phtml b/themes/bootstrap/templates/Recommend/ResultGoogleMapAjax.phtml new file mode 100644 index 00000000000..cb87c1f2fdb --- /dev/null +++ b/themes/bootstrap/templates/Recommend/ResultGoogleMapAjax.phtml @@ -0,0 +1,204 @@ +<? + $searchParams = $this->recommend->getSearchParams(); + + $this->headScript()->appendFile('https://maps.googleapis.com/maps/api/js?v=3.8&sensor=false&language='.$this->recommend->userLang()); + $this->headScript()->appendFile('https://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.9/src/markerclusterer_packed.js'); +?> +<script type="text/javascript"> +/** + * Overriding clusterer default function for determining the label text and style + * for a cluster icon. + * + * @param {Array.<google.maps.Marker>} markers The array of represented by the cluster. + * @param {number} numStyles The number of marker styles available. + * @return {ClusterIconInfo} The information resource for the cluster. + * @constant + * @ignore + */ +MarkerClusterer.CALCULATOR = function (markers, numStyles) { + var index = 0; + var count = markers.length.toString(); + var dispText = 0; + for (calcMarker in markers){ + dispText = dispText + parseInt(markers[calcMarker].getTitle()); + } + var dv = dispText; + while (dv !== 0) { + dv = parseInt(dv / 10, 10); + index++; + } + + index = Math.min(index, numStyles); + return { + text: dispText.toString(), + index: index + }; +}; + +/** + * Overriding clusterer adding the icon to the DOM. + */ +ClusterIcon.prototype.onAdd = function () { + var cClusterIcon = this; + + this.div_ = document.createElement("div"); + this.div_.className = "clusterDiv"; + if (this.visible_) { + this.show(); + } + + this.getPanes().overlayMouseTarget.appendChild(this.div_); + + google.maps.event.addDomListener(this.div_, "click", function () { + var mc = cClusterIcon.cluster_.getMarkerClusterer(); + google.maps.event.trigger(mc, "click", cClusterIcon.cluster_); + google.maps.event.trigger(mc, "clusterclick", cClusterIcon.cluster_); // deprecated name + + // The default click handler follows. Disable it by setting + // the zoomOnClick property to false. + var mz = mc.getMaxZoom(); + if (mc.getZoomOnClick()) { + // Zoom into the cluster. + mc.getMap().fitBounds(cClusterIcon.cluster_.getBounds()); + // Don't zoom beyond the max zoom level + if (mz && (mc.getMap().getZoom() > mz)) { + mc.getMap().setZoom(mz + 1); + } + } + }); + + google.maps.event.addDomListener(this.div_, "mouseover", function () { + var mc = cClusterIcon.cluster_.getMarkerClusterer(); + google.maps.event.trigger(mc, "mouseover", cClusterIcon.cluster_); + }); + + google.maps.event.addDomListener(this.div_, "mouseout", function () { + var mc = cClusterIcon.cluster_.getMarkerClusterer(); + google.maps.event.trigger(mc, "mouseout", cClusterIcon.cluster_); + }); +}; + +/** + * Overriding the image path for ssl + * + * The default root name for the marker cluster images. + * + * @type {string} + * @constant + */ +MarkerClusterer.IMAGE_PATH = "https://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclustererplus/images/m"; + +var markers; +var mc; +var markersData; +var latlng; +var myOptions; +var map; +var infowindow = new google.maps.InfoWindow({maxWidth: 480, minWidth: 480}); + function initialize() { + var url = path+'/AJAX/json?method=getMapData&<?=$searchParams ?>'; + //alert('go: ' + url); + $.getJSON(url, function(data){ + //alert(data); + markersData = data['data']; + if (markersData.length <= 0){ + return; + } + latlng = new google.maps.LatLng(0, 0); + myOptions = { + zoom: 1, + center: latlng, + mapTypeControl: true, + mapTypeControlOptions: { + style: google.maps.MapTypeControlStyle.DROPDOWN_MENU + }, + mapTypeId: google.maps.MapTypeId.ROADMAP + }; + map = new google.maps.Map(document.getElementById("map_canvas"), + myOptions); + //mc = new MarkerClusterer(map); + showMarkers(); + var checkbx = document.getElementById("useCluster"); + var wrap = document.getElementById("mapWrap"); + wrap.style.display = "block"; + checkbx.style.display = "block"; + }); + } + function showMarkers(){ + deleteOverlays(); + if(mc != null) { + mc.clearMarkers(); + } + markers = []; + + for (var i = 0; i<markersData.length; i++){ + var disTitle = markersData[i].title; + var iconSize = "0.5"; + if (disTitle>99){ + iconSize = "0.75"; + } + var markerImg = "https://chart.googleapis.com/chart?chst=d_map_spin&chld="+iconSize+"|0|F44847|10|_|" + disTitle; + var labelXoffset = 1 + disTitle.length * 4; + var latLng = new google.maps.LatLng(markersData[i].lat , markersData[i].lon) + var marker = new google.maps.Marker({//MarkerWithLabel + loc_facet: markersData[i].location_facet, + position: latLng, + map: map, + title: disTitle, + icon: markerImg + }); + google.maps.event.addListener(marker, 'click', function() { + infowindow.close(); + //infowindow.setContent(this.html); + //infowindow.open(map, this); + load_content(this); + }); + markers.push(marker); + } + if (document.getElementById("usegmm").checked) { + mc = new MarkerClusterer(map, markers); + } else { + for (var i = 0; i < markers.length; i++) { + map.addOverlay(markers[i]); + } + } + } + function load_content(marker){ + var xmlhttp; + if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safarihttp://www.google.ie/search?hl=en&cp=10&gs_id=2i&xhr=t&q=php+cast+string+to+int&pq=php+int+to+string&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.&biw=1876&bih=1020&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi + xmlhttp=new XMLHttpRequest(); + } + else{// code for IE6, IE5 + xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); + } + var ajaxUrl = path+'/AJAX/ResultGoogleMapInfo?limit=5&filter[]=long_lat%3A"' + marker.loc_facet+'"&<?=$searchParams ?>'; + xmlhttp.open("GET", ajaxUrl, false); + xmlhttp.send(); + + infowindow.setContent(xmlhttp.responseText); + infowindow.open(map, marker); + } + function deleteOverlays() { + if (markers) { + for (i in markers) { + markers[i].setMap(null); + } + markers.length = 0; + } + } + function refreshMap() { + showMarkers(); + } + + google.maps.event.addDomListener(window, 'load', initialize); +</script> +<div id="mapWrap" onload="initialize()" style="height:479px;display:none;margin-bottom:1em" class="clearfix"> + <div id="map_canvas" style="width: 100%; height: 100%"></div> + <div class="mapClusterToggle" id="useCluster"> + <label for="usegmm" class="checkbox"> + <input type="checkbox" id="usegmm" checked="true" onclick="refreshMap();"></input> + <?=$this->transEsc('google_map_cluster_points') ?> + </label> + </div> +</div> +<br/> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/SideFacets.phtml b/themes/bootstrap/templates/Recommend/SideFacets.phtml new file mode 100644 index 00000000000..513c4e1427d --- /dev/null +++ b/themes/bootstrap/templates/Recommend/SideFacets.phtml @@ -0,0 +1,108 @@ +<? $results = $this->recommend->getResults(); ?> +<? if ($results->getResultTotal() > 0): ?> + <h4><?=$this->transEsc(isset($this->overrideSideFacetCaption) ? $this->overrideSideFacetCaption : 'Narrow Search')?></h4> +<? endif; ?> +<? $checkboxFilters = $results->getParams()->getCheckboxFacets(); if (count($checkboxFilters) > 0): ?> + <? foreach ($checkboxFilters as $current): ?> + <div class="checkboxFilter<?=($results->getResultTotal() < 1 && !$current['selected'] && !$current['alwaysVisible']) ? ' hide' : ''?>"> + <label class="checkbox"> + <input type="checkbox" name="filter[]" value="<?=$this->escapeHtml($current['filter'])?>" + <?=$current['selected'] ? 'checked="checked"' : ''?> id="<?=$this->escapeHtml(str_replace(' ', '', $current['desc']))?>" + onclick="document.location.href='<?=$current['selected'] ? $results->getUrlQuery()->removeFilter($current['filter']) : $results->getUrlQuery()->addFilter($current['filter'])?>';" /> + <?=$this->transEsc($current['desc'])?> + </label> + </div> + <? endforeach; ?> +<? endif; ?> +<? $extraFilters = isset($this->extraSideFacetFilters) ? $this->extraSideFacetFilters : array(); ?> +<? $filterList = array_merge($results->getParams()->getFilterList(true), $extraFilters); if (!empty($filterList)): ?> + <dl> + <dt><?=$this->transEsc('Remove Filters')?></dt> + <? foreach ($filterList as $field => $filters): ?> + <? foreach ($filters as $filter): ?> + <? if (isset($filter['specialType']) && $filter['specialType'] == 'keyword') { + $removeLink = $this->currentPath().$results->getUrlQuery()->replaceTerm($filter['value'], ''); + } else { + $removeLink = $this->currentPath().$results->getUrlQuery()->removeFacet($filter['field'], $filter['value']); + } + if ($filter['displayText'] == '[* TO *]') { + $filter['displayText'] = $this->translate('filter_wildcard'); + } + ?> + <dd> + <a href="<?=$removeLink?>" class="text-error"><i class="icon-remove"></i> <?=$this->transEsc($field)?>: <?=$this->escapeHtml($filter['displayText'])?></a> + </dd> + <? endforeach; ?> + <? endforeach; ?> + </dl> +<? endif; ?> +<?= isset($this->sideFacetExtraControls) ? $this->sideFacetExtraControls : '' ?> +<? $sideFacetSet = $this->recommend->getFacetSet(); $dateFacets = $this->recommend->getDateFacets(); ?> +<? if (!empty($sideFacetSet) && $results->getResultTotal() > 0): ?> + <? foreach ($sideFacetSet as $title => $cluster): ?> + <dl> + <? if (isset($dateFacets[$title])): ?> + <dt><?=$this->transEsc($cluster['label'])?></dt> + <dd style="margin-right:10px"> + <form class="form-inline text-center" action="" name="<?=$this->escapeHtml($title)?>Filter" id="<?=$this->escapeHtml($title)?>Filter"> + <?=$results->getUrlQuery()->asHiddenFields(array('filter' => "/^{$title}:.*/"))?> + <input type="hidden" name="daterange[]" value="<?=$this->escapeHtml($title)?>"/> + <div class="row-fluid"> + <label class="span6" for="<?=$this->escapeHtml($title)?>from"> + <?=$this->transEsc('date_from')?>:<br/> + <input type="text" maxlength="4" class="span12" name="<?=$this->escapeHtml($title)?>from" id="<?=$this->escapeHtml($title)?>from" value="<?=isset($dateFacets[$title][0])?$dateFacets[$title][0]:''?>" /> + </label> + <label class="span6" for="<?=$this->escapeHtml($title)?>to"> + <?=$this->transEsc('date_to')?>:<br/> + <input type="text" maxlength="4" class="span12" name="<?=$this->escapeHtml($title)?>to" id="<?=$this->escapeHtml($title)?>to" value="<?=isset($dateFacets[$title][1])?$dateFacets[$title][1]:''?>" /> + </label> + </div> + <div class="row-fluid"><input type="text" class="span10 hidden" id="dateSlider"/></div> + <input class="btn" type="submit" value="<?=$this->transEsc('Set')?>"/> + </form> + </dd> + <? $this->headScript()->appendFile('bootstrap-slider.js'); ?> + <? + $min = !empty($dateFacets[$title][0]) ? $dateFacets[$title][0] : 1400; + $max = !empty($dateFacets[$title][1]) ? $dateFacets[$title][1] : date('Y', time()+31536000); + $script = <<<JS + $(document).ready(function() { + var fillTexts = function() { + var v = dateSlider.getValue(); + $('#{$this->escapeHtml($title)}from').val(v[0]); + $('#{$this->escapeHtml($title)}to').val(v[1]); + }; + var min = {$min}; + var max = {$max}; // Next year + var dateSlider = $('#dateSlider') + .slider({ + 'min':min, + 'max':max, + 'handle':"square", + 'tooltip':"hide", + 'value':[min,max] + }) + .on('slide', fillTexts) + .data('slider'); + }); +JS; + ?> + <?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $script, 'SET'); ?> + <? else: ?> + <dt><?=$this->transEsc($cluster['label'])?></dt> + <? foreach ($cluster['list'] as $i=>$thisFacet): ?> + <? if ($i == 6): ?> + <dd id="more<?=$this->escapeHtml($title)?>"><a href="javascript:moreFacets('<?=$title ?>')"><?=$this->transEsc('more')?> ...</a></dd> + <span class="hidden" id="narrowGroupHidden_<?=$this->escapeHtml($title)?>"> + <? endif; ?> + <? if ($thisFacet['isApplied']): ?> + <dd><?=$this->escapeHtml($thisFacet['displayText'])?> <i class="icon-ok pull-right"></i></dd> + <? else: ?> + <dd class="clearfix"><a href="<?=$this->currentPath().$results->getUrlQuery()->addFacet($title, $thisFacet['value'])?>"><?=$this->escapeHtml($thisFacet['displayText'])?></a> <span class="pull-right"><?=number_format($thisFacet['count'])?></span></dd> + <? endif; ?> + <? endforeach; ?> + <? if ($i > 5): ?><dd><a href="javascript:lessFacets('<?=$title ?>')"><?=$this->transEsc('less')?> ...</a></dd></span><? endif; ?> + <? endif; ?> + </dl> + <? endforeach; ?> +<? endif; ?> diff --git a/themes/bootstrap/templates/Recommend/SummonBestBets.phtml b/themes/bootstrap/templates/Recommend/SummonBestBets.phtml new file mode 100644 index 00000000000..6175144c575 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/SummonBestBets.phtml @@ -0,0 +1,7 @@ +<? $summonBestBets = $this->recommend->getResults(); if (!empty($summonBestBets)): ?> +<div class="authorbox"> + <? foreach ($summonBestBets as $current): ?> + <p><a href="<?=$this->escapeHtml($current['link'])?>"><?=$this->escapeHtml($current['title'])?></a><br/><?=$current['description']?></p> + <? endforeach; ?> +</div> +<? endif; ?> diff --git a/themes/bootstrap/templates/Recommend/SummonDatabases.phtml b/themes/bootstrap/templates/Recommend/SummonDatabases.phtml new file mode 100644 index 00000000000..ab16b72a737 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/SummonDatabases.phtml @@ -0,0 +1,8 @@ +<? $summonDatabases = $this->recommend->getResults(); if (!empty($summonDatabases)): ?> +<div class="authorbox"> + <p><?=$this->transEsc('summon_database_recommendations')?></p> + <? foreach ($summonDatabases as $current): ?> + <p><a href="<?=$this->escapeHtml($current['link'])?>"><?=$this->escapeHtml($current['title'])?></a><br/><?=$this->escapeHtml($current['description'])?></p> + <? endforeach; ?> +</div> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/SummonResults.phtml b/themes/bootstrap/templates/Recommend/SummonResults.phtml new file mode 100644 index 00000000000..87fb5b7aa8f --- /dev/null +++ b/themes/bootstrap/templates/Recommend/SummonResults.phtml @@ -0,0 +1,39 @@ +<? $searchObject = $this->recommend->getResults(); $results = $searchObject->getResults(); if (!empty($results)): ?> +<div class="sidegroup"> + <h4><?=$this->transEsc('Summon Results')?></h4> + + <ul class="unstyled"> + <? foreach ($results as $driver): ?> + <li> + <? $formats = $driver->getFormats(); $format = isset($formats[0]) ? $formats[0] : ''; ?> + <span class="<?=$this->record($driver)->getFormatClass($format)?>"> + <a href="<?=$this->recordLink()->getUrl($driver)?>" class="title"><? + $summHighlightedTitle = $driver->getHighlightedTitle(); + $summTitle = $driver->getTitle(); + if (!empty($summHighlightedTitle)) { + echo $this->highlight($this->addEllipsis($summHighlightedTitle, $summTitle)); + } else if (!empty($summTitle)) { + echo $this->escapeHtml($this->truncate($summTitle, 180)); + } else { + echo $this->transEsc('Title not available'); + } + ?></a> + </span> + <span class="small"> + <? $summAuthor = $driver->getPrimaryAuthor(); if (!empty($summAuthor)): ?> + <br /> + <?=$this->transEsc('by')?> + <a href="<?=$this->record($driver)->getLink('author', $summAuthor)?>"><? + $summHighlightedAuthor = $driver->getHighlightedAuthor(); + echo !empty($summHighlightedAuthor) + ? $this->highlight($summHighlightedAuthor) + : $this->escapeHtml($summAuthor); + ?></a> + <? endif; ?> + </span> + </li> + <? endforeach; ?> + </ul> + <p><a href="<?=$this->url($searchObject->getOptions()->getSearchAction()) . $searchObject->getUrlQuery()->setLimit($searchObject->getOptions()->getDefaultLimit())?>"><?=$this->transEsc('More Summon results')?>...</a></p> +</div> +<? endif ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/SummonResultsDeferred.phtml b/themes/bootstrap/templates/Recommend/SummonResultsDeferred.phtml new file mode 100644 index 00000000000..e6d86205315 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/SummonResultsDeferred.phtml @@ -0,0 +1,9 @@ +<? + // Set up Javascript for use below: + $loadJs = 'var url = path + "/AJAX/Recommend?' . $this->recommend->getUrlParams() . '";' + . "\$('#SummonDeferredRecommend').load(url);"; +?> +<div id="SummonDeferredRecommend"> + <p><?=$this->transEsc("Loading")?>... <img src="<?=$this->imageLink('icons/ajax_loading.gif')?>" /></p> + <?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $loadJs, 'SET')?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/SwitchType.phtml b/themes/bootstrap/templates/Recommend/SwitchType.phtml new file mode 100644 index 00000000000..498fa27af08 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/SwitchType.phtml @@ -0,0 +1,6 @@ +<? if ($handler = $this->recommend->getNewHandler()): ?> + <div class="alert alert-info"> + <?=$this->transEsc('widen_prefix')?> + <a href="<?=$this->recommend->getResults()->getUrlQuery()->setHandler($handler)?>"><?=$this->transEsc($this->recommend->getNewHandlerName())?></a>. + </div> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/TopFacets.phtml b/themes/bootstrap/templates/Recommend/TopFacets.phtml new file mode 100644 index 00000000000..220acb2dd6e --- /dev/null +++ b/themes/bootstrap/templates/Recommend/TopFacets.phtml @@ -0,0 +1,36 @@ +<? + $topFacetSet = $this->recommend->getTopFacetSet(); + $topFacetSettings = $this->recommend->getTopFacetSettings(); +?> +<? if (isset($topFacetSet)): ?> + <? foreach($topFacetSet as $title => $cluster): ?> + <strong><?=$this->transEsc($cluster['label'])?></strong><?=$this->transEsc("top_facet_suffix") ?> + <div class="row-fluid"> + <? $iter=1;$corner=$topFacetSettings['rows']*$topFacetSettings['cols']; ?> + <? foreach($cluster['list'] as $thisFacet): ?> + <? if ($iter == $corner+1): ?> + <span class="span12"><a id="more<?=$this->escapeHtml($title)?>" href="#" onclick="moreFacets('<?=$this->escapeHtml($title)?>'); return false;"><?=$this->transEsc('more') ?> ...</a></span> + </div> + <div class="hidden clearfix" id="narrowGroupHidden_<?=$this->escapeHtml($title)?>"> + <span class="span12"> + <strong><?=$this->transEsc('top_facet_additional_prefix').$this->transEsc($cluster['label']) ?></strong><?=$this->transEsc("top_facet_suffix") ?> + </span> + <div class="row-fluid"> + <? endif; ?> + <span class="span<?=floor(12/$topFacetSettings['cols'])?>"> + <? if ($thisFacet['isApplied']): ?> + <?=$this->escapeHtml($thisFacet['displayText'])?> <img src="<?=$this->imageLink('silk/tick.png')?>" alt="<?=$this->transEsc('Selected') ?>"/> + <? else: ?> + <a href="<?=$this->currentPath().$this->recommend->getResults()->getUrlQuery()->addFacet($title, $thisFacet['value'])?>"><?=$this->escapeHtml($thisFacet['displayText'])?></a> (<?=$thisFacet['count'] ?>) + <? endif; ?> + </span> + <? if ($iter%$topFacetSettings['cols'] == 0 && $iter > 0): ?></div><div class="row-fluid"><? endif; ?> + <? if (count($cluster['list']) > $corner && $iter == count($cluster['list'])): ?> + <a class="span12" href="#" onclick="lessFacets('<?=$title ?>'); return false;"><?=$this->transEsc('less') ?> ...</a> + </div> + <? endif; ?> + <? $iter++; ?> + <? endforeach; ?> + </div> + <? endforeach; ?> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/WebResults.phtml b/themes/bootstrap/templates/Recommend/WebResults.phtml new file mode 100644 index 00000000000..768d72c22ee --- /dev/null +++ b/themes/bootstrap/templates/Recommend/WebResults.phtml @@ -0,0 +1,31 @@ +<? $searchObject = $this->recommend->getResults(); $results = $searchObject->getResults(); if (!empty($results)): ?> +<div class="sidegroup"> + <h4><?=$this->transEsc('Library Web Search')?></h4> + + <ul class="similar"> + <? foreach ($results as $driver): ?> + <li> + <a href="<?=$this->escapeHtml($driver->getUrl())?>" class="title"><? + $summHighlightedTitle = $driver->getHighlightedTitle(); + $summTitle = $driver->getTitle(); + if (!empty($summHighlightedTitle)) { + echo $this->highlight($this->addEllipsis($summHighlightedTitle, $summTitle)); + } else if (!empty($summTitle)) { + echo $this->escapeHtml($this->truncate($summTitle, 180)); + } else { + echo $this->transEsc('Title not available'); + } + ?></a> + <? $snippet = $driver->getHighlightedSnippet(); ?> + <? $summary = $driver->getSummary(); ?> + <? if (!empty($snippet)): ?> + <br /><?=$this->highlight($snippet['snippet'])?> + <? elseif (!empty($summary)): ?> + <br /><?=$this->escapeHtml($summary[0])?> + <? endif; ?> + </li> + <? endforeach; ?> + </ul> + <p><a href="<?=$this->url($searchObject->getOptions()->getSearchAction()) . $searchObject->getUrlQuery()->setLimit($searchObject->getOptions()->getDefaultLimit())?>"><?=$this->transEsc('Find More')?>...</a></p> +</div> +<? endif ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Recommend/WorldCatIdentities.phtml b/themes/bootstrap/templates/Recommend/WorldCatIdentities.phtml new file mode 100644 index 00000000000..0b2d17aed4c --- /dev/null +++ b/themes/bootstrap/templates/Recommend/WorldCatIdentities.phtml @@ -0,0 +1,30 @@ +<? $worldCatIdentities = $this->recommend->getIdentities(); if (!empty($worldCatIdentities)): ?> + <div> + <h3><?=$this->transEsc('Authors Related to Your Search')?></h3> + <dl> + <? $i = 0; foreach ($worldCatIdentities as $author => $subjects): ?> + <? if (++$i == 4): ?> + <dd id="moreWCIdents"><a href="#" onclick="moreFacets('WCIdents'); return false;"><?=$this->transEsc('more')?> ...</a></dd> + <span class="hidden" id="narrowGroupHidden_WCIdents"> + <? endif; ?> + <dd> + <a href="<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($author)?>%22&type=Author"><?=$this->escapeHtml($author)?></a> + <? if (count($subjects) > 0): ?> + <dl> + <dd><?=$this->transEsc('Related Subjects')?>:</dd> + <? $j = 0; foreach ($subjects as $subj): ?> + <? if (++$j == 3): ?> + <dd id="moreWCIdents<?=$i?>"><a href="#" onclick="moreFacets('WCIdents<?=$i?>'); return false;"><?=$this->transEsc('more')?> ...</a></dd> + <span class="hidden" id="narrowGroupHidden_WCIdents<?=$i?>"> + <? endif; ?> + <dd>• <a href="<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($subj)?>%22&type=Subject"><?=$this->escapeHtml($subj)?></a></dd> + <? endforeach; ?> + <? if ($j > 2): ?><dd><a href="#" onclick="lessFacets('WCIdents<?=$i?>'); return false;"><?=$this->transEsc('less')?> ...</a></dd></span><? endif; ?> + </dl> + <? endif; ?> + </dd> + <? endforeach; ?> + <? if ($i > 3): ?><dd><a href="#" onclick="lessFacets('WCIdents'); return false;"><?=$this->transEsc('less')?> ...</a></dd></span><? endif; ?> + </dl> + </div> +<? endif; ?> diff --git a/themes/bootstrap/templates/Recommend/WorldCatTerms.phtml b/themes/bootstrap/templates/Recommend/WorldCatTerms.phtml new file mode 100644 index 00000000000..213610b4373 --- /dev/null +++ b/themes/bootstrap/templates/Recommend/WorldCatTerms.phtml @@ -0,0 +1,21 @@ +<? $worldCatTerms = $this->recommend->getTerms(); if (!empty($worldCatTerms)): ?> +<h4><?=$this->transEsc('Subject Recommendations')?></h4> +<div class="row-fluid"> + <? $i = 0; foreach ($worldCatTerms as $type => $section): ?> + <div class="span4"> + <dl> + <dt><?=$this->transEsc('wcterms_' . $type)?></dt> + <? $j = 0; foreach ($section as $subj): ?> + <? if (++$j == 4): ?> + <dd id="moreWCTerms<?=$this->escapeHtml($type)?>"><a href="#" onclick="moreFacets('WCTerms<?=$this->escapeHtml($type)?>'); return false;"><?=$this->transEsc('more')?> ...</a></dd> + <span class="hidden" id="narrowGroupHidden_WCTerms<?=$this->escapeHtml($type)?>"> + <? endif; ?> + <dd>• <a href="<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($subj)?>%22&type=Subject"><?=$this->escapeHtml($subj)?></a></dd> + <? endforeach; ?> + <? if ($j > 3): ?><dd><a href="#" onclick="lessFacets('WCTerms<?=$this->escapeHtml($type)?>'); return false;"><?=$this->transEsc('less')?> ...</a></dd></span><? endif; ?> + </dl> + </div> + <? endforeach; ?> + <div class="clearfix"></div> +</div> +<? endif; ?> diff --git a/themes/bootstrap/templates/RecordDriver/AbstractBase/preview.phtml b/themes/bootstrap/templates/RecordDriver/AbstractBase/preview.phtml new file mode 100644 index 00000000000..3a671672624 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/AbstractBase/preview.phtml @@ -0,0 +1,88 @@ +<? + $previews = isset($this->config->Content->previews) + ? explode(',', $this->config->Content->previews) : array(); + if (!empty($previews)) { + // Extract identifiers from record driver if it supports appropriate methods: + $isbn = is_callable(array($this->driver, 'getCleanISBN')) + ? $this->driver->getCleanISBN() : ''; + $lccn = is_callable(array($this->driver, 'getLCCN')) + ? $this->driver->getLCCN() : ''; + $oclc = is_callable(array($this->driver, 'getOCLC')) + ? $this->driver->getOCLC() : array(); + + // Turn identifiers into class names to communicate with jQuery logic: + $idClasses = array(); + if (!empty($isbn)) { + $idClasses[] = 'ISBN' . $isbn; + } + if (!empty($lccn)) { + $idClasses[] = 'LCCN' . $lccn; + } + if (!empty($oclc)) { + foreach ($oclc as $oclcNum) { + if (!empty($oclcNum)) { + $idClasses[] = 'OCLC' . $oclcNum; + } + } + } + + // If we found at least one identifier, we can build the placeholder HTML: + $html = ''; + if (!empty($idClasses)) { + // Convert to string: + $idClasses = implode(' ', $idClasses); + + // Loop through configured options and build appropriate HTML: + foreach ($previews as $current) { + switch (trim(strtolower($current))) { + case 'google': + $name = 'Google Books'; + $divClass = 'googlePreviewDiv'; + $linkClass = 'previewGBS'; + $icon = 'https://www.google.com/intl/en/googlebooks/images/gbs_preview_button1.png'; + $options = isset($this->config->Content->GoogleOptions) + ? str_replace(' ', '', $this->config->Content->GoogleOptions) + : "full,partial"; + break; + case 'openlibrary': + $name = 'Open Library'; + $divClass = 'olPreviewDiv'; + $linkClass = 'previewOL'; + $icon = $this->imageLink('preview_ol.gif'); + $options = isset($this->config->Content->OpenLibraryOptions) + ? str_replace(' ', '', $this->config->Content->OpenLibraryOptions) + : "full,partial"; + break; + case 'hathitrust': + $name = 'HathiTrust'; + $divClass = 'hathiPreviewDiv'; + $linkClass = 'previewHT'; + $icon = $this->imageLink('preview_ht.gif'); + $options = isset($this->config->Content->HathiRights) + ? str_replace(' ', '', $this->config->Content->HathiRights) + : "pd,ic-world"; + break; + default: + $name = $divClass = $linkClass = $icon = $options = false; + break; + } + if ($name) { + $title = $this->transEsc('Preview from') . ' ' . $name; + $html .= '<div class="' . $divClass . '__' . $options . '">' + . '<a title="' . $title . '" class="hide ' . $linkClass . ' ' . $idClasses . '" target="_blank">' + . '<img src="' . $icon . '" alt="' . $this->transEsc('Preview') . '" />' + . '</a>' + . '</div>'; + } + } + + // If we built some HTML, we should load the supporting Javascript and + // add the necessary identifier code: + if (!empty($html)) { + $html .= '<span class="previewBibkeys ' . $idClasses . '"></span>'; + $this->headScript()->appendFile("preview.js"); + echo $html; + } + } + } +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Pazpar2/link-author.phtml b/themes/bootstrap/templates/RecordDriver/Pazpar2/link-author.phtml new file mode 100644 index 00000000000..34ec85e9849 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Pazpar2/link-author.phtml @@ -0,0 +1 @@ +<?=$this->url('pazpar2-search')?>?lookfor=<?=urlencode($this->lookfor)?>&type=author \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Pazpar2/link-series.phtml b/themes/bootstrap/templates/RecordDriver/Pazpar2/link-series.phtml new file mode 100644 index 00000000000..203012a0d1e --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Pazpar2/link-series.phtml @@ -0,0 +1 @@ +<?=$this->url('pazpar2-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=series \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Pazpar2/link-subject.phtml b/themes/bootstrap/templates/RecordDriver/Pazpar2/link-subject.phtml new file mode 100644 index 00000000000..12428b058b5 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Pazpar2/link-subject.phtml @@ -0,0 +1 @@ +<?=$this->url('pazpar2-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=subject \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Pazpar2/link-title.phtml b/themes/bootstrap/templates/RecordDriver/Pazpar2/link-title.phtml new file mode 100644 index 00000000000..f0f81ef686c --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Pazpar2/link-title.phtml @@ -0,0 +1 @@ +<?=$this->url('pazpar2-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=title \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Pazpar2/result-list.phtml b/themes/bootstrap/templates/RecordDriver/Pazpar2/result-list.phtml new file mode 100644 index 00000000000..d0dbb09dfa5 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Pazpar2/result-list.phtml @@ -0,0 +1,111 @@ +<div class="result source<?=$this->escapeHtml($this->driver->getResourceSource())?> recordId<?=$this->driver->supportsAjaxStatus()?' ajaxItemId':''?>"> + <input type="hidden" value="<?=$this->escapeHtml($this->driver->getUniqueID())?>" class="hiddenId" /> + <div class="span2"> + <? if ($summThumb = $this->record($this->driver)->getThumbnail()): ?> + <img class="img-polaroid" src="<?=$this->escapeHtml($summThumb)?>" alt="<?=$this->transEsc('Cover Image')?>"/> + <? else: ?> + <img class="img-polaroid" src="<?=$this->url('cover-unavailable')?>" alt="<?=$this->transEsc('No Cover Image')?>"/> + <? endif; ?> + </div> + <div class="span9"> + <div> + <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="title"> + <? + $summTitle = $this->driver->getTitle(); + if (!empty($summTitle)) { + echo $this->escapeHtml($this->truncate($summTitle, 180)); + } else { + echo $this->transEsc('Title not available'); + } + ?> + </a> + </div> + + <div> + <? $summAuthor = $this->driver->getPrimaryAuthor(); if (!empty($summAuthor)): ?> + <?=$this->transEsc('by')?> + <a href="<?=$this->record($this->driver)->getLink('author', $summAuthor)?>"><? + $summHighlightedAuthor = $this->driver->getHighlightedAuthor(); + echo !empty($summHighlightedAuthor) + ? $this->highlight($summHighlightedAuthor) + : $this->escapeHtml($summAuthor); + ?></a> + <? endif; ?> + + <? $journalTitle = $this->driver->getContainerTitle(); $summDate = $this->driver->getPublicationDates(); ?> + <? if (!empty($journalTitle)): ?> + <?=!empty($summAuthor) ? '<br />' : ''?> + <?=/* TODO: handle highlighting more elegantly here */ $this->transEsc('Published in') . ' <a href="' . $this->record($this->driver)->getLink('journaltitle', str_replace(array('{{{{START_HILITE}}}}', '{{{{END_HILITE}}}}'), '', $journalTitle)) . '">' . $this->highlight($journalTitle) . '</a>';?> + <?=!empty($summDate) ? ' (' . $this->escapeHtml($summDate[0]) . ')' : ''?> + <? elseif (!empty($summDate)): ?> + <?=!empty($summAuthor) ? '<br />' : ''?> + <?=$this->transEsc('Published') . ' ' . $this->escapeHtml($summDate[0])?> + <? endif; ?> + <? $summInCollection = $this->driver->getContainingCollections(); + if (!empty($summInCollection)): ?> + <? foreach ($summInCollection as $collId => $collText): ?> + <div> + <b><?=$this->transEsc("in_collection_label")?></b> + <a class="collectionLinkText" href="<?=$this->url('collection', array('id' => $collId))?>?recordID=<?=urlencode($this->driver->getUniqueID())?>"> + <?=$this->escapeHtml($collText)?> + </a> + </div> + <? endforeach; ?> + <? endif; ?> + </div> + + <div> + <div class="callnumAndLocation ajax-availability hide"> + <? if ($this->driver->supportsAjaxStatus()): ?> + <strong class="hideIfDetailed"><?=$this->transEsc('Call Number')?>:</strong> + <span class="callnumber ajax-availability hide"> + <?=$this->transEsc('Loading')?>... + </span><br class="hideIfDetailed"/> + <strong><?=$this->transEsc('Located')?>:</strong> + <span class="location ajax-availability hide"> + <?=$this->transEsc('Loading')?>... + </span> + <div class="locationDetails"></div> + <? else: ?> + <? $summCallNo = $this->driver->getCallNumber(); if (!empty($summCallNo)): ?> + <strong><?=$this->transEsc('Call Number')?>:</strong> <?=$this->escapeHtml($summCallNo)?> + <? endif; ?> + <? endif; ?> + </div> + + <? /* We need to find out if we're supposed to display an OpenURL link ($openUrlActive), + but even if we don't plan to display the link, we still want to get the $openUrl + value for use in generating a COinS (Z3988) tag -- see bottom of file. + */ + $openUrl = $this->driver->getOpenURL(); + $openUrlActive = $this->driver->openURLActive('results'); + $urls = $this->record($this->driver)->getLinkDetails(); + if ($openUrlActive || !empty($urls)): ?> + <? if ($openUrlActive): ?> + <br/> + <?=$this->openUrl($openUrl)?> + <? if ($this->driver->replaceURLsWithOpenURL()) $urls = array(); // clear URL list if replace setting is active ?> + <? endif; ?> + <? if (!is_array($urls)) $urls = array(); + if(!$this->driver->isCollection()): + foreach ($urls as $current): ?> + <a href="<?=$this->escapeHtml($this->proxyUrl($current['url']))?>" class="fulltext" target="new"><i class="icon-external-link"></i> <?=($current['url'] == $current['desc']) ? $this->transEsc('Get full text') : $this->escapeHtml($current['desc'])?></a><br/> + <? endforeach; ?> + <? endif; ?> + <? endif; ?> + + <?=str_replace('class="', 'class="label label-info ', $this->record($this->driver)->getFormatList())?> + + <? if (!$openUrlActive && empty($urls) && $this->driver->supportsAjaxStatus()): ?> + <span class="status ajax-availability small "> + <span class="label"><?=$this->transEsc('Loading')?>...</span> + </span> + <? endif; ?> + <?=$this->record($this->driver)->getPreviews()?> + </div> + </div> + + <div class="clear"></div> +</div> + +<?=$openUrl?'<span class="Z3988" title="'.$this->escapeHtml($openUrl).'"></span>':''?> diff --git a/themes/bootstrap/templates/RecordDriver/SolrAuth/result-list.phtml b/themes/bootstrap/templates/RecordDriver/SolrAuth/result-list.phtml new file mode 100644 index 00000000000..08a994a7d45 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrAuth/result-list.phtml @@ -0,0 +1,32 @@ +<? + $heading = $this->driver->getTitle(); + if (empty($heading)) { + $heading = $this->translate('Heading unavailable.'); + } + $seeAlso = $this->driver->getSeeAlso(); + $useFor = $this->driver->getUseFor(); +?> +<div class="listentry span12"> + <div class="resultItemLine1"> + <a href="<?=$this->url('authority-record')?>?id=<?=urlencode($this->driver->getUniqueId())?>" class="title"><?=$this->escapeHtml($heading)?></a> + </div> + + <div class="resultItemLine2"> + <? if (!empty($seeAlso)): ?> + <?=$this->transEsc("See also")?>:<br/> + <? foreach ($seeAlso as $current): ?> + <a href="<?=$this->url('authority-search')?>?lookfor=%22<?=urlencode($current)?>%22&type=MainHeading"><?=$this->escapeHtml($current)?></a><br/> + <? endforeach; ?> + <? endif; ?> + </div> + + <div class="resultItemLine3"> + <? if (!empty($useFor)): ?> + <?=$this->transEsc("Use for")?>:<br/> + <? foreach ($useFor as $current): ?> + <?=$this->escapeHtml($current)?><br/> + <? endforeach; ?> + <? endif; ?> + </div> +</div> +<div class="clearer"></div> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/collection-info.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/collection-info.phtml new file mode 100644 index 00000000000..4db5fc80fd3 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/collection-info.phtml @@ -0,0 +1,209 @@ +<div class="row-fluid"> + <div class="span3 text-center"> + <? /* Display thumbnail if appropriate: */ ?> + <? $mediumThumb = $this->record($this->driver)->getThumbnail('medium'); $largeThumb = $this->record($this->driver)->getThumbnail('large'); ?> + <? if ($mediumThumb): ?> + <? if ($largeThumb): ?><a href="<?=$this->escapeHtml($largeThumb)?>"><? endif; ?> + <img alt="<?=$this->transEsc('Cover Image')?>" class="recordcover img-polaroid" src="<?=$this->escapeHtml($mediumThumb);?>"/> + <? if ($largeThumb): ?></a><? endif; ?> + <? else: ?> + <img src="<?=$this->url('cover-unavailable')?>" class="recordcover" alt="<?=$this->transEsc('No Cover Image')?>"/> + <? endif; ?> + + <? /* Display the lists that this record is saved to */ ?> + <div class="savedLists info hide" id="savedLists"> + <strong><?=$this->transEsc("Saved in")?>:</strong> + </div> + + <?=$this->record($this->driver)->getPreviews()?> + </div> + + <div class="span9"> + <h2><?=$this->escapeHtml($this->driver->getShortTitle() . ' ' . $this->driver->getSubtitle() . ' ' . $this->driver->getTitleSection())?></h2> + + <? $summary = $this->driver->getSummary(); $summary = isset($summary[0]) ? $summary[0] : false; ?> + <? if ($summary): ?> + <p><?=$this->truncate($summary, 300)?></p> + <? if(strlen($summary) > 300): ?> + <p><a href='<?=$this->recordLink()->getTabUrl($this->driver, 'Description')?>#tabnav'><?=$this->transEsc('Full description')?></a></p> + <? endif; ?> + <? endif; ?> + + <?/* Display Main Details */?> + <table class="table table-striped" summary="<?=$this->transEsc('Bibliographic Details')?>"> + <? $authors = $this->driver->getDeduplicatedAuthors(); ?> + <? if (isset($authors['main']) && !empty($authors['main'])): ?> + <tr> + <th><?=$this->transEsc('Main Author')?>: </th> + <td><a href="<?=$this->record($this->driver)->getLink('author', $authors['main'])?>"><?=$this->escapeHtml($authors['main'])?></a></td> + </tr> + <? endif; ?> + + <? if (isset($authors['corporate']) && !empty($authors['corporate'])): ?> + <tr> + <th><?=$this->transEsc('Corporate Author')?>: </th> + <td><a href="<?=$this->record($this->driver)->getLink('author', $authors['corporate'])?>"><?=$this->escapeHtml($authors['corporate'])?></a></td> + </tr> + <? endif; ?> + + <? if (isset($authors['secondary']) && !empty($authors['secondary'])): ?> + <tr> + <th><?=$this->transEsc('Other Authors')?>: </th> + <td> + <? $i = 0; foreach ($authors['secondary'] as $field): ?><?=($i++ == 0)?'':', '?><a href="<?=$this->record($this->driver)->getLink('author', $field)?>"><?=$this->escapeHtml($field)?></a><? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? if (count($summ) > 1): ?> + <tr> + <th><?=$this->transEsc('Summary')?>: </th> + <td> + <? foreach (array_slice($summ, 1) as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $formats = $this->driver->getFormats(); if (!empty($formats)): ?> + <tr> + <th><?=$this->transEsc('Format')?>: </th> + <td><?=$this->record($this->driver)->getFormatList()?></td> + </tr> + <? endif; ?> + + <? $langs = $this->driver->getLanguages(); if (!empty($langs)): ?> + <tr> + <th><?=$this->transEsc('Language')?>: </th> + <td><? foreach ($langs as $lang): ?><?= $this->escapeHtml($lang)?><br/><? endforeach; ?></td> + </tr> + <? endif; ?> + + <? $publications = $this->driver->getPublicationDetails(); if (!empty($publications)): ?> + <tr> + <th><?=$this->transEsc('Published')?>: </th> + <td> + <? foreach ($publications as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $edition = $this->driver->getEdition(); if (!empty($edition)): ?> + <tr> + <th><?=$this->transEsc('Edition')?>: </th> + <td><?=$this->escapeHtml($edition)?></td> + </tr> + <? endif; ?> + + <?/* Display series section if at least one series exists. */?> + <? $series = $this->driver->getSeries(); if (!empty($series)): ?> + <tr> + <th><?=$this->transEsc('Series')?>: </th> + <td> + <? foreach ($series as $field): ?> + <?/* Depending on the record driver, $field may either be an array with + "name" and "number" keys or a flat string containing only the series + name. We should account for both cases to maximize compatibility. */?> + <? if (is_array($field)): ?> + <? if (!empty($field['name'])): ?> + <a href="<?=$this->record($this->driver)->getLink('series', $field['name'])?>"><?=$this->escapeHtml($field['name'])?></a> + <? if (!empty($field['number'])): ?> + <?=$this->escapeHtml($field['number'])?> + <? endif; ?> + <br/> + <? endif; ?> + <? else: ?> + <a href="<?=$this->record($this->driver)->getLink('series', $field)?>"><?=$this->escapeHtml($field)?></a><br/> + <? endif; ?> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $subjects = $this->driver->getAllSubjectHeadings(); if (!empty($subjects)): ?> + <tr> + <th><?=$this->transEsc('Subjects')?>: </th> + <td> + <? foreach ($subjects as $field): ?> + <div class="subjectLine"> + <? $subject = ''; ?> + <? $i = 0; foreach ($field as $subfield): ?> + <?=($i++ == 0) ? '' : ' > '?> + <? $subject = trim($subject . ' ' . $subfield); ?> + <a title="<?=$this->escapeHtml($subject)?>" href="<?=$this->record($this->driver)->getLink('subject', $subject)?>" class="subjectHeading"><?=$this->escapeHtml($subfield)?></a> + <? endforeach; ?> + </div> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? + $openUrl = $this->driver->openURLActive('record') ? $this->driver->getOpenURL() : false; + // Account for replace_other_urls setting + $urls = ($openUrl && $this->driver->replaceURLsWithOpenURL()) ? array() : $this->record($this->driver)->getLinkDetails(); + ?> + <? if (!empty($urls) || $openUrl): ?> + <tr> + <th><?=$this->transEsc('Online Access')?>: </th> + <td> + <? foreach ($urls as $current): ?> + <a href="<?=$this->escapeHtml($this->proxyUrl($current['url']))?>"><?=$this->escapeHtml($current['desc'])?></a><br/> + <? endforeach; ?> + <? if ($openUrl): ?> + <?=$this->openUrl($openUrl)?><br/> + <? endif; ?> + </td> + </tr> + <? endif; ?> + + <? $notes = $this->driver->getGeneralNotes(); if (!empty($notes)): ?> + <tr> + <th><?=$this->transEsc('Notes')?>: </th> + <td> + <? foreach ($notes as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $credits = $this->driver->getProductionCredits(); if (!empty($credits)): ?> + <tr> + <th><?=$this->transEsc('Production Credits')?>: </th> + <td> + <? foreach ($credits as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $isbns = $this->driver->getISBNs(); if (!empty($isbns)): ?> + <tr> + <th><?=$this->transEsc('ISBN')?>: </th> + <td> + <? foreach ($isbns as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $issns = $this->driver->getISSNs(); if (!empty($issns)): ?> + <tr> + <th><?=$this->transEsc('ISSN')?>: </th> + <td> + <? foreach ($issns as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + </table> + <?/* End Main Details */?> + </div> +</div> diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/collection-record.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/collection-record.phtml new file mode 100644 index 00000000000..b1101b45ddf --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/collection-record.phtml @@ -0,0 +1,63 @@ +<p class="lead"><?=$this->escapeHtml($this->driver->getShortTitle() . ' ' . $this->driver->getSubtitle() . ' ' . $this->driver->getTitleSection())?></p> +<a href="<?=$this->recordLink()->getUrl($this->driver)?>"><?=$this->transEsc('View Full ' . ($this->driver->isCollection() ? 'Collection' : 'Record'))?></a> + +<table class="table table-striped" summary="<?=$this->transEsc('Bibliographic Details')?>"> + <? $summary = $this->driver->getSummary(); $summary = isset($summary[0]) ? $summary[0] : false; ?> + <? if ($summary): ?> + <tr valign="top"> + <th><?=$this->transEsc('Description')?>: </th> + <td><?=$this->escapeHtml($summary)?></td> + </tr> + <? endif; ?> + + <? $authors = $this->driver->getDeduplicatedAuthors(); ?> + <? if (isset($authors['main']) && !empty($authors['main'])): ?> + <tr valign="top"> + <th><?=$this->transEsc('Main Author')?>: </th> + <td><a href="<?=$this->record($this->driver)->getLink('author', $authors['main'])?>"><?=$this->escapeHtml($authors['main'])?></a></td> + </tr> + <? endif; ?> + + <? if (isset($authors['corporate']) && !empty($authors['corporate'])): ?> + <tr valign="top"> + <th><?=$this->transEsc('Corporate Author')?>: </th> + <td><a href="<?=$this->record($this->driver)->getLink('author', $authors['corporate'])?>"><?=$this->escapeHtml($authors['corporate'])?></a></td> + </tr> + <? endif; ?> + + <? $langs = $this->driver->getLanguages(); if (!empty($langs)): ?> + <tr valign="top"> + <th><?=$this->transEsc('Language')?>: </th> + <td><? foreach ($langs as $lang): ?><?= $this->escapeHtml($lang)?><br/><? endforeach; ?></td> + </tr> + <? endif; ?> + + <? $formats = $this->driver->getFormats(); if (!empty($formats)): ?> + <tr valign="top"> + <th><?=$this->transEsc('Format')?>: </th> + <td><?=$this->record($this->driver)->getFormatList()?></td> + </tr> + <? endif; ?> + + <? $access = $this->driver->getAccessRestrictions(); if (!empty($access)): ?> + <tr valign="top"> + <th><?=$this->transEsc('Access')?>: </th> + <td> + <? foreach ($access as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $related = $this->driver->getRelationshipNotes(); if (!empty($related)): ?> + <tr valign="top"> + <th><?=$this->transEsc('Related Items')?>: </th> + <td> + <? foreach ($related as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> +</table> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/core.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/core.phtml new file mode 100644 index 00000000000..18560c77726 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/core.phtml @@ -0,0 +1,218 @@ +<div class="row-fluid"> + <div class="span3 text-center"> + <? /* Display thumbnail if appropriate: */ ?> + <? $mediumThumb = $this->record($this->driver)->getThumbnail('medium'); $largeThumb = $this->record($this->driver)->getThumbnail('large'); ?> + <? if ($mediumThumb): ?> + <? if ($largeThumb): ?><a href="<?=$this->escapeHtml($largeThumb)?>"><? endif; ?> + <img alt="<?=$this->transEsc('Cover Image')?>" class="recordcover img-polaroid" src="<?=$this->escapeHtml($mediumThumb);?>"/> + <? if ($largeThumb): ?></a><? endif; ?> + <? else: ?> + <img src="<?=$this->url('cover-unavailable')?>" class="recordcover" alt="<?=$this->transEsc('No Cover Image')?>"/> + <? endif; ?> + + <? /* Display the lists that this record is saved to */ ?> + <div class="savedLists info hide" id="savedLists"> + <strong><?=$this->transEsc("Saved in")?>:</strong> + </div> + + <?=$this->record($this->driver)->getPreviews()?> + </div> + + <div class="span9"> + <h3><?=$this->escapeHtml($this->driver->getShortTitle() . ' ' . $this->driver->getSubtitle() . ' ' . $this->driver->getTitleSection())?></h3> + + <? $summary = $this->driver->getSummary(); $summary = isset($summary[0]) ? $summary[0] : false; ?> + <? if ($summary): ?> + <p><?=$this->truncate($summary, 300)?></p> + <? if(strlen($summary) > 300): ?> + <p><a href='<?=$this->recordLink()->getTabUrl($this->driver, 'Description')?>#tabnav'><?=$this->transEsc('Full description')?></a></p> + <? endif; ?> + <? endif; ?> + + <?/* Display Main Details */?> + <table class="table table-striped" summary="<?=$this->transEsc('Bibliographic Details')?>"> + <? $journalTitle = $this->driver->getContainerTitle(); if (!empty($journalTitle)): ?> + <tr> + <th><?=$this->transEsc('Journal Title')?>:</th> + <td> + <a href="<?=$this->record($this->driver)->getLink('journaltitle', $journalTitle)?>"><?=$this->escapeHtml($journalTitle)?></a> + <? $ref = $this->driver->getContainerReference(); if (!empty($ref)) { echo $this->escapeHtml($ref); } ?> + </td> + </tr> + <? endif; ?> + + <? $nextTitles = $this->driver->getNewerTitles(); $prevTitles = $this->driver->getPreviousTitles(); ?> + <? if (!empty($nextTitles)): ?> + <tr> + <th><?=$this->transEsc('New Title')?>: </th> + <td> + <? foreach($nextTitles as $field): ?> + <a href="<?=$this->record($this->driver)->getLink('title', $field)?>"><?=$this->escapeHtml($field)?></a><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? if (!empty($prevTitles)): ?> + <tr> + <th><?=$this->transEsc('Previous Title')?>: </th> + <td> + <? foreach($prevTitles as $field): ?> + <a href="<?=$this->record($this->driver)->getLink('title', $field)?>"><?=$this->escapeHtml($field)?></a><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $authors = $this->driver->getDeduplicatedAuthors(); ?> + <? if (isset($authors['main']) && !empty($authors['main'])): ?> + <tr> + <th><?=$this->transEsc('Main Author')?>: </th> + <td><a href="<?=$this->record($this->driver)->getLink('author', $authors['main'])?>"><?=$this->escapeHtml($authors['main'])?></a></td> + </tr> + <? endif; ?> + + <? if (isset($authors['corporate']) && !empty($authors['corporate'])): ?> + <tr> + <th><?=$this->transEsc('Corporate Author')?>: </th> + <td><a href="<?=$this->record($this->driver)->getLink('author', $authors['corporate'])?>"><?=$this->escapeHtml($authors['corporate'])?></a></td> + </tr> + <? endif; ?> + + <? if (isset($authors['secondary']) && !empty($authors['secondary'])): ?> + <tr> + <th><?=$this->transEsc('Other Authors')?>: </th> + <td> + <? $i = 0; foreach ($authors['secondary'] as $field): ?><?=($i++ == 0)?'':', '?><a href="<?=$this->record($this->driver)->getLink('author', $field)?>"><?=$this->escapeHtml($field)?></a><? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $formats = $this->driver->getFormats(); if (!empty($formats)): ?> + <tr> + <th><?=$this->transEsc('Format')?>: </th> + <td><?=$this->record($this->driver)->getFormatList()?></td> + </tr> + <? endif; ?> + + <? $langs = $this->driver->getLanguages(); if (!empty($langs)): ?> + <tr> + <th><?=$this->transEsc('Language')?>: </th> + <td><? foreach ($langs as $lang): ?><?= $this->escapeHtml($lang)?><br/><? endforeach; ?></td> + </tr> + <? endif; ?> + + <? $publications = $this->driver->getPublicationDetails(); if (!empty($publications)): ?> + <tr> + <th><?=$this->transEsc('Published')?>: </th> + <td> + <? foreach ($publications as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $edition = $this->driver->getEdition(); if (!empty($edition)): ?> + <tr> + <th><?=$this->transEsc('Edition')?>: </th> + <td><?=$this->escapeHtml($edition)?></td> + </tr> + <? endif; ?> + + <?/* Display series section if at least one series exists. */?> + <? $series = $this->driver->getSeries(); if (!empty($series)): ?> + <tr> + <th><?=$this->transEsc('Series')?>: </th> + <td> + <? foreach ($series as $field): ?> + <?/* Depending on the record driver, $field may either be an array with + "name" and "number" keys or a flat string containing only the series + name. We should account for both cases to maximize compatibility. */?> + <? if (is_array($field)): ?> + <? if (!empty($field['name'])): ?> + <a href="<?=$this->record($this->driver)->getLink('series', $field['name'])?>"><?=$this->escapeHtml($field['name'])?></a> + <? if (!empty($field['number'])): ?> + <?=$this->escapeHtml($field['number'])?> + <? endif; ?> + <br/> + <? endif; ?> + <? else: ?> + <a href="<?=$this->record($this->driver)->getLink('series', $field)?>"><?=$this->escapeHtml($field)?></a><br/> + <? endif; ?> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $subjects = $this->driver->getAllSubjectHeadings(); if (!empty($subjects)): ?> + <tr> + <th><?=$this->transEsc('Subjects')?>: </th> + <td> + <? foreach ($subjects as $field): ?> + <div class="subjectLine"> + <? $subject = ''; ?> + <? if(count($field) == 1) $field = explode('--', $field[0]); ?> + <? $i = 0; foreach ($field as $subfield): ?> + <?=($i++ == 0) ? '' : ' > '?> + <? $subject = trim($subject . ' ' . $subfield); ?> + <a class="backlink" title="<?=$this->escapeHtml($subject)?>" href="<?=$this->record($this->driver)->getLink('subject', $subject)?>" class="subjectHeading"><?=trim($this->escapeHtml($subfield))?></a> + <? endforeach; ?> + </div> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? + $openUrl = $this->driver->openURLActive('record') ? $this->driver->getOpenURL() : false; + // Account for replace_other_urls setting + $urls = ($openUrl && $this->driver->replaceURLsWithOpenURL()) ? array() : $this->record($this->driver)->getLinkDetails(); + ?> + <? if (!empty($urls) || $openUrl): ?> + <tr> + <th><?=$this->transEsc('Online Access')?>: </th> + <td> + <? foreach ($urls as $current): ?> + <a href="<?=$this->escapeHtml($this->proxyUrl($current['url']))?>"><?=$this->escapeHtml($current['desc'])?></a><br/> + <? endforeach; ?> + <? if ($openUrl): ?> + <?=$this->openUrl($openUrl)?><br/> + <? endif; ?> + </td> + </tr> + <? endif; ?> + + <? $recordLinks = $this->driver->getAllRecordLinks(); ?> + <? if(!empty($recordLinks)): ?> + <tr> + <th><?=$this->transEsc('Related Items')?></th> + <td> + <? foreach ($recordLinks as $recordLink): ?> + <?=$this->transEsc($recordLink['title'])?>: + <a href="<?=$this->recordLink()->related($recordLink['link'])?>"><?=$this->escapeHtml($recordLink['value'])?></a><br /> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $tagList = $this->driver->getTags(); ?> + <tr> + <th><?=$this->transEsc('Tags')?>: </th> + <td> + <span class="pull-right"> + <i class="icon-plus-sign"></i> <a class="tool add tagRecord controller<?=$this->record($this->driver)->getController()?>" href="<?=$this->recordLink()->getActionUrl($this->driver, 'AddTag')?>" title="<?=$this->transEsc('Add Tag')?>" id="tagRecord"><?=$this->transEsc('Add Tag')?></a> + </span> + <div id="tagList"> + <? if (count($tagList) > 0): ?> + <? $i = 0; foreach ($tagList as $tag): ?><?=($i++ == 0)?'':', '?><a href="<?=$this->url('tag-home')?>?lookfor=<?=urlencode($tag->tag)?>"><?=$this->escapeHtml($tag->tag)?></a> (<?=$this->escapeHtml($tag->cnt)?>)<? endforeach; ?> + <? else: ?> + <?=$this->transEsc('No Tags')?>, <?=$this->transEsc('Be the first to tag this record')?>! + <? endif; ?> + </div> + </td> + </tr> + </table> + <?/* End Main Details */?> + </div> +</div> diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/format-class.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/format-class.phtml new file mode 100644 index 00000000000..2e2ce73b628 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/format-class.phtml @@ -0,0 +1 @@ +<?=preg_replace('/[^a-z0-9]/', '', strtolower($this->format))?> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/format-list.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/format-list.phtml new file mode 100644 index 00000000000..9ffc562f0d1 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/format-list.phtml @@ -0,0 +1,3 @@ +<? foreach ($this->driver->getFormats() as $format): ?> + <span class="iconlabel <?=$this->record($this->driver)->getFormatClass($format)?>"><?=$this->transEsc($format)?></span> +<? endforeach; ?> diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/link-author.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-author.phtml new file mode 100644 index 00000000000..1ef515fe458 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-author.phtml @@ -0,0 +1 @@ +<?=$this->url('author-home')?>?author=<?=urlencode($this->lookfor)?> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/link-journaltitle.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-journaltitle.phtml new file mode 100644 index 00000000000..5987653afd9 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-journaltitle.phtml @@ -0,0 +1 @@ +<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=JournalTitle \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/link-series.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-series.phtml new file mode 100644 index 00000000000..bf7507d0a50 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-series.phtml @@ -0,0 +1 @@ +<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=Series \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/link-subject.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-subject.phtml new file mode 100644 index 00000000000..07a34f729d9 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-subject.phtml @@ -0,0 +1 @@ +<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=Subject \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/link-title.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-title.phtml new file mode 100644 index 00000000000..eca8c06502d --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/link-title.phtml @@ -0,0 +1 @@ +<?=$this->url('search-results')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=Title \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/list-entry.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/list-entry.phtml new file mode 100644 index 00000000000..70113551d9f --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/list-entry.phtml @@ -0,0 +1,182 @@ +<? + // Set up some convenience variables: + $id = $this->driver->getUniqueId(); + $source = $this->driver->getResourceSource(); + if (isset($this->list) && is_object($this->list)) { + $list_id = $this->list->id; + $user_id = $this->list->user_id; + } else { + $list_id = null; + $user_id = $this->user ? $this->user->id : null; + } +?> +<div class="row-fluid result<? if($this->driver->supportsAjaxStatus()): ?> ajaxItem<? endif ?>"> + <input type="hidden" value="<?=$id ?>" class="hiddenId"/> + <div class="span2 text-center"> + <a href="<?=$this->recordLink()->getUrl($this->driver)?>"> + <? if ($summThumb = $this->record($this->driver)->getThumbnail()): ?> + <img src="<?=$this->escapeHtml($summThumb)?>" class="img-polaroid" alt="<?=$this->transEsc('Cover Image')?>"/> + <? else: ?> + <img src="<?=$this->url('cover-unavailable')?>" class="img-polaroid" alt="<?=$this->transEsc('No Cover Image')?>"/> + <? endif; ?> + </a> + </div> + <div class="span7"> + <div class="resultItemLine1"> + <a href="<?=$this->recordLink()->getUrl($this->driver)?>"> + <? + $summHighlightedTitle = $this->driver->getHighlightedTitle(); + $summTitle = $this->driver->getTitle(); + if (!empty($summHighlightedTitle)) { + echo $this->highlight($this->addEllipsis($summHighlightedTitle, $summTitle)); + } else if (!empty($summTitle)) { + echo $this->escapeHtml($this->truncate($summTitle, 180)); + } else { + echo $this->transEsc('Title not available'); + } + ?></a> + </div> + + <div class="resultItemLine2"> + <? if($this->driver->isCollection()): ?> + <?=implode('<br/>', $this->driver->getSummary()); ?> + <? else: ?> + <? $summAuthor = $this->driver->getPrimaryAuthor(); if (!empty($summAuthor)): ?> + <?=$this->transEsc('by')?> + <a href="<?=$this->record($this->driver)->getLink('author', $summAuthor)?>"><? + $summHighlightedAuthor = $this->driver->getHighlightedAuthor(); + echo !empty($summHighlightedAuthor) + ? $this->highlight($summHighlightedAuthor) + : $this->escapeHtml($summAuthor); + ?></a> + <? endif; ?> + + <? $journalTitle = $this->driver->getContainerTitle(); $summDate = $this->driver->getPublicationDates(); ?> + <? if (!empty($journalTitle)): ?> + <?=!empty($summAuthor) ? '<br/>' : ''?> + <?=/* TODO: handle highlighting more elegantly here */ $this->transEsc('Published in') . ' <a href="' . $this->record($this->driver)->getLink('journaltitle', str_replace(array('{{{{START_HILITE}}}}', '{{{{END_HILITE}}}}'), '', $journalTitle)) . '">' . $this->highlight($journalTitle) . '</a>';?> + <?=!empty($summDate) ? ' (' . $this->escapeHtml($summDate[0]) . ')' : ''?> + <? elseif (!empty($summDate)): ?> + <?=!empty($summAuthor) ? '<br/>' : ''?> + <?=$this->transEsc('Published') . ' ' . $this->escapeHtml($summDate[0])?> + <? endif; ?> + <? $summInCollection = $this->driver->getContainingCollections(); if (false && !empty($summInCollection)): ?> + <? foreach ($summInCollection as $collId => $collText): ?> + <div> + <b><?=$this->transEsc("in_collection_label")?></b> + <a class="collectionLinkText" href="<?=$this->url('collection', array('id' => $collId))?>?recordID=<?=urlencode($this->driver->getUniqueID())?>"> + <?=$this->escapeHtml($collText)?> + </a> + </div> + <? endforeach; ?> + <? endif; ?> + <? endif; ?> + </div> + + <div class="last"> + <? if(!$this->driver->isCollection()) { + if ($snippet = $this->driver->getHighlightedSnippet()) { + if (!empty($snippet['caption'])) { + echo '<strong>' . $this->transEsc($snippet['caption']) . ':</strong> '; + } + if (!empty($snippet['snippet'])) { + echo '<span class="quotestart">“</span>...' . $this->highlight($snippet['snippet']) . '...<span class="quoteend">”</span><br/>'; + } + } + } ?> + + <? $listTags = $this->driver->getTags( + $list_id, // get tags for all lists if no single list is selected + $user_id, 'tag' + ); + ?> + <? if (count($listTags) > 0): ?> + <strong><?=$this->transEsc('Your Tags')?>:</strong> + <? $i = 0; foreach ($listTags as $tag): ?><?=($i++ == 0)?'':', '?><a href="<?=$this->currentPath() . $results->getUrlQuery()->addFacet('tags', $tag->tag)?>"><?=$this->escapeHtml($tag->tag)?></a><? endforeach; ?> + <br/> + <? endif; ?> + <? $listNotes = $this->driver->getListNotes($list_id, $user_id); ?> + <? if (count($listNotes) > 0): ?> + <strong><?=$this->transEsc('Notes')?>:</strong> + <? if (count($listNotes) > 1): ?><br/><? endif; ?> + <? foreach ($listNotes as $note): ?> + <?=$this->escapeHtml($note)?><br/> + <? endforeach; ?> + <? endif; ?> + + <? if (count($this->lists) > 0): ?> + <strong><?=$this->transEsc('Saved in')?>:</strong> + <? $i=0;foreach($this->lists as $current): ?> + <a href="<?=$this->url('userList', array('id' => $current->id))?>"><?=$current->title?></a><? if($i++ < count($this->lists)-1): ?>,<? endif; ?> + <? endforeach; ?> + <br/> + <? endif; ?> + <div class="callnumAndLocation"> + <? if ($this->driver->supportsAjaxStatus()): ?> + <strong class="hideIfDetailed"><?=$this->transEsc('Call Number')?>:</strong> + <span class="callnumber ajax-availability hide"> + <?=$this->transEsc('Loading')?>... + </span><br class="hideIfDetailed"/> + <strong><?=$this->transEsc('Located')?>:</strong> + <span class="location ajax-availability hide"> + <?=$this->transEsc('Loading')?>... + </span> + <div class="locationDetails hide"></div> + <? else: ?> + <? $summCallNo = $this->driver->getCallNumber(); if (!empty($summCallNo)): ?> + <strong><?=$this->transEsc('Call Number')?>:</strong> <?=$this->escapeHtml($summCallNo)?> + <? endif; ?> + <? endif; ?> + </div> + + <? /* We need to find out if we're supposed to display an OpenURL link ($openUrlActive), + but even if we don't plan to display the link, we still want to get the $openUrl + value for use in generating a COinS (Z3988) tag -- see bottom of file. + */ + $openUrl = $this->driver->getOpenURL(); + $openUrlActive = $this->driver->openURLActive('results'); + $urls = $this->record($this->driver)->getLinkDetails(); + if ($openUrlActive || !empty($urls)): ?> + <? if ($openUrlActive): ?> + <br/> + <?=$this->openUrl($openUrl)?> + <? if ($this->driver->replaceURLsWithOpenURL()) $urls = array(); // clear URL list if replace setting is active ?> + <? endif; ?> + <? if (!is_array($urls)) $urls = array(); + if(!$this->driver->isCollection()): + foreach ($urls as $current): ?> + <? endforeach; ?> + <? endif; ?> + <? endif; ?> + <br/> + <?=str_replace('class="', 'class="label label-info ', $this->record($this->driver)->getFormatList())?> + + <? if (!$openUrlActive && empty($urls) && $this->driver->supportsAjaxStatus()): ?> + <span class="status ajax-availability hide"><?=$this->transEsc('Loading')?>...</span> + <br/><br/> + <? endif; ?> + <?=$this->record($this->driver)->getPreviews()?> + </div> + </div> + + <div class="span2"> + <i class="icon-edit"></i> <a href="<?=$this->url('myresearch-edit')?>?id=<?=urlencode($id)?>&source=<?=urlencode($source)?><? if (!is_null($list_id)):?>&list_id=<?=urlencode($list_id)?><? endif; ?>" class="edit tool"><?=$this->transEsc('Edit')?></a><br/> + <? /* Use a different delete URL if we're removing from a specific list or the overall favorites: */ + $deleteUrl = is_null($list_id) + ? $this->url('myresearch-favorites') + : $this->url('userList', array('id' => $list_id)); + $deleteUrl .= '?delete=' . urlencode($id) . '&source=' . urlencode($source); + ?> + <div class="dropdown"> + <i class="icon-trash"></i> <a class="dropdown-toggle" id="dLabel" role="button" data-toggle="dropdown" data-target="#" href="<?=$deleteUrl ?>"> + <?=$this->transEsc('Delete') ?> + </a> + <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> + <li><a href="<?=$deleteUrl?>&confirm=true" title="<?=$this->transEsc('confirm_delete_brief')?>"><?=$this->transEsc('Confirm')?></a></li> + <li><a>Cancel</a></li> + </ul> + </div> + + </div> +</div> +<?=$openUrl?'<span class="Z3988" title="'.$this->escapeHtml($openUrl).'"></span>':''?> diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/result-grid.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/result-grid.phtml new file mode 100644 index 00000000000..92358ac3cf5 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/result-grid.phtml @@ -0,0 +1,53 @@ +<div class="result <?=$this->driver->supportsAjaxStatus()?' ajaxItem':''?>"> + <input type="hidden" value="<?=$this->escapeHtml($this->driver->getUniqueID())?>" class="hiddenId" /> + <?=$this->record($this->driver)->getCheckbox() ?></br> + <div class="text-center" style="margin:auto;max-width:70px"> + <a href="<?=$this->recordLink()->getUrl($this->driver)?>"> + <? if ($summThumb = $this->record($this->driver)->getThumbnail('large')): ?> + <img src="<?=$this->escapeHtml($summThumb)?>" alt="<?=$this->transEsc('Cover Image')?>"/> + <? elseif ($summThumb = $this->record($this->driver)->getThumbnail()): ?> + <img src="<?=$this->escapeHtml($summThumb)?>" alt="<?=$this->transEsc('Cover Image')?>"/> + <? else: ?> + <img src="<?=$this->url('cover-unavailable')?>" alt="<?=$this->transEsc('No Cover Image')?>"/> + <? endif; ?> + </a> + </div> + <? if (!$openUrlActive && empty($urls)): ?> + <? if ($this->driver->supportsAjaxStatus()): ?> + <div class="status ajax-availability hide text-center pad"><span class="label"><?=$this->transEsc('Loading')?>...</span></div> + <? endif; ?> + <? endif; ?> + <div> + <a class="gridTitle" href="<?=$this->recordLink()->getUrl($this->driver)?>"><? + $summHighlightedTitle = $this->driver->getHighlightedTitle(); + $summTitle = $this->driver->getTitle(); + if (!empty($summHighlightedTitle)) { + echo $this->highlight($this->addEllipsis($summHighlightedTitle, $summTitle)); + } else if (!empty($summTitle)) { + echo $this->escapeHtml($this->truncate($summTitle, 80)); + } else { + echo $this->transEsc('Title not available'); + } + ?></a> + <? /* We need to find out if we're supposed to display an OpenURL link ($openUrlActive), + but even if we don't plan to display the link, we still want to get the $openUrl + value for use in generating a COinS (Z3988) tag -- see bottom of file. + */ + $openUrl = $this->driver->getOpenURL(); + $openUrlActive = $this->driver->openURLActive('results'); + $urls = $this->record($this->driver)->getLinkDetails(); ?> + <? if ($openUrlActive || !empty($urls)): ?> + <br/><br/> + <? if ($openUrlActive): ?> + <?=$this->openUrl($openUrl)?><br /> + <? if ($this->driver->replaceURLsWithOpenURL()) $urls = array(); // clear URL list if replace setting is active ?> + <? endif; ?> + <? if (!is_array($urls)) $urls = array(); foreach ($urls as $current): ?> + <a href="<?=$this->escapeHtml($this->proxyUrl($current['url']))?>" class="fulltext" target="new"><i class="icon-external-link"></i> <?=($current['url'] == $current['desc']) ? $this->transEsc('Get full text') : $this->escapeHtml($current['desc'])?></a> + <br/> + <? endforeach; ?> + <? endif; ?> + </div> +</div> + +<?=$openUrl?'<span class="Z3988" title="'.$this->escapeHtml($openUrl).'"></span>':''?> diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/result-list.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/result-list.phtml new file mode 100644 index 00000000000..cb097b2a693 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/result-list.phtml @@ -0,0 +1,150 @@ +<div class="row-fluid result<?=$this->driver->supportsAjaxStatus()?' ajaxItem':''?>"> + <input type="hidden" value="<?=$this->escapeHtml($this->driver->getUniqueID())?>" class="hiddenId" /> + <input type="hidden" value="<?=$this->escapeHtml($this->driver->getResourceSource())?>" class="hiddenSource" /> + <div class="span2 text-center"> + <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="title"> + <? if ($summThumb = $this->record($this->driver)->getThumbnail()): ?> + <img class="img-polaroid" src="<?=$this->escapeHtml($summThumb)?>" alt="<?=$this->transEsc('Cover Image')?>"/> + <? else: ?> + <img class="img-polaroid" src="<?=$this->url('cover-unavailable')?>" alt="<?=$this->transEsc('No Cover Image')?>"/> + <? endif; ?> + </a> + </div> + <div class="span7"> + <div> + <a href="<?=$this->recordLink()->getUrl($this->driver)?>" class="title"> + <? + $summHighlightedTitle = $this->driver->getHighlightedTitle(); + $summTitle = $this->driver->getTitle(); + if (!empty($summHighlightedTitle)) { + echo $this->highlight($this->addEllipsis($summHighlightedTitle, $summTitle)); + } else if (!empty($summTitle)) { + echo $this->escapeHtml($this->truncate($summTitle, 180)); + } else { + echo $this->transEsc('Title not available'); + } + ?> + </a> + </div> + + <div> + <? if($this->driver->isCollection()): ?> + <?=implode('<br>', $this->driver->getSummary()); ?> + <? else: ?> + <? $summAuthor = $this->driver->getPrimaryAuthor(); if (!empty($summAuthor)): ?> + <?=$this->transEsc('by')?> + <a href="<?=$this->record($this->driver)->getLink('author', $summAuthor)?>"><? + $summHighlightedAuthor = $this->driver->getHighlightedAuthor(); + echo !empty($summHighlightedAuthor) + ? $this->highlight($summHighlightedAuthor) + : $this->escapeHtml($summAuthor); + ?></a> + <? endif; ?> + + <? $journalTitle = $this->driver->getContainerTitle(); $summDate = $this->driver->getPublicationDates(); ?> + <? if (!empty($journalTitle)): ?> + <?=!empty($summAuthor) ? '<br />' : ''?> + <?=/* TODO: handle highlighting more elegantly here */ $this->transEsc('Published in') . ' <a href="' . $this->record($this->driver)->getLink('journaltitle', str_replace(array('{{{{START_HILITE}}}}', '{{{{END_HILITE}}}}'), '', $journalTitle)) . '">' . $this->highlight($journalTitle) . '</a>';?> + <?=!empty($summDate) ? ' (' . $this->escapeHtml($summDate[0]) . ')' : ''?> + <? elseif (!empty($summDate)): ?> + <?=!empty($summAuthor) ? '<br />' : ''?> + <?=$this->transEsc('Published') . ' ' . $this->escapeHtml($summDate[0])?> + <? endif; ?> + <? $summInCollection = $this->driver->getContainingCollections(); if (!empty($summInCollection)): ?> + <? foreach ($summInCollection as $collId => $collText): ?> + <div> + <b><?=$this->transEsc("in_collection_label")?></b> + <a class="collectionLinkText" href="<?=$this->url('collection', array('id' => $collId))?>?recordID=<?=urlencode($this->driver->getUniqueID())?>"> + <?=$this->escapeHtml($collText)?> + </a> + </div> + <? endforeach; ?> + <? endif; ?> + <? endif; ?> + </div> + + <div> + <? if(!$this->driver->isCollection()): ?> + <? if ($snippet = $this->driver->getHighlightedSnippet()): ?> + <? if (!empty($snippet['caption'])): ?> + <strong><?=$this->transEsc($snippet['caption']) ?>:</strong> '; + <? endif; ?> + <? if (!empty($snippet['snippet'])): ?> + <span class="quotestart">“</span>...<?=$this->highlight($snippet['snippet']) ?>...<span class="quoteend">”</span><br/> + <? endif; ?> + <? endif; ?> + <br/> + <? endif; ?> + + <div class="callnumAndLocation ajax-availability hide"> + <? if ($this->driver->supportsAjaxStatus()): ?> + <strong class="hideIfDetailed"><?=$this->transEsc('Call Number')?>:</strong> + <span class="callnumber ajax-availability hide"> + <?=$this->transEsc('Loading')?>...<br/> + </span> + <strong><?=$this->transEsc('Located')?>:</strong> + <span class="location ajax-availability hide"> + <?=$this->transEsc('Loading')?>... + </span> + <div class="locationDetails"></div> + <? else: ?> + <? $summCallNo = $this->driver->getCallNumber(); if (!empty($summCallNo)): ?> + <strong><?=$this->transEsc('Call Number')?>:</strong> <?=$this->escapeHtml($summCallNo)?> + <? endif; ?> + <? endif; ?> + </div> + + <? /* We need to find out if we're supposed to display an OpenURL link ($openUrlActive), + but even if we don't plan to display the link, we still want to get the $openUrl + value for use in generating a COinS (Z3988) tag -- see bottom of file. + */ + $openUrl = $this->driver->getOpenURL(); + $openUrlActive = $this->driver->openURLActive('results'); + $urls = $this->record($this->driver)->getLinkDetails(); + if ($openUrlActive || !empty($urls)): ?> + <? if ($openUrlActive): ?> + <br/> + <?=$this->openUrl($openUrl)?> + <? if ($this->driver->replaceURLsWithOpenURL()) $urls = array(); // clear URL list if replace setting is active ?> + <? endif; ?> + <? if (!is_array($urls)) $urls = array(); + if(!$this->driver->isCollection()): + foreach ($urls as $current): ?> + <a href="<?=$this->escapeHtml($this->proxyUrl($current['url']))?>" class="fulltext" target="new"><i class="icon-external-link"></i> <?=($current['url'] == $current['desc']) ? $this->transEsc('Get full text') : $this->escapeHtml($current['desc'])?></a><br/> + <? endforeach; ?> + <? endif; ?> + <? endif; ?> + + <?=str_replace('class="', 'class="label label-info ', $this->record($this->driver)->getFormatList())?> + + <? if (!$openUrlActive && empty($urls) && $this->driver->supportsAjaxStatus()): ?> + <span class="status ajax-availability small "> + <span class="label"><?=$this->transEsc('Loading')?>...</span> + </span> + <? endif; ?> + <?=$this->record($this->driver)->getPreviews()?> + </div> + </div> + + <div class="span2 noprint"> + <i class="icon-heart"></i> <a href="<?=$this->recordLink()->getActionUrl($this->driver, 'Save')?>" class="save-record modal-link" id="<?=$this->driver->getUniqueId() ?>" title="<?=$this->transEsc('Add to favorites')?>"><?=$this->transEsc('Add to favorites')?></a><br/> + + <div class="savedLists info hide"> + <strong><?=$this->transEsc("Saved in")?>:</strong> + </div> + + <? $trees = $this->driver->tryMethod('getHierarchyTrees'); if (!empty($trees)): ?> + <? foreach ($trees as $hierarchyID => $hierarchyTitle): ?> + <div class="hierarchyTreeLink"> + <input type="hidden" value="<?=$this->escapeHtml($hierarchyID)?>" class="hiddenHierarchyId" /> + <i class="icon-leaf"></i> + <a class="hierarchyTreeLinkText modal-link" href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree')?>?hierarchy=<?=urlencode($hierarchyID)?>#tabnav" title="<?=$this->transEsc('hierarchy_tree')?>"> + <?=$this->transEsc('hierarchy_view_context')?><? if (count($trees) > 1): ?>: <?=$this->escapeHtml($hierarchyTitle)?><? endif; ?> + </a> + </div> + <? endforeach; ?> + <? endif; ?> + </div> +</div> + +<?=$openUrl?'<span class="Z3988" title="'.$this->escapeHtml($openUrl).'"></span>':''?> diff --git a/themes/bootstrap/templates/RecordDriver/SolrDefault/toolbar.phtml b/themes/bootstrap/templates/RecordDriver/SolrDefault/toolbar.phtml new file mode 100644 index 00000000000..75bbdac9f6d --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrDefault/toolbar.phtml @@ -0,0 +1,56 @@ +<? + $addThis = $this->addThis(); + if (!empty($addThis)) { + $this->headScript()->appendFile('https://s7.addthis.com/js/250/addthis_widget.js?pub=' . urlencode($addThis)); + } + + // Set up some variables for convenience: + $id = $this->driver->getUniqueId(); + $ajaxHref = '/AJAX/JSON?method=getLightbox&submodule=Record&id=' . $id; + $controllerClass = 'controller:' . $this->record($this->driver)->getController(); + $cart = $this->cart(); + $cartId = $this->driver->getResourceSource() . '|' . $id; +?> +<div class="centered-pills noprint"> + <ul class="nav nav-pills"> + <li><a id="cite-record" class="modal-link <?=$controllerClass?>" href="<?=$this->url('record-cite', array('id'=>$id)) ?>" title="<?=$this->transEsc('Cite this')?>"><i class="icon-asterisk"></i> <?=$this->transEsc('Cite this')?></a></li> + <? if (count($this->driver->getCitationFormats()) > 0): ?> + <? endif; ?> + <li><a id="sms-record" class="modal-link <?=$controllerClass?>" href="<?=$this->url('record-sms', array('id'=>$id)) ?>" title="<?=$this->transEsc('Text this')?>"><i class="icon-phone-sign"></i> <?=$this->transEsc('Text this')?></a></li> + <li><a id="mail-record" class="modal-link <?=$controllerClass?>" href="<?=$this->url('record-email', array('id'=>$id)) ?>" title="<?=$this->transEsc('Email this')?>"><i class="icon-envelope"></i> <?=$this->transEsc('Email this')?></a></li> + + <? $exportFormats = $this->export()->getFormatsForRecord($this->driver); ?> + <? if(count($exportFormats) > 0): ?> + <li class="dropdown"> + <a class="export-toggle dropdown-toggle" data-toggle="dropdown" href="<?=$this->recordLink()->getActionUrl($this->driver, 'Export')?>"><i class="icon-list-alt"></i> <?=$this->transEsc('Export Record') ?></a> + <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu"> + <? foreach ($exportFormats as $exportFormat): ?> + <li><a <? if ($this->export()->needsRedirect($exportFormat)): ?>target="<?=$this->escapeHtml($exportFormat)?>Main" <? endif; ?>href="<?=$this->recordLink()->getActionUrl($this->driver, 'Export')?>?style=<?=$this->escapeHtml($exportFormat)?>"><?=$this->transEsc('Export to')?> <?=$this->transEsc($exportFormat)?></a></li> + <? endforeach; ?> + </ul> + </li> + <? endif; ?> + + <li><a id="save-record" class="modal-link <?=$controllerClass?>" href="<?=$this->recordLink()->getActionUrl($this->driver, 'Save')?>" title="<?=$this->transEsc('Add to favorites')?>"><i class="icon-plus-sign"></i> <?=$this->transEsc('Add to favorites')?></a></li> + <? if (!empty($addThis)): ?> + <li><a class="addThis addthis_button" href="https://www.addthis.com/bookmark.php?v=250&pub=<?=urlencode($addThis)?>"><i class="icon-bookmark"></i> <?=$this->transEsc('Bookmark')?></a></li> + <? endif; ?> + <? if ($cart->isActive()): ?> + <li id="bookbag-menu"> + <input id="cartId" type="hidden" name="ids[]" value="<?=$this->escapeHtml($cartId)?>" /> + <a id="cart-add" class="<? if(!$cart->contains($cartId)): ?>correct <? endif ?>hidden" href="#"><i class="icon-plus-sign"></i> <?=$this->transEsc('Add to Book Bag') ?></a> + <a id="cart-remove" class="<? if($cart->contains($cartId)): ?>correct <? endif ?>hidden" href="#"><i class="icon-minus-sign"></i> <?=$this->transEsc('Remove from Book Bag') ?></a> + <noscript> + <form method="post" name="addForm" action="<?=$this->url('cart-home')?>"> + <input id="cartId" type="hidden" name="ids[]" value="<?=$this->escapeHtml($cartId)?>" /> + <? if ($cart->contains($cartId)): ?> + <input class="btn" type="submit" name="delete" value="<?=$this->transEsc('Remove from Book Bag')?>"/> + <? else: ?> + <input class="btn" type="submit" name="add" value="<?=$this->transEsc('Add to Book Bag')?>"/> + <? endif; ?> + </form> + </noscript> + </li> + <? endif; ?> + </ul> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/SolrWeb/result-list.phtml b/themes/bootstrap/templates/RecordDriver/SolrWeb/result-list.phtml new file mode 100644 index 00000000000..17b225eb2ae --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/SolrWeb/result-list.phtml @@ -0,0 +1,35 @@ +<? + $url = $this->driver->getUrl(); +?> +<div class="listentry span12 clearfix"> + <div class="resultItemLine1"> + <a href="<?=$this->escapeHtml($url)?>" class="title"><? + $summHighlightedTitle = $this->driver->getHighlightedTitle(); + $summTitle = $this->driver->getTitle(); + if (!empty($summHighlightedTitle)) { + echo $this->highlight($this->addEllipsis($summHighlightedTitle, $summTitle)); + } else if (!empty($summTitle)) { + echo $this->escapeHtml($this->truncate($summTitle, 180)); + } else { + echo $this->transEsc('Title not available'); + } + ?></a> + </div> + + <div class="resultItemLine2"> + <? $snippet = $this->driver->getHighlightedSnippet(); ?> + <? $summary = $this->driver->getSummary(); ?> + <? if (!empty($snippet)): ?> + <?=$this->highlight($snippet['snippet'])?> + <? elseif (!empty($summary)): ?> + <?=$this->escapeHtml($summary[0])?> + <? endif; ?> + </div> + + <div class="resultItemLine3"> + <span class="ui-li-desc"><?=$this->escapeHtml($url)?></span> + <? $lastMod = $this->driver->getLastModified(); if (!empty($lastMod)): ?> + <br /><?=$this->transEsc('Last Modified')?>: <?=$this->escapeHtml(trim(str_replace(array('T', 'Z'), ' ', $lastMod)))?> + <? endif; ?> + </div> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Summon/format-class.phtml b/themes/bootstrap/templates/RecordDriver/Summon/format-class.phtml new file mode 100644 index 00000000000..5601e7f5710 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Summon/format-class.phtml @@ -0,0 +1,44 @@ +<? + // Convert Summon formats to VuFind formats so icons display correctly: + switch ($this->format) { + case 'Audio Recording': + echo 'audio'; + break; + case 'Book': + case 'Book Chapter': + echo 'book'; + break; + case 'Computer File': + case 'Web Resource': + echo 'electronic'; + break; + case 'Dissertation': + case 'Manuscript': + case 'Paper': + case 'Patent': + echo 'manuscript'; + break; + case 'eBook': + echo 'ebook'; + break; + case 'Kit': + echo 'kit'; + break; + case 'Image': + case 'Photograph': + echo 'photo'; + break; + case 'Music Score': + echo 'musicalscore'; + break; + case 'Newspaper Article': + echo 'newspaper'; + break; + case 'Video Recording': + echo 'video'; + break; + default: + echo 'journal'; + break; + } +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Summon/link-author.phtml b/themes/bootstrap/templates/RecordDriver/Summon/link-author.phtml new file mode 100644 index 00000000000..5aebd76f472 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Summon/link-author.phtml @@ -0,0 +1 @@ +<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=Author \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Summon/link-journaltitle.phtml b/themes/bootstrap/templates/RecordDriver/Summon/link-journaltitle.phtml new file mode 100644 index 00000000000..5536935b4f4 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Summon/link-journaltitle.phtml @@ -0,0 +1 @@ +<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=PublicationTitle \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Summon/link-series.phtml b/themes/bootstrap/templates/RecordDriver/Summon/link-series.phtml new file mode 100644 index 00000000000..26a9524f15a --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Summon/link-series.phtml @@ -0,0 +1 @@ +<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=PublicationSeriesTitle \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Summon/link-subject.phtml b/themes/bootstrap/templates/RecordDriver/Summon/link-subject.phtml new file mode 100644 index 00000000000..cf66f99c101 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Summon/link-subject.phtml @@ -0,0 +1 @@ +<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=Subject \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/Summon/link-title.phtml b/themes/bootstrap/templates/RecordDriver/Summon/link-title.phtml new file mode 100644 index 00000000000..57cdc24f2d6 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/Summon/link-title.phtml @@ -0,0 +1 @@ +<?=$this->url('summon-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=Title \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/WorldCat/link-author.phtml b/themes/bootstrap/templates/RecordDriver/WorldCat/link-author.phtml new file mode 100644 index 00000000000..b4790f29557 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/WorldCat/link-author.phtml @@ -0,0 +1 @@ +<?=$this->url('worldcat-search')?>?lookfor=<?=urlencode($this->lookfor)?>&type=srw.au%3Asrw.pn%3Asrw.cn \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/WorldCat/link-series.phtml b/themes/bootstrap/templates/RecordDriver/WorldCat/link-series.phtml new file mode 100644 index 00000000000..d95ad084838 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/WorldCat/link-series.phtml @@ -0,0 +1 @@ +<?=$this->url('worldcat-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=srw.se \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/WorldCat/link-subject.phtml b/themes/bootstrap/templates/RecordDriver/WorldCat/link-subject.phtml new file mode 100644 index 00000000000..6b6bb5c9235 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/WorldCat/link-subject.phtml @@ -0,0 +1 @@ +<?=$this->url('worldcat-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=srw.su \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordDriver/WorldCat/link-title.phtml b/themes/bootstrap/templates/RecordDriver/WorldCat/link-title.phtml new file mode 100644 index 00000000000..03f8d524558 --- /dev/null +++ b/themes/bootstrap/templates/RecordDriver/WorldCat/link-title.phtml @@ -0,0 +1 @@ +<?=$this->url('worldcat-search')?>?lookfor=%22<?=urlencode($this->lookfor)?>%22&type=srw.ti%3Asrw.se \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordTab/collectionhierarchytree.phtml b/themes/bootstrap/templates/RecordTab/collectionhierarchytree.phtml new file mode 100644 index 00000000000..7edb73527f5 --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/collectionhierarchytree.phtml @@ -0,0 +1,20 @@ +<? + $this->mainTreeClass = 'span6'; + $this->treeContext = 'Collection'; +?> +<div class="row-fluid"> + <?=$this->render('RecordTab/hierarchytree.phtml')?> + <div class="span5"> + <div id="hierarchyRecordHolder"> + <div id="hierarchyRecord"> + <? if (($collectionRecord = $this->tab->getActiveRecord()) !== false): ?> + <? if ($collectionRecord === null): ?> + <?=$this->render('collection/collection-record-error.phtml')?> + <? else: ?> + <?=html_entity_decode($this->record($collectionRecord)->getCollectionBriefRecord())?> + <? endif; ?> + <? endif; ?> + </div> + </div> + </div> +</div> diff --git a/themes/bootstrap/templates/RecordTab/collectionlist.phtml b/themes/bootstrap/templates/RecordTab/collectionlist.phtml new file mode 100644 index 00000000000..55e802739a6 --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/collectionlist.phtml @@ -0,0 +1,32 @@ +<? + // Set page title. + $this->headTitle($this->translate('Collection Items') . ': ' . $this->driver->getBreadcrumb()); + + // Get search results + $results = $this->tab->getResults(); + $params = $this->tab->getParams(); + $searchDetails = array('results' => $results, 'params' => $params); +?> +<? if (($recordTotal = $results->getResultTotal()) > 0): // only display these at very top if we have results ?> + <? foreach ($results->getRecommendations('top') as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> + <div class="clearfix"> + <?=$this->transEsc("Showing")?> + <strong><?=$results->getStartRecord()?></strong> - <strong><?=$results->getEndRecord()?></strong> + <? if (!isset($this->skipTotalCount)): ?> + <?=$this->transEsc('of')?> <strong><?=number_format($recordTotal)?></strong> <?=$this->transEsc('Items')?> + <? endif; ?> + <?=$this->render('search/controls/sort.phtml', $searchDetails)?> + <br/><br/> + <?=$this->render('search/controls/view.phtml', $searchDetails)?> + </div> + <form class="form-inline" method="post" name="bulkActionForm" action="<?=$this->url('cart-home')?>"> + <?=$this->context($this)->renderInContext('search/bulk-action-buttons.phtml', $searchDetails + array('idPrefix' => ''))?> + <hr/> + <?=$this->render('search/list-' . $results->getParams()->getView() . '.phtml', $searchDetails)?> + <?=$this->paginationControl($results->getPaginator(), 'Sliding', 'search/pagination.phtml', array('results' => $results))?> + </form> +<? else: ?> + <?=$this->transEsc('collection_empty')?> +<? endif; ?> diff --git a/themes/bootstrap/templates/RecordTab/description.phtml b/themes/bootstrap/templates/RecordTab/description.phtml new file mode 100644 index 00000000000..447a297a4b0 --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/description.phtml @@ -0,0 +1,237 @@ +<? + // Set page title. + $this->headTitle($this->translate('Description') . ': ' . $this->driver->getBreadcrumb()); + + // Grab clean ISBN for convenience: + $isbn = $this->driver->getCleanISBN(); + + // Activate Syndetics Plus if necessary: + if ($this->syndeticsPlus()->isActive()) { + $this->headScript()->appendFile($this->syndeticsPlus()->getScript()); + } +?> +<table class="table table-striped" summary="<?=$this->transEsc('Description')?>"> + <? $summ = $this->driver->getSummary(); if (!empty($summ)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Summary')?>: </th> + <td> + <? foreach ($summ as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $dateSpan = $this->driver->getDateSpan(); if (!empty($dateSpan)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Published')?>: </th> + <td> + <? foreach ($dateSpan as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $notes = $this->driver->getGeneralNotes(); if (!empty($notes)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Item Description')?>: </th> + <td> + <? foreach ($notes as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $physical = $this->driver->getPhysicalDescriptions(); if (!empty($physical)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Physical Description')?>: </th> + <td> + <? foreach ($physical as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $freq = $this->driver->getPublicationFrequency(); if (!empty($freq)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Publication Frequency')?>: </th> + <td> + <? foreach ($freq as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $playTime = $this->driver->getPlayingTimes(); if (!empty($playTime)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Playing Time')?>: </th> + <td> + <? foreach ($playTime as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $system = $this->driver->getSystemDetails(); if (!empty($system)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Format')?>: </th> + <td> + <? foreach ($system as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $audience = $this->driver->getTargetAudienceNotes(); if (!empty($audience)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Audience')?>: </th> + <td> + <? foreach ($audience as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $awards = $this->driver->getAwards(); if (!empty($awards)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Awards')?>: </th> + <td> + <? foreach ($awards as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $credits = $this->driver->getProductionCredits(); if (!empty($credits)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Production Credits')?>: </th> + <td> + <? foreach ($credits as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $bib = $this->driver->getBibliographyNotes(); if (!empty($bib)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Bibliography')?>: </th> + <td> + <? foreach ($bib as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $isbns = $this->driver->getISBNs(); if (!empty($isbns)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('ISBN')?>: </th> + <td> + <? foreach ($isbns as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $issns = $this->driver->getISSNs(); if (!empty($issns)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('ISSN')?>: </th> + <td> + <? foreach ($issns as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $related = $this->driver->getRelationshipNotes(); if (!empty($related)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Related Items')?>: </th> + <td> + <? foreach ($related as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $access = $this->driver->getAccessRestrictions(); if (!empty($access)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Access')?>: </th> + <td> + <? foreach ($access as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $findingAids = $this->driver->getFindingAids(); if (!empty($findingAids)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Finding Aid')?>: </th> + <td> + <? foreach ($findingAids as $field): ?> + <?=$this->escapeHtml($field)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $authorNotes = empty($isbn) ? array() : $this->authorNotes($isbn); if (!empty($authorNotes)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Author Notes')?>: </th> + <td> + <? foreach ($authorNotes as $provider => $list): ?> + <? foreach ($list as $field): ?> + <?=$field['Content']?><br/> + <? endforeach; ?> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + + <? $videoClips = empty($isbn) ? array() : $this->videoClips($isbn); if (!empty($videoClips)): ?> + <? $contentDisplayed = true; ?> + <tr valign="top"> + <th><?=$this->transEsc('Video Clips')?>: </th> + <td> + <? foreach ($videoClips as $provider => $list): ?> + <? foreach ($list as $field): ?> + <?=$field['Content']?><br/> + <? if (isset($field['Copyright'])): ?><?=$field['Copyright']?><br/><? endif; ?> + <? endforeach; ?> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + <? if (!isset($contentDisplayed) || !$contentDisplayed): // Avoid errors if there were no rows above ?> + <tr><td><?=$this->transEsc('no_description')?></td></tr> + <? endif; ?> +</table> diff --git a/themes/bootstrap/templates/RecordTab/excerpt.phtml b/themes/bootstrap/templates/RecordTab/excerpt.phtml new file mode 100644 index 00000000000..fcc08cd3dec --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/excerpt.phtml @@ -0,0 +1,24 @@ +<? + // Set page title. + $this->headTitle($this->translate('Excerpt') . ': ' . $this->driver->getBreadcrumb()); + + // Grab excerpt data: + $isbn = $this->driver->getCleanISBN(); + $excerpts = empty($isbn) ? array() : $this->excerpt($isbn); + + // Activate Syndetics Plus if necessary: + if ($this->syndeticsPlus()->isActive()) { + $this->headScript()->appendFile($this->syndeticsPlus()->getScript()); + } +?> +<? if (count($excerpts) > 0): ?> + <? foreach ($excerpts as $provider => $list): ?> + <? foreach ($list as $excerpt): ?> + <p class="summary"><?=$excerpt['Content']?></p> + <?=isset($excerpt['Copyright']) ? $excerpt['Copyright'] : ''?> + <hr/> + <? endforeach; ?> + <? endforeach; ?> +<? else: ?> + <?=$this->transEsc('No excerpts were found for this record.')?> +<? endif; ?> diff --git a/themes/bootstrap/templates/RecordTab/hierarchytree.phtml b/themes/bootstrap/templates/RecordTab/hierarchytree.phtml new file mode 100644 index 00000000000..68873433855 --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/hierarchytree.phtml @@ -0,0 +1,55 @@ +<? + // Set page title. + $this->headTitle($this->translate('hierarchy_tree') . ': ' . $this->driver->getBreadcrumb()); + $hierarchyTreeList = $this->tab->getTreeList(); + $activeTree = $this->tab->getActiveTree(); + + $this->inlineScript( + \Zend\View\Helper\HeadScript::SCRIPT, + "var hierarchySettings = {\n" + . " lightboxMode: " . ($this->layout()->getTemplate() == 'layout/lightbox' ? 'true' : 'false') . ",\n" + . " fullHierarchy: " . ($this->tab->isFullHierarchyVisible() ? 'true' : 'false') . "\n" + . "};\n" + . "vufindString.showTree = \"" . $this->transEsc('hierarchy_show_tree') . "\";\n" + . "vufindString.hideTree = \"" . $this->transEsc('hierarchy_hide_tree') . "\";\n" + ); + $this->inlineScript(\Zend\View\Helper\HeadScript::FILE, 'jsTree/jquery.jstree.js'); + $this->inlineScript(\Zend\View\Helper\HeadScript::FILE, 'jsTree/hierarchyTree.js'); + echo $this->inlineScript(); +?> +<div<?=isset($this->mainTreeClass) ? ' class="' . $this->mainTreeClass . '"' : ''?>> + <? if (count($hierarchyTreeList) > 1): ?> + <div id="treeSelector"> + <? foreach ($hierarchyTreeList as $hierarchy => $hierarchyTitle): ?> + <a class="tree<?=($activeTree == $hierarchy) ? ' currentTree' : ''?>" href="<?=$this->recordLink()->getTabUrl($this->driver, 'HierarchyTree')?>?hierarchy=<?=urlencode($hierarchy)?>"><?=$this->escapeHtml($hierarchyTitle)?></a> + <? endforeach; ?> + </div> + <? endif; ?> + <? if ($activeTree): ?> + <div id="hierarchyTreeHolder"> + <? if ($this->tab->searchActive()): ?> + <div id="treeSearch" class="form-search row-fluid"> + <input type="text" id="treeSearchText" class="search-query span6" value=""> + <select class="span3 id="treeSearchType" name="type"> + <option value="AllFields"><?=$this->transEsc('All Fields')?></option> + <option value="Title"><?=$this->transEsc('Title')?></option> + </select> + <input type="submit" class="btn" value="<?=$this->transEsc('Search') ?>"/> + <span id="treeSearchLoadingImg" class="hide"><i class="icon-spinner icon-large icon-spin"></i></span> + </div> + <div id="treeSearchNoResults" class="alert alert-error hide"><?=$this->transEsc('nohit_heading')?></div> + <div id="treeSearchLimitReached" class="alert alert-error hide"><?=$this->translate('tree_search_limit_reached_html', array('%%url%%' => $this->url('search-results'), '%%limit%%' => $this->tab->getSearchLimit()))?></div> + <? endif; ?> + <div id="hierarchyTree" class="pad"> + <input type="hidden" value="<?=$this->escapeHtml($this->driver->getUniqueId())?>" class="hiddenRecordId" /> + <input type="hidden" value="<?=$this->escapeHtml($activeTree)?>" class="hiddenHierarchyId" /> + <input type="hidden" value="<?=isset($this->treeContext) ? $this->treeContext : 'Record'?>" class="hiddenContext" /> + <? if ($this->layout()->getTemplate() != 'layout/lightbox'): ?> + <noscript> + <?=$this->tab->renderTree($this->url('home'))?> + </noscript> + <? endif; ?> + </div> + </div> + <? endif; ?> +</div> diff --git a/themes/bootstrap/templates/RecordTab/holdingsils.phtml b/themes/bootstrap/templates/RecordTab/holdingsils.phtml new file mode 100644 index 00000000000..2d781798d7a --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/holdingsils.phtml @@ -0,0 +1,124 @@ +<? + // Set up convenience variables: + $account = $this->auth()->getManager(); + $user = $account->isLoggedIn(); + $holdings = $this->driver->getRealTimeHoldings(); + $openUrl = $this->driver->openURLActive('holdings') ? $this->driver->getOpenURL() : false; + $offlineMode = $this->ils()->getOfflineMode(); + // Account for replace_other_urls setting + $urls = ($openUrl && $this->driver->replaceURLsWithOpenURL()) ? array() : $this->record($this->driver)->getLinkDetails(); + + // Set page title. + $this->headTitle($this->translate('Holdings') . ': ' . $this->driver->getBreadcrumb()); +?> +<? if ($offlineMode == "ils-offline"): ?> + <div class="alert alert-warning"> + <h2><?=$this->transEsc('ils_offline_title')?></h2> + <p><strong><?=$this->transEsc('ils_offline_status')?></strong></p> + <p><?=$this->transEsc('ils_offline_holdings_message')?></p> + <? $supportEmail = $this->escapeHtml($this->systemEmail()); ?> + <p><a href="mailto:<?=$supportEmail?>"><?=$supportEmail?></a></p> + </div> +<? endif; ?> +<? if (($this->ils()->getHoldsMode() == 'driver' && !empty($holdings)) || $this->ils()->getTitleHoldsMode() == 'driver'): ?> + <? if ($account->loginEnabled() && $offlineMode != 'ils-offline'): ?> + <? if (!$user): ?> + <div class="alert alert-info"> + <a href="<?=$this->currentPath()?>?login=true&catalogLogin=true"><?=$this->transEsc("Login")?></a> <?=$this->transEsc("hold_login")?> + </div> + <? elseif (!$user->cat_username): ?> + <div class="alert alert-info"> + <?=$this->translate("hold_profile_html", array('%%url%%' => $this->currentPath() . '?catalogLogin=true'))?> + </div> + <? endif; ?> + <? endif; ?> +<? endif; ?> +<? $holdingTitleHold = $this->driver->tryMethod('getRealTimeTitleHold'); if (!empty($holdingTitleHold)): ?> + <a class="holdPlace" href="<?=$this->recordLink()->getHoldUrl($holdingTitleHold)?>"><?=$this->transEsc('title_hold_place')?></a> +<? endif; ?> +<? if (!empty($urls) || $openUrl): ?> + <h3><?=$this->transEsc("Internet")?></h3> + <? if (!empty($urls)): ?> + <? foreach ($urls as $current): ?> + <a href="<?=$this->escapeHtml($this->proxyUrl($current['url']))?>"><?=$this->escapeHtml($current['desc'])?></a><br/> + <? endforeach; ?> + <? endif; ?> + <? if ($openUrl): ?><?=$this->openUrl($openUrl);?><? endif; ?> +<? endif; ?> +<? foreach ($holdings as $location => $holding): ?> +<h3><?=$this->transEsc($location)?></h3> +<table class="table table-striped" summary="<?=$this->transEsc('Holdings details from')?> <?=$this->transEsc($location)?>"> + <? if (isset($holding['items'][0]['callnumber'])): ?> + <tr> + <th width="50%"><?=$this->transEsc("Call Number")?>: </th> + <td><?=$this->escapeHtml($holding['items'][0]['callnumber'])?></td> + </tr> + <? endif; ?> + <? if (!empty($holding['summary'])): ?> + <tr> + <th><?=$this->transEsc("Volume Holdings")?>: </th> + <td> + <? foreach ($holding['summary'] as $current): ?> + <?=$this->escapeHtml($current)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + <? if (!empty($holding['notes'])): ?> + <tr> + <th><?=$this->transEsc("Notes")?>: </th> + <td> + <? foreach ($holding['notes'] as $data): ?> + <?=$this->escapeHtml($data)?><br/> + <? endforeach; ?> + </td> + </tr> + <? endif; ?> + <? foreach ($holding['items'] as $row): ?> + <? $check = (isset($row['check']) && $row['check']); ?> + <? if (isset($row['barcode']) && $row['barcode'] != ""): ?> + <tr> + <th><?=$this->transEsc("Copy")?> <?=$this->escapeHtml($row['number'])?></th> + <td> + <? if ($row['reserve'] == "Y"): ?> + <?=$this->transEsc("On Reserve - Ask at Circulation Desk")?> + <? elseif (isset($row['use_unknown_message']) && $row['use_unknown_message']): ?> + <span class="muted"><?=$this->transEsc("status_unknown_message")?></span> + <? else: ?> + <? if ($row['availability']): ?> + <? /* Begin Available Items (Holds) */ ?> + <span class="text-success"><?=$this->transEsc("Available")?></span> + <? if (isset($row['link']) && $row['link']): ?> + <a<?=$check ? ' class="checkRequest"' : ''?> href="<?=$this->recordLink()->getHoldUrl($row['link'])?>"><?=$this->transEsc($check ? "Check Hold" : "Place a Hold")?></a> + <? endif; ?> + <? else: ?> + <? /* Begin Unavailable Items (Recalls) */ ?> + <span class="text-error"><?=$this->transEsc($row['status'])?></span> + <? if (isset($row['returnDate']) && $row['returnDate']): ?>– <span class="small"><?=$this->escapeHtml($row['returnDate'])?></span><? endif; ?> + <? if (isset($row['duedate']) && $row['duedate']): ?> + – <span class="small"><?=$this->transEsc("Due")?>: <?=$this->escapeHtml($row['duedate'])?></span> + <? endif; ?> + <? if (isset($row['requests_placed']) && $row['requests_placed'] > 0): ?> + <span><?=$this->transEsc("Requests")?>: <?=$this->escapeHtml($row['requests_placed'])?></span> + <? endif; ?> + <? if (isset($row['link']) && $row['link']): ?> + <a<?=$check ? ' class="checkRequest"' : ''?> href="<?=$this->recordLink()->getHoldUrl($row['link'])?>"><?=$this->transEsc($check ? "Check Recall" : "Recall This")?></a> + <? endif; ?> + <? endif; ?> + <? endif; ?> + </td> + </tr> + <? endif; ?> + <? endforeach; ?> +</table> +<? endforeach; ?> + +<? $history = $this->driver->getRealTimeHistory(); ?> +<? if (is_array($history) && !empty($history)): ?> +<h3><?=$this->transEsc("Most Recent Received Issues")?></h3> +<ul> + <? foreach ($history as $row): ?> + <li><?=$this->escapeHtml($row['issue'])?></li> + <? endforeach; ?> +</ul> +<? endif; ?> diff --git a/themes/bootstrap/templates/RecordTab/holdingsworldcat.phtml b/themes/bootstrap/templates/RecordTab/holdingsworldcat.phtml new file mode 100644 index 00000000000..2e8d3104c35 --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/holdingsworldcat.phtml @@ -0,0 +1,24 @@ +<? $holdings = $this->worldcat()->getHoldings($this->driver->getUniqueId()); if ($holdings && count($holdings) > 0): ?> +<h3><?=$this->transEsc('Holdings at Other Libraries')?></h3> +<table class="table table-striped"> +<? foreach ($holdings as $holding): ?> + <tr> + <th colspan="2"> + <? if (isset($holding->electronicAddress->text) && !empty($holding->electronicAddress->text)): ?> + <a href="<?=$this->escapeHtml($holding->electronicAddress->text)?>"><?=$this->escapeHtml($holding->physicalLocation)?></a> + <? else: ?> + <?=$this->escapeHtml($holding->physicalLocation)?> + <? endif; ?> + </th> + </tr> + <tr> + <th><?=$this->transEsc('Address')?>: </th> + <td><?=$this->escapeHtml($holding->physicalAddress->text)?></td> + </tr> + <tr> + <th><?=$this->transEsc('Copies')?>: </th> + <td><?=$this->escapeHtml($holding->holdingSimple->copiesSummary->copiesCount)?></td> + </tr> +<? endforeach; ?> +</table> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordTab/map.phtml b/themes/bootstrap/templates/RecordTab/map.phtml new file mode 100644 index 00000000000..1cefe10b1e7 --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/map.phtml @@ -0,0 +1,65 @@ +<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.5&sensor=false&language=<?=$this->tab->userLang()?>"></script> + +<script type="text/javascript"> + +var markers; +var markersData; +var latlng; +var myOptions; +var map; +var infowindow = new google.maps.InfoWindow({maxWidth: 480, minWidth: 480}); + function initialize() { + markersData = <?=$this->tab->getGoogleMapMarker()?>; + latlng = new google.maps.LatLng(0, 0); + myOptions = { + zoom: 1, + center: latlng, + mapTypeControl: true, + mapTypeControlOptions: { + style: google.maps.MapTypeControlStyle.DROPDOWN_MENU + }, + mapTypeId: google.maps.MapTypeId.ROADMAP + }; + map = new google.maps.Map(document.getElementById("map_canvas"), + myOptions); + showMarkers(); + } + function showMarkers(){ + deleteOverlays(); + markers = []; + + for (var i = 0; i<markersData.length; i++){ + var disTitle = markersData[i].title; + var iconTitle = disTitle; + if (disTitle.length>25){ + iconTitle = disTitle.substring(0,25) + "..."; + } + var markerImg = "https://chart.googleapis.com/chart?chst=d_bubble_text_small&chld=edge_bc|" + iconTitle +"|EEEAE3|"; + var labelXoffset = 1 + disTitle.length * 4; + var latLng = new google.maps.LatLng(markersData[i].lat , markersData[i].lon) + var marker = new google.maps.Marker({ + position: latLng, + map: map, + title: disTitle, + icon: markerImg + }); + markers.push(marker); + } + } + function deleteOverlays() { + if (markers) { + for (i in markers) { + markers[i].setMap(null); + } + markers.length = 0; + } + } + function refreshMap() { + showMarkers(); + } + google.maps.event.addDomListener(window, 'load', initialize); +</script> + +<div id="wrap" onload="initialize()" style="width: 674px; height: 479px"> + <div id="map_canvas" style="width: 100%; height: 100%"></div> +</div> diff --git a/themes/bootstrap/templates/RecordTab/reviews.phtml b/themes/bootstrap/templates/RecordTab/reviews.phtml new file mode 100644 index 00000000000..876bcfa52db --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/reviews.phtml @@ -0,0 +1,41 @@ +<? + // Set page title. + $this->headTitle($this->translate('Reviews') . ': ' . $this->driver->getBreadcrumb()); + + // Grab review data: + $isbn = $this->driver->getCleanISBN(); + $reviews = empty($isbn) ? array() : $this->reviews($isbn); + + // Activate Syndetics Plus if necessary: + if ($this->syndeticsPlus()->isActive()) { + $this->headScript()->appendFile($this->syndeticsPlus()->getScript()); + } +?> +<? if (count($reviews) > 0): ?> + <? foreach ($reviews as $provider => $list): ?> + <? foreach ($list as $review): ?> + <? if (isset($review['Summary']) && !empty($review['Summary'])): ?> + <p> + <? if (isset($review['Rating'])): ?> + <img src="<?=$this->imageLink($review['Rating'] . '.gif')?>" alt="<?=$review['Rating']?>/5 Stars"/> + <? endif; ?> + <strong><?=$review['Summary']?></strong> <?=isset($review['Date']) ? strftime('%B %e, %Y', strtotime($review['Date'])) : ''?> + </p> + <? endif; ?> + <? if (isset($review['Source'])): ?><strong><?=$this->transEsc('Review by')?> <?=$review['Source']?></strong><? endif; ?> + <p class="summary"> + <?=isset($review['Content']) ? $review['Content'] : ''?> + <? if ((!isset($review['Content']) || empty($review['Content'])) && isset($review['ReviewURL'])): ?> + <a target="new" href="<?=$this->escapeHtml($review['ReviewURL'])?>"><?=$this->transEsc('Read the full review online...')?></a> + <? endif; ?> + </p> + <?=isset($review['Copyright']) ? $review['Copyright'] : ''?> + <? if ($provider == "amazon" || $provider == "amazoneditorial"): ?> + <div><a target="new" href="http://amazon.com/dp/<?=$isbn?>"><?=$this->transEsc('Supplied by Amazon')?></a></div> + <? endif; ?> + <hr/> + <? endforeach; ?> + <? endforeach; ?> +<? else: ?> + <?=$this->transEsc('No reviews were found for this record')?>. +<? endif; ?> diff --git a/themes/bootstrap/templates/RecordTab/staffviewarray.phtml b/themes/bootstrap/templates/RecordTab/staffviewarray.phtml new file mode 100644 index 00000000000..b1c196b440b --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/staffviewarray.phtml @@ -0,0 +1,17 @@ +<? + // Set page title. + $this->headTitle($this->translate('Staff View') . ': ' . $this->driver->getBreadcrumb()); +?> +<table class="table table-striped"> + <? foreach ($this->driver->getRawData() as $field => $values): ?> + <tr> + <th><?=$this->escapeHtml($field)?></th> + <td> + <? if (!is_array($values)) { $values = array($values); } ?> + <? foreach ($values as $value): ?> + <?=$this->escapeHtml(is_array($value) ? print_r($value, true) : $value)?><br /> + <? endforeach; ?> + </td> + </tr> + <? endforeach; ?> +</table> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordTab/staffviewmarc.phtml b/themes/bootstrap/templates/RecordTab/staffviewmarc.phtml new file mode 100644 index 00000000000..cc89c983995 --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/staffviewmarc.phtml @@ -0,0 +1,5 @@ +<? + // Set page title. + $this->headTitle($this->translate('Staff View') . ': ' . $this->driver->getBreadcrumb()); +?> +<?=\VuFind\XSLT\Processor::process('record-marc.xsl', $this->driver->getXML('marc21'))?> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordTab/toc.phtml b/themes/bootstrap/templates/RecordTab/toc.phtml new file mode 100644 index 00000000000..46d9a5921ad --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/toc.phtml @@ -0,0 +1,16 @@ +<? + // Set page title. + $this->headTitle($this->translate('Table of Contents') . ': ' . $this->driver->getBreadcrumb()); + + $toc = $this->driver->getTOC(); +?> +<? if (!empty($toc)): ?> + <strong><?=$this->transEsc('Table of Contents')?>: </strong> + <ul class="toc"> + <? foreach ($toc as $line): ?> + <li><?=$this->escapeHtml($line)?></li> + <? endforeach; ?> + </ul> +<? else: ?> + <?=$this->transEsc("Table of Contents unavailable")?>. +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/RecordTab/usercomments.phtml b/themes/bootstrap/templates/RecordTab/usercomments.phtml new file mode 100644 index 00000000000..49744d891c5 --- /dev/null +++ b/themes/bootstrap/templates/RecordTab/usercomments.phtml @@ -0,0 +1,16 @@ +<? + // Set page title. + $this->headTitle($this->translate('Comments') . ': ' . $this->driver->getBreadcrumb()); +?> + +<div id="commentList"> + <?=$this->render('record/comments-list.phtml')?> +</div> + +<form name="commentRecord" id="commentRecord" action="<?=$this->recordLink()->getActionUrl($this->driver, 'AddComment')?>" method="post"> + <input type="hidden" name="id" value="<?=$this->escapeHtml($this->driver->getUniqueId())?>"/> + <input type="hidden" name="source" value="<?=$this->escapeHtml($this->driver->getResourceSource())?>"/> + <label for="comment" class="offscreen"><?=$this->transEsc("Your Comment")?>:</label> + <textarea id="comment" name="comment" class="span10 <?=$this->jqueryValidation(array('required'=>'This field is required'))?>"></textarea><br/> + <input class="btn" data-loading-text="Submitting..." type="submit" value="<?=$this->transEsc("Add your comment")?>"/> +</form> diff --git a/themes/bootstrap/templates/Related/Editions.phtml b/themes/bootstrap/templates/Related/Editions.phtml new file mode 100644 index 00000000000..e0449b0265f --- /dev/null +++ b/themes/bootstrap/templates/Related/Editions.phtml @@ -0,0 +1,24 @@ +<? $editions = $this->related->getResults(); if (!empty($editions)): ?> + <div class="sidegroup"> + <h4><?=$this->transEsc('Other Editions')?></h4> + <ul class="similar"> + <? foreach ($editions as $data): ?> + <li> + <? $formats = $data->getFormats(); if (count($formats) > 0): ?> + <span class="<?=preg_replace('/[^a-z0-9]/', '', strtolower($formats[0]))?>"> + <? else: ?> + <span> + <? endif; ?> + <a href="<?=$this->recordLink()->getUrl($data)?>"><?=$this->escapeHtml($data->getTitle())?></a> + </span> + <? $author = $data->getPrimaryAuthor(); if (!empty($author)): ?> + <br/><?=$this->transEsc('By')?>: <?=$this->escapeHtml($author);?> + <? endif; ?> + <? $pubDates = $data->getPublicationDates(); if (!empty($pubDates)): ?> + <?=$this->transEsc('Published')?>: (<?=$this->escapeHtml($pubDates[0])?>) + <? endif; ?> + </li> + <? endforeach; ?> + </ul> + </div> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/Related/Similar.phtml b/themes/bootstrap/templates/Related/Similar.phtml new file mode 100644 index 00000000000..aac7370cfbc --- /dev/null +++ b/themes/bootstrap/templates/Related/Similar.phtml @@ -0,0 +1,28 @@ +<div class="sidegroup"> + <h4><?=$this->transEsc('Similar Items')?></h4> + <? $similarRecords = $this->related->getResults(); if (!empty($similarRecords)): ?> + <ul class="unstyled"> + <? foreach ($similarRecords as $data): ?> + <li> + <? $formats = $data->getFormats(); if (count($formats) > 0): ?> + <span class="<?=preg_replace('/[^a-z0-9]/', '', strtolower($formats[0]))?>"> + <? else: ?> + <span> + <? endif; ?> + <a href="<?=$this->recordLink()->getUrl($data)?>"><?=$this->escapeHtml($data->getTitle())?></a> + </span> + <span class="small"> + <? $author = $data->getPrimaryAuthor(); if (!empty($author)): ?> + <?=$this->transEsc('by')?>: <?=$this->escapeHtml($author);?> + <? endif; ?> + <? $pubDates = $data->getPublicationDates(); if (!empty($pubDates)): ?> + <?=$this->transEsc('Published')?>: (<?=$this->escapeHtml($pubDates[0])?>) + <? endif; ?> + </span> + </li> + <? endforeach; ?> + </ul> + <? else: ?> + <p><?=$this->transEsc('Cannot find similar records')?></p> + <? endif; ?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/admin/config.phtml b/themes/bootstrap/templates/admin/config.phtml new file mode 100644 index 00000000000..ac24819e529 --- /dev/null +++ b/themes/bootstrap/templates/admin/config.phtml @@ -0,0 +1,23 @@ +<? + // Set page title. + $this->headTitle($this->translate('VuFind Administration - Configuration')); + + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('admin-home') . '">' . $this->translate('Admin') . '</a> <span class="divider">></span></li> <li class="active">Config</li>'; +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->transEsc('Configuration')?></h2> + <?=$this->flashmessages()?> + <p>Most VuFind configuration is handled by editing the configuration files in <strong><?=$this->escapeHtml($this->baseConfigPath)?></strong>.</p> + <p>Some basic settings can also be adjusted through the auto-configuration tool.</p> + <? if (!$this->showInstallLink): ?> + <p><?=$this->transEsc('Auto configuration is currently disabled') ?>.</p> + <p><a href="<?=$this->url('admin-enableautoconfig')?>" class="btn"><?=$this->transEsc('Enable Auto Config')?></a></p> + <? else: ?> + <p><a href="<?=$this->url('install-home')?>" class="btn btn-primary"><?=$this->transEsc('auto_configure_title')?></a></p> + <? endif; ?> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->render("admin/menu.phtml")?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/admin/disabled.phtml b/themes/bootstrap/templates/admin/disabled.phtml new file mode 100644 index 00000000000..7b8760cf9d5 --- /dev/null +++ b/themes/bootstrap/templates/admin/disabled.phtml @@ -0,0 +1,3 @@ +<div class="alert alert-error"> + The Admin module is currently disabled.<br/>To turn it on, see the admin_enabled setting in the [Site] section of config.ini. +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/admin/home.phtml b/themes/bootstrap/templates/admin/home.phtml new file mode 100644 index 00000000000..2cebd3f3acb --- /dev/null +++ b/themes/bootstrap/templates/admin/home.phtml @@ -0,0 +1,50 @@ +<? + // Set page title. + $this->headTitle($this->translate('VuFind Administration - Home')); + + // Set up map of core name => label + $coreLabels = array( + 'biblio' => $this->translate('Bibliographic Index'), + 'authority' => $this->translate('Authority Index'), + 'stats' => $this->translate('Usage Statistics Index') + ); + + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('admin-home') . '">' . $this->translate('Admin') . '</a> <span class="divider">></span></li> <li class="active">Home</li>'; +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->transEsc('VuFind Administration')?></h2> + <hr/> + <? $cores = is_object($this->xml) ? $this->xml->xpath('/response/lst[@name="status"]/lst') : array(); ?> + <? foreach ($cores as $core): ?> + <? $coreName = (string)$core['name']; ?> + <? $coreLabel = isset($coreLabels[$coreName]) ? $coreLabels[$coreName] : ucwords($coreName) . ' Index'; ?> + <p class="lead"><?=$this->transEsc($coreLabel)?></p> + <table class="table table-striped"> + <tr> + <th><?=$this->transEsc('Record Count')?>: </th> + <? $recordCount = $core->xpath('//lst[@name="' . $coreName . '"]/lst/int[@name="numDocs"]') ?> + <td><?=$this->escapeHtml((string)array_pop($recordCount))?></td> + </tr> + <tr> + <th><?=$this->transEsc('Start Time')?>: </th> + <? $startTime = $core->xpath('//lst[@name="' . $coreName . '"]/date[@name="startTime"]') ?> + <td><?=$this->escapeHtml(strftime("%b %d, %Y %l:%M:%S%p", strtotime((string)array_pop($startTime))))?></td> + </tr> + <tr> + <th><?=$this->transEsc('Last Modified')?>: </th> + <? $lastModified = $core->xpath('//lst[@name="' . $coreName . '"]/lst/date[@name="lastModified"]') ?> + <td><?=$this->escapeHtml(strftime("%b %d, %Y %l:%M:%S%p", strtotime((string)array_pop($lastModified))))?></td> + </tr> + <tr> + <th><?=$this->transEsc('Uptime')?>: </th> + <? $uptime = $core->xpath('//lst[@name="' . $coreName . '"]/long[@name="uptime"]') ?> + <td><?=$this->printms((string)array_pop($uptime))?></td> + </tr> + </table> + <? endforeach; ?> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->render("admin/menu.phtml")?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/admin/maintenance.phtml b/themes/bootstrap/templates/admin/maintenance.phtml new file mode 100644 index 00000000000..cd0c48fcf3c --- /dev/null +++ b/themes/bootstrap/templates/admin/maintenance.phtml @@ -0,0 +1,22 @@ +<? + // Set page title. + $this->headTitle($this->translate('VuFind Administration - System Maintenance')); + + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('admin-home') . '">' . $this->translate('Admin') . '</a> <span class="divider">></span></li> <li class="active">System Maintenance</li>'; +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->transEsc('System Maintenance')?></h2> + <p class="lead">Utilities</p> + <?=$this->flashMessages()?> + <form class="form-inline" method="get" action="<?=$this->url('admin-deleteexpiredsearches')?>"> + <label for="del_daysOld">Delete unsaved user search histories older than</label> + <input class="input-mini" id="del_daysOld" type="text" name="daysOld" value="2"/> + <span class="help-inline">days.</span> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Submit')?>"/> + </form> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->render("admin/menu.phtml")?> +</div> diff --git a/themes/bootstrap/templates/admin/menu.phtml b/themes/bootstrap/templates/admin/menu.phtml new file mode 100644 index 00000000000..fc6cf58f9c9 --- /dev/null +++ b/themes/bootstrap/templates/admin/menu.phtml @@ -0,0 +1,7 @@ +<ul class="nav nav-list"> + <li<?=strtolower($this->layout()->templateName) == "home" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-home')?>"><?=$this->transEsc('Home')?></a></li> + <li<?=strtolower($this->layout()->templateName) == "socialstats" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-socialstats')?>"><?=$this->transEsc('Social Statistics')?></a></li> + <li<?=strtolower($this->layout()->templateName) == "statistics" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-statistics')?>"><?=$this->transEsc('Statistics')?></a></li> + <li<?=strtolower($this->layout()->templateName) == "config" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-config')?>"><?=$this->transEsc('Configuration')?></a> + <li<?=strtolower($this->layout()->templateName) == "maintenance" ? ' class="active"' : ''?>><a href="<?=$this->url('admin-maintenance')?>"><?=$this->transEsc('System Maintenance')?></a></li> +</ul> diff --git a/themes/bootstrap/templates/admin/socialstats.phtml b/themes/bootstrap/templates/admin/socialstats.phtml new file mode 100644 index 00000000000..d936e48db6e --- /dev/null +++ b/themes/bootstrap/templates/admin/socialstats.phtml @@ -0,0 +1,32 @@ +<? + // Set page title. + $this->headTitle($this->translate('VuFind Administration - Social Statistics')); + + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('admin-home') . '">' . $this->translate('Admin') . '</a> <span class="divider">></span></li> <li class="active">Social Statistics</li>'; +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->transEsc('Social Statistics')?></h2> + <hr/> + <p class="lead">Comments</p> + <table class="table table-striped"> + <tr><th>Total Users</th><th>Total Resources</th><th>Total Comments</th></tr> + <tr><td><?=$comments['users']?></td><td><?=$comments['resources']?></td><td><?=$comments['total']?></td></tr> + </table> + + <p class="lead">Favorites</p> + <table class="table table-striped"> + <tr><th>Total Users</th><th>Total Resources</th><th>Total Lists</th><th>Total Saved Items</th></tr> + <tr><td><?=$favorites['users']?></td><td><?=$favorites['resources']?></td><td><?=$favorites['lists']?></td><td><?=$favorites['total']?></td></tr> + </table> + + <p class="lead">Tags</p> + <table class="table table-striped"> + <tr><th>Total Users</th><th>Total Resources</th><th>Total Tags</th></tr> + <tr><td><?=$tags['users']?></td><td><?=$tags['resources']?></td><td><?=$tags['total']?></td></tr> + </table> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->render("admin/menu.phtml")?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/admin/statistics.phtml b/themes/bootstrap/templates/admin/statistics.phtml new file mode 100644 index 00000000000..aa4bc65da3e --- /dev/null +++ b/themes/bootstrap/templates/admin/statistics.phtml @@ -0,0 +1,86 @@ +<? + // Set page title. + $this->headTitle($this->translate('VuFind Administration - Statistics')); + + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('admin-home') . '">' . $this->translate('Admin') . '</a> <span class="divider">></span></li> <li class="active">Statistics</li>'; +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->transEsc('Statistics')?></h2> + <hr/> + <? if(null !== $this->totalSearches || null !== $this->emptySearches || null !== $this->totalRecordViews): ?> + <p class="lead">Executive Summary</p> + <table class="table table-striped"> + <? if(null !== $this->totalSearches): ?><tr><td>Total Searches</td><td><?=$this->totalSearches ?></td></tr><? endif; ?> + <? if(null !== $this->emptySearches): ?><tr><td>0 Hit Searches</td><td><?=$this->emptySearches ?></td></tr><? endif; ?> + <? if(null !== $this->totalRecordViews): ?><tr><td>Total Record Views</td><td><?=$this->totalRecordViews ?></td></tr><? endif; ?> + </table> + <? endif; ?> + + <? if(!empty($this->topSearches)): ?> + <p class="lead">Top Searches<? if($this->searchesBySource): ?> by Source<? endif; ?></p> + <? if($this->searchesBySource): ?> + <? foreach($this->topSearches as $source=>$searches): ?> + <span><?=$source ?></span> + <table class="table table-striped"> + <? foreach($searches as $search): ?> + <tr><td><?=$search['value'] ?></td><td><?=$search['count'] ?></td></tr> + <? endforeach; ?> + </table> + <? endforeach; ?> + <? else: ?> + <table class="table table-striped"> + <? foreach($this->topSearches as $search): ?> + <tr><td><?=$search['value'] ?></td><td><?=$search['count'] ?></td><td><?=$search['source'] ?></td></tr> + <? endforeach; ?> + </table> + <? endif; ?> + <? endif; ?> + + <? if(!empty($this->topRecords)): ?> + <p class="lead">Top Records<? if($this->recordsBySource): ?> by Source<? endif; ?></p> + <? if($this->recordsBySource): ?> + <? foreach($this->topRecords as $source=>$records): ?> + <span><?=$source ?></span> + <table class="table table-striped"> + <? foreach($records as $record): ?> + <tr><td><?=$record['value'] ?></td><td><?=$record['count'] ?></td></tr> + <? endforeach; ?> + </table> + <? endforeach; ?> + <? else: ?> + <table class="table table-striped"> + <? foreach($this->topRecords as $record): ?> + <tr><td><?=$record['value'] ?></td><td><?=$record['count'] ?></td><td><?=$record['source'] ?></td></tr> + <? endforeach; ?> + </table> + <? endif; ?> + <? endif; ?> + + <? if(!empty($this->browserStats)): ?> + <p class="lead">Browser Usage</p> + <? + $total = 0; + foreach($this->browserStats as $browser) { + $total += $browser['count']; + } + ?> + <table class="table table-striped"> + <? foreach($this->browserStats as $browser): ?> + <tr><td><?=$browser['browserName'] ?></td><td><?=$browser['count'] ?></td><td><?=round($browser['count']*100/$total, 2) ?>%</td></tr> + <? endforeach; ?> + </table> + <h4 style="display:inline">Top Versions</h4>: + <? foreach($this->topVersions as $i=>$browser): ?> + <span><?=$browser['browserName'] ?> (<?=$browser['count'] ?>)</span><? if(++$i < count($this->topVersions)): ?>,<? endif; ?> + <? endforeach; ?> + <? endif; ?> + + <? if(empty($this->topSearches) && empty($this->topRecords) && empty($this->browserStats)): ?> + No statistic sources. + <? endif; ?> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->render("admin/menu.phtml")?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/ajax/export-favorites.phtml b/themes/bootstrap/templates/ajax/export-favorites.phtml new file mode 100644 index 00000000000..ffdc08e5178 --- /dev/null +++ b/themes/bootstrap/templates/ajax/export-favorites.phtml @@ -0,0 +1,7 @@ +<p> + <a href="<?=$this->escapeHtml($this->url)?>"<?=$this->export()->needsRedirect($this->format) ? ' target="_blank"' : ''?>><?= + $this->export()->needsRedirect($this->format) + ? $this->transEsc('export_redirect', array('%%service%%' => $this->translate($this->format))) + : $this->transEsc('export_download') + ?></a> +</p> diff --git a/themes/bootstrap/templates/ajax/resolverLinks.phtml b/themes/bootstrap/templates/ajax/resolverLinks.phtml new file mode 100644 index 00000000000..3f0f3f9622b --- /dev/null +++ b/themes/bootstrap/templates/ajax/resolverLinks.phtml @@ -0,0 +1,48 @@ +<div> + <? if (!empty($this->electronic)): ?> + <div class="openurls"> + <strong><?=$this->transEsc('Electronic')?></strong> + <ul> + <? foreach ($this->electronic as $link): ?> + <li> + <? if (isset($link['href']) && !empty($link['href'])): ?> + <a href="<?=$this->escapeHtml($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtml($link['service_type']):''?>"><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> + <? else: ?> + <?=isset($link['title'])?$this->escapeHtml($link['title']):''?> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> + <? endif; ?> + </li> + <? endforeach; ?> + </ul> + </div> + <? endif; ?> + <? if (!empty($this->print)): ?> + <div class="openurls"> + <strong><?=$this->transEsc('Holdings')?></strong> + <ul> + <? foreach ($this->print as $link): ?> + <li> + <? if (isset($link['href']) && !empty($link['href'])): ?> + <a href="<?=$this->escapeHtml($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtml($link['service_type']):''?>"><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> + <? else: ?> + <?=isset($link['title'])?$this->escapeHtml($link['title']):''?> <?=isset($link['coverage'])?$this->escapeHtml($link['coverage']):''?> + <? endif; ?> + </li> + <? endforeach; ?> + </ul> + </div> + <? endif; ?> + <div class="openurls"> + <strong><a href="<?=$this->escapeHtml($this->openUrlBase)?>?<?=$this->escapeHtml($this->openUrl)?>"><?=$this->transEsc('More options')?></a></strong> + <? if (!empty($this->services)): ?> + <ul> + <? foreach ($this->services as $link): ?> + <? if (isset($link['href']) && !empty($link['href'])): ?> + <li> + <a href="<?=$this->escapeHtml($link['href'])?>" title="<?=isset($link['service_type'])?$this->escapeHtml($link['service_type']):''?>"><?=isset($link['title'])?$this->escapeHtml($link['title']):''?></a> + </li> + <? endif; ?> + <? endforeach; ?> + </ul> + <? endif; ?> + </div> +</div> diff --git a/themes/bootstrap/templates/ajax/resultgooglemapinfo.phtml b/themes/bootstrap/templates/ajax/resultgooglemapinfo.phtml new file mode 100644 index 00000000000..fdb8fa7feba --- /dev/null +++ b/themes/bootstrap/templates/ajax/resultgooglemapinfo.phtml @@ -0,0 +1,29 @@ +<div class="mapInfoWrapper"> + <h4><?=$this->transEsc('map_results_label')?></h4> + <div class="mapInfoResults"> + <? $i = 0; ?> + <? foreach($this->recordSet as $record): ?> + <? $i++; ?> + <div class="mapInfoResult <? if ($i % 2 == 0): ?>alt <? endif; ?>record<?=$i ?>"> + <div class="mapInfoResultThumb"> + <? if ($thumb = $this->record($record)->getThumbnail()): ?><img class="mapInfoResultThumbImg" src="<?=$this->escapeHtml($thumb) ?>"/><? endif; ?> + </div> + + • <a href="<?=$this->recordLink()->getUrl($record)?>"><?=$record->getTitle() ?></a> + <? if(strlen($record->getPrimaryAuthor()) > 0): ?> + <span class="small"> + <?=$this->translate('by') ?> <a href="<?=$this->url('author-home')?>?author=<?=urlencode($record->getPrimaryAuthor())?>"><?=$this->escapeHtml($record->getPrimaryAuthor())?></a> + </span><br/> + <? endif; ?> + + </div> + <div class="clearfix"></div> + <? if ($i == 5) break; ?> + <? endforeach; ?> + </div> + <? if ($this->recordCount > 5): ?> + <div class="mapSeeAllDiv"> + <a href="<?=$this->url('search-results') ?><?=$this->results->getUrlQuery()->getParams() ?>"><?=$this->translate('see all') ?> <?=$this->escapeHtml($this->recordCount) ?>...</a> + </div> + <? endif; ?> +</div> diff --git a/themes/bootstrap/templates/ajax/status-available.phtml b/themes/bootstrap/templates/ajax/status-available.phtml new file mode 100644 index 00000000000..fe60ff791a1 --- /dev/null +++ b/themes/bootstrap/templates/ajax/status-available.phtml @@ -0,0 +1 @@ +<span class="label label-success"><?=$this->transEsc("Available")?></span> \ No newline at end of file diff --git a/themes/bootstrap/templates/ajax/status-full.phtml b/themes/bootstrap/templates/ajax/status-full.phtml new file mode 100644 index 00000000000..443a1a3f1db --- /dev/null +++ b/themes/bootstrap/templates/ajax/status-full.phtml @@ -0,0 +1,26 @@ +<table class="table table-condensed small"> + <tr> + <th><?=$this->transEsc('Location')?></th> + <th><?=$this->transEsc('Call Number')?></th> + <th><?=$this->transEsc('Status')?></th> + </tr> + <? $i = 0; foreach ($this->statusItems as $item): ?> + <? if (++$i == 5) break; // Show no more than 5 items ?> + <tr> + <td><?=$this->escapeHtml($item['location'])?></td> + <td><?=$this->escapeHtml($item['callnumber'])?></td> + <td> + <? if (isset($item['use_unknown_message']) && $item['use_unknown_message']): ?> + <span><?=$this->transEsc("status_unknown_message")?></span> + <? elseif ($item['availability']): ?> + <span class="text-success"><?=($item['reserve'] == 'Y') ? $this->transEsc("On Reserve") : $this->transEsc("Available")?></span> + <? else: ?> + <span class="text-error"><?=$this->transEsc($item['status'])?></span> + <? endif; ?> + </td> + </tr> + <? endforeach; ?> +<? if (count($this->statusItems) > 5): ?> + <tr><td colspan="3"><a href="<?=$this->url('record', array('id' => $this->statusItems[0]['id']))?>"><?=count($this->statusItems) - 5?> <?=$this->transEsc('more')?> ...</a></td></tr> +<? endif; ?> +</table> diff --git a/themes/bootstrap/templates/ajax/status-unavailable.phtml b/themes/bootstrap/templates/ajax/status-unavailable.phtml new file mode 100644 index 00000000000..0db9aa3c6cd --- /dev/null +++ b/themes/bootstrap/templates/ajax/status-unavailable.phtml @@ -0,0 +1 @@ +<span class="label label-important"><?=$this->transEsc("Checked Out")?></span> diff --git a/themes/bootstrap/templates/ajax/status-unknown.phtml b/themes/bootstrap/templates/ajax/status-unknown.phtml new file mode 100644 index 00000000000..c96f453fc87 --- /dev/null +++ b/themes/bootstrap/templates/ajax/status-unknown.phtml @@ -0,0 +1 @@ +<span class="label"><?=$this->transEsc("status_unknown_message")?></span> \ No newline at end of file diff --git a/themes/bootstrap/templates/alphabrowse/home.phtml b/themes/bootstrap/templates/alphabrowse/home.phtml new file mode 100644 index 00000000000..3617a8da1dc --- /dev/null +++ b/themes/bootstrap/templates/alphabrowse/home.phtml @@ -0,0 +1,112 @@ +<? + $this->headTitle($this->translate('Browse the Collection Alphabetically')); + $this->layout()->breadcrumbs = '<a href="' . $this->url('alphabrowse-home') . '">' . $this->transEsc('Browse Alphabetically') . '</a>'; + $baseQuery = array('source' => $this->source, 'from' => $this->from); +?> + +<? /* LOAD THE LINK INFORMATION INTO $pageLinks, similar to smarty's {capture} */ ?> +<? ob_start(); ?> + <ul class="pager"> + <? if (isset($this->prevpage)): ?> + <li><a href="<?=$this->escapeHtml($this->url('alphabrowse-home', array(), array('query' => $baseQuery + array('page' => $this->prevpage))))?>">« <?=$this->transEsc('Prev')?></a></li> + <? else: ?> + <li class="disabled"><a href="#">« <?=$this->transEsc('Prev')?></a></li> + <? endif; ?> + + <? if (isset($this->nextpage)): ?> + <li><a href="<?=$this->escapeHtml($this->url('alphabrowse-home', array(), array('query' => $baseQuery + array('page' => $this->nextpage))))?>"><?=$this->transEsc('Next')?> »</a></li> + <? else: ?> + <li class="disabled"><a href="#"><?=$this->transEsc('Next')?> »</a></li> + <? endif; ?> + </ul> +<? $pageLinks = ob_get_contents(); ?> +<? ob_end_clean(); ?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <div> + <form class="form-inline" method="get" action="<?=$this->url('alphabrowse-home')?>" name="alphaBrowseForm" id="alphaBrowseForm"> + <label for="alphaBrowseForm_source"><?=$this->transEsc('Browse Alphabetically') ?></label> + <select id="alphaBrowseForm_source" name="source"> + <? foreach ($this->alphaBrowseTypes as $key => $item): ?> + <option value="<?=$this->escapeHtml($key) ?>"<? if ($this->source == $key): ?> selected="selected"<? endif; ?>><?=$this->transEsc($item) ?></option> + <? endforeach; ?> + </select> + <label for="alphaBrowseForm_from"><?=$this->transEsc('starting from') ?></label> + <input type="text" name="from" id="alphaBrowseForm_from" value="<?=$this->escapeHtml($this->from) ?>"/> + <input class="btn" type="submit" value="<?=$this->transEsc('Browse') ?>"/> + </form> + </div> + + <? if ($this->result): ?> + <?=$pageLinks ?> + <table class="table table-striped"> + <tr><td></td><th><?=$this->transEsc("alphabrowse_matches") ?></th></tr> + <? foreach ($this->result['Browse']['items'] as $i => $item): ?> + <tr> + <td> + <? if ($item['count'] > 0): ?> + <?/* linking using bib ids is generally more reliable than + doing searches for headings, but headings give shorter + queries and don't look as strange. */?> + <? if ($item['count'] < 5): ?> + <? $query = array('type' => 'ids', 'lookfor' => implode(' ', $item['ids'])); ?> + <? else: ?> + <? $query = array('type' => ucwords($this->source) . 'Browse', 'lookfor' => '"' . addcslashes($item['heading'], '"') . '"'); ?> + <? endif; ?> + <a class="span6" href="<?=$this->escapeHtml($this->url('search-results', array(), array('query' => $query)))?>"><?=$this->escapeHtml($item['heading'])?></a> + <? else: ?> + <span class="span6"><?=$this->escapeHtml($item['heading'])?></span> + <? endif; ?> + + <? + foreach ($this->extras as $ei => $extraName): + $extraData = $item['extras'][$extraName]; + ?> + <div class="span<?=floor(6/count($this->extras)) ?>"> + <? + $extraDisplayArray = array(); + foreach ($extraData as $j => $e) { + $extraDisplayArray = array_unique(array_merge($extraDisplayArray, $e)); + } + echo (empty($extraDisplayArray)) ? ' ' : implode('<br />', $extraDisplayArray); + ?> + </div> + <? endforeach; ?> + <div class="clearfix"></div> + <? if (count($item['useInstead']) > 0): ?> + <div> + <?=$this->transEsc('Use instead') ?>: + <ul> + <? foreach ($item['useInstead'] as $heading): ?> + <li><a href="<?=$this->escapeHtml($this->url('alphabrowse-home', array(), array('query' => array('from' => $heading) + $baseQuery)))?>"><?=$this->escapeHtml($heading)?></a></li> + <? endforeach; ?> + </ul> + </div> + <? endif; ?> + + <? if (count($item['seeAlso']) > 0): ?> + <div> + <?=$this->transEsc('See also') ?>: + <ul> + <? foreach ($item['seeAlso'] as $heading): ?> + <li><a href="<?=$this->escapeHtml($this->url('alphabrowse-home', array(), array('query' => array('from' => $heading) + $baseQuery)))?>"><?=$this->escapeHtml($heading)?></a></li> + <? endforeach; ?> + </ul> + </div> + <? endif; ?> + + <? if ($item['note']): ?> + <div> + <?=$this->transEsc('Note') ?>: + <ul> + <li><?=$this->escapeHtml($item['note'])?></li> + </ul> + </div> + <? endif; ?> + </td> + <td><? if ($item['count'] > 0): echo $item['count']; endif; ?></td> + <? endforeach; ?> + </table> + <?= $pageLinks ?> + <? endif; ?> +</div> diff --git a/themes/bootstrap/templates/author/home.phtml b/themes/bootstrap/templates/author/home.phtml new file mode 100644 index 00000000000..d4f21dc9a3a --- /dev/null +++ b/themes/bootstrap/templates/author/home.phtml @@ -0,0 +1,12 @@ +<? + // Set page title. + $this->headTitle($this->translate('Author')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li class="active">' . $this->transEsc('Author') . '</li>'; +?> +<form class="form-inline" method="get" action="<?=$this->url('author-search')?>"> + <label for="author_lookfor"><?=$this->transEsc('Author Results for')?>:</label></br> + <input type="text" id="author_lookfor" name="lookfor" /> + <input class="btn" type="submit" value="<?=$this->transEsc('Find')?>" /> +</form> diff --git a/themes/bootstrap/templates/author/results.phtml b/themes/bootstrap/templates/author/results.phtml new file mode 100644 index 00000000000..459d5d25833 --- /dev/null +++ b/themes/bootstrap/templates/author/results.phtml @@ -0,0 +1,15 @@ +<? + // Load standard settings from the default search results screen: + echo $this->render('search/results.phtml'); + + // Override some details... + + // Set up page title: + $this->headTitle($this->translate('Author Search Results')); + + // Set up empty search box (we want Author search boxes to point at the Solr search screen): + $this->layout()->searchbox = $this->context($this)->renderInContext('search/searchbox.phtml', array('searchClassId' => 'Solr')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('author-home') . '">Author</a> <span class="divider">></span> ' . $this->params->getDisplayQuery() . '</li>'; +?> diff --git a/themes/bootstrap/templates/author/search.phtml b/themes/bootstrap/templates/author/search.phtml new file mode 100644 index 00000000000..2471a4b5082 --- /dev/null +++ b/themes/bootstrap/templates/author/search.phtml @@ -0,0 +1,24 @@ +<? + // Hide the total result count -- because of limitations in the way facet + // paging works, we can't actually determine an accurate total count. (Note + // that this setting simply modifies the behavior of search/results.phtml below). + $this->skipTotalCount = true; + + // Hide cart controls; they don't make sense in this context: + $this->hideCartControls = true; + + // Load standard settings from the default search results screen: + echo $this->render('search/results.phtml'); + + // Override some details... + + // Set up page title: + $this->headTitle($this->translate('Author Browse')); + + // Set up empty search box pointing at Solr module: + $this->layout()->searchbox = $this->context($this)->renderInContext('search/searchbox.phtml', array('searchClassId' => 'Solr')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('author-home') . '">Author</a> <span class="divider">></span></li> ' + . '<li class="active">' . $this->translate('Author Results for') . ' ' . $this->escapeHtml($this->params->getDisplayQuery()) . '</li>'; +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/authority/home.phtml b/themes/bootstrap/templates/authority/home.phtml new file mode 100644 index 00000000000..d13d4348c1e --- /dev/null +++ b/themes/bootstrap/templates/authority/home.phtml @@ -0,0 +1 @@ +<?=$this->render('search/home.phtml');?> \ No newline at end of file diff --git a/themes/bootstrap/templates/authority/record.phtml b/themes/bootstrap/templates/authority/record.phtml new file mode 100644 index 00000000000..9ad570830df --- /dev/null +++ b/themes/bootstrap/templates/authority/record.phtml @@ -0,0 +1,2 @@ +<? $this->layout()->breadcrumbs = false; ?> +<?=$this->record($this->driver)->getTab($this->tabs['Details'])?> \ No newline at end of file diff --git a/themes/bootstrap/templates/authority/search.phtml b/themes/bootstrap/templates/authority/search.phtml new file mode 100644 index 00000000000..c1797c1cd4a --- /dev/null +++ b/themes/bootstrap/templates/authority/search.phtml @@ -0,0 +1,4 @@ +<? + // Load standard settings from the default search results screen: + echo $this->render('search/results.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/browse/home.phtml b/themes/bootstrap/templates/browse/home.phtml new file mode 100644 index 00000000000..a5d23cc4547 --- /dev/null +++ b/themes/bootstrap/templates/browse/home.phtml @@ -0,0 +1,67 @@ +<? + $this->headTitle($this->translate('Browse the Catalog')); + $this->layout()->breadcrumbs = '<a href="' . $this->url('browse-home') . '">' . $this->transEsc('Browse') . '</a>'; + + $BROWSE_BASE = $this->url('browse-' . strtolower($this->currentAction)); + $SEARCH_BASE = $this->url($this->currentAction == 'Tag' ? 'tag-home' : 'search-results'); +?> + +<? if (!isset($this->currentAction)): ?> + <h2><?=$this->transEsc('Choose a Category to Begin Browsing') ?>:</h2> +<? endif; ?> + +<div class="row-fluid"> + <div class="span3"> + <ul class="well well-small nav nav-list" id="list1"> + <? foreach ($this->browseOptions as $item=>$currentOption): ?> + <li<? if($currentOption['action'] == $this->currentAction): ?> class="active"<? endif; ?>> + <a href="<?=$this->url('browse-' . strtolower($currentOption['action'])); ?>"><?=$this->transEsc($currentOption['description']) ?> <i class="icon-angle-right pull-right"></i></a> + </li> + <? endforeach; ?> + </ul> + </div> + + <? if (!empty($this->categoryList)): ?> + <div class="span3"> + <ul class="well well-small nav nav-list" id="list2"> + <? foreach($this->categoryList as $findby=>$category): ?> + <li<? if ($this->findby == $findby): ?> class="active"<? endif; ?>> + <a href="<?=$BROWSE_BASE ?>?findby=<?=urlencode($findby) ?>&query_field=<?=$this->browse()->getSolrField($findby, $this->currentAction) ?>"><?=$this->transEsc($category)/*html*/?> <i class="icon-angle-right pull-right"></i></a> + </li> + <? endforeach; ?> + </ul> + </div> + <? endif; ?> + + <? if (!empty($this->secondaryList)): ?> + <div class="span3"> + <ul class="well well-small nav nav-list" id="list3"> + <? foreach($this->secondaryList as $secondary): ?> + <li<? if ($this->query == $secondary['value'].'' || $this->query == $secondary['value'].'*'): ?> class="active"<? endif; ?>> + <? if (!empty($this->categoryList) && $this->currentAction != 'Tag' && $this->findby != 'alphabetical'):?> + <small><a class="pull-right muted" href="<?=$SEARCH_BASE ?>?lookfor=<? if ($this->filter): ?>&filter[]=<?=urlencode($this->filter) ?>%3A<?=str_replace('+AND+','&filter[]=', urlencode($secondary['value'])) ?><? endif; ?>&filter[]=<?=$this->browse()->getSolrField($this->currentAction) ?>%3A[* TO *]"><?=$this->transEsc('View Records') ?></a></small> + <? endif; ?> + <a href="<?=$BROWSE_BASE ?>?findby=<?=urlencode($this->findby) ?>&category=<?=urlencode($this->category) ?>&query=<?=urlencode($secondary['value']) ?><? if ($this->facetPrefix): ?>&facet_prefix=<?=urlencode($secondary['displayText']) ?><? endif; ?><? if ($this->secondaryParams): foreach($this->secondaryParams as $var=>$val): ?>&<?=$var ?>=<?=urlencode($val) ?><? endforeach;endif; ?>"><?=$this->escapeHtml($secondary['displayText']) ?><? if ($this->findby != 'alphabetical'): ?> (<?=$secondary['count'] ?>)<? endif; ?> + <i class="icon-angle-right pull-right"></i></a> + </li> + <? endforeach; ?> + </ul> + </div> + <? endif; ?> + + <? if (!empty($this->resultList)): ?> + <div class="span3"> + <ul class="well well-small nav nav-list" id="list4"> + <? foreach($this->resultList as $result): ?> + <li><a href="<?=$SEARCH_BASE ?>?<?=$this->paramTitle ?><?=urlencode($result['result']) ?><? if ($this->searchParams): foreach($this->searchParams as $var=>$val): ?>&<?=$var ?>=<?=urlencode($val) ?><? endforeach;endif; ?>"><?=$this->escapeHtml($result['result'])/*html*/?> (<?=$result['count'] ?>)</a></li> + <? endforeach; ?> + </ul> + </div> + <? elseif (isset($this->query)): ?> + <div class="span3"> + <ul class="well well-small nav nav-list" id="list4"> + <li><a href=""><?=$this->transEsc('nohit_heading') ?></a></li> + </ul> + </div> + <? endif; ?> +</div> diff --git a/themes/bootstrap/templates/cart/cart.phtml b/themes/bootstrap/templates/cart/cart.phtml new file mode 100644 index 00000000000..f67e4335ef3 --- /dev/null +++ b/themes/bootstrap/templates/cart/cart.phtml @@ -0,0 +1,27 @@ +<? + // Set page title. + $this->headTitle($this->translate('Book Bag')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span></li> ') + . '<li class="active">' . $this->transEsc('Book Bag') . '</li>'; +?> +<?=$this->flashmessages()?> +<form class="form-inline" action="<?=$this->url('cart-home')?>" method="post" name="cartForm"> + <? if (!$this->cart()->isEmpty()): ?> + <label class="checkbox"> + <input type="checkbox" name="selectAll" class="checkbox-select-all"/> <?=$this->transEsc('select_page')?> + </label> + <span class="help-inline">|</span> + <span class="help-inline"><?=$this->transEsc('with_selected')?>: </span> + <input class="btn btn-small" type="submit" name="saveCart" value="<?=$this->transEsc('bookbag_save_selected')?>" title="<?=$this->transEsc('bookbag_save')?>"/> + <input class="btn btn-small" type="submit" name="email" value="<?=$this->transEsc('bookbag_email_selected')?>" title="<?=$this->transEsc('bookbag_email')?>"/> + <? $exportOptions = $this->export()->getBulkOptions(); if (count($exportOptions) > 0): ?> + <input class="btn btn-small" type="submit" name="export" value="<?=$this->transEsc('bookbag_export_selected')?>" title="<?=$this->transEsc('bookbag_export')?>"/> + <? endif; ?> + <input class="btn btn-small" type="submit" name="print" value="<?=$this->transEsc('bookbag_print_selected')?>" title="<?=$this->transEsc('print_selected')?>"/> + <input class="btn btn-small" type="submit" name="delete" value="<?=$this->transEsc('bookbag_delete_selected')?>" title="<?=$this->transEsc('bookbag_delete')?>"/> + <input class="btn btn-small" type="submit" name="empty" value="<?=$this->transEsc('Empty Book Bag')?>" title="<?=$this->transEsc('Empty Book Bag')?>"/> + <? endif; ?> + <?=$this->render('cart/contents.phtml')?> +</form> diff --git a/themes/bootstrap/templates/cart/contents.phtml b/themes/bootstrap/templates/cart/contents.phtml new file mode 100644 index 00000000000..a6f0ee0fd66 --- /dev/null +++ b/themes/bootstrap/templates/cart/contents.phtml @@ -0,0 +1,15 @@ +<? $records = $this->cart()->getRecordDetails(); if (!empty($records)): ?> + <hr/> + <ul class="unstyled"> + <? foreach ($records as $i => $record): ?> + <li> + <label class="checkbox"> + <?=$this->record($record)->getCheckbox('cart')?> + <a title="<?=$this->transEsc('View Record')?>" href="<?=$this->recordLink()->getUrl($record)?>"><?=$this->escapeHtml($record->getBreadcrumb())?></a> + </label> + </li> + <? endforeach; ?> + </ul> +<? else: ?> + <p class="alert alert-info"><?=$this->transEsc('bookbag_is_empty')?>.</p> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/cart/email.phtml b/themes/bootstrap/templates/cart/email.phtml new file mode 100644 index 00000000000..93ec559a9a6 --- /dev/null +++ b/themes/bootstrap/templates/cart/email.phtml @@ -0,0 +1,46 @@ +<? + // Set page title. + $this->headTitle($this->translate('email_selected_favorites')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span></li>') + . '<li><a href="' .$this->url('cart-home'). '">' .$this->transEsc('Cart'). '</a> <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('email_selected_favorites') . '</li>'; +?> +<?=$this->flashmessages()?> +<form class="form-horizontal" action="<?=$this->url('cart-email')?>" method="post" name="bulkEmail"> + <? foreach ($this->records as $current): ?> + <div class="control-group"> + <label class="control-label"><?=$this->transEsc('Title')?></label> + <div class="controls"> + <span class="uneditable-input"><?=$this->escapeHtml($current->getBreadcrumb())?></span> + <input type="hidden" name="ids[]" value="<?=$this->escapeHtml($current->getResourceSource() . '|' . $current->getUniqueId())?>" /> + </div> + </div> + <? endforeach; ?> + <div class="control-group"> + <label class="control-label" for="email_to"><?=$this->transEsc('To')?>:</label> + <div class="controls"> + <input id="email_to" type="text" name="to" value="<?=isset($this->to) ? $this->to : ''?>" size="40" class="mainFocus <?=$this->jqueryValidation(array('required'=>'This field is required', 'email'=>'Email address is invalid'))?>"/> + </div> + </div> + <? if (!$this->disableFrom): ?> + <div class="control-group"> + <label class="control-label" for="email_from"><?=$this->transEsc('From')?>:</label> + <div class="controls"> + <input id="email_from" type="text" name="from" value="<?=isset($this->from) ? $this->from : ''?>" size="40" class="<?=$this->jqueryValidation(array('required'=>'This field is required', 'email'=>'Email address is invalid'))?>"/> + </div> + </div> + <? endif; ?> + <div class="control-group"> + <label class="control-label" for="email_message"><?=$this->transEsc('Message')?>:</label> + <div class="controls"> + <textarea id="email_message" name="message" rows="3" cols="40"><?=isset($this->message) ? $this->message : ''?></textarea> + </div> + </div> + <div class="control-group"> + <div class="controls"> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Send')?>"/> + </div> + </div> +</form> diff --git a/themes/bootstrap/templates/cart/export-success.phtml b/themes/bootstrap/templates/cart/export-success.phtml new file mode 100644 index 00000000000..c9ce38ea271 --- /dev/null +++ b/themes/bootstrap/templates/cart/export-success.phtml @@ -0,0 +1,4 @@ +<div class="text-center"> + <?=$this->transEsc('export_success')?> — + <a class="btn btn-primary" href="<?=$this->escapeHtml($this->url)?>"><?=$this->transEsc('export_download')?></a> +</div> diff --git a/themes/bootstrap/templates/cart/export.phtml b/themes/bootstrap/templates/cart/export.phtml new file mode 100644 index 00000000000..a1e01f40766 --- /dev/null +++ b/themes/bootstrap/templates/cart/export.phtml @@ -0,0 +1,30 @@ +<? + // Set page title. + $this->headTitle($this->translate('Export Favorites')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span></li>') + . '<li><a href="' .$this->url('cart-home'). '">' .$this->transEsc('Cart'). '</a> <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Export Favorites') . '</li>'; +?> +<h3 class="hideinlightbox"><?=$this->transEsc('Export Favorites')?></h3> + +<?=$this->flashmessages()?> + +<? if (!empty($this->exportOptions)): ?> + <form class="form-inline" method="post" action="<?=$this->url('cart-export')?>" name="exportForm" title="<?=$this->transEsc('Export Items')?>"> + <? foreach ($this->records as $current): ?> + <strong><?=$this->transEsc('Title')?>:</strong> <?=$this->escapeHtml($current->getBreadcrumb())?><br /> + <input type="hidden" name="ids[]" value="<?=$this->escapeHtml($current->getResourceSource() . '|' . $current->getUniqueId())?>" /> + <? endforeach; ?> + <br /> + <label for="format"><?=$this->transEsc('Format')?>:</label> + <select name="format" id="format"> + <? foreach ($this->exportOptions as $exportOption): ?> + <option value="<?=$this->escapeHtml($exportOption)?>"><?=$this->transEsc($exportOption)?></option> + <? endforeach; ?> + </select> + <br/><br/> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Export') ?>"/> + </form> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/cart/save.phtml b/themes/bootstrap/templates/cart/save.phtml new file mode 100644 index 00000000000..50e7b491fdf --- /dev/null +++ b/themes/bootstrap/templates/cart/save.phtml @@ -0,0 +1,73 @@ +<? + // Set page title. + $this->headTitle($this->translate('bookbag_save_selected')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span> </li>') . + '<li class="active">' . $this->transEsc('bookbag_save_selected') . '</li>'; +?> +<h3 class="hideinlightbox"><?=$this->transEsc('bookbag_save_selected')?></h3> + +<?=$this->flashmessages()?> + +<form class="form-horizontal" method="post" action="<?=$this->url('cart-save')?>" name="bulkSave"> + <? $idParams = array(); ?> + <div class="control-group"> + <label class="control-label"><?=$this->transEsc('Title')?></label> + <div class="controls"> + <? if(count($this->records) > 1): ?> + <div class="item-list"> + <ul> + <? foreach ($this->records as $current): ?> + <? $idParams[] = urlencode('ids[]') . '=' . urlencode($current->getResourceSource() . '|' . $current->getUniqueId()) ?> + <li><?=$this->escapeHtml($current->getBreadcrumb())?></li> + <input type="hidden" name="ids[]" value="<?=$this->escapeHtml($current->getResourceSource() . '|' . $current->getUniqueId())?>" /> + <? endforeach; ?> + </ul> + </div> + <? else: ?> + <span class="uneditable-input"><?=$this->records[0]->getBreadcrumb() ?></span> + <input type="hidden" name="ids[]" value="<?=$this->escapeHtml($this->records[0]->getResourceSource() . '|' . $this->records[0]->getUniqueId())?>" /> + <? endif; ?> + </div> + </div> + + <div class="control-group"> + <label class="control-label" for="save_list"><?=$this->transEsc('Choose a List') ?></label> + <div class="controls"> + <select id="save_list" class="pull-left" name="list"> + <? if (count($this->lists) > 0): ?> + <? foreach ($this->lists as $list): ?> + <option value="<?=$list['id'] ?>"<? if ($list['id']==$this->userList()->lastUsed()): ?> selected="selected"<? endif; ?>><?=$this->escapeHtml($list['title'])?></option> + <? endforeach; ?> + <? else: ?> + <option value=""><?=$this->transEsc('My Favorites') ?></option> + <? endif; ?> + </select> + <a class="btn btn-link" id="make-list" href="<?=$this->url('editList', array('id' => 'NEW')) . '?' . implode('&', $idParams) ?>" title="<?=$this->transEsc('Create a List') ?>"><?=count($this->lists) > 0 ? $this->transEsc('or').' '.$this->transEsc('Create a List') : $this->transEsc('Create a List'); ?></a> + </div> + </div> + + <div class="control-group"> + <label class="control-label" for="add_mytags"><?=$this->transEsc('Add Tags') ?></label> + <div class="controls"> + <input class="mainFocus" id="add_mytags" type="text" name="mytags" value=""/> + </div> + </div> + <div class="control-group"> + <div class="controls"> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Save') ?>"/> + </div> + </div> +</form> + +<? /* TODO: Prevent popover from closing modal + $items = $this->transEsc('items'); + $script = <<<JS + var list = $('.item-list'); + var items = list.find('li').length; + var bubble = list.html(); + list.html('<span class="btn">'+items+' {$items}</span>'); + list.find('.btn').popover({html:true,title:bubble}); +JS; +echo $this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $script, 'SET') */ ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/collection/collection-record-error.phtml b/themes/bootstrap/templates/collection/collection-record-error.phtml new file mode 100644 index 00000000000..851070f9a0b --- /dev/null +++ b/themes/bootstrap/templates/collection/collection-record-error.phtml @@ -0,0 +1 @@ +<h2><?=$this->transEsc('Cannot find record')?></h2> diff --git a/themes/bootstrap/templates/collection/view.phtml b/themes/bootstrap/templates/collection/view.phtml new file mode 100644 index 00000000000..0f956dd9028 --- /dev/null +++ b/themes/bootstrap/templates/collection/view.phtml @@ -0,0 +1,82 @@ +<? + // Set up standard record scripts: + $this->headScript()->appendFile("record.js"); + $this->headScript()->appendFile("check_save_statuses.js"); + + // Add RDF header link if applicable: + if ($this->export()->recordSupportsFormat($this->driver, 'RDF')) { + $this->headLink()->appendAlternate($this->recordLink()->getActionUrl($this->driver, 'RDF'), 'application/rdf+xml', 'RDF Representation'); + } + + // Set flag for special cases relating to full-width hierarchy tree tab: + $tree = (strtolower($this->activeTab) == 'hierarchytree'); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', ' <span class="divider">></span> </li>') + . '<li><a href="' . $this->url('collections-home') . '">' . $this->transEsc('Collections') . '</a> <span class="divider">></span> </li>' + . '<li class="active">' . $this->recordLink()->getBreadcrumb($this->driver) . '</li>'; +?> + +<? if (isset($this->scrollData) && ($this->scrollData['previousRecord'] || $this->scrollData['nextRecord'])): ?> + <ul class="pager"> + <? if ($this->scrollData['previousRecord']): ?> + <li> + <a href="<?=$this->recordLink()->getUrl($this->scrollData['previousRecord'])?>" title="<?=$this->transEsc('Previous Search Result')?>">« <?=$this->transEsc('Prev')?></a> + </li> + <? else: ?> + <li class="disabled"><a href="#">« <?=$this->transEsc('Prev')?></a></li> + <? endif; ?> + #<?=$this->escapeHtml($this->scrollData['currentPosition']) . ' ' . $this->transEsc('of') . ' ' . number_format($this->escapeHtml($this->scrollData['resultTotal'])) . ' ' . $this->transEsc('results') ?> + <? if ($this->scrollData['nextRecord']): ?> + <li> + <a href="<?=$this->recordLink()->getUrl($this->scrollData['nextRecord'])?>" title="<?=$this->transEsc('Next Search Result')?>"><?=$this->transEsc('Next')?> »</a> + </li> + <? else: ?> + <li class="disabled"><a href="#"><?=$this->transEsc('Next')?> »</a></li> + <? endif; ?> + </ul> +<? endif; ?> + +<?=$this->record($this->driver)->getToolbar()?> + +<div class="<?=isset($activeTabObj) && is_callable(array($activeTabObj, 'getSideRecommendations')) ? $this->layoutClass('mainbody') : 'span11' ?>"> + <div class="record recordId source<?=$this->escapeHtml($this->driver->getResourceSource())?>" id="record"> + <input type="hidden" value="<?=$this->escapeHtml($this->driver->getUniqueId())?>" class="hiddenId" id="record_id" /> + <?=$this->flashmessages()?> + <?=$this->record($this->driver)->getCollectionMetadata()?> + </div> + + <? if (count($this->tabs) > 0): ?> + <a name="tabnav"></a> + <ul class="nav nav-tabs"> + <? foreach ($this->tabs as $tab => $obj): ?> + <? // add current tab to breadcrumbs if applicable: + $desc = $obj->getDescription(); + $isCurrent = (strtolower($this->activeTab) == strtolower($tab)); + if ($isCurrent) { + $this->layout()->breadcrumbs .= '<li class="active"><span class="divider">></span> ' . $this->transEsc($desc) . '</li>'; + $activeTabObj = $obj; + } + ?> + <li<?=$isCurrent ? ' class="active"' : ''?>> + <a href="<?=$this->recordLink()->getTabUrl($this->driver, $tab)?>#tabnav"><?=$this->transEsc($desc)?></a> + </li> + <? endforeach; ?> + </ul> + <? endif; ?> + + + <div class="collectionDetails<?=$tree ? 'Tree' : ''?>"> + <?=isset($activeTabObj) ? $this->record($this->driver)->getTab($activeTabObj) : '' ?> + </div> + + <span class="Z3988" title="<?=$this->escapeHtml($this->driver->getOpenURL())?>"></span> +</div> + +<? if (isset($activeTabObj) && is_callable(array($activeTabObj, 'getSideRecommendations'))): ?> + <div class="<?=$this->layoutClass('sidebar')?>"> + <? foreach ($activeTabObj->getSideRecommendations() as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> + </div> +<? endif; ?> diff --git a/themes/bootstrap/templates/collections/bytitle.phtml b/themes/bootstrap/templates/collections/bytitle.phtml new file mode 100644 index 00000000000..4d5285250bd --- /dev/null +++ b/themes/bootstrap/templates/collections/bytitle.phtml @@ -0,0 +1,22 @@ +<? $this->layout()->breadcrumbs = '<a href="' . $this->url('collections-home') . '">' . $this->transEsc('Collections') . '</a>'; ?> +<div id="bd"> + <div id="yui-main" class="content"> + <div class="disambiguationDiv" > + <? if (empty($collections)): ?> + <h2><?=$this->transEsc('collection_empty')?></h2> + <? $this->headTitle($this->translate('collection_empty')); ?> + <? else: ?> + <h2><?=$this->transEsc('collection_disambiguation')?></h2> + <? $this->headTitle($this->translate('collection_disambiguation')); ?> + <div id="disambiguationItemsDiv"> + <? foreach ($collections as $i => $collection): ?> + <div class="disambiguationItem <?=$i % 2 ? 'alt ' : ''?>record<?=$i?>"> + <a href="<?=$this->url('collection', array('id' => $collection->getUniqueId()))?>"><?=$this->escapeHtml($collection->getTitle())?></a> + <p><?=$this->escapeHtml(implode(' ', $collection->getSummary()))?></p> + </div> + <? endforeach; ?> + </div> + <? endif; ?> + </div> + </div> +</div> diff --git a/themes/bootstrap/templates/collections/home.phtml b/themes/bootstrap/templates/collections/home.phtml new file mode 100644 index 00000000000..cf6f7226ee5 --- /dev/null +++ b/themes/bootstrap/templates/collections/home.phtml @@ -0,0 +1,67 @@ +<? + $this->headTitle($this->translate('Collection Browse')); + $this->layout()->breadcrumbs = '<a href="' . $this->url('collections-home') . '">' . $this->transEsc('Collections') . '</a>'; + $filterList = array(); + $filterString = ''; + foreach (isset($filters['Other']) ? $filters['Other'] : array() as $filter) { + $filter['urlPart'] = $filter['field'] . ':' . $filter['value']; + $filterList[] = $filter; + $filterString .= '&' . urlencode('filter[]') . '=' . urlencode($filter['urlPart']); + } +?> + +<? /* LOAD THE LINK INFORMATION INTO $pageLinks, similar to smarty's {capture} */ ?> +<? ob_start(); ?> + <form class="form-inline" method="GET" action="<?=$this->url('collections-home')?>"> + <ul class="pager"> + <? if (isset($prevpage)): ?> + <li><a href="<?=$this->url('collections-home')?>?from=<?=urlencode($from)?>&page=<?=urlencode($prevpage)?><?=$this->escapeHtml($filterString)?>">« <?=$this->transEsc('Prev')?></a></li> + <? else: ?> + <li class="disabled"><a href="#">« <?=$this->transEsc('Prev')?></a></li> + <? endif; ?> + <? if (isset($nextpage)): ?> + <li><a href="<?=$this->url('collections-home')?>?from=<?=urlencode($from)?>&page=<?=urlencode($nextpage)?><?=$this->escapeHtml($filterString)?>"><?=$this->transEsc('Next')?> »</a></li> + <? else: ?> + <li class="disabled"><a href="#"><?=$this->transEsc('Next')?> »</a></li> + <? endif; ?> + <input type="submit" class="btn" value="<?=$this->transEsc('Jump to')?>" /> + <input type="text" name="from" value="<?=$this->escapeHtml($from)?>" /> + </ul> + </form> +<? $pageLinks = ob_get_contents(); ?> +<? ob_end_clean(); ?> + +<h2><?=$this->transEsc('Collection Browse')?></h2> + +<? if (!empty($filterList)): ?> + <strong><?=$this->transEsc('Remove Filters')?></strong> + <ul class="filters"> + <? foreach ($filterList as $filter): ?> + <li> + <? + $removalUrl = $this->url('collections-home') . '?from=' . urlencode($from); + foreach ($filterList as $current) { + if ($current['urlPart'] != $filter['urlPart']) { + $removalUrl .= '&' . urlencode('filter[]') . '=' . urlencode($current['urlPart']); + } + } + ?> + <a href="<?=$this->escapeHtml($removalUrl)?>"><img src="<?=$this->imageLink('silk/delete.png')?>" alt="Delete"/></a> + <a href="<?=$this->escapeHtml($removalUrl)?>"><?=$this->escapeHtml($filter['displayText'])?></a> + </li> + <? endforeach; ?> + </ul> +<? endif; ?> + +<div class="pagination pagination-centered pagination-small"> + <ul> + <? foreach ($letters as $letter): ?> + <li<? if($letter === $from): ?> class="active"<?endif?>><a href="<?=$this->url('collections-home')?>?from=<?=urlencode($letter)?><?=$this->escapeHtml($filterString)?>"><?=$this->escapeHtml($letter)?></a></li> + <? endforeach; ?> + </ul> +</div> +<?=$pageLinks ?> +<div class="clearfix"> + <?=$this->render('collections/list.phtml')?> +</div><br/> +<?=$pageLinks ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/collections/list.phtml b/themes/bootstrap/templates/collections/list.phtml new file mode 100644 index 00000000000..1ee711dd04a --- /dev/null +++ b/themes/bootstrap/templates/collections/list.phtml @@ -0,0 +1,13 @@ +<ul class="nav nav-list well well-small"> +<? foreach ($result as $i => $item): ?> + <li> + <a href="<?=$this->url('collection', array('id' => $item['value']))?>"> + <strong><?=$this->escapeHtml($item['displayText'])?></strong> + <span class="pull-right small"> + <?=$item['count']?> <?=$this->transEsc('items')?> + <i class="icon-angle-right"></i> + </span> + </a> + </li> +<? endforeach; ?> +</ul> \ No newline at end of file diff --git a/themes/bootstrap/templates/combined/home.phtml b/themes/bootstrap/templates/combined/home.phtml new file mode 100644 index 00000000000..d13d4348c1e --- /dev/null +++ b/themes/bootstrap/templates/combined/home.phtml @@ -0,0 +1 @@ +<?=$this->render('search/home.phtml');?> \ No newline at end of file diff --git a/themes/bootstrap/templates/combined/results-ajax.phtml b/themes/bootstrap/templates/combined/results-ajax.phtml new file mode 100644 index 00000000000..2e24a120ca9 --- /dev/null +++ b/themes/bootstrap/templates/combined/results-ajax.phtml @@ -0,0 +1,15 @@ +<? + $view = $currentSearch['view']; + $results = $view->results; + $params = $results->getParams(); + $lookfor = $params->getDisplayQuery(); + + // Set up Javascript for use below: + $loadJs = 'var url = path + "/Combined/Result?id=' . urlencode($searchClassId) + . '&lookfor=' . urlencode($lookfor) . '";' + . "\$('#combined_" . $this->escapeHtml($searchClassId) . "').load(url);"; +?> +<p class="lead"><?=$this->transEsc($currentSearch['label'])?></p> +<p><i class="icon-spinner icon-spin"></i> <?=$this->transEsc("Loading")?>...</p> +<?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, '$(document).ready(function(){' . $loadJs . '});', 'SET')?> +<noscript><?=$this->transEsc('Please enable JavaScript.')?></noscript> diff --git a/themes/bootstrap/templates/combined/results-list.phtml b/themes/bootstrap/templates/combined/results-list.phtml new file mode 100644 index 00000000000..e0bdbc27f0a --- /dev/null +++ b/themes/bootstrap/templates/combined/results-list.phtml @@ -0,0 +1,61 @@ +<? + $view = $currentSearch['view']; + $results = $view->results; + $params = $results->getParams(); + $lookfor = $params->getDisplayQuery(); + $recordTotal = $results->getResultTotal(); + $moreUrl = $this->url($params->getOptions()->getSearchAction()) . $results->getUrlQuery()->setPage(1); +?> +<div class="pull-right"> + <a href="<?=$moreUrl?>" class="btn btn-link"><i class="icon-gears"></i> <?=$this->transEsc('More options')?></a> +</div> +<p class="lead"><?=$this->transEsc($currentSearch['label'])?></p> +<? if (isset($currentSearch['sublabel'])): ?> + <p><i><?=$this->transEsc($currentSearch['sublabel'])?></i></p> +<? endif; ?> +<div class="clearfix"> + <div class="pull-left help-block"> + <? if ($recordTotal > 0): ?> + <?=$this->transEsc("Showing")?> + <strong><?=$results->getStartRecord()?></strong> - <strong><?=$results->getEndRecord()?></strong> + <? if (!isset($view->skipTotalCount)): ?> + <?=$this->transEsc('of')?> <strong><?=number_format($recordTotal)?></strong> + <? endif; ?> + <? if (isset($view->overrideSearchHeading)): ?> + <?=$view->overrideSearchHeading?> + <? elseif ($params->getSearchType() == 'basic'): ?> + <?=$this->transEsc('for search')?>: <strong>'<?=$this->escapeHtml($lookfor)?>'</strong>, + <? endif; ?> + <? if ($qtime = $results->getQuerySpeed()): ?> + <?=$this->transEsc('query time')?>: <?=$this->escapeHtml(round($qtime, 2))?>s + <? endif; ?> + <?=$this->search()->renderSpellingSuggestions('<strong>' . $this->transEsc('spell_suggest') . '</strong>:', $results, $this); ?> + <? else: ?> + <h3><?=$this->transEsc('nohit_heading')?></h3> + <? endif; ?> + </div> +</div> +<? /* End Listing Options */ ?> + +<? if ($recordTotal < 1): ?> + <p class="alert alert-error"> + <? if (isset($view->overrideEmptyMessage)): ?> + <?=$view->overrideEmptyMessage?> + <? else: ?> + <?=$this->transEsc('nohit_prefix')?> - <strong><?=$this->escapeHtml($lookfor)?></strong> - <?=$this->transEsc('nohit_suffix')?> + <? endif; ?> + </p> + <? if (isset($view->parseError)): ?> + <p class="alert alert-error"><?=$this->transEsc('nohit_parse_error')?></p> + <? endif; ?> + <?=$this->search()->renderSpellingSuggestions($this->transEsc('nohit_spelling') . ':', $results, $this); ?> + <? foreach ($results->getRecommendations('top') as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> + <? foreach ($results->getRecommendations('noresults') as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> +<? else: ?> + <?=$this->render('search/list-' . $params->getView() . '.phtml', array('results' => $results, 'params' => $params))?> + <p><a href="<?=$moreUrl?>"><?=$this->transEsc($currentSearch['more_link'])?></a></p> +<? endif; ?> diff --git a/themes/bootstrap/templates/combined/results.phtml b/themes/bootstrap/templates/combined/results.phtml new file mode 100644 index 00000000000..efd639cd2fd --- /dev/null +++ b/themes/bootstrap/templates/combined/results.phtml @@ -0,0 +1,57 @@ +<? + // Set up page title: + $lookfor = $this->params->getDisplayQuery(); + if (isset($this->overrideTitle)) { + $this->headTitle($this->overrideTitle); + } else { + $this->headTitle($this->translate('Search Results') . (empty($lookfor) ? '' : " - {$lookfor}")); + } + + // Set up search box: + $this->layout()->searchbox = $this->context($this)->renderInContext( + 'search/searchbox.phtml', + array( + 'lookfor' => $lookfor, + 'searchIndex' => $this->params->getSearchHandler(), + 'searchType' => $this->params->getSearchType(), + 'searchId' => $this->results->getSearchId(), + 'searchClassId' => $this->params->getsearchClassId(), + 'checkboxFilters' => $this->params->getCheckboxFacets(), + 'filterList' => $this->params->getFilters(), + 'selectedShards' => $this->params->getSelectedShards() + ) + ); + + // Set up breadcrumbs: + if (isset($this->overrideTitle)) { + $this->layout()->breadcrumbs = '<li class="active">' . $this->escapeHtml($this->overrideTitle) . '</li>'; + } else { + $this->layout()->breadcrumbs = '<li class="active">' . $this->transEsc('Combined Search') . ': ' . + $this->escapeHtml($lookfor) . '</li>'; + } + + // Load Javascript dependencies into header: + $this->headScript()->appendFile("check_item_statuses.js"); + $this->headScript()->appendFile("check_save_statuses.js"); + // Style + $this->headLink()->appendStylesheet('combined.css'); +?> +<?=$this->flashmessages()?> +<form class="form-inline" method="post" name="bulkActionForm" action="<?=$this->url('cart-home')?>"> + <? if ($this->cart()->isActive()): ?> + <div class="clearfix"> + <?=$this->context($this)->renderInContext('search/bulk-action-buttons.phtml', array('idPrefix' => ''))?> + </div> + <? endif; ?> + <div class="row-fluid"> + <? foreach ($this->combinedResults as $searchClassId => $currentSearch): ?> + <div class="span6 combined-list" id="combined_<?=$this->escapeHtml($searchClassId)?>"> + <? if (isset($currentSearch['ajax']) && $currentSearch['ajax']): ?> + <?=$this->render('combined/results-ajax.phtml', array('searchClassId' => $searchClassId, 'currentSearch' => $currentSearch))?> + <? else: ?> + <?=$this->render('combined/results-list.phtml', array('searchClassId' => $searchClassId, 'currentSearch' => $currentSearch))?> + <? endif; ?> + </div> + <? endforeach; ?> + </div> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/confirm/confirm.phtml b/themes/bootstrap/templates/confirm/confirm.phtml new file mode 100644 index 00000000000..b7937fb608c --- /dev/null +++ b/themes/bootstrap/templates/confirm/confirm.phtml @@ -0,0 +1,26 @@ +<div class="alignleft"> + <h3><?=$this->transEsc($this->title) ?></h3> + + <?=$this->flashmessages();?> + + <div id="popupDetails" class="confirmDialog"> + <form class="pull-left pad" action="<?=$this->escapeHtml($this->confirm)?>" method="post"> + <? if (isset($this->extras)): ?> + <? foreach ($this->extras as $extra=>$value): ?> + <? if (is_array($value)): ?> + <? foreach ($value as $current): ?> + <input type="hidden" name="<?=$this->escapeHtml($extra) ?>[]" value="<?=$this->escapeHtml($current) ?>" /> + <? endforeach; ?> + <? else: ?> + <input type="hidden" name="<?=$this->escapeHtml($extra) ?>" value="<?=$this->escapeHtml($value) ?>" /> + <? endif; ?> + <? endforeach; ?> + <? endif;?> + <input class="btn btn-primary" type="submit" name="confirm" value="<?=$this->transEsc('confirm_dialog_yes') ?>" /> + </form> + <form class="pad"action="<?=$this->escapeHtml($this->cancel) ?>" method="post"> + <input class="btn" type="submit" name="cancel" value="<?=$this->transEsc('confirm_dialog_no') ?>" /> + </form> + <div class="clearer"></div> + </div> +</div> diff --git a/themes/bootstrap/templates/devtools/language.phtml b/themes/bootstrap/templates/devtools/language.phtml new file mode 100644 index 00000000000..eeb3e0d417b --- /dev/null +++ b/themes/bootstrap/templates/devtools/language.phtml @@ -0,0 +1,57 @@ +<? + $this->headTitle($this->translate('Language')); +?> + +<p class="lead">Comparing Languages Against <?=$this->escapeHtml($mainName)?></p> + +<p class="lead">Summary</p> + +<table class="table table-striped"> + <tr><th>Language</th><th>Missing Lines</th><th>Extra Lines</th><th>Percent Translated</th><th>Extra Help Files</th></tr> + <? foreach ($details as $langCode => $diffs): ?> + <tr> + <td><?=$this->escapeHtml($langCode . ' (' . $diffs['name'] . ')')?></td> + <td><?=count($diffs['notInL2'])?></td> + <td><?=count($diffs['notInL1'])?></td> + <td><?=$this->escapeHtml($diffs['l2Percent'])?></td> + <td><?=count($diffs['helpFiles'])?></td> + </tr> + <? endforeach; ?> +</table> +<div class="accordion" id="accordion"> + <? foreach ($details as $langCode => $diffs): ?> + <? if (count($diffs['notInL1']) > 0): ?> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#extra_<?=$langCode ?>"> + Extra Lines In <?=$this->escapeHtml($diffs['name'])?> (<?=$this->escapeHtml($langCode)?>.ini) + </a> + </div> + <div id="extra_<?=$langCode ?>" class="accordion-body collapse"> + <div class="accordion-inner"> + <? foreach ($diffs['notInL1'] as $key): ?> + <?=$this->escapeHtml($key)?> = "<?=$this->escapeHtml($diffs['object'][$key])?>"<br /> + <? endforeach; ?> + </div> + </div> + </div> + <? endif; ?> + <? if (count($diffs['notInL2']) > 0): ?> + <div class="accordion-group"> + <div class="accordion-heading"> + <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#missing_<?=$langCode ?>"> + Missing From <?=$this->escapeHtml($diffs['name'])?> (<?=$this->escapeHtml($langCode)?>.ini) + <span class="pull-right"></span> + </a> + </div> + <div id="missing_<?=$langCode ?>" class="accordion-body collapse"> + <div class="accordion-inner"> + <? foreach ($diffs['notInL2'] as $key): ?> + <?=$this->escapeHtml($key)?> = "<?=$this->escapeHtml($main[$key])?>"<br /> + <? endforeach; ?> + </div> + </div> + </div> + <? endif; ?> + <? endforeach; ?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/error/index.phtml b/themes/bootstrap/templates/error/index.phtml new file mode 100644 index 00000000000..983b9e8b3b4 --- /dev/null +++ b/themes/bootstrap/templates/error/index.phtml @@ -0,0 +1,49 @@ +<? + // Set page title. + $this->headTitle($this->translate('An error has occurred')); + + $this->layout()->breadcrumbs = '<li class="active">Error</li>'; +?> +<div class="alert alert-error"> + <p><?=$this->transEsc('An error has occurred')?></p> + <p><?=$this->transEsc($this->message)?></p> + <p> + <?=$this->transEsc('Please contact the Library Reference Department for assistance')?> + <br/> + <? $supportEmail = $this->escapeHtml($this->systememail()); ?> + <a href="mailto:<?=$supportEmail?>"><?=$supportEmail?></a> + </p> +</div> + +<? if ($this->showInstallLink): ?> + <h2><a href="<?=$this->url('install-home')?>"><?=$this->transEsc('auto_configure_title', array(), 'Auto Configure')?></a></h2> + <?=$this->transEsc('auto_configure_description', array(), 'If this is a new installation, you may be able to fix the error using VuFind\'s Auto Configure tool.')?> + <h2><a href="<?=$this->url('upgrade-home')?>"><?=$this->transEsc('Upgrade VuFind')?></a></h2> + <?=$this->transEsc('upgrade_description', array(), 'If you are upgrading a previous VuFind version, you can load your old settings with this tool.')?> +<? endif; ?> + +<? if (isset($this->display_exceptions) && $this->display_exceptions): ?> + <h2><?=$this->transEsc('Exception')?>:</h2> + <p> + <b><?=$this->transEsc('Message')?>:</b> <?=$this->exception->getMessage()?> + </p> + + <h2><?=$this->transEsc('Backtrace')?>:</h2> + <pre><?=$this->exception->getTraceAsString()?> + </pre> + + <? if ($e = $this->exception->getPrevious()): ?> + <h3>Previous exceptions:</h3> + <? while($e): ?> + <h4><?php echo get_class($e); ?></h4> + <p><?=$e->getMessage()?></p> + <pre><?=$e->getTraceAsString()?></pre> + <? $e = $e->getPrevious(); ?> + <? endwhile; ?> + <? endif; ?> + + <? if (isset($this->request)): ?> + <h2><?=$this->transEsc('error_page_parameter_list_heading')?>:</h2> + <pre><?=$this->escapeHtml(var_export($this->request->getParams(), true))?></pre> + <? endif; ?> +<? endif ?> diff --git a/themes/bootstrap/templates/error/unavailable.phtml b/themes/bootstrap/templates/error/unavailable.phtml new file mode 100644 index 00000000000..2c1abc66be8 --- /dev/null +++ b/themes/bootstrap/templates/error/unavailable.phtml @@ -0,0 +1,22 @@ +<? + // Set page title. + $this->headTitle($this->translate('System Unavailable')); + + // Disable top search box -- this page has a special layout. + $this->layout()->searchbox = false; + + $this->layout()->breadcrumbs = '<li class="active">Error</li>'; +?> +<div class="alert alert-error"> + <p class="lead"><?=$this->transEsc('System Unavailable')?></p> + <p> + <?=$this->transEsc('The system is currently unavailable due to system maintenance')?>. + <?=$this->transEsc('Please check back soon')?>. + </p> + <p> + <?=$this->transEsc('Please contact the Library Reference Department for assistance')?> + <br/> + <? $supportEmail = $this->escapeHtml($this->systemEmail()); ?> + <a href="mailto:<?=$supportEmail?>"><?=$supportEmail?></a> + </p> +</div> diff --git a/themes/bootstrap/templates/feedback/email.phtml b/themes/bootstrap/templates/feedback/email.phtml new file mode 100644 index 00000000000..ae51209994d --- /dev/null +++ b/themes/bootstrap/templates/feedback/email.phtml @@ -0,0 +1,2 @@ + +<?=$this->render('feedback/form.phtml');?> \ No newline at end of file diff --git a/themes/bootstrap/templates/feedback/form.phtml b/themes/bootstrap/templates/feedback/form.phtml new file mode 100644 index 00000000000..f9c5d316ded --- /dev/null +++ b/themes/bootstrap/templates/feedback/form.phtml @@ -0,0 +1,72 @@ +<div id="contact_form" class="modal hide fade text-left"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h3 id="myModalLabel"><?=$this->transEsc("Send us your feedback!")?></h3> + </div> + <div class="modal-body"> + <form class="form-horizontal" method="post" action="<?=$this->url('feedback-email')?>"> + <input type="hidden" id="formSuccess" value="<?=$this->transEsc("Form Submitted!")?>"/> + <input type="hidden" id="feedbackSuccess" value="<?=$this->transEsc("Thank you for your feedback.")?>"/> + <input type="hidden" id="feedbackFailure" value="<?=$this->transEsc("An error has occurred")?>"/> + <div class="control-group"> + <label class="control-label" for="name"><?=$this->transEsc("feedback_name")?></label> + <div class="controls"> + <input type="text" id="name"/> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="email"><?=$this->transEsc("Email")?></label> + <div class="controls"> + <input type="email" id="email"/> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="comments"><?=$this->transEsc("Comments")?></label> + <div class="controls"> + <textarea id="comments"></textarea> + </div> + </div> + <div class="control-group"> + <div class="controls"> + <input type="submit" class="btn btn-primary" value="<?=$this->transEsc("Send")?>" /> + </div> + </div> + </form> + </div> +</div> +<script type="text/javascript"> + $(document).ready(function() { + $('#contact_form form').unbind('submit').submit(function() { + // validate and process form here + var name = $("input#name").val(); + var email = $("input#email").val(); + var comments = $("textarea#comments").val(); + if (name.length == 0 && comments.length == 0 + && email.length == 0 && email.match(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/)) { + return false; + } + + var dataString = 'name='+ encodeURIComponent(name) + '&email=' + + encodeURIComponent(email) + '&comments=' + encodeURIComponent(comments); + + // Grabs hidden inputs + var formSuccess = $("input#formSuccess").val(); + var feedbackSuccess = $("input#feedbackSuccess").val(); + var feedbackFailure = $("input#feedbackFailure").val(); + + $.ajax({ + type: "POST", + url: $(this).attr('action'), + data: dataString, + success: function() { + $('#myModalLabel').html('Thank you!'); + $('#contact_form .modal-body').html(formSuccess); + }, + error: function() { + alert(feedbackFailure); + } + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/themes/bootstrap/templates/feedback/home.phtml b/themes/bootstrap/templates/feedback/home.phtml new file mode 100644 index 00000000000..42b3c6b88ec --- /dev/null +++ b/themes/bootstrap/templates/feedback/home.phtml @@ -0,0 +1,7 @@ +<? + // Set page title + $this->headTitle($this->translate('Feedback Email')); + // Get rid of the feedback tab since this uses the same variables + $this->layout()->feedbacktab = false; +?> +<?=$this->render('feedback/form.phtml');?> diff --git a/themes/bootstrap/templates/footer.phtml b/themes/bootstrap/templates/footer.phtml new file mode 100644 index 00000000000..43814aa689a --- /dev/null +++ b/themes/bootstrap/templates/footer.phtml @@ -0,0 +1,28 @@ +<? if ($mobileViewLink = $this->mobileUrl()): // display 'return to mobile' link when applicable ?> + <hr/> + <div class="mobileViewLink"><a href="<?=$this->escapeHtml($mobileViewLink)?>"><?=$this->transEsc("mobile_link")?></a></div> +<? endif; ?> +<hr/> +<div class="span8 row-fluid small"> + <div class="span3 offset1"><p><strong><?=$this->transEsc('Search Options')?></strong></p> + <ul> + <li><a href="<?=$this->url('search-history')?>"><?=$this->transEsc('Search History')?></a></li> + <li><a href="<?=$this->url('search-advanced')?>"><?=$this->transEsc('Advanced Search')?></a></li> + </ul> + </div> + <div class="span3"><p><strong><?=$this->transEsc('Find More')?></strong></p> + <ul> + <li><a href="<?=$this->url('browse-home')?>"><?=$this->transEsc('Browse the Catalog')?></a></li> + <li><a href="<?=$this->url('alphabrowse-home')?>"><?=$this->transEsc('Browse Alphabetically')?></a></li> + <li><a href="<?=$this->url('search-reserves')?>"><?=$this->transEsc('Course Reserves')?></a></li> + <li><a href="<?=$this->url('search-newitem')?>"><?=$this->transEsc('New Items')?></a></li> + </ul> + </div> + <div class="span3"><p><strong><?=$this->transEsc('Need Help?')?></strong></p> + <ul> + <li><a href="<?=$this->url('help-home')?>?topic=search" class="help-link" title="<?=$this->transEsc('Search Tips')?>"><?=$this->transEsc('Search Tips')?></a></li> + <li><a href="#"><?=$this->transEsc('Ask a Librarian')?></a></li> + <li><a href="#"><?=$this->transEsc('FAQs')?></a></li> + </ul> + </div> +</div> diff --git a/themes/bootstrap/templates/header.phtml b/themes/bootstrap/templates/header.phtml new file mode 100644 index 00000000000..a95f21462e6 --- /dev/null +++ b/themes/bootstrap/templates/header.phtml @@ -0,0 +1,70 @@ +<? $account = $this->auth()->getManager(); ?> + <h1 class="pad pull-left"><a id="logo" href="<?=$this->url('home')?>">VuFind</a></h1> +<? if (!isset($this->layout()->renderingError)): ?> + <div class="pull-right text-right"> + <div class="control-group"> + <? if ($this->feedback()->tabEnabled()): ?> + <a href="#contact_form" role="button" data-toggle="modal" class="btn btn-primary btn-mini"> + <i class="icon-envelope-alt"></i> <?=$this->transEsc("Feedback")?> + </a> + <span class="muted"> / </span> + <? endif; ?> + <? if (is_object($account) && $account->loginEnabled()): // hide login/logout if unavailable ?> + <span class="logoutOptions<? if(!$account->isLoggedIn()): ?> hide<? endif ?>"> + <i class="icon-user"></i> <a href="<?=$this->url('myresearch-home')?>"><?=$this->transEsc("Your Account")?></a> + <span class="muted"> / </span> + </span> + <? endif; ?> + <? $cart = $this->cart(); if ($cart->isActive()): ?> + <span id="cartSummary"> + <i class="icon-shopping-cart"></i> <a id="cartItems" class="modal-link" title="<?=$this->transEsc('View Book Bag')?>" href="<?=$this->url('cart-home')?>"><strong><?=count($cart->getItems())?></strong> <?=$this->transEsc('items')?><?=$cart->isFull() ? ' (' . $this->transEsc('bookbag_full') . ')' : ''?></a> + <span class="muted"> / </span> + </span> + <? endif; ?> + <? if (is_object($account) && $account->loginEnabled()): // hide login/logout if unavailable ?> + <span class="logoutOptions<? if(!$account->isLoggedIn()): ?> hide<? endif ?>"> + <i class="icon-signout"></i><a href="<?=$this->url('myresearch-logout')?>"><?=$this->transEsc("Log Out")?></a> + </span> + <span id="loginOptions"<? if($account->isLoggedIn()): ?> class="hide"<? endif ?>> + <i class="icon-signin"></i> + <? if ($sessionInitiator = $account->getSessionInitiator($this->serverUrl($this->url('myresearch-home')))): ?> + <a href="<?=$this->escapeHtml($sessionInitiator)?>"><?=$this->transEsc("Institutional Login")?></a> + <? else: ?> + <a href="<?=$this->url('myresearch-home')?>"><?=$this->transEsc("Login")?></a> + <? endif; ?> + </span> + <? endif; ?> + </div> + <? if (isset($this->layout()->themeOptions) && count($this->layout()->themeOptions) > 1): ?> + <form class="form-horizontal" method="post" name="themeForm" action="" id="themeForm"> + <div class="control-group"> + <label class="control-label" for="themeForm_ui"><?=$this->transEsc("Theme")?>:</label> + <div class="controls"> + <select id="themeForm_ui" name="ui"> + <? foreach ($this->layout()->themeOptions as $current): ?> + <option value="<?=$this->escapeHtml($current['name'])?>"<?=$current['selected'] ? ' selected="selected"' : ''?>><?=$this->transEsc($current['desc'])?></option> + <? endforeach; ?> + </select> + <noscript><input type="submit" value="<?=$this->transEsc("Set")?>" /></noscript> + </div> + </div> + </form> + <? endif; ?> + <? if ($this->feedback()->tabEnabled()): ?> + <?=$this->render('feedback/form.phtml'); ?> + <? endif; ?> + <? if (isset($this->layout()->allLangs) && count($this->layout()->allLangs) > 1): ?> + <form class="form-horizontal" method="post" name="langForm" action="" id="langForm"> + <label class="control-label" for="langForm_mylang"><?=$this->transEsc("Language")?>:</label> + <div class="controls"> + <select onChange="document.langForm.submit()" id="langForm_mylang" name="mylang" class="jumpMenu"> + <? foreach ($this->layout()->allLangs as $langCode => $langName): ?> + <option value="<?=$langCode?>"<?=$this->layout()->userLang == $langCode ? ' selected="selected"' : ''?>><?=$this->displayLanguageOption($langName)?></option> + <? endforeach; ?> + </select> + <noscript><input type="submit" class="btn" value="<?=$this->transEsc("Set")?>" /></noscript> + </div> + </form> + <? endif; ?> + </div> +<? endif; ?> diff --git a/themes/bootstrap/templates/install/disabled.phtml b/themes/bootstrap/templates/install/disabled.phtml new file mode 100644 index 00000000000..59277c59283 --- /dev/null +++ b/themes/bootstrap/templates/install/disabled.phtml @@ -0,0 +1,11 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a> <span class="divider">></span><li>' + . '<li class="active">' . $this->transEsc('Disabled') . '</li>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> + +<p><?=$this->transEsc('auto_configure_disabled')?></p> \ No newline at end of file diff --git a/themes/bootstrap/templates/install/done.phtml b/themes/bootstrap/templates/install/done.phtml new file mode 100644 index 00000000000..17d72d13420 --- /dev/null +++ b/themes/bootstrap/templates/install/done.phtml @@ -0,0 +1,14 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> + +<p>Auto configuration has been successfully disabled.</p> + +<p>If you are concerned about security, you may want to change the permissions on +the <strong><?=$this->escapeHtml($this->configDir)?></strong> directory to prevent the +web server from writing changes to configurations in the future.</p> \ No newline at end of file diff --git a/themes/bootstrap/templates/install/fixbasicconfig.phtml b/themes/bootstrap/templates/install/fixbasicconfig.phtml new file mode 100644 index 00000000000..17f996449c2 --- /dev/null +++ b/themes/bootstrap/templates/install/fixbasicconfig.phtml @@ -0,0 +1,27 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a> <span class="divider">></span><li>' + . '<li class="active">' . $this->transEsc('Fix Basic Config') . '</li>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> + +<? if (isset($this->configDir)): ?> + <p>VuFind cannot write to <b><?=$this->escapeHtml($this->configDir)?></b>.</p> + + <p>Please make sure that write permissions are available on this directory.</p> + + <p>In Linux, try this command (note that you may need to prefix with "sudo" on some flavors):</p> + + <pre> + <? if (isset($this->runningUser)): ?> + chown <?=$this->escapeHtml($this->runningUser)?>:<?=$this->escapeHtml($this->runningUser)?> <?=$this->escapeHtml($this->configDir)?> + <? else: ?> + chmod 777 <?=$this->escapeHtml($this->configDir)?> + <? endif; ?> + </pre> +<? else: ?> + <p>Your configuration has been successfully updated.</p> +<? endif; ?> diff --git a/themes/bootstrap/templates/install/fixcache.phtml b/themes/bootstrap/templates/install/fixcache.phtml new file mode 100644 index 00000000000..1c7b7a4fcd6 --- /dev/null +++ b/themes/bootstrap/templates/install/fixcache.phtml @@ -0,0 +1,23 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a> <span class="divider">></span><li>' + . '<li class="active">' . $this->transEsc('Fix Cache') . '</li>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> + +<p>VuFind cannot write to <b><?=$this->escapeHtml($this->cacheDir)?></b>.</p> + +<p>Please make sure that write permissions are available on this directory.</p> + +<p>In Linux, try this command (note that you may need to prefix with "sudo" on some flavors):</p> + +<pre> + <? if (isset($this->runningUser)): ?> + chown <?=$this->escapeHtml($this->runningUser)?>:<?=$this->escapeHtml($this->runningUser)?> <?=$this->escapeHtml($this->cacheDir)?> + <? else: ?> + chmod 777 <?=$this->escapeHtml($this->cacheDir)?> + <? endif; ?> +</pre> diff --git a/themes/bootstrap/templates/install/fixdatabase.phtml b/themes/bootstrap/templates/install/fixdatabase.phtml new file mode 100644 index 00000000000..920d4024b52 --- /dev/null +++ b/themes/bootstrap/templates/install/fixdatabase.phtml @@ -0,0 +1,71 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a> <span class="divider">></span><li>' + . '<li class="active">' . $this->transEsc('Fix Database') . '</li>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> + +<?=$this->flashmessages()?> + +<p>To create a new database for VuFind, please fill in this form:</p> + +<form class="form-horizontal" action="" method="post"> + <div class="control-group"> + <label class="control-label" for="dbname">New database name:</label> + <div class="controls"> + <input type="text" name="dbname" value="<?=$this->escapeHtml($this->dbname)?>"/> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="dbuser">New database user:</label> + <div class="controls"> + <input type="text" name="dbuser" value="<?=$this->escapeHtml($this->dbuser)?>"/> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="dbpass">New user password:</label> + <div class="controls"> + <input type="password" name="dbpass" value=""/> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="dbpassconfirm">Confirm new user password:</label> + <div class="controls"> + <input type="password" name="dbpassconfirm" value=""/> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="dbhost">MySQL Host:</label> + <div class="controls"> + <input type="text" name="dbhost" value="<?=$this->escapeHtml($this->dbhost)?>"/> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="dbrootuser">MySQL Root User:</label> + <div class="controls"> + <input type="text" name="dbrootuser" value="<?=$this->escapeHtml($this->dbrootuser)?>"/> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="dbrootpass">MySQL Root Password:</label> + <div class="controls"> + <input type="password" name="dbrootpass" value=""/> + </div> + </div> + <div class="control-group"> + <div class="controls"> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Submit') ?>" /> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="printsql">If you don't have the credentials or you wish to print the SQL out :</label> + <div class="controls"> + <span class="help-inline">Click here to</span> + <input class="btn" type="submit" name="printsql" value="Skip"/> + <span class="help-inline">credentials.</span> + </div> + </div> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/install/fixdependencies.phtml b/themes/bootstrap/templates/install/fixdependencies.phtml new file mode 100644 index 00000000000..fc028751ba9 --- /dev/null +++ b/themes/bootstrap/templates/install/fixdependencies.phtml @@ -0,0 +1,13 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a> <span class="divider">></span><li>' + . '<li class="active">' . $this->transEsc('Fix Dependencies') . '</li>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> + +<?=$this->flashmessages()?> + +<? if ($this->problems == 0): ?><p><?=$this->transEsc('No dependency problems found') ?>.</p><? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/install/fixils.phtml b/themes/bootstrap/templates/install/fixils.phtml new file mode 100644 index 00000000000..c8a5f498755 --- /dev/null +++ b/themes/bootstrap/templates/install/fixils.phtml @@ -0,0 +1,32 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a> <span class="divider">></span><li>' + . '<li class="active">' . $this->transEsc('Fix ILS') . '</li>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> + +<? if (isset($this->demo)): ?> + <p>You are using one of VuFind's simulated Integrated Library System (ILS) drivers, which display fake information + in order to demonstrate the capabilities of the system. If you want real patron and status information to display, + you should change your configuration to communicate with a real ILS.</p> + + <form method="post" action="" class="form-inline"> + <span class="help-inline">Pick a driver: </span> + <select name="driver"> + <? foreach ($this->drivers as $driver): ?> + <option value="<?=$this->escapeHtml($driver)?>"><?=$this->escapeHtml($driver)?></option> + <? endforeach; ?> + </select> + <input type="submit" class="btn"/> + </form> + + <p>If your ILS is not available in this list, you may be able to write your own driver. See the + <a href="http://vufind.org/wiki/vufind2:developer_manual">Developer Manual</a>.</p> +<? else: ?> + <p>VuFind is having trouble communicating with your Integrated Library System (ILS). Check your configuration. + You may need to edit the file at <strong><?=$this->escapeHtml($this->configPath)?></strong> and fill in some + connection details.</p> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/install/fixsecurity.phtml b/themes/bootstrap/templates/install/fixsecurity.phtml new file mode 100644 index 00000000000..fe06c02a079 --- /dev/null +++ b/themes/bootstrap/templates/install/fixsecurity.phtml @@ -0,0 +1,28 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a> <span class="divider">></span><li>' + . '<li class="active">' . $this->transEsc('Fix Security') . '</li>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> + +<?=$this->flashmessages()?> + +<? if (isset($this->confirmUserFix) && $this->confirmUserFix): ?> + <p>You have existing user data in your database containing non-encrypted passwords.</p> + <p>If you continue with enabling security, all of your passwords will be hashed and/or encrypted.</p> + <p><b>Please make a database backup before proceeding.</b></p> + <p>You should <b>NOT</b> turn on encryption if you still wish for your database to be compatible with VuFind 1.x. If you want + to keep the option of being able to roll back to the earlier version, or if you plan on temporarily running 1.x and 2.x in + parallel, you should not enable encryption now. + </p> + <p><i>Do you still wish to proceed with enabling enhanced security in the database?</i></p> + <form method="post" action="<?=$this->url('install-fixsecurity')?>"> + <input type="submit" name="fix-user-table" value="Yes" /> + <input type="submit" name="fix-user-table" value="No" /> + </form> +<? else: ?> + <p>No security problems found.</p> +<? endif; ?> diff --git a/themes/bootstrap/templates/install/fixsolr.phtml b/themes/bootstrap/templates/install/fixsolr.phtml new file mode 100644 index 00000000000..77ce73394de --- /dev/null +++ b/themes/bootstrap/templates/install/fixsolr.phtml @@ -0,0 +1,19 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('install-home') .'">' . $this->transEsc('auto_configure_title') . '</a> <span class="divider">></span><li>' + . '<li class="active">' . $this->transEsc('Fix Solr') . '</li>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> + +<p>VuFind cannot communicate with the Solr index.</p> + +<p>Troubleshooting steps:</p> + +<ol> + <li>Did you start the Solr server? See <a href="http://vufind.org/wiki/starting_and_stopping_vufind">Starting and Stopping VuFind</a> in the documentation.</li> + <li>Have you checked the Solr admin panel for errors? You may be able to find it <a href="<?=$this->escapeHtml($this->userUrl)?>">here</a>.</li> + <li>Are you using non-default Solr settings? If your Solr URL is not <strong><?=$this->escapeHtml($this->rawUrl)?></strong> or your core name is not <strong><?=$this->escapeHtml($this->core)?></strong>, you will need to customize the [Index] section of <?=$this->escapeHtml($this->configFile)?>.</li> +</ol> \ No newline at end of file diff --git a/themes/bootstrap/templates/install/home.phtml b/themes/bootstrap/templates/install/home.phtml new file mode 100644 index 00000000000..f6462d356d2 --- /dev/null +++ b/themes/bootstrap/templates/install/home.phtml @@ -0,0 +1,17 @@ +<? + // Set page title. + $this->headTitle($this->translate('auto_configure_title')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li class="active">' . $this->transEsc('auto_configure_title') . '</li>'; +?> +<h2><?=$this->transEsc('auto_configure_title')?></h2> +<?=$this->flashmessages()?> +<? $errors = 0; foreach ($this->checks as $check): ?> +<? if (!$check['status']) $errors++; ?> + <div class="alert alert-<?=$check['status'] ? 'success':'error'?>"><?=$this->escapeHtml($check['title'])?>... <?=$check['status'] ? $this->transEsc('test_ok') : $this->transesc('test_fail') . ' <a class="btn btn-small btn-danger" href="' . $this->url('install-' . strtolower($check['fix'])) . '">' . $this->transEsc('test_fix') . '</a>' ?></div> +<? endforeach; ?> + +<? if ($errors == 0): ?> + <p>No problems were found. You may wish to <a href="<?=$this->url('install-done')?>">Disable Auto Configuration</a> at this time.</p> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/install/showsql.phtml b/themes/bootstrap/templates/install/showsql.phtml new file mode 100644 index 00000000000..f2c995fee60 --- /dev/null +++ b/themes/bootstrap/templates/install/showsql.phtml @@ -0,0 +1,23 @@ +<? + // Set page title. + $this->headTitle($this->translate('Install VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li class="active">' . $this->transEsc('Install VuFind') . '</li>'; + + // Set up styles: + $this->headstyle()->appendStyle( + ".pre {\n" + . " white-space:pre-wrap; width:90%; overflow-y:visible; padding:8px; margin:1em 2em; background:#EEE; border:1px dashed #CCC;\n" + . "}\n" + ); +?> +<h2><?=$this->transEsc('Install VuFind')?></h2> +<?=$this->flashmessages()?> +<p>Save this SQL somewhere safe:</p> + +<textarea class="pre" rows="20" readonly onClick="this.select()"><?=trim($this->sql) ?></textarea> + +<form method="post" action="<?=$this->url('install-showsql')?>"> + <input type="submit" name="continue" value="Next" /> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/layout/layout.phtml b/themes/bootstrap/templates/layout/layout.phtml new file mode 100644 index 00000000000..e96047f52a0 --- /dev/null +++ b/themes/bootstrap/templates/layout/layout.phtml @@ -0,0 +1,90 @@ +<?=$this->doctype('XHTML1_TRANSITIONAL')?> +<html xmlns="http://www.w3.org/1999/xhtml" lang="<?=$this->layout()->userLang?>" xml:lang="en"> + <head> + <?$this->headThemeResources()?> + <?=$this->headMeta()?> + <?=$this->headTitle()?> + <? + // Set up OpenSearch link: + $this->headLink( + array( + 'href' => $this->url('search-opensearch') . '?method=describe', + 'type' => 'application/opensearchdescription+xml', + 'title' => $this->transEsc('Library Catalog Search'), + 'rel' => 'search' + ) + ); + ?> + <?=$this->headLink()?> + <?=$this->headStyle()?> + <? + // Set global path for Javascript code: + $this->headScript()->prependScript("path = '" . rtrim($this->url('home'), '/') . "';"); + + // Deal with cart stuff: + if (!isset($this->renderingError)) { + $cart = $this->cart(); + $script = 'var vufindString = {loading:"' . $this->transEsc('Loading') . '..."};'; + if ($cart->isActive()) { + $this->headScript()->appendFile("cart.js"); + $script .= 'vufindString.bulk_noitems_advice = "' . $this->transEsc('bulk_noitems_advice') . '";' + . 'vufindString.confirmEmpty = "' . $this->transEsc('bookbag_confirm_empty') . '";' + . 'vufindString.viewBookBag = "' . $this->transEsc('View Book Bag') . '";' + . 'vufindString.addBookBag = "' . $this->transEsc('Add to Book Bag') . '";' + . 'vufindString.removeBookBag = "' . $this->transEsc('Remove from Book Bag') . '";' + . 'vufindString.itemsAddBag = "' . $this->transEsc('items_added_to_bookbag') . '";' + . 'vufindString.itemsInBag = "' . $this->transEsc('items_already_in_bookbag') . '";' + . 'vufindString.bookbagMax = "' . $cart->getMaxSize() . '";' + . 'vufindString.bookbagFull = "' . $this->transEsc('bookbag_full_msg') . '";' + . 'vufindString.bookbagStatusFull = "' . $this->transEsc('bookbag_full') . '";'; + } + $this->headScript()->appendScript($script); + } + ?> + <?=$this->headScript()?> + </head> + <body> + <div class="container"> + <div id="header" class="clearfix noprint"> + <?=$this->render('header.phtml')?> + <? // Set up the search box -- there are three possible cases: + // 1. No search box was set; we should default to the normal box + // 2. It was set to false; we should display nothing + // 3. It is set to a custom string; we should display the provided version + // Set up default search box if no data was provided from the template; + // this covers case 1. Cases 2 and 3 are then covered by logic below. + if (!isset($this->layout()->searchbox)) { + $this->layout()->searchbox = $this->render('search/searchbox.phtml'); + } + ?> + <? if ($this->layout()->searchbox !== false): ?> + </div> + <div class="searchbox noprint"> + <?=$this->layout()->searchbox?> + <? endif; ?> + </div> + <? if((!isset($this->layout()->showBreadcrumbs) || $this->layout()->showBreadcrumbs == true) && $this->layout()->breadcrumbs !== false): ?> + <ul class="breadcrumb noprint"> + <li class="active"><a href="<?=$this->url('home') ?>">Home</a> <span class="divider">></span></li> + <?=$this->layout()->breadcrumbs ?> + </ul> + <? endif; ?> + <div class="main row-fluid"> + <?=$this->layout()->content?> + </div> + <div class="footer noprint"> + <?=$this->render('footer.phtml')?> + <?=$this->layout()->poweredBy?> + </div> + </div> + <!-- MODAL IN CASE WE NEED ONE --> + <div id="modal" class="modal hide fade"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h3></h3> + </div> + <div class="modal-body"><?=$this->transEsc('Loading') ?>...</div> + </div> + <?=$this->googleanalytics()?> + </body> +</html> diff --git a/themes/bootstrap/templates/layout/lightbox.phtml b/themes/bootstrap/templates/layout/lightbox.phtml new file mode 100644 index 00000000000..49913abe32a --- /dev/null +++ b/themes/bootstrap/templates/layout/lightbox.phtml @@ -0,0 +1 @@ +<?=$this->layout()->content?> \ No newline at end of file diff --git a/themes/bootstrap/templates/missingrecord/home.phtml b/themes/bootstrap/templates/missingrecord/home.phtml new file mode 100644 index 00000000000..35e586f0772 --- /dev/null +++ b/themes/bootstrap/templates/missingrecord/home.phtml @@ -0,0 +1,3 @@ +<div class="<?=$this->layoutClass('mainbody')?>"> + <?=$this->flashmessages()?> +</div> diff --git a/themes/bootstrap/templates/myresearch/account.phtml b/themes/bootstrap/templates/myresearch/account.phtml new file mode 100644 index 00000000000..80792ca4af4 --- /dev/null +++ b/themes/bootstrap/templates/myresearch/account.phtml @@ -0,0 +1,19 @@ +<? + // Set up page title: + $this->headTitle($this->translate('User Account')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a> <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Account') . '</li>'; +?> +<h2><?=$this->transEsc('User Account')?></h2> +<?=$this->flashmessages()?> + +<form method="post" action="" name="accountForm" id="accountForm" class="form-horizontal"> + <?=$this->auth()->getCreateFields()?> + <div class="control-group"> + <div class="controls"> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Submit')?>"/> + </div> + </div> +</form> diff --git a/themes/bootstrap/templates/myresearch/bulk-action-buttons.phtml b/themes/bootstrap/templates/myresearch/bulk-action-buttons.phtml new file mode 100644 index 00000000000..1f6e0aa8a8a --- /dev/null +++ b/themes/bootstrap/templates/myresearch/bulk-action-buttons.phtml @@ -0,0 +1,21 @@ +<? if (isset($list)): ?> + <input type="hidden" name="listID" value="<?=$this->escapeHtml($list->id)?>" /> + <input type="hidden" name="listName" value="<?=$this->escapeHtml($list->title)?>" /> +<? endif; ?> +<? $user = $this->auth()->isLoggedIn(); ?> +<label class="checkbox"> + <input type="checkbox" name="selectAll" class="checkbox-select-all"/> <?=$this->transEsc('select_page')?> +</label> +<span class="help-inline">|</span> +<span class="help-inline"><?=$this->transEsc('with_selected')?>: </span> +<input class="btn" type="submit" name="email" value="<?=$this->transEsc('Email')?>" title="<?=$this->transEsc('email_selected')?>"/> +<? if ((!is_null($this->list) && $this->list->editAllowed($user)) || is_null($this->list) && $user): ?> + <input class="btn" id="<?=$this->idPrefix?>delete_list_items_<?=!is_null($this->list) ? $this->escapeHtml($this->list->id) : ''?>" type="submit" name="delete" value="<?=$this->transEsc('Delete')?>" title="<?=$this->transEsc('delete_selected')?>"/> +<? endif; ?> +<? $exportOptions = $this->export()->getBulkOptions(); if (count($exportOptions) > 0): ?> + <input class="btn" type="submit" name="export" value="<?=$this->transEsc('Export')?>" title="<?=$this->transEsc('export_selected')?>"/> +<? endif; ?> +<input class="btn" type="submit" name="print" value="<?=$this->transEsc('Print')?>" title="<?=$this->transEsc('print_selected')?>"/> +<? if ($this->cart()->isActive()): ?> + <input class="btn button floatleft bookbagAdd" id="<?=$this->idPrefix?>updateCart" type="submit" name="add" value="<?=$this->transEsc('Add to Book Bag')?>"/> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/myresearch/cataloglogin.phtml b/themes/bootstrap/templates/myresearch/cataloglogin.phtml new file mode 100644 index 00000000000..a7696183537 --- /dev/null +++ b/themes/bootstrap/templates/myresearch/cataloglogin.phtml @@ -0,0 +1,32 @@ +<? + // Set up page title: + $this->headTitle($this->translate('Login')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a> <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Login') . '</li>'; + + // Convenience variable: + $offlineMode = $this->ils()->getOfflineMode(); +?> +<? if ($offlineMode == "ils-offline"): ?> + <div class="alert alert-warning"> + <h2><?=$this->transEsc('ils_offline_title')?></h2> + <p><strong><?=$this->transEsc('ils_offline_status')?></strong></p> + <p><?=$this->transEsc('ils_offline_login_message')?></p> + <? $supportEmail = $this->escapeHtml($this->systemEmail()); ?> + <p><a href="mailto:<?=$supportEmail?>"><?=$supportEmail?></a></p> + </div> +<? else: ?> + <h3><?=$this->transEsc('Library Catalog Profile')?></h3> + <?=$this->flashmessages()?> + <p><?=$this->transEsc('cat_establish_account')?></p> + <form method="post" action=""> + <label for="profile_cat_username"><?=$this->transEsc('Library Catalog Username')?>:</label> + <input id="profile_cat_username" type="text" name="cat_username" value=""/> + <label for="profile_cat_password"><?=$this->transEsc('Library Catalog Password')?>:</label> + <input id="profile_cat_password" type="text" name="cat_password" value=""/> + <br/> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Save')?>"/> + </form> +<? endif; ?> diff --git a/themes/bootstrap/templates/myresearch/checkedout.phtml b/themes/bootstrap/templates/myresearch/checkedout.phtml new file mode 100644 index 00000000000..85076fc1a92 --- /dev/null +++ b/themes/bootstrap/templates/myresearch/checkedout.phtml @@ -0,0 +1,132 @@ +<? + // Set up page title: + $this->headTitle($this->translate('Checked Out Items')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a> <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Checked Out') . '</li>'; +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->transEsc('Your Checked Out Items')?></h2> + <?=$this->flashmessages()?> + + <? if (!empty($this->transactions)): ?> + <? if ($this->renewForm): ?> + <form name="renewals" action="" method="post" id="renewals"> + <div class="toolbar"> + <ul> + <li><input type="submit" class="btn" name="renewSelected" value="<?=$this->transEsc("renew_selected")?>" /></li> + <li><input type="submit" class="btn" name="renewAll" value="<?=$this->transEsc('renew_all')?>" /></li> + </ul> + </div> + <br /> + <? endif; ?> + + <? $i = 0; foreach ($this->transactions as $resource): ?> + <hr/> + <? $ilsDetails = $resource->getExtraDetail('ils_details'); ?> + <div id="record<?=$this->escapeHtml($resource->getUniqueId())?>" class="row-fluid"> + <? if ($this->renewForm): ?> + <? if (isset($ilsDetails['renewable']) && $ilsDetails['renewable'] && isset($ilsDetails['renew_details'])): ?> + <? $safeId = preg_replace('/[^a-zA-Z0-9]/', '', $resource->getUniqueId()); ?> + <input type="checkbox" name="renewSelectedIDS[]" value="<?=$this->escapeHtml($ilsDetails['renew_details'])?>" id="checkbox_<?=$safeId?>" /> + <input type="hidden" name="renewAllIDS[]" value="<?=$this->escapeHtml($ilsDetails['renew_details'])?>" /> + <? endif; ?> + <? endif; ?> + <div class="span2 text-center"> + <? if ($summThumb = $this->record($resource)->getThumbnail()): ?> + <img src="<?=$this->escapeHtml($summThumb)?>" class="summcover" alt="<?=$this->transEsc('Cover Image')?>"/> + <? else: ?> + <img src="<?=$this->url('cover-unavailable')?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/> + <? endif; ?> + </div> + <div class="span9"> + <? + // If this is a non-missing Solr record, we should display a link: + if (is_a($resource, 'VuFind\\RecordDriver\\SolrDefault') && !is_a($resource, 'VuFind\\RecordDriver\\Missing')) { + $title = $resource->getTitle(); + $title = empty($title) ? $this->transEsc('Title not available') : $this->escapeHtml($title); + echo '<a href="' . $this->recordLink()->getUrl($resource) . + '" class="title">' . $title . '</a>'; + } else if (isset($ilsDetails['title']) && !empty($ilsDetails['title'])){ + // If the record is not available in Solr, perhaps the ILS driver sent us a title we can show... + echo $this->escapeHtml($ilsDetails['title']); + } else { + // Last resort -- indicate that no title could be found. + echo $this->transEsc('Title not available'); + } + ?><br/> + <? $listAuthor = $resource->getPrimaryAuthor(); if (!empty($listAuthor)): ?> + <?=$this->transEsc('by')?>: + <a href="<?=$this->record($resource)->getLink('author', $listAuthor)?>"><?=$this->escapeHtml($listAuthor)?></a><br/> + <? endif; ?> + <? /* TODO: tags + {if $resource.tags} + <?=$this->transEsc('Your Tags')?>: + {foreach from=$resource.tags item=tag name=tagLoop} + <a href="{$url}/Search/Results?tag={$tag->tag|escape:"url"}">{$tag->tag|escape}</a>{if !$smarty.foreach.tagLoop.last},{/if} + {/foreach} + <br/> + {/if} + */ ?> + <? /* TODO: notes + {if $resource.notes} + <?=$this->transEsc('Notes')?>: {$resource.notes|escape}<br/> + {/if} + */ ?> + <? $formats = $resource->getFormats(); if (count($formats) > 0): ?> + <?=str_replace('class="', 'class="label label-info ', $this->record($resource)->getFormatList())?> + <br/> + <? endif; ?> + <? if (isset($ilsDetails['volume']) && !empty($ilsDetails['volume'])): ?> + <strong><?=$this->transEsc('Volume')?>:</strong> <?=$this->escapeHtml($ilsDetails['volume'])?> + <br /> + <? endif; ?> + + <? if (isset($ilsDetails['publication_year']) && !empty($ilsDetails['publication_year'])): ?> + <strong><?=$this->transEsc('Year of Publication')?>:</strong> <?=$this->escapeHtml($ilsDetails['publication_year'])?> + <br /> + <? endif; ?> + + <? $showStatus = true; ?> + + <? if (isset($this->renewResult[$ilsDetails['item_id']])): ?> + <? $renewDetails = $this->renewResult[$ilsDetails['item_id']]; ?> + <? if (isset($renewDetails['success']) && $renewDetails['success']): ?> + <? $showStatus = false; ?> + <strong><?=$this->transEsc('Due Date')?>: <?=$this->escapeHtml($renewDetails['new_date'])?> <? if (isset($renewDetails['new_time'])): ?><?=$this->escapeHtml($renewDetails['new_time'])?><? endif; ?></strong> + <div class="success"><?=$this->transEsc('renew_success')?></div> + <? else: ?> + <strong><?=$this->transEsc('Due Date')?>: <?=$this->escapeHtml($ilsDetails['duedate'])?><? if (isset($ilsDetails['dueTime'])): ?> <?=$this->escapeHtml($ilsDetails['dueTime'])?><? endif; ?></strong> + <div class="error"><?=$this->transEsc('renew_fail')?><? if (isset($renewDetails['sysMessage'])): ?>: <?=$this->escapeHtml($renewDetails['sysMessage'])?><? endif; ?></div> + <? endif; ?> + <? else: ?> + <strong><?=$this->transEsc('Due Date')?>: <?=$this->escapeHtml($ilsDetails['duedate'])?><? if (isset($ilsDetails['dueTime'])): ?> <?=$this->escapeHtml($ilsDetails['dueTime'])?><? endif; ?></strong> + <? if ($showStatus): ?> + <? if (isset($ilsDetails['dueStatus']) && $ilsDetails['dueStatus'] == "overdue"): ?> + <div class="error"><?=$this->transEsc("renew_item_overdue")?></div> + <? elseif (isset($ilsDetails['dueStatus']) && $ilsDetails['dueStatus'] == "due"): ?> + <div class="notice"><?=$this->transEsc("renew_item_due")?></div> + <? endif; ?> + <? endif; ?> + <? endif; ?> + + <? if ($showStatus && isset($ilsDetails['message']) && !empty($ilsDetails['message'])): ?> + <div class="info"><?=$this->transEsc($ilsDetails['message'])?></div> + <? endif; ?> + <? if (isset($ilsDetails['renewable']) && $ilsDetails['renewable'] && isset($ilsDetails['renew_link'])): ?> + <a href="<?=$this->escapeHtml($ilsDetails['renew_link'])?>"><?=$this->transEsc('renew_item')?></a> + <? endif; ?> + </div> + </div> + <? endforeach; ?> + <? if ($this->renewForm): ?></form><? endif; ?> + <? else: ?> + <?=$this->transEsc('You do not have any items checked out')?>. + <? endif; ?> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->context($this)->renderInContext("myresearch/menu.phtml", array('active' => 'checkedout'))?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/myresearch/delete.phtml b/themes/bootstrap/templates/myresearch/delete.phtml new file mode 100644 index 00000000000..e672e041b3b --- /dev/null +++ b/themes/bootstrap/templates/myresearch/delete.phtml @@ -0,0 +1,21 @@ +<form action="<?=$this->url('myresearch-delete')?>" method="post" name="bulkDelete"> + <div id="popupMessages"><?=$this->flashmessages()?></div> + <div id="popupDetails"> + <? if (!$this->list): ?> + <div class="info"><?=$this->transEsc("fav_delete_warn") ?></div> + <? else: ?> + <h2><?=$this->transEsc("List") ?>: <?=$this->escapeHtml($this->list->title) ?></h2> + <? endif; ?> + + <? foreach ($this->records as $favorite): ?> + <strong><?=$this->translate('Title') ?>:</strong> + <?=$this->escapeHtml($favorite->getBreadcrumb())?><br /> + <? endforeach; ?> + <br /> + <input class="submit" type="submit" name="submit" value="<?=$this->transEsc('Delete')?>"/> + <? foreach ($this->deleteIDS as $deleteID): ?> + <input type="hidden" name="ids[]" value="<?=$this->escapeHtml($deleteID)?>" /> + <? endforeach; ?> + <input type="hidden" name="listID" value="<?=$this->list?$this->escapeHtml($this->list->id):''?>" /> + </div> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/myresearch/edit.phtml b/themes/bootstrap/templates/myresearch/edit.phtml new file mode 100644 index 00000000000..f9e35dbd3ad --- /dev/null +++ b/themes/bootstrap/templates/myresearch/edit.phtml @@ -0,0 +1,65 @@ +<? + // Set up page title: + $this->headTitle($this->translate('Edit') . ' : ' . $this->driver->getBreadcrumb()); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a>' . '<span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Edit') . '</li>'; + + // Load Javascript dependencies into header: + $this->headScript()->appendFile("bulk_actions.js"); +?> +<div class="record"> + <p class="lead"><?=$this->escapeHtml($this->driver->getBreadcrumb())?></p> + + <form class="form-horizontal" method="post" name="editForm" action=""> + <? if (empty($this->savedData)): ?> + <p class="alert alert-info"> + <? if (isset($listFilter)): ?> + <?=$this->transEsc('The record you selected is not part of the selected list.') ?> + <? else: ?> + <?=$this->transEsc('The record you selected is not part of any of your lists.') ?> + <? endif; ?> + </p> + <? else: ?> + <? foreach ($this->savedData as $i=>$current): ?> + <fieldset> + <legend><a href="<?=$this->url('userList', array('id' => $current['listId'])) ?>?delete=<?=urlencode($this->driver->getUniqueId())?>&source=<?=urlencode($this->driver->getResourceSource())?>" id="<?=$this->escapeHtml($this->driver->getUniqueId())?>delete<?=$current['listId'] ?>" title="<?=$this->transEsc('confirm_delete')?>" class="text-error small"><i class="icon-remove-sign"></i></a> <?=$this->transEsc('List') ?>: <?=$this->escapeHtml($current['listTitle'])?></legend> + <input type="hidden" name="lists[]" value="<?=$current['listId'] ?>"/> + <div class="control-group"> + <label class="control-label" for="edit_tags<?=$current['listId'] ?>"><?=$this->transEsc('Tags') ?>:</label> + <div class="controls"> + <input class="input-xlarge" id="edit_tags<?=$current['listId'] ?>" type="text" name="tags<?=$current['listId'] ?>" value="<?=$this->escapeHtml($current['tags'])?>"/> + <span class="help-block"><?=$this->transEsc("add_tag_note") ?></span> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="edit_notes<?=$current['listId'] ?>"><?=$this->transEsc('Notes') ?>:</label> + <div class="controls"> + <textarea class="input-xlarge" id="edit_notes<?=$current['listId'] ?>" name="notes<?=$current['listId'] ?>" rows="3"><?=$this->escapeHtml($current['notes'])?></textarea> + </div> + </div> + </fieldset> + <? if($i < count($this->savedData)-1): ?> + <hr/> + <? endif; ?> + <? endforeach; ?> + <? endif; ?> + <? if (count($this->lists) > 0): ?> + <hr /> + <div class="control-group"> + <div class="controls"> + <select name="addToList"> + <option value="-1">- <?=$this->transEsc('Add to another list')?> -</option> + <? foreach ($this->lists as $listID=>$listTitle): ?> + <option value="<?=$listID ?>"><?=$this->escapeHtml($listTitle) ?></option> + <? endforeach; ?> + </select><br/><br/> + <? if (!empty($this->savedData) || count($this->lists) > 0): ?> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Save') ?>"/> + <? endif; ?> + </div> + </div> + <? endif; ?> + </form> +</div> diff --git a/themes/bootstrap/templates/myresearch/editlist.phtml b/themes/bootstrap/templates/myresearch/editlist.phtml new file mode 100644 index 00000000000..8d1448e7a9d --- /dev/null +++ b/themes/bootstrap/templates/myresearch/editlist.phtml @@ -0,0 +1,45 @@ +<? + // Set up page title: + $pageTitle = empty($this->list->id) ? 'Create a List' : "edit_list"; + $this->headTitle($this->translate($pageTitle)); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a> <span class="divider">></span></li>' + . '<li>' . $this->transEsc($pageTitle) . '</li>'; +?> + +<?=$this->flashmessages()?> + +<p class="lead"><?=$this->transEsc($pageTitle); ?></p> + +<form class="form-horizontal edit-list-form" method="post" name="<?=empty($this->list->id) ? 'newList' : 'editListForm'?>" action=""> + <input type="hidden" name="id" value="<?=empty($this->list->id) ? 'NEW' : $this->list->id ?>"/> + <div class="control-group"> + <label class="control-label" for="list_title"><?=$this->transEsc('List'); ?>:</label> + <div class="controls"> + <input id="list_title" class="input-xlarge" type="text" name="title" value="<?=$this->escapeHtml($this->list['title']); ?>"/> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="list_desc"><?=$this->transEsc('Description') ?></label> + <div class="controls"> + <textarea id="list_desc" class="input-xlarge" name="desc" rows="3"><?=$this->escapeHtml($this->list['description']) ?></textarea> + </div> + </div> + <div class="control-group"> + <label class="control-label"><?=$this->transEsc('Access') ?></label> + <div class="controls"> + <label class="radio inline"> + <input id="list_public_1" type="radio" name="public" value="1"<? if ($this->list->isPublic()): ?> checked="checked"<? endif; ?>/> <?=$this->transEsc('Public') ?> + </label> + <label class="radio inline"> + <input id="list_public_0" type="radio" name="public" value="0"<? if (!$this->list->isPublic()): ?> checked="checked"<? endif; ?>/> <?=$this->transEsc('Private') ?> + </label> + </div> + </div> + <div class="control-group"> + <div class="controls"> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Save') ?>"/> + </div> + </div> +</form> diff --git a/themes/bootstrap/templates/myresearch/export.phtml b/themes/bootstrap/templates/myresearch/export.phtml new file mode 100644 index 00000000000..297d9eac03a --- /dev/null +++ b/themes/bootstrap/templates/myresearch/export.phtml @@ -0,0 +1,36 @@ +<form action="<?=$this->url() ?>/MyResearch/Export" method="post" name="bulkExport"> + <? if ($errorMsg): ?><div class="error"><?=$this->translate($errorMsg) ?></div><? endif; ?> + <? if ($infoMsg): ?><div class="info"><?=$this->translate($infoMsg) ?></div><? endif; ?> + + <div id="popupMessages"></div> + <div id="popupDetails"> + <? if (empty($exportOptions)): ?> + <div class="error"><?=$this->translate("bulk_export_not_supported") ?></div> + <? else: ?> + <? foreach ($exportList as $favorite): ?> + <strong><?=$this->translate('Title') ?>:</strong> + <?=$this->escapeHtml(favorite['title']) ?><br /> + <? endforeach; ?> + <label for="format"><?=$this->translate('Format') ?>:</label> + <select id="format" name="format"> + <? foreach ($exportOptions as $exportOption): ?> + <option value="<?=$this->escapeHtml($exportOption) ?>"><?=$this->translate($exportOption) ?></option> + <? endforeach; ?> + </select> + <br /> + <input class="button" type="submit" name="submit" value="<?=$this->translate('Export') ?>" /> + <? foreach ($exportIDS as $exportID): ?> + <input type="hidden" name="ids[]" value="<?=$this->escapeHtml($exportID) ?>" /> + <? endforeach; ?> + <? if ($listID): ?> + <input type="hidden" name="listID" value="<?=$this->escapeHtml($listID) ?>" /> + <? endif; ?> + <? if ($followupModule): ?> + <input type="hidden" name="followupModule" value="<?=$this->escapeHtml($followupModule) ?>" /> + <? endif; ?> + <? if ($followupAction): ?> + <input type="hidden" name="followupAction" value="<?=$this->escapeHtml($followupAction) ?>" /> + <? endif; ?> + <? endif; ?> + </div> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/myresearch/fines.phtml b/themes/bootstrap/templates/myresearch/fines.phtml new file mode 100644 index 00000000000..06d1ff4decb --- /dev/null +++ b/themes/bootstrap/templates/myresearch/fines.phtml @@ -0,0 +1,47 @@ +<? + // Set up page title: + $this->headTitle($this->translate('My Fines')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a>' . '<span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Fines') . '</li>'; +?> +<div class="<?=$this->layoutClass('mainbody')?>"> + <? if (empty($this->fines)): ?> + <?=$this->transEsc('You do not have any fines')?> + <? else: ?> + <h2><?=$this->transEsc('Your Fines')?></h2> + <table class="table table-striped" summary="<?=$this->transEsc('Your Fines')?>"> + <tr> + <th><?=$this->transEsc('Title')?></th> + <th><?=$this->transEsc('Checked Out')?></th> + <th><?=$this->transEsc('Due Date')?></th> + <th><?=$this->transEsc('Fine')?></th> + <th><?=$this->transEsc('Fee')?></th> + <th><?=$this->transEsc('Balance')?></th> + </tr> + <? foreach ($this->fines as $record): ?> + <tr> + <td> + <? if (empty($record['title'])): ?> + <?=$this->transEsc('not_applicable')?> + <? elseif (!isset($record['id'])): ?> + <?=$this->escapeHtml(trim($record['title'], '/:'))?> + <? else: ?> + <a href="<?=$this->url('record', array('id' => $record['id']))?>"><?=$this->escapeHtml(trim($record['title'], '/:'))?></a> + <? endif; ?> + </td> + <td><?=isset($record['checkout']) ? $this->escapeHtml($record['checkout']) : ''?></td> + <td><?=isset($record['duedate']) ? $this->escapeHtml($record['duedate']) : ''?></td> + <td><?=isset($record['fine']) ? $this->escapeHtml($record['fine']) : ''?></td> + <td><?=isset($record['amount']) ? $this->safeMoneyFormat($record['amount']/100.00) : ''?></td> + <td><?=isset($record['balance']) ? $this->safeMoneyFormat($record['balance']/100.00) : ''?></td> + </tr> + <? endforeach; ?> + </table> + <? endif; ?> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->context($this)->renderInContext("myresearch/menu.phtml", array('active' => 'fines'))?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/myresearch/holds.phtml b/themes/bootstrap/templates/myresearch/holds.phtml new file mode 100644 index 00000000000..68c23400a79 --- /dev/null +++ b/themes/bootstrap/templates/myresearch/holds.phtml @@ -0,0 +1,147 @@ +<? + // Set up page title: + $this->headTitle($this->translate('My Holds')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a> <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('My Holds') . '</li>'; +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->translate('Your Holds and Recalls') ?></h2> + + <?=$this->flashmessages()?> + + <? if (!empty($this->recordList)): ?> + <? if ($this->cancelForm): ?> + <form name="cancelForm" action="" method="post" id="cancelHold"> + <input type="submit" class="btn" name="cancelSelected" value="<?=$this->translate("hold_cancel_selected") ?>" onClick="return confirm('<?=$this->translate("confirm_hold_cancel_selected_text") ?>')" /> + <input type="submit" class="btn" name="cancelAll" value="<?=$this->translate("hold_cancel_all") ?>" onClick="return confirm('<?=$this->translate("confirm_hold_cancel_all_text") ?>')" /> + <hr/> + <? endif; ?> + + <? $iteration = 0; ?> + <? foreach ($this->recordList as $resource): ?> + <hr/> + <? $iteration++; ?> + <? $ilsDetails = $resource->getExtraDetail('ils_details'); ?> + <div id="record<?=$this->escapeHtml($resource->getUniqueId()) ?>" class="row-fluid"> + <? if ($this->cancelForm && isset($ilsDetails['cancel_details'])): ?> + <? $safeId = preg_replace('/[^a-zA-Z0-9]/', '', $resource->getUniqueId()); ?> + <input type="hidden" name="cancelAllIDS[]" value="<?=$this->escapeHtml($ilsDetails['cancel_details']) ?>" /> + <div class="pull-left"> + <input type="checkbox" name="cancelSelectedIDS[]" value="<?=$this->escapeHtml($ilsDetails['cancel_details']) ?>" id="checkbox_<?=$safeId?>" /> + </div> + <? endif; ?> + <div class="span2 text-center"> + <? if ($summThumb = $this->record($resource)->getThumbnail()): ?> + <img src="<?=$this->escapeHtml($summThumb)?>" class="summcover" alt="<?=$this->transEsc('Cover Image')?>"/> + <? else: ?> + <img src="<?=$this->url('cover-unavailable')?>" class="summcover" alt="<?=$this->transEsc('No Cover Image')?>"/> + <? endif; ?> + </div> + <div class="span9"> + <? + // If this is a non-missing Solr record, we should display a link: + if (is_a($resource, 'VuFind\\RecordDriver\\SolrDefault') && !is_a($resource, 'VuFind\\RecordDriver\\Missing')) { + $title = $resource->getTitle(); + $title = empty($title) ? $this->transEsc('Title not available') : $this->escapeHtml($title); + echo '<a href="' . $this->recordLink()->getUrl($resource) + . '" class="title">' . $title . '</a>'; + } else if (isset($ilsDetails['title']) && !empty($ilsDetails['title'])){ + // If the record is not available in Solr, perhaps the ILS driver sent us a title we can show... + echo $this->escapeHtml($ilsDetails['title']); + } else { + // Last resort -- indicate that no title could be found. + echo $this->transEsc('Title not available'); + } + ?><br/> + <? $listAuthor = $resource->getPrimaryAuthor(); if (!empty($listAuthor)): ?> + <?=$this->transEsc('by')?>: + <a href="<?=$this->record($resource)->getLink('author', $listAuthor)?>"><?=$this->escapeHtml($listAuthor)?></a><br/> + <? endif; ?> + <? /* TODO: tags + {if $resource.tags} + <?=$this->transEsc('Your Tags')?>: + {foreach from=$resource.tags item=tag name=tagLoop} + <a href="{$url}/Search/Results?tag={$tag->tag|escape:"url"}">{$tag->tag|escape}</a>{if !$smarty.foreach.tagLoop.last},{/if} + {/foreach} + <br/> + {/if} + */ ?> + <? /* TODO: notes + {if $resource.notes} + <?=$this->transEsc('Notes')?>: {$resource.notes|escape}<br/> + {/if} + */ ?> + + <? $formats = $resource->getFormats(); if (count($formats) > 0): ?> + <?=str_replace('class="', 'class="label label-info ', $this->record($resource)->getFormatList())?> + <br/> + <? endif; ?> + <? if (isset($ilsDetails['volume']) && !empty($ilsDetails['volume'])): ?> + <strong><?=$this->transEsc('Volume')?>:</strong> <?=$this->escapeHtml($ilsDetails['volume'])?> + <br /> + <? endif; ?> + + <? if (isset($ilsDetails['publication_year']) && !empty($ilsDetails['publication_year'])): ?> + <strong><?=$this->transEsc('Year of Publication')?>:</strong> <?=$this->escapeHtml($ilsDetails['publication_year'])?> + <br /> + <? endif; ?> + + <? /* Depending on the ILS driver, the "location" value may be a string or an ID; figure out the best + value to display... */ ?> + <? $pickupDisplay = ''; ?> + <? $pickupTranslate = false; ?> + <? if (isset($ilsDetails['location'])): ?> + <? if ($this->pickup): ?> + <? foreach ($this->pickup as $library): ?> + <? if ($library['locationID'] == $ilsDetails['location']): ?> + <? $pickupDisplay = $library['locationDisplay']; ?> + <? $pickupTranslate = true; ?> + <? endif; ?> + <? endforeach; ?> + <? endif; ?> + <? if (empty($pickupDisplay)): ?> + <? $pickupDisplay = $ilsDetails['location']; ?> + <? endif; ?> + <? endif; ?> + <? if (!empty($pickupDisplay)): ?> + <strong><?=$this->transEsc('pick_up_location') ?>:</strong> + <?=$pickupTranslate ? $this->transEsc($pickupDisplay) : $this->escapeHtml($pickupDisplay)?> + <br /> + <? endif; ?> + + <strong><?=$this->transEsc('Created') ?>:</strong> <?=$this->escapeHtml($ilsDetails['create']) ?> | + <strong><?=$this->transEsc('Expires') ?>:</strong> <?=$this->escapeHtml($ilsDetails['expire']) ?> + <br /> + + <? if (isset($this->cancelResults['items'])): ?> + <? foreach ($this->cancelResults['items'] as $itemId=>$cancelResult): ?> + <? if ($itemId == $ilsDetails['item_id'] && $cancelResult['success'] == false): ?> + <div class="alert alert-error"><?=$this->transEsc($cancelResult['status']) ?><? if ($cancelResult['sysMessage']) echo ' : ' . $this->transEsc($cancelResult['sysMessage']); ?></div> + <? endif; ?> + <? endforeach; ?> + <? endif; ?> + + <? if (isset($ilsDetails['available']) && $ilsDetails['available'] == true): ?> + <div class="text-success"><?=$this->transEsc("hold_available") ?></div> + <? elseif (isset($ilsDetails['position'])): ?> + <p><strong><?=$this->transEsc("hold_queue_position") ?>:</strong> <?=$this->escapeHtml($ilsDetails['position']) ?></p> + <? endif; ?> + <? if (isset($ilsDetails['cancel_link'])): ?> + <p><a href="<?=$this->escapeHtml($ilsDetails['cancel_link']) ?>"><?=$this->transEsc("hold_cancel") ?></a></p> + <? endif; ?> + + </div> + </div> + <? endforeach; ?> + <? if ($this->cancelForm): ?></form><? endif; ?> + <? else: ?> + <?=$this->transEsc('You do not have any holds or recalls placed') ?>. + <? endif; ?> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->context($this)->renderInContext("myresearch/menu.phtml", array('active' => 'holds'))?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/myresearch/login.phtml b/themes/bootstrap/templates/myresearch/login.phtml new file mode 100644 index 00000000000..1671bb40e21 --- /dev/null +++ b/themes/bootstrap/templates/myresearch/login.phtml @@ -0,0 +1,57 @@ +<? + // Set up page title: + $this->headTitle($this->translate('Login')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a> <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Login') . '</li>'; + + // If we're in AJAX mode, load some extra Javascript inline: + if ($this->layout()->getTemplate() == 'layout/lightbox') { + $this->inlineScript(\Zend\View\Helper\HeadScript::FILE, "rc4.js", 'SET'); + } + + // Convenience variables: + $account = $this->auth()->getManager(); + $hideLogin = !(is_object($account) && $account->loginEnabled()); + $offlineMode = $this->ils()->getOfflineMode(); +?> + +<? if ($offlineMode == "ils-offline"): ?> + <div class="alert alert-warning"> + <h2><?=$this->transEsc('ils_offline_title')?></h2> + <p><strong><?=$this->transEsc('ils_offline_status')?></strong></p> + <p><?=$this->transEsc('ils_offline_login_message')?></p> + <? $supportEmail = $this->escapeHtml($this->systemEmail()); ?> + <p><a href="mailto:<?=$supportEmail?>"><?=$supportEmail?></a></p> + </div> +<? endif; ?> + +<p class="lead"><?=$this->transEsc('Login')?></p> +<?=$this->flashmessages()?> + +<? if ($hideLogin): ?> + <div class="alert alert-error"><?=$this->transEsc('login_disabled')?></div> +<? else: ?> + <? $sessionInitiator = $account->getSessionInitiator($this->serverUrl($this->url('myresearch-home'))); ?> + <? if (!$sessionInitiator): // display default login form if no login URL provided ?> + <form method="post" action="<?=$this->url('myresearch-home')?>" name="loginForm" id="loginForm" class="form-horizontal"> + <?=$this->auth()->getLoginFields()?> + <div class="control-group"> + <div class="controls"> + <input class="btn btn-primary" type="submit" name="processLogin" value="<?=$this->transEsc('Login')?>"/> + <? if ($account->supportsCreation()): ?> + <a class="btn btn-link" href="<?=$this->url('myresearch-account')?>"><?=$this->transEsc('Create New Account')?></a> + <? endif; ?> + </div> + </div> + </form> + <? + // Set up form validation: + $initJs = '$(document).ready(function() { $(\'#loginForm\').validate(); });'; + echo $this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $initJs); + ?> + <? else: ?> + <a href="<?=$this->escapeHtml($sessionInitiator)?>"><?=$this->transEsc("Institutional Login")?></a> + <? endif; ?> +<? endif; ?> diff --git a/themes/bootstrap/templates/myresearch/menu.phtml b/themes/bootstrap/templates/myresearch/menu.phtml new file mode 100644 index 00000000000..ac696b8b112 --- /dev/null +++ b/themes/bootstrap/templates/myresearch/menu.phtml @@ -0,0 +1,10 @@ +<h4><?=$this->transEsc('Your Account')?></h4> +<ul class="nav nav-list"> + <li<?=$this->active == 'favorites' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-favorites')?>"><?=$this->transEsc('Favorites')?> <i class="icon-star pull-right"></i></a></li> + <li<?=$this->active == 'checkedout' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-checkedout')?>"><?=$this->transEsc('Checked Out Items')?> <i class="icon-book pull-right"></i></a></li> + <li<?=$this->active == 'holds' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-holds')?>"><?=$this->transEsc('Holds and Recalls')?> <i class="icon-flag pull-right"></i></a></li> + <li<?=$this->active == 'fines' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-fines')?>"><?=$this->transEsc('Fines')?> <i class="icon-usd pull-right"></i></a></li> + <li<?=$this->active == 'profile' ? ' class="active"' : ''?>><a href="<?=$this->url('myresearch-profile')?>"><?=$this->transEsc('Profile')?> <i class="icon-user pull-right"></i></a></li> + <li<?=$this->active == 'history' ? ' class="active"' : ''?>><a href="<?=$this->url('search-history')?>?require_login"><?=$this->transEsc('history_saved_searches')?> <i class="icon-search pull-right"></i></a></li> + <li><a href="<?=$this->url('myresearch-logout')?>"><?=$this->transEsc("Log Out")?> <i class="icon-signout pull-right"></i></a></li> +</ul> diff --git a/themes/bootstrap/templates/myresearch/mylist.phtml b/themes/bootstrap/templates/myresearch/mylist.phtml new file mode 100644 index 00000000000..5c51fc71012 --- /dev/null +++ b/themes/bootstrap/templates/myresearch/mylist.phtml @@ -0,0 +1,82 @@ +<? + // Grab list object from search results (if applicable): + $list = $this->results->getListObject(); + + // Set up page title: + $this->headTitle(isset($list) ? $list->title : $this->translate('Favorites')); + + // Set up breadcrumbs: + $currPage = isset($list) ? 'List' : 'Favorites'; + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a> <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc($currPage) . '</li>'; + + // Load Javascript dependencies into header: + $this->headScript()->appendFile("check_item_statuses.js"); + + $recordTotal = $this->results->getResultTotal(); + + // Convenience variable: + $account = $this->auth()->getManager(); + $user = $this->auth()->isLoggedIn(); +?> + +<?=$this->flashmessages()?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <div class="clearfix noprint"> + <? if (isset($list)): ?> + <div class="pull-right"> + <? if ($list->editAllowed($account->isLoggedIn())): ?> + <a href="<?=$this->url('editList', array('id' => $list->id)) ?>" class="btn btn-small" title="<?=$this->transEsc("edit_list")?>"><i class="icon-edit"></i> <?=$this->transEsc("edit_list")?></a> + <div class="btn-group"> + <a class="btn btn-small dropdown-toggle" data-toggle="dropdown" href="<?=$this->url('myresearch-deletelist') ?>?listID=<?=urlencode($list->id)?>"> + <i class="icon-trash"></i> <?=$this->transEsc("delete_list")?> + </a> + <ul class="dropdown-menu"> + <li><a href="<?=$this->url('myresearch-deletelist') ?>?listID=<?=urlencode($list->id)?>&confirm=1"><?=$this->transEsc('Delete') ?></a></li> + <li><a href="#">Cancel</a></li> + </ul> + </div> + <? endif; ?> + </div> + <p class="lead"><?=$this->escapeHtml($list->title)?></p> + <? if (!empty($list->description)): ?> + <p><?=$this->escapeHtml($list->description)?></p><hr /> + <? endif; ?> + <? else: ?> + <div class="pull-right"> + <?=$this->transEsc("Showing")?> + <strong><?=$this->escapeHtml($this->results->getStartRecord())?></strong> - <strong><?=$this->escapeHtml($this->results->getEndRecord())?></strong> + <?=$this->transEsc('of')?> <strong><?=number_format($recordTotal)?></strong> + </div> + <p class="lead"><?=$this->transEsc("Your Favorites")?></p> + <? endif; ?> + </div> + <? if ($recordTotal > 0): ?> + <div class="resulthead"> + <div class="pull-right"> + <?=$this->render('search/controls/sort.phtml')?> + </div> + </div> + <form class="form-inline" method="post" name="bulkActionForm" action="<?=$this->url('cart-myresearchbulk')?>"> + <?=$this->context($this)->renderInContext('myresearch/bulk-action-buttons.phtml', array('idPrefix' => '', 'list' => isset($list) ? $list : null, 'account' => $this->account))?> + <hr/> + <? foreach ($this->results->getResults() as $i=>$current): ?> + <?=$this->record($current)->getCheckbox()?> + <?=$this->record($current)->getListEntry($list, $user)?> + <hr/> + <? endforeach; ?> + </form> + <?=$this->paginationControl($this->results->getPaginator(), 'Sliding', 'search/pagination.phtml', array('results' => $this->results))?> + <? else: ?> + <p><?=$this->transEsc('You do not have any saved resources')?></p> + <? endif; ?> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->context($this)->renderInContext("myresearch/menu.phtml", array('active' => isset($list) ? 'list' : 'favorites'))?> + + <? foreach ($this->results->getRecommendations('side') as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/myresearch/profile.phtml b/themes/bootstrap/templates/myresearch/profile.phtml new file mode 100644 index 00000000000..9586ad85f57 --- /dev/null +++ b/themes/bootstrap/templates/myresearch/profile.phtml @@ -0,0 +1,63 @@ +<? + // Set up page title: + $this->headTitle($this->translate('My Profile')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a> <span class="divider">></span>' + . '<li class="active">' . $this->transEsc('Profile') . '</li>'; + + // Only display home library form if we have multiple pickup locations: + $showHomeLibForm = (isset($this->pickup) && count($this->pickup) > 1); + + // Template for use by the renderArray helper: + $arrTemplate = '<tr><th>%%LABEL%%:</th><td> %%VALUE%%</td></tr>'; +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <h2><?=$this->transEsc('Your Profile')?></h2> + <?=$this->flashmessages();?> + <table class="table table-striped"> + <? + echo $this->renderArray( + $arrTemplate, $this->profile, + array( + $this->transEsc('First Name') => 'firstname', + $this->transEsc('Last Name') => 'lastname' + ) + ); + ?> + <? if ($showHomeLibForm): ?> + <tr><th><?=$this->transEsc('Preferred Library')?>:</th> + <? + $selected = (isset($this->profile['home_library']) && $this->profile['home_library'] != "") + ? $this->profile['home_library'] : $this->defaultPickupLocation + ?> + <td> + <form method="post" action="" id="profile_form"> + <select id="home_library" name="home_library"> + <? foreach ($this->pickup as $lib): ?> + <option value="<?=$this->escapeHtml($lib['locationID'])?>"<?=($selected == $lib['locationID'])?' selected="selected"':''?>><?=$this->escapeHtml($lib['locationDisplay'])?></option> + <? endforeach; ?> + </select> + <input class="btn" type="submit" value="<?=$this->transEsc('Save')?>" /> + </form> + </td> + <? endif; ?> + <? + echo $this->renderArray( + $arrTemplate, $this->profile, + array( + $this->transEsc('Address') . ' 1' => 'address1', + $this->transEsc('Address') . ' 2' => 'address2', + $this->transEsc('Zip') => 'zip', + $this->transEsc('Phone Number') => 'phone', + $this->transEsc('Group') => 'group' + ) + ); + ?> + </table> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->context($this)->renderInContext("myresearch/menu.phtml", array('active' => 'profile'))?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/oai/home.phtml b/themes/bootstrap/templates/oai/home.phtml new file mode 100644 index 00000000000..13fe2040eae --- /dev/null +++ b/themes/bootstrap/templates/oai/home.phtml @@ -0,0 +1,119 @@ +<? + $this->headTitle($this->translate('OAI Server')); + $this->layout()->breadcrumbs = $this->transEsc('OAI Server'); + $baseUrl = $this->url('oai-server'); +?> +<div class="span-18"> + <h2><?=$this->transEsc('OAI Server')?></h2> + <p> + This OAI server is OAI 2.0 compliant.<br/> + The OAI Server URL is: <?=$this->serverUrl($baseUrl)?> + </p> + + <p class="lead"><?=$this->transEsc('Available Functionality') ?>:</p> + <dl> + <dt>Identify</dt> + <dd> + <form class="form-horizontal" method="get" action="<?=$baseUrl?>"> + <p class="help-block">Returns the Identification information of this OAI Server.</p> + <input type="hidden" name="verb" value="Identify"/> + <p class="help-block">Accepts no additional parameters.</p> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Go')?>"/> + </form> + </dd> + + <dt>ListIdentifiers</dt> + <dd> + <form class="form-inline" method="get" action="<?=$baseUrl?>"> + <p class="help-block">Returns a listing of available identifiers</p> + <input type="hidden" name="verb" value="ListIdentifiers"/> + <table class="text-right"> + <tr> + <td><label class="help-inline" for="ListIdentifier_from"><?=$this->transEsc('From')?>:</label></td> + <td><input id="ListIdentifier_from" type="text" name="from"/></td> + </tr> + <tr> + <td><label class="help-inline" for="ListIdentifier_until"><?=$this->transEsc('Until')?>:</label></td> + <td><input id="ListIdentifier_until" type="text" name="until"/></td> + </tr> + <tr> + <td><label class="help-inline" for="ListIdentifier_set"><?=$this->transEsc('Set')?>:</label></td> + <td><input id="ListIdentifier_set" type="text" name="set"/></td> + </tr> + <tr> + <td><label class="help-inline" for="ListIdentifier_metadataPrefix"><?=$this->transEsc('Metadata Prefix')?>:</label></td> + <td><input id="ListIdentifier_metadataPrefix" type="text" name="metadataPrefix"/></td> + </tr> + <tr> + <td><label class="help-inline" for="ListIdentifier_resumptionToken"><?=$this->transEsc('Resumption Token')?>:</label></td> + <td><input id="ListIdentifier_resumptionToken" type="text" name="resumptionToken"/></td> + </tr> + </table> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Go')?>"/> + </form> + </dd> + + <dt>ListMetadataFormats</dt> + <dd> + <form class="form-inline" method="get" action="<?=$baseUrl?>"> + <p class="help-block">Returns a listing of available metadata formats.</p> + <input type="hidden" name="verb" value="ListMetadataFormats"/> + <label class="help-inline" for="ListMetadataFormats_identifier"><?=$this->transEsc('Identifier')?>:</label> <input id="ListMetadataFormats_identifier" type="text" name="identifier"/><br/> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Go')?>"/> + </form> + </dd> + + <dt>ListSets</dt> + <dd> + <form class="form-inline" method="get" action="<?=$baseUrl?>"> + <p class="help-block">Returns a listing of available sets.</p> + <input type="hidden" name="verb" value="ListSets"/> + <label class="help-inline" for="ListSets_metadataPrefix"><?=$this->transEsc('Metadata Prefix')?>:</label> <input id="ListSets_metadataPrefix" type="text" name="metadataPrefix"/><br class="clear"/> + <label class="help-inline" for="ListSets_resumptionToken"><?=$this->transEsc('Resumption Token')?>:</label> <input id="ListSets_resumptionToken" type="text" name="resumptionToken"/><br class="clear"/> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Go')?>"/><br class="clear"/> + </form> + </dd> + + <dt>ListRecords</dt> + <dd> + <form class="form-inline" method="get" action="<?=$baseUrl?>"> + <p class="help-block">Returns a listing of available records.</p> + <input type="hidden" name="verb" value="ListRecords"/> + <table class="text-right"> + <tr> + <td><label class="help-inline" for="ListRecord_from"><?=$this->transEsc('From')?>:</label></td> + <td><input id="ListRecord_from" type="text" name="from"/></td> + </tr> + <tr> + <td><label class="help-inline" for="ListRecord_until"><?=$this->transEsc('Until')?>:</label></td> + <td><input id="ListRecord_until" type="text" name="until"/></td> + </tr> + <tr> + <td><label class="help-inline" for="ListRecord_set"><?=$this->transEsc('Set')?>:</label></td> + <td><input id="ListRecord_set" type="text" name="set"/></td> + </tr> + <tr> + <td><label class="help-inline" for="ListRecord_metadataPrefix"><?=$this->transEsc('Metadata Prefix')?>:</label></td> + <td><input id="ListRecord_metadataPrefix" type="text" name="metadataPrefix"/></td> + </tr> + <tr> + <td><label class="help-inline" for="ListRecord_resumptionToken"><?=$this->transEsc('Resumption Token')?>:</label></td> + <td><input id="ListRecord_resumptionToken" type="text" name="resumptionToken"/></td> + </tr> + </table> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Go')?>"/> + </form> + </dd> + + <dt>GetRecord</dt> + <dd> + <form class="form-inline" method="get" action="<?=$baseUrl?>"> + <p class="help-block">Returns a single record.</p> + <input type="hidden" name="verb" value="GetRecord"/> + <label class="help-inline" for="GetRecord_identifier"><?=$this->transEsc('Identifier')?>:</label> <input id="GetRecord_identifier" type="text" name="identifier"/><br class="clear"/> + <label class="help-inline" for="GetRecord_metadataPrefix"><?=$this->transEsc('Metadata Prefix')?>:</label> <input id="GetRecord_metadataPrefix" type="text" name="metadataPrefix"/><br class="clear"/> + <input class="btn" type="submit" name="submit" value="<?=$this->transEsc('Go')?>"/><br class="clear"/> + </form> + </dd> + </dl> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/pazpar2/home.phtml b/themes/bootstrap/templates/pazpar2/home.phtml new file mode 100644 index 00000000000..d13d4348c1e --- /dev/null +++ b/themes/bootstrap/templates/pazpar2/home.phtml @@ -0,0 +1 @@ +<?=$this->render('search/home.phtml');?> \ No newline at end of file diff --git a/themes/bootstrap/templates/pazpar2/search.phtml b/themes/bootstrap/templates/pazpar2/search.phtml new file mode 100644 index 00000000000..c1797c1cd4a --- /dev/null +++ b/themes/bootstrap/templates/pazpar2/search.phtml @@ -0,0 +1,4 @@ +<? + // Load standard settings from the default search results screen: + echo $this->render('search/results.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/record/addtag.phtml b/themes/bootstrap/templates/record/addtag.phtml new file mode 100644 index 00000000000..ef7ab57be1b --- /dev/null +++ b/themes/bootstrap/templates/record/addtag.phtml @@ -0,0 +1,28 @@ +<? + // Set page title. + $this->headTitle($this->translate('Add Tag')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', ' <span class="divider">></span></li>') + . '<li>' . $this->recordLink()->getBreadcrumb($this->driver) . ' <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Add Tag') . '</li>'; +?> +<div class="record"> + <form action="" method="post" name="tagRecord" class="form-horizontal"> + <input type="hidden" name="submit" value="1" /> + <input type="hidden" name="id" value="<?=$this->escapeHtml($this->driver->getUniqueId())?>" /> + <input type="hidden" name="source" value="<?=$this->escapeHtml($this->driver->getResourceSource())?>" /> + <div class="control-group"> + <label class="control-label" for="addtag_tag"><?=$this->transEsc("Tags")?>:</label> + <div class="controls"> + <input id="addtag_tag" type="text" name="tag" value="" size="40" class="mainFocus <?=$this->jqueryValidation(array('required'=>'This field is required'))?>"/> + <p class="help-block"><?=$this->transEsc("add_tag_note")?></p> + </div> + </div> + <div class="control-group"> + <div class="controls"> + <input class="btn btn-primary" type="submit" value="<?=$this->transEsc('Save')?>"/> + </div> + </div> + </form> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/record/ajaxtab.phtml b/themes/bootstrap/templates/record/ajaxtab.phtml new file mode 100644 index 00000000000..6f7d520981e --- /dev/null +++ b/themes/bootstrap/templates/record/ajaxtab.phtml @@ -0,0 +1,7 @@ +<? +foreach ($this->tabs as $tab => $obj) { + if (strtolower($this->activeTab) == strtolower($tab)) { + echo $this->record($this->driver)->getTab($obj); + } +} +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/record/checkbox.phtml b/themes/bootstrap/templates/record/checkbox.phtml new file mode 100644 index 00000000000..a56ced2b5c8 --- /dev/null +++ b/themes/bootstrap/templates/record/checkbox.phtml @@ -0,0 +1,4 @@ +<span class="pull-left noprint"> + <input class="checkbox-select-item" type="checkbox" name="ids[]" value="<?=$this->id ?>"/> + <input type="hidden" name="idsAll[]" value="<?=$this->id ?>"/> +</span> diff --git a/themes/bootstrap/templates/record/cite.phtml b/themes/bootstrap/templates/record/cite.phtml new file mode 100644 index 00000000000..12071a7fba9 --- /dev/null +++ b/themes/bootstrap/templates/record/cite.phtml @@ -0,0 +1,27 @@ +<? + // Set page title. + $this->headTitle($this->translate('Record Citations')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span> </li>') + . '<li>' . $this->recordLink()->getBreadcrumb($this->driver) . '<span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Record Citations') . '</li>'; + + // Collect citation data: + $helper = $this->citation($this->driver); + $citations = array(); + foreach ($this->driver->getCitationFormats() as $format) { + $citations[$format . ' Citation'] = $helper->getCitation($format); + } +?> +<? if (count($citations) == 0): ?> + <?=$this->transEsc('No citations are available for this record')?> +<? else: ?> + <? foreach ($citations as $caption => $citation): ?> + <strong><?=$this->transEsc($caption)?></strong> + <p class="text-left"> + <?=$citation?> + </p> + <? endforeach; ?> + <div class="muted text-center"><?=$this->transEsc('Warning: These citations may not always be 100% accurate')?>.</div> +<? endif; ?> diff --git a/themes/bootstrap/templates/record/comments-list.phtml b/themes/bootstrap/templates/record/comments-list.phtml new file mode 100644 index 00000000000..ce958828c89 --- /dev/null +++ b/themes/bootstrap/templates/record/comments-list.phtml @@ -0,0 +1,19 @@ +<? $comments = $this->driver->getComments(); ?> +<? if (empty($comments) || count($comments) == 0): ?> + <div class="alert alert-info"><?=$this->transEsc('Be the first to leave a comment')?>!</div> +<? else: ?> + <table class="table table-striped"> + <? foreach ($comments as $comment): ?> + <tr><td> + <?=$this->escapeHtml($comment->comment)?><br/> + <small> + <?=$this->transEsc('Posted by')?> <strong><?=$this->escapeHtml(trim($comment->firstname . ' ' . $comment->lastname))?></strong> + <?=$this->transEsc('posted_on')?> <?=$this->escapeHtml($comment->created)?> + <? if (($user = $this->auth()->isLoggedIn()) && $comment->user_id == $user->id): ?> + <a href="<?=$this->recordLink()->getActionUrl($this->driver, 'DeleteComment')?>?delete=<?=urlencode($comment->id)?>" id="recordComment<?=$this->escapeHtml($comment->id)?>" class="btn btn-small btn-danger pull-right"><?=$this->transEsc('Delete')?></a> + <? endif; ?> + </small> + </tr></td> + <? endforeach; ?> + </table> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/record/email.phtml b/themes/bootstrap/templates/record/email.phtml new file mode 100644 index 00000000000..6c7cc53326b --- /dev/null +++ b/themes/bootstrap/templates/record/email.phtml @@ -0,0 +1,39 @@ +<? + // Set page title. + $this->headTitle($this->translate('Email Record')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span></li>') + . '<li>' . $this->recordLink()->getBreadcrumb($this->driver) . '<span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('Email Record') . '</li>'; +?> +<?=$this->flashmessages()?> +<form class="form-horizontal" action="" method="post" name="emailRecord"> + <input type="hidden" name="id" value="<?=$this->escapeHtml($this->driver->getUniqueId())?>" /> + <input type="hidden" name="source" value="<?=$this->escapeHtml($this->driver->getResourceSource())?>" /> + <div class="control-group"> + <label class="control-label" for="email_to"><?=$this->transEsc('To')?>:</label> + <div class="controls"> + <input id="email_to" class="input-xlarge" type="email" name="to" value="<?=isset($this->to) ? $this->to : ''?>"/> + </div> + </div> + <? if (!$this->disableFrom): ?> + <div class="control-group"> + <label class="control-label" for="email_from"><?=$this->transEsc('From')?>:</label> + <div class="controls"> + <input id="email_from" class="input-xlarge" type="email" name="from" value="<?=isset($this->from) ? $this->from : ''?>" size="40"/> + </div> + </div> + <? endif; ?> + <div class="control-group"> + <label class="control-label" for="email_message"><?=$this->transEsc('Message')?>:</label> + <div class="controls"> + <textarea id="email_message" class="input-xlarge" name="message" rows="3"><?=isset($this->message) ? $this->message : ''?></textarea> + </div> + </div> + <div class="control-group"> + <div class="controls"> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Send Email')?>"/> + </div> + </div> +</form> diff --git a/themes/bootstrap/templates/record/export-menu.phtml b/themes/bootstrap/templates/record/export-menu.phtml new file mode 100644 index 00000000000..650093cc7fd --- /dev/null +++ b/themes/bootstrap/templates/record/export-menu.phtml @@ -0,0 +1,20 @@ +<? + // Set page title. + $this->headTitle($this->translate('Export Record')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span></li>') + . $this->recordLink()->getBreadcrumb($this->driver) . '<span class="divider">></span><li class="active">' . $this->transEsc('Export Record') . '</li>'; +?> +<?=$this->flashmessages()?> +<? $exportFormats = $this->export()->getFormatsForRecord($this->driver); if (count($exportFormats) > 0): ?> + <?=$this->transEsc('export_choose_format')?> + <ul> + <? foreach ($exportFormats as $exportFormat): ?> + <li><a href="<?=$this->recordLink()->getActionUrl($this->driver, 'Export')?>?style=<?=$this->escapeHtml($exportFormat)?>"><?=$this->transEsc('Export to')?> <?=$this->escapeHtml($exportFormat)?></a></li> + <? endforeach; ?> + </ul> +<? else: ?> + <?=$this->transEsc('export_no_formats')?> +<? endif; ?> + diff --git a/themes/bootstrap/templates/record/hold.phtml b/themes/bootstrap/templates/record/hold.phtml new file mode 100644 index 00000000000..228947d6f8a --- /dev/null +++ b/themes/bootstrap/templates/record/hold.phtml @@ -0,0 +1,59 @@ +<? + // Set page title. + $this->headTitle($this->translate('request_place_text') . ': ' . $this->driver->getBreadcrumb()); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span> </li>') + . '<li>' . $this->recordLink()->getBreadcrumb($this->driver) . '<span class="divider">></span> </li>' + . '<li class="active">' . $this->transEsc('request_place_text') . '</li>'; +?> +<p class="lead"><?=$this->transEsc('request_place_text')?></p> +<?=$this->flashmessages()?> +<div class="hold-form"> + <form action="" method="post"> + <? if (in_array("comments", $this->extraHoldFields)): ?> + <div> + <strong><?=$this->transEsc("Comments")?>:</strong><br/> + <textarea rows="3" cols="20" name="gatheredDetails[comment]"><?=isset($this->gatheredDetails['comment']) ? $this->escapeHtml($this->gatheredDetails['comment']) : ''?></textarea> + </div> + <? endif; ?> + + <? if (in_array("requiredByDate", $this->extraHoldFields)): ?> + <div> + <strong><?=$this->transEsc("hold_required_by")?>: </strong> + <div id="requiredByHolder"> + <input id="requiredByDate" type="text" name="gatheredDetails[requiredBy]" value="<?=(isset($this->gatheredDetails['requiredBy']) && !empty($this->gatheredDetails['requiredBy'])) ? $this->escapeHtml($this->gatheredDetails['requiredBy']) : $this->escapeHtml($this->defaultRequiredDate)?>" size="8" /> + <strong>(<?=$this->dateTime()->getDisplayDateFormat()?>)</strong> + </div> + </div> + <? endif; ?> + + <? if (in_array("pickUpLocation", $this->extraHoldFields)): ?> + <div> + <? if (count($this->pickup) > 1): ?> + <? + if (isset($this->gatheredDetails['pickUpLocation']) && $this->gatheredDetails['pickUpLocation'] !== "") { + $selected = $this->gatheredDetails['pickUpLocation']; + } elseif (isset($this->homeLibrary) && $this->homeLibrary !== "") { + $selected = $this->homeLibrary; + } else { + $selected = $this->defaultPickup; + } + ?> + <strong><?=$this->transEsc("pick_up_location")?>:</strong><br/> + <select name="gatheredDetails[pickUpLocation]"> + <? foreach ($this->pickup as $lib): ?> + <option value="<?=$this->escapeHtml($lib['locationID'])?>"<?=($selected == $lib['locationID']) ? ' selected="selected"' : ''?>> + <?=$this->escapeHtml($lib['locationDisplay'])?> + </option> + <? endforeach; ?> + </select> + <? else: ?> + <input type="hidden" name="gatheredDetails[pickUpLocation]" value="<?=$this->escapeHtml($this->defaultPickup)?>" /> + <? endif; ?> + </div> + <? endif; ?> + + <input type="submit" name="placeHold" value="<?=$this->transEsc('request_submit_text')?>"/> + </form> +</div> diff --git a/themes/bootstrap/templates/record/save.phtml b/themes/bootstrap/templates/record/save.phtml new file mode 100644 index 00000000000..5d38fbf7a75 --- /dev/null +++ b/themes/bootstrap/templates/record/save.phtml @@ -0,0 +1,62 @@ +<? + // Set page title. + $this->headTitle($this->translate('Save')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span></li>') + . '<li>' . $this->recordLink()->getBreadcrumb($this->driver) . '<span class="divider">></span></li><li class="active">' . $this->transEsc('Save') . '</li>'; +?> +<p class="lead"><?=$this->transEsc("add_favorite_prefix") ?> <?=$this->escapeHtml($this->driver->getBreadcrumb())?> <?=$this->transEsc("add_favorite_suffix") ?></p> +<form id="edit-save-form" class="form-horizontal" method="post" action="<?=$this->url('record-save', array('id'=>$this->driver->getUniqueId())) ?>" name="saveRecord"> + <input type="hidden" name="submit" value="1" /> + <input type="hidden" name="id" value="<?=$this->escapeHtml($this->driver->getUniqueId()) ?>" /> + <input type="hidden" name="source" value="<?=$this->escapeHtml($this->driver->getResourceSource())?>" /> + <? if (!empty($this->containingLists)): ?> + <p><?=$this->transEsc('This item is already part of the following list/lists') ?>: + <? foreach ($this->containingLists as $i=>$list): ?> + <a href="<?=$this->url('userList', array('id' => $list['id'])) ?>"><?=$this->escapeHtml($list['title'])?></a><? if($i<count($this->containingLists)-1): ?>, <? endif; ?> + <? endforeach; ?> + </p><hr/> + <? endif; ?> + + <?/* Only display the list drop-down if the user has lists that do not contain + this item OR if they have no lists at all and need to create a default list */?> + <? $showLists = (!empty($this->nonContainingLists) || (empty($this->containingLists) && empty($this->nonContainingLists))); ?> + + <div class="control-group"> + <label class="control-label" for="save_list"><?=$this->transEsc('Choose a List') ?></label> + <div class="controls"> + <? if ($showLists): ?> + <select class="pull-left" id="save_list" name="list"> + <? if ($this->nonContainingLists): ?> + <? foreach ($this->nonContainingLists as $list): ?> + <option value="<?=$list['id'] ?>"<? if ($list['id']==$this->userList()->lastUsed()): ?> selected="selected"<? endif; ?>><?=$this->escapeHtml($list['title'])?></option> + <? endforeach; ?> + <? else: ?> + <option value=""><?=$this->transEsc('My Favorites') ?></option> + <? endif; ?> + </select> + <? endif; ?> + <a class="btn btn-link" id="make-list" href="<?=$this->url('editList', array('id' => 'NEW'))?>?recordId=<?=urlencode($this->driver->getUniqueId())?>&recordSource=<?=urlencode($this->driver->getResourceSource())?>" title="<?=$this->transEsc('Create a List') ?>"><?=$showLists ? $this->transEsc('or').' '.$this->transEsc('Create a List') : $this->transEsc('Create a List'); ?></a> + </div> + </div> + + <div class="control-group"> + <label class="control-label" for="add_mytags"><?=$this->transEsc('Add Tags') ?></label> + <div class="controls"> + <input class="input-xlarge" id="add_mytags" type="text" name="mytags" value=""/> + <span class="help-block"><?=$this->transEsc("add_tag_note") ?></span> + </div> + </div> + <div class="control-group"> + <label class="control-label" for="add_notes"><?=$this->transEsc('Add a Note') ?></label> + <div class="controls"> + <textarea class="input-xlarge" id="add_notes" name="notes" rows="3"></textarea> + </div> + </div> + <div class="control-group"> + <div class="controls"> + <input class="btn btn-primary" type="submit" value="<?=$this->transEsc('Save to List') ?>"/> + </div> + </div> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/record/sms.phtml b/themes/bootstrap/templates/record/sms.phtml new file mode 100644 index 00000000000..e62f45e12eb --- /dev/null +++ b/themes/bootstrap/templates/record/sms.phtml @@ -0,0 +1,50 @@ +<? + // Set page title. + $this->headTitle($this->translate('Text this')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span> </li>') + . '<li>' . $this->recordLink()->getBreadcrumb($this->driver) . '<span class="divider">></span> </li>' + . '<li class="active">' . $this->transEsc('Text this') . '</li>'; +?> +<?=$this->flashmessages()?> +<form method="post" action="" name="smsRecord" class="form-horizontal"> + <input type="hidden" name="id" value="<?=$this->escapeHtml($this->driver->getUniqueId())?>" /> + <input type="hidden" name="source" value="<?=$this->escapeHtml($this->driver->getResourceSource())?>" /> + <div class="control-group"> + <label class="control-label" for="sms_to"><?=$this->transEsc('Number')?>:</label> + <div class="controls"> + <input id="sms_to" type="tel" name="to" value="<?=isset($this->to) ? $this->to : $this->transEsc('sms_phone_number')?>" + onfocus="if (this.value=='<?=$this->transEsc('sms_phone_number')?>') this.value=''" + onblur="if (this.value=='') this.value='<?=$this->transEsc('sms_phone_number')?>'" + class="<? + $options = array('required'=>'This field is required'); + if ($this->validation == 'US') { + $options['phoneUS'] = 'Invalid phone number.'; + } + echo $this->jqueryValidation($options); + ?>"/> + </div> + </div> + <? if (is_array($this->carriers) && count($this->carriers) > 1): ?> + <div class="control-group"> + <label class="control-label" for="sms_provider"><?=$this->transEsc('Provider')?>:</label> + <div class="controls"> + <select id="sms_provider" name="provider"> + <option selected="selected" value=""><?=$this->transEsc('Select your carrier')?></option> + <? foreach ($this->carriers as $val => $details): ?> + <option value="<?=$this->escapeHtml($val)?>"><?=$this->escapeHtml($details['name'])?></option> + <? endforeach; ?> + </select> + </div> + </div> + <? else: ?> + <? $keys = is_array($this->carriers) ? array_keys($this->carriers) : array(); ?> + <input type="hidden" name="provider" value="<?=isset($keys[0]) ? $keys[0] : ''?>" /> + <? endif; ?> + <div class="control-group"> + <div class="controls"> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Send Text')?>"/> + </div> + </div> +</form> diff --git a/themes/bootstrap/templates/record/view.phtml b/themes/bootstrap/templates/record/view.phtml new file mode 100644 index 00000000000..ceaa2721cd5 --- /dev/null +++ b/themes/bootstrap/templates/record/view.phtml @@ -0,0 +1,76 @@ +<? + // Set up standard record scripts: + $this->headScript()->appendFile("record.js"); + $this->headScript()->appendFile("check_save_statuses.js"); + + // Add RDF header link if applicable: + if ($this->export()->recordSupportsFormat($this->driver, 'RDF')) { + $this->headLink()->appendAlternate($this->recordLink()->getActionUrl($this->driver, 'RDF'), 'application/rdf+xml', 'RDF Representation'); + } + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', ' <span class="divider">></span> </li>') . + '<li class="active">' . $this->recordLink()->getBreadcrumb($this->driver) . '</li>'; + $this->layout()->title = $this->driver->getShortTitle(); +?> + +<? if (isset($this->scrollData) && ($this->scrollData['previousRecord'] || $this->scrollData['nextRecord'])): ?> + <ul class="pager noprint"> + <? if ($this->scrollData['previousRecord']): ?> + <li> + <a href="<?=$this->recordLink()->getUrl($this->scrollData['previousRecord'])?>" title="<?=$this->transEsc('Previous Search Result')?>">« <?=$this->transEsc('Prev')?></a> + </li> + <? else: ?> + <li class="disabled"><a href="#">« <?=$this->transEsc('Prev')?></a></li> + <? endif; ?> + #<?=$this->escapeHtml($this->scrollData['currentPosition']) . ' ' . $this->transEsc('of') . ' ' . number_format($this->escapeHtml($this->scrollData['resultTotal'])) . ' ' . $this->transEsc('results') ?> + <? if ($this->scrollData['nextRecord']): ?> + <li> + <a href="<?=$this->recordLink()->getUrl($this->scrollData['nextRecord'])?>" title="<?=$this->transEsc('Next Search Result')?>"><?=$this->transEsc('Next')?> »</a> + </li> + <? else: ?> + <li class="disabled"><a href="#"><?=$this->transEsc('Next')?> »</a></li> + <? endif; ?> + </ul> +<? endif; ?> + +<?=$this->record($this->driver)->getToolbar()?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <div class="record recordId source<?=$this->escapeHtml($this->driver->getResourceSource())?>" id="record"> + <input type="hidden" value="<?=$this->escapeHtml($this->driver->getUniqueId())?>" class="hiddenId" id="record_id" /> + <?=$this->flashmessages()?> + <?=$this->record($this->driver)->getCoreMetadata()?> + </div> + + <? if (count($this->tabs) > 0): ?> + <a name="tabnav"></a> + <ul class="nav nav-tabs"> + <? foreach ($this->tabs as $tab => $obj): ?> + <? // add current tab to breadcrumbs if applicable: + $desc = $obj->getDescription(); + $isCurrent = (strtolower($this->activeTab) == strtolower($tab)); + if ($isCurrent) { + $this->layout()->breadcrumbs .= '<li class="active"><span class="divider">></span>' . $this->transEsc($desc) . '</li>'; + $activeTabObj = $obj; + } + ?> + <li<?=$isCurrent ? ' class="active"' : ''?>> + <a href="<?=$this->recordLink()->getTabUrl($this->driver, $tab)?>#tabnav"><?=$this->transEsc($desc)?></a> + </li> + <? endforeach; ?> + </ul> + <? endif; ?> + + <div class="tab-container"> + <?=isset($activeTabObj) ? $this->record($this->driver)->getTab($activeTabObj) : '' ?> + </div> + + <span class="Z3988" title="<?=$this->escapeHtml($this->driver->getOpenURL())?>"></span> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <? foreach ($this->related()->getList($this->driver) as $current): ?> + <?=$this->related()->render($current)?> + <? endforeach; ?> +</div> diff --git a/themes/bootstrap/templates/records/home.phtml b/themes/bootstrap/templates/records/home.phtml new file mode 100644 index 00000000000..dbf1e7cebcd --- /dev/null +++ b/themes/bootstrap/templates/records/home.phtml @@ -0,0 +1,10 @@ +<? + $this->overrideTitle = $this->translate('View Records'); + $this->overrideSearchHeading = ''; + + // Load standard settings from the default search results screen: + echo $this->render('search/results.phtml'); + + // Disable top search box -- it doesn't make sense in this module. + $this->layout()->searchbox = false; +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/advanced.phtml b/themes/bootstrap/templates/search/advanced.phtml new file mode 100644 index 00000000000..c1774e75c4f --- /dev/null +++ b/themes/bootstrap/templates/search/advanced.phtml @@ -0,0 +1,6 @@ +<? + // Load the Solr-specific advanced search controls and inject them into the + // standard advanced search layout: + $this->extraAdvancedControls = $this->render('search/advanced/solr.phtml'); + echo $this->render('search/advanced/layout.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/advanced/build_page.phtml b/themes/bootstrap/templates/search/advanced/build_page.phtml new file mode 100644 index 00000000000..68c537bc9ad --- /dev/null +++ b/themes/bootstrap/templates/search/advanced/build_page.phtml @@ -0,0 +1,19 @@ +$(document).ready(function() { + <? if (isset($this->searchDetails) && is_object($this->searchDetails)): ?> + <? foreach ($this->searchDetails->getQueries() as $searchGroup): ?> + <? $i = 0; foreach ($searchGroup->getQueries() as $search): ?> + <? if (++$i == 1): ?> + var new_group = addGroup('<?=addslashes($search->getString())?>', '<?=addslashes($search->getHandler())?>', '<?=$searchGroup->isNegated() ? 'NOT' : $searchGroup->getOperator()?>'); + <? else: ?> + addSearch(new_group, '<?=addslashes($search->getString())?>', '<?=addslashes($search->getHandler())?>'); + <? endif; ?> + <? endforeach; ?> + <? endforeach; ?> + <? else: ?> + var group = addGroup(); + addSearch(group); + addSearch(group); + <? endif; ?> + // show the add group link + $("#addGroupLink").removeClass("offscreen"); +}); diff --git a/themes/bootstrap/templates/search/advanced/globals.phtml b/themes/bootstrap/templates/search/advanced/globals.phtml new file mode 100644 index 00000000000..747aae95bea --- /dev/null +++ b/themes/bootstrap/templates/search/advanced/globals.phtml @@ -0,0 +1,14 @@ +var searchFields = new Array(); +<? foreach ($this->options->getAdvancedHandlers() as $searchVal => $searchDesc): ?> + searchFields["<?=$this->escapeHtml($searchVal)?>"] = "<?=$this->transEsc($searchDesc)?>"; +<? endforeach; ?> +var searchJoins = new Array(); +searchJoins["AND"] = "<?=$this->transEsc("search_AND")?>"; +searchJoins["OR"] = "<?=$this->transEsc("search_OR")?>"; +searchJoins["NOT"] = "<?=$this->transEsc("search_NOT")?>"; +var addSearchString = "<?=$this->transEsc("add_search")?>"; +var searchLabel = "<?=$this->transEsc("adv_search_label")?>"; +var searchFieldLabel = "<?=$this->transEsc("in")?>"; +var deleteSearchGroupString = "<?=$this->transEsc("del_search")?>"; +var searchMatch = "<?=$this->transEsc("search_match")?>"; +var searchFormId = 'advSearchForm'; diff --git a/themes/bootstrap/templates/search/advanced/layout.phtml b/themes/bootstrap/templates/search/advanced/layout.phtml new file mode 100644 index 00000000000..d385005eccb --- /dev/null +++ b/themes/bootstrap/templates/search/advanced/layout.phtml @@ -0,0 +1,76 @@ +<? + // Set page title. + $this->headTitle($this->translate('Advanced Search')); + + // Disable top search box -- this page has a special layout. + $this->layout()->searchbox = false; + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', '<span class="divider">></span>') . '</li>' + . '<li class="active">' . $this->transEsc('Advanced') . '</li>'; + + // Set up saved search details: + if (isset($this->saved) && is_object($this->saved)) { + $searchDetails = $this->saved->getParams()->getQuery(); + $groups = $searchDetails->getQueries(); + $searchFilters = $this->saved->getParams()->getFilterList(); + } else { + $searchDetails = $searchFilters = $groups = false; + } + + // Set up Javascript: + // Step 1: Define our search arrays so they are usuable in the javascript + $this->headScript()->appendScript($this->render('search/advanced/globals.phtml')); + // Step 2: Call the javascript to make use of the above + $this->headScript()->appendFile('advanced_search.js'); + // Step 3: Build the page + $this->headScript()->appendScript($this->partial('search/advanced/build_page.phtml', array('searchDetails' => $searchDetails))); +?> + +<?=$this->flashmessages()?> +<form class="form-inline" method="get" action="<?=$this->url($this->options->getSearchAction())?>" id="advSearchForm" name="searchForm"> + + <div class="<?=$this->layoutClass('mainbody')?>"> + <input type="hidden" name="sort" value="relevance"> + <div class="clearfix"> + <p class="lead pull-left"><?=$this->transEsc('Advanced Search')?></p> + <div id="groupJoin" class="pull-right hidden"> + <label for="join"><?=$this->transEsc("search_match")?>:</label> + <select id="search_bool0" name="join"> + <option value="AND"<? if($searchDetails && $searchDetails->getOperator()=='ALL'):?> selected<?endif?>>ALL Groups</option> + <option value="OR"<? if($searchDetails && $searchDetails->getOperator()=='OR'):?> selected<?endif?>>ANY Groups</option> + </select> + </div> + </div> + <div class="row-fluid"> + <i id="groupPlaceHolder" class="icon-plus-sign"></i> <a href="#" onClick="addGroup()">Add Group</a> + </div> + <div class="pad"><input class="btn btn-primary pull-right" type="submit" value="Find"></div> + <?=$this->render('search/advanced/solr.phtml')?> + <div class="pad"><input class="btn btn-primary pull-right" type="submit" value="Find"></div> + </div> + + <div class="<?=$this->layoutClass('sidebar')?>"> + <? if (!empty($searchFilters)): ?> + <div class="filterList"> + <h4><?=$this->transEsc("adv_search_filters")?></h4> + <label class="checkbox"><?=$this->transEsc("adv_search_select_all")?> <input type="checkbox" checked="checked" class="checkbox-select-all"/></label> + <? foreach ($searchFilters as $field => $data): ?> + <div> + <h4><?=$this->transEsc($field)?></h4> + <ul class="unstyled"> + <? foreach ($data as $value): ?> + <li><label class="checkbox"><input class="checkbox-select-item" type="checkbox" checked="checked" name="filter[]" value='<?=$this->escapeHtml($value['field'])?>:"<?=$this->escapeHtml($value['value'])?>"' /> <?=$this->escapeHtml($value['displayText'])?></label></li> + <? endforeach; ?> + </ul> + </div> + <? endforeach; ?> + </div> + <? endif; ?> + <div class="sidegroup"> + <h4><?=$this->transEsc("Search Tips")?></h4> + <a href="<?=$this->url('help-home')?>?topic=advsearch" class="help-link" title="<?=$this->transEsc('Help with Advanced Search')?>"><?=$this->transEsc("Help with Advanced Search")?></a><br /> + <a href="<?=$this->url('help-home')?>?topic=search" class="help-link" title="<?=$this->transEsc('Help with Search Operators')?>"><?=$this->transEsc("Help with Search Operators")?></a> + </div> + </div> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/advanced/limit.phtml b/themes/bootstrap/templates/search/advanced/limit.phtml new file mode 100644 index 00000000000..35dcc457892 --- /dev/null +++ b/themes/bootstrap/templates/search/advanced/limit.phtml @@ -0,0 +1,18 @@ +<? + // Set up convenience variables: + $limitList = $this->options->getLimitOptions(); + + // If a previous limit was used, make that the default; otherwise, use the "default default" + $lastLimit = $this->options->getLastLimit(); + $defaultLimit = empty($lastLimit) ? $this->options->getDefaultLimit() : $lastLimit; +?> +<? if (count($limitList) > 1): ?> + <fieldset class="span4"> + <legend><?=$this->transEsc('Results per page')?></legend> + <select id="limit" name="limit"> + <? foreach ($limitList as $limitVal): ?> + <option value="<?=$this->escapeHtml($limitVal)?>"<?=($limitVal == $defaultLimit) ? 'selected="selected"' : ''?>><?=$this->escapeHtml($limitVal)?></option> + <? endforeach; ?> + </select> + </fieldset> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/advanced/solr.phtml b/themes/bootstrap/templates/search/advanced/solr.phtml new file mode 100644 index 00000000000..27a45ef7f33 --- /dev/null +++ b/themes/bootstrap/templates/search/advanced/solr.phtml @@ -0,0 +1,83 @@ +<? if (!empty($this->facetList)): ?> + <p class="lead"><?=$this->transEsc('Limit To')?></p> + <div class="row-fluid"> + <? foreach ($this->facetList as $field => $list): ?> + <div class="span4"> + <label class="displayBlock" for="limit_<?=$this->escapeHtml(str_replace(' ', '', $field))?>"><?=$this->transEsc($list['label'])?>:</label> + <select class="span12" id="limit_<?=$this->escapeHtml(str_replace(' ', '', $field))?>" name="filter[]" multiple="multiple" size="10"> + <? + // Sort the current facet list alphabetically; we'll use this data + // along with the foreach below to display facet options in the + // correct order. + $sorted = array(); + foreach ($list['list'] as $i => $value) { + $sorted[$i] = $value['displayText']; + } + natcasesort($sorted); + ?> + <? foreach ($sorted as $i => $display): ?> + <? $value = $list['list'][$i]; ?> + <option value="<?=$this->escapeHtml($field . ':"' . $value['value'] . '"')?>"<?=(isset($value['selected']) && $value['selected'])?' selected="selected"':''?>><?=$this->escapeHtml($display)?></option> + <? endforeach; ?> + </select> + </div> + <? endforeach; ?> + </div> +<? endif; ?> +<? if (isset($this->illustratedLimit)): ?> + <div class="row-fluid"> + <fieldset class="span4"> + <legend><?=$this->transEsc("Illustrated")?>:</legend> + <? foreach ($this->illustratedLimit as $current): ?> + <input id="illustrated_<?=$this->escapeHtml($current['value'])?>" type="radio" name="illustration" value="<?=$this->escapeHtml($current['value'])?>"<?=$current['selected']?' checked="checked"':''?>/> + <label for="illustrated_<?=$this->escapeHtml($current['value'])?>"><?=$this->transEsc($current['text'])?></label><br/> + <? endforeach; ?> + </fieldset> + <? endif; ?> + <?=$this->render('search/advanced/limit.phtml')?> + <? if (isset($this->dateRangeLimit)): ?> + <? /* Load the publication date slider UI widget */ $this->headScript()->appendFile('pubdate_slider.js'); ?> + <fieldset class="span4 text-center"> + <legend class="text-left"><?=$this->transEsc('adv_search_year')?></legend> + <input type="hidden" name="daterange[]" value="publishDate"/> + <label for="publishDatefrom"><?=$this->transEsc('date_from')?>:</label> + <input type="text" maxlength="4" class="yearbox span4" name="publishDatefrom" id="publishDatefrom" value="<?=isset($dateFacets['publishDate'][0])?$this->escapeHtml($dateFacets['publishDate'][0]):''?>" /> + <label for="publishDateto"><?=$this->transEsc('date_to')?>:</label> + <input type="text" maxlength="4" class="yearbox span4" name="publishDateto" id="publishDateto" value="<?=isset($dateFacets['publishDate'][1])?$this->escapeHtml($dateFacets['publishDate'][1]):''?>" /> + <div class="pad"><input type="text" id="dateSlider"></div> + </fieldset> + <? + $this->headScript()->appendFile('bootstrap-slider.js'); + $min = !empty($dateFacets['publishDate'][0]) ? $dateFacets['publishDate'][0] : 1400; + $max = !empty($dateFacets['publishDate'][1]) ? $dateFacets['publishDate'][1] : date('Y', time()+31536000); + $low = !empty($this->dateRangeLimit[0]) ? $this->dateRangeLimit[0] : $min; + $high = !empty($this->dateRangeLimit[1]) ? $this->dateRangeLimit[1] : $max; + $min = intval($min); + $max = intval($max); + $low = intval($low); + $high = intval($high); + $init = !empty($this->dateRangeLimit[0]) ? 'fillTexts()' : ''; + $script = <<<JS + $(document).ready(function() { + var fillTexts = function() { + var v = dateSlider.getValue(); + $('#publishDatefrom').val(v[0]); + $('#publishDateto').val(v[1]); + }; + var dateSlider = $('#dateSlider') + .slider({ + 'min':{$min}, + 'max':{$max}, + 'handle':"square", + 'tooltip':"hide", + 'value':[{$low},{$high}] + }) + .on('slide', fillTexts) + .data('slider'); + {$init} + }); +JS; + ?> + <?=$this->inlineScript(\Zend\View\Helper\HeadScript::SCRIPT, $script, 'SET'); ?> + <? endif; ?> + </div> diff --git a/themes/bootstrap/templates/search/advanced/summon.phtml b/themes/bootstrap/templates/search/advanced/summon.phtml new file mode 100644 index 00000000000..de951db0ede --- /dev/null +++ b/themes/bootstrap/templates/search/advanced/summon.phtml @@ -0,0 +1,39 @@ +<? if (!empty($this->facetList)): ?> + <h3><?=$this->transEsc('Limit To')?></h3> + <? foreach ($this->facetList as $field => $list): ?> + <div class="span-5"> + <label class="displayBlock" for="limit_<?=$this->escapeHtml(str_replace(' ', '', $field))?>"><?=$this->transEsc($list['label'])?>:</label> + <select id="limit_<?=$this->escapeHtml(str_replace(' ', '', $field))?>" name="filter[]" multiple="multiple" size="10"> + <? + // Sort the current facet list alphabetically; we'll use this data + // along with the foreach below to display facet options in the + // correct order. + $sorted = array(); + foreach ($list['list'] as $i => $value) { + $sorted[$i] = $value['displayText']; + } + natcasesort($sorted); + ?> + <? foreach ($sorted as $i => $display): ?> + <? $value = $list['list'][$i]; ?> + <option value="<?=$this->escapeHtml($field . ':"' . $value['value'] . '"')?>"<?=(isset($value['selected']) && $value['selected'])?' selected="selected"':''?>><?=$this->escapeHtml($display)?></option> + <? endforeach; ?> + </select> + </div> + <? endforeach; ?> + <div class="clear"></div> +<? endif; ?> +<?=$this->render('search/advanced/limit.phtml')?> +<? if (isset($this->dateRangeLimit)): ?> + <? /* Load the publication date slider UI widget */ $this->headScript()->appendFile('pubdate_slider.js'); ?> + <input type="hidden" name="daterange[]" value="publishDate"/> + <fieldset class="publishDateLimit span-5" id="publishDate"> + <legend><?=$this->transEsc('adv_search_year')?></legend> + <label for="publishDatefrom"><?=$this->transEsc('date_from')?>:</label> + <input type="text" size="4" maxlength="4" class="yearbox" name="publishDatefrom" id="publishDatefrom" value="<?=$this->escapeHtml($this->dateRangeLimit[0])?>" /> + <label for="publishDateto"><?=$this->transEsc('date_to')?>:</label> + <input type="text" size="4" maxlength="4" class="yearbox" name="publishDateto" id="publishDateto" value="<?=$this->escapeHtml($this->dateRangeLimit[1])?>" /> + <div id="publishDateSlider" class="dateSlider"></div> + </fieldset> +<? endif; ?> +<div class="clear"></div> diff --git a/themes/bootstrap/templates/search/bulk-action-buttons.phtml b/themes/bootstrap/templates/search/bulk-action-buttons.phtml new file mode 100644 index 00000000000..66f7ef45c0a --- /dev/null +++ b/themes/bootstrap/templates/search/bulk-action-buttons.phtml @@ -0,0 +1,11 @@ +<? if (!isset($this->hideCartControls) && $this->cart()->isActive()): ?> + <div class="bulkActionButtons noprint"> + <label class="checkbox"> + <input type="checkbox" class="checkbox-select-all" name="selectAll" id="<?=$this->idPrefix?>addFormCheckboxSelectAll"/> <?=$this->transEsc('select_page')?> + </label> + <span class="help-inline">|</span> + <span class="help-inline"><?=$this->transEsc('with_selected')?>:</span> + <input id="<?=$this->idPrefix?>updateCart" type="submit" class="btn" name="add" value="<?=$this->transEsc('Add to Book Bag')?>"/> + </div> + <hr/> +<? endif; ?> diff --git a/themes/bootstrap/templates/search/controls/limit.phtml b/themes/bootstrap/templates/search/controls/limit.phtml new file mode 100644 index 00000000000..c1297968ff7 --- /dev/null +++ b/themes/bootstrap/templates/search/controls/limit.phtml @@ -0,0 +1,13 @@ +<div class="limitSelect"> + <? $limitList = $this->params->getLimitList(); if (count($limitList) > 1): ?> + <form action="<?=$this->currentPath() . $this->results->getUrlQuery()->setLimit(null)?>" method="post"> + <label for="limit"><?=$this->transEsc('Results per page')?></label> + <select id="limit" name="limit" class="jumpMenu"> + <? foreach ($limitList as $limitVal => $limitData): ?> + <option value="<?=$this->escapeHtml($limitVal)?>"<?=$limitData['selected']?' selected="selected"':''?>><?=$this->escapeHtml($limitData['desc'])?></option> + <? endforeach; ?> + </select> + <noscript><input type="submit" value="<?=$this->transEsc("Set")?>" /></noscript> + </form> + <? endif; ?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/controls/sort.phtml b/themes/bootstrap/templates/search/controls/sort.phtml new file mode 100644 index 00000000000..6d36a67bf9d --- /dev/null +++ b/themes/bootstrap/templates/search/controls/sort.phtml @@ -0,0 +1,11 @@ +<? $list = $this->params->getSortList(); if (!empty($list)): ?> + <form class="pull-right form-inline" style="margin:0" action="<?=$this->currentPath() . $this->results->getUrlQuery()->setSort(null)?>" method="post" name="sort"> + <label for="sort_options_1"><?=$this->transEsc('Sort')?></label> + <select id="sort_options_1" name="sort" class="jumpMenu" onChange="document.sort.submit()"> + <? foreach ($list as $sortType => $sortData): ?> + <option value="<?=$this->escapeHtml($sortType)?>"<?=$sortData['selected']?' selected="selected"':''?>><?=$this->transEsc($sortData['desc'])?></option> + <? endforeach; ?> + </select> + <noscript><input type="submit" class="btn" value="<?=$this->transEsc("Set")?>" /></noscript> + </form> +<? endif; ?> diff --git a/themes/bootstrap/templates/search/controls/view.phtml b/themes/bootstrap/templates/search/controls/view.phtml new file mode 100644 index 00000000000..c88748e0ac8 --- /dev/null +++ b/themes/bootstrap/templates/search/controls/view.phtml @@ -0,0 +1,11 @@ +<div class="pull-right"> +<? $viewList = $this->params->getViewList(); if (count($viewList) > 1): ?> + <? foreach ($viewList as $viewType => $viewData): ?> + <img src="<?=$this->imageLink('view_'.$viewType.'.png') ?>"<? if($viewData['selected']): ?> title="<?=$this->transEsc($viewData['desc']) ?> <?=$this->transEsc('view already selected') ?>" <? endif ?> alt="<?=$this->transEsc($viewData['desc'])?>"/> + <? if (!$viewData['selected']): ?> + <a href="<?=$this->results->getUrlQuery()->setViewParam($viewType)?>" title="<?=$this->transEsc('Switch view to')?> <?=$this->transEsc($viewData['desc'])?>" > + <? endif; ?> + <?=ucfirst($this->transEsc($viewType)) ?> <?=$this->transEsc('view') ?><? if (!$viewData['selected']): ?></a><? endif; ?> + <? endforeach; ?> +<? endif; ?> +</div> diff --git a/themes/bootstrap/templates/search/email.phtml b/themes/bootstrap/templates/search/email.phtml new file mode 100644 index 00000000000..05d0cb274b2 --- /dev/null +++ b/themes/bootstrap/templates/search/email.phtml @@ -0,0 +1,37 @@ +<? + // Set page title. + $this->headTitle($this->translate('Email this Search')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li>' . $this->getLastSearchLink($this->transEsc('Search'), '', ' <span class="divider">></span></li>') . + '<li class="active">' . $this->transEsc('Email this Search') . '</li>'; +?> +<?=$this->flashmessages()?> +<form class="form-horizontal" action="" method="post" name="emailSearch"> + <input type="hidden" name="url" value="<?=$this->escapeHtml($this->url)?>" /> + <div class="control-group"> + <label class="control-label" for="email_to"><?=$this->transEsc('To')?>:</label> + <div class="controls"> + <input class="input-xlarge" id="email_to" type="email" name="to" value="<?=isset($this->to) ? $this->to : ''?>"/> + </div> + </div> + <? if (!$this->disableFrom): ?> + <div class="control-group"> + <label class="control-label" for="email_from"><?=$this->transEsc('From')?>:</label> + <div class="controls"> + <input class="input-xlarge" id="email_from" type="email" name="from" value="<?=isset($this->from) ? $this->from : ''?>"/> + </div> + </div> + <? endif; ?> + <div class="control-group"> + <label class="control-label" for="email_message"><?=$this->transEsc('Message')?>:</label> + <div class="controls"> + <textarea class="input-xlarge" id="email_message" name="message" rows="3"><?=isset($this->message) ? $this->message : ''?></textarea> + </div> + </div> + <div class="control-group"> + <div class="controls"> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Send Email')?>"/> + </div> + </div> +</form> diff --git a/themes/bootstrap/templates/search/history-table.phtml b/themes/bootstrap/templates/search/history-table.phtml new file mode 100644 index 00000000000..2b9dd739453 --- /dev/null +++ b/themes/bootstrap/templates/search/history-table.phtml @@ -0,0 +1,35 @@ +<table class="table table-striped"> + <tr> + <th width="20%"><?=$this->transEsc("history_time")?></th> + <th><?=$this->transEsc("history_search")?></th> + <th><?=$this->transEsc("history_limits")?></th> + <th><?=$this->transEsc("history_results")?></th> + <th><?=$this->transEsc($this->showSaved ? "history_delete" : "history_save")?></th> + </tr> + <? foreach (($this->showSaved ? array_reverse($this->saved) : array_reverse($this->unsaved)) as $iteration => $info): ?> + <tr class="<?=$iteration % 2 == 1 ? 'even' : 'odd'?>row"> + <td><?=$this->escapeHtml(date("g:ia, jS M y", $info->getStartTime()))?></td> + <td> + <a href="<?=$this->url($info->getOptions()->getSearchAction()) . $info->getUrlQuery()->getParams()?>"><? + $desc = $info->getParams()->getDisplayQuery(); + echo empty($desc) ? $this->transEsc("history_empty_search") : $this->escapeHtml($desc); + ?></a> + </td> + <td> + <? $info->getParams()->activateAllFacets(); foreach ($info->getParams()->getFilterList() as $field => $filters): ?> + <? foreach ($filters as $filter): ?> + <strong><?=$this->transEsc($field)?></strong>: <?=$this->escapeHtml($filter['displayText'])?><br/> + <? endforeach; ?> + <? endforeach; ?> + </td> + <td><?=$this->escapeHtml(number_format($info->getResultTotal()))?></td> + <td> + <? if ($this->showSaved): ?> + <a href="<?=$this->url('myresearch-savesearch')?>?delete=<?=urlencode($info->getSearchId())?>&mode=history"><i class="icon-remove"></i> <?=$this->transEsc("history_delete_link")?></a> + <? else: ?> + <a href="<?=$this->url('myresearch-savesearch')?>?save=<?=urlencode($info->getSearchId())?>&mode=history"><i class="icon-save"></i> <?=$this->transEsc("history_save_link")?></a> + <? endif; ?> + </td> + </tr> + <? endforeach; ?> +</table> diff --git a/themes/bootstrap/templates/search/history.phtml b/themes/bootstrap/templates/search/history.phtml new file mode 100644 index 00000000000..65e508057f9 --- /dev/null +++ b/themes/bootstrap/templates/search/history.phtml @@ -0,0 +1,31 @@ +<? + // Set page title. + $this->headTitle($this->translate('Search History')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . '">' . $this->transEsc('Your Account') . '</a> <span class="divider">></span></li>' + . '<li class="active">' . $this->transEsc('History') . '</li>'; +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <? if (!empty($this->saved)): ?> + <h2><?=$this->transEsc("history_saved_searches")?></h2> + <?=$this->context()->renderInContext('search/history-table.phtml', array('showSaved' => true));?> + <? endif; ?> + + <h2><?=$this->transEsc("history_recent_searches")?></h2> + <? if (!empty($this->unsaved)): ?> + <?=$this->context()->renderInContext('search/history-table.phtml', array('showSaved' => false));?> + <? else: ?> + <?=$this->transEsc("history_no_searches")?> + <? endif; ?> +</div> + +<div class="<?=$this->layoutClass('sidebar')?>"> + <?=$this->context($this)->renderInContext( + "myresearch/menu.phtml", + // Only activate search history in account menu if user is logged in. + $this->auth()->isLoggedIn() ? array('active' => 'history') : array() + ); + ?> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/home.phtml b/themes/bootstrap/templates/search/home.phtml new file mode 100644 index 00000000000..84a27ee296f --- /dev/null +++ b/themes/bootstrap/templates/search/home.phtml @@ -0,0 +1,76 @@ +<? + // Set page title. + $this->headTitle($this->translate('Search Home')); + + // Disable top search box -- this page has a special layout. + $this->layout()->searchbox = false; + + // Set default value if necessary: + if (!isset($this->searchClassId)) { + $this->searchClassId = 'Solr'; + } + + // Load search actions and settings (if any): + $options = $this->searchOptions($this->searchClassId); + $basicSearch = $options->getSearchAction(); + $advSearch = $options->getAdvancedSearchAction(); + + $this->layout()->breadcrumbs .= '<li class="active">Search</li>'; +?> +<div class="searchHomeContent"> + <? if ($this->ils()->getOfflineMode() == "ils-offline"): ?> + <div class="alert alert-warning"> + <h2><?=$this->transEsc('ils_offline_title')?></h2> + <p><strong><?=$this->transEsc('ils_offline_status')?></strong></p> + <p><?=$this->transEsc('ils_offline_home_message')?></p> + <? $supportEmail = $this->escapeHtml($this->systemEmail()); ?> + <p><a href="mailto:<?=$supportEmail?>"><?=$supportEmail?></a></p> + </div> + <? endif; ?> + <div class="hero-unit"> + <?=$this->render("search/searchbox.phtml")?> + </div> +</div> + +<? $facetList = is_object($this->results) ? $this->results->getFacetList() : array(); if (isset($facetList) && is_array($facetList)): ?> +<div class="row-fluid"> + <? foreach ($facetList as $field => $details): ?> + <? $sortedList = $this->sortFacetList($this->results, $field, $details['list'], $basicSearch); ?> + <div class="<?=$field=='callnumber-first' ? 'span6' : 'span3' ?>"> + <p class="lead"><?=$this->transEsc('home_browse') . ' ' . $this->transEsc($details['label'])?></p> + <div class="row-fluid"> + <ul class="unstyled<? if ($field == "callnumber-first"): ?> span6<?endif?>"> + <? /* Special case: two columns for LC call numbers... */ ?> + <? if ($field == "callnumber-first"): ?> + <? $i = 0; foreach ($sortedList as $url => $value): ?> + <li><a href="<?=$url?>"><?=$this->escapeHtml($value)?></a></li> + <? if (++$i == 10): ?> + </ul><ul class="unstyled span6"> + <? endif; ?> + <? endforeach; ?> + <? /* Special case: collections */ ?> + <? elseif ($field == 'hierarchy_top_title'): ?> + <? $i = 0; foreach ($sortedList as $url => $value): ?> + <? if (++$i > 10): ?> + <li><a href="<?=$this->url('collections-home')?>"><strong><?=$this->transEsc("More options")?>...</strong></a></li> + <? break; ?> + <? else: ?> + <li><a href="<?=$this->url('collections-bytitle')?>?title=<?=urlencode($value)?>"><?=$this->escapeHtml($value)?></a></li> + <? endif; ?> + <? endforeach; ?> + <? else: ?> + <? $i = 0; foreach ($sortedList as $url => $value): ?> + <? if (++$i > 10): ?> + <li><a href="<?=$this->url($advSearch)?>"><strong><?=$this->transEsc("More options")?>...</strong></a></li> + <? break; ?> + <? else: ?> + <li><a href="<?=$url?>"><?=$this->escapeHtml($value)?></a></li> + <? endif; ?> + <? endforeach; ?> + <? endif; ?> + </ul> + </div> + </div> + <? endforeach; ?> +</div> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/list-authorfacets.phtml b/themes/bootstrap/templates/search/list-authorfacets.phtml new file mode 100644 index 00000000000..822ba7ac4cd --- /dev/null +++ b/themes/bootstrap/templates/search/list-authorfacets.phtml @@ -0,0 +1,13 @@ +<table class="table table-striped"> + <tbody> + <tr> + <th><?=$this->transEsc("Author")?></th><th><?=$this->transEsc("sort_author_relevance")?></th> + </tr> + <? foreach ($this->results->getResults() as $record): ?> + <tr> + <td><a href="<?=$this->url('author-home')?>?author=<?=urlencode($record['value'])?>"><?=$this->escapeHtml($record['value'])?></a></td> + <td><?=$this->escapeHtml($record['count'])?></td> + </tr> + <? endforeach; ?> + </tbody> +</table> diff --git a/themes/bootstrap/templates/search/list-grid.phtml b/themes/bootstrap/templates/search/list-grid.phtml new file mode 100644 index 00000000000..2323cc0619a --- /dev/null +++ b/themes/bootstrap/templates/search/list-grid.phtml @@ -0,0 +1,10 @@ +<table class="table table-bordered"> + <tr> + <? $i = 0; foreach ($this->results->getResults() as $current): ?> + <td id="result<?=$i++ ?>" width="25%"> + <?=$this->record($current)->getSearchResult('grid')?> + </td> + <?=($i%4==0)?'</tr><tr>':''?> + <? endforeach; ?> + </tr> +</table> diff --git a/themes/bootstrap/templates/search/list-list.phtml b/themes/bootstrap/templates/search/list-list.phtml new file mode 100644 index 00000000000..317af7233ba --- /dev/null +++ b/themes/bootstrap/templates/search/list-list.phtml @@ -0,0 +1,8 @@ +<? $i = 0; foreach ($this->results->getResults() as $current): + $recordNumber = $this->results->getStartRecord()+$i; ?> + <div id="result<?=$i++ ?>" class="row-fluid clearfix"> + <label class="checkbox pull-left small"><? if ($this->cart()->isActive()): ?><?=$this->record($current)->getCheckbox()?><? endif; ?><?=$recordNumber?></label> + <?=$this->record($current)->getSearchResult('list')?> + </div> + <hr/> +<? endforeach; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/newitem.phtml b/themes/bootstrap/templates/search/newitem.phtml new file mode 100644 index 00000000000..d69de7b07c1 --- /dev/null +++ b/themes/bootstrap/templates/search/newitem.phtml @@ -0,0 +1,29 @@ +<? + // Set up page title: + $this->headTitle($this->translate('New Item Search')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li class="active">' . $this->transEsc('New Items') . '</li>'; +?> +<div class="<?=$this->layoutClass('mainbody')?>"> + <p class="lead"><?=$this->transEsc('Find New Items')?></p> + <form method="get" action="" class="form-inline"> + <p class="help-inline pad"><?=$this->transEsc('Range')?>:</p> + <? foreach ($this->ranges as $key => $range): ?> + <label class="radio pad"> + <input id="newitem_range_<?=$this->escapeHtml($key)?>" type="radio" name="range" value="<?=$this->escapeHtml($range)?>"<?= ($key == 0) ? ' checked="checked"' : ''?>/> + <?=($range == 1) ? $this->transEsc('Yesterday') : $this->transEsc('Past') . ' ' . $this->escapeHtml($range) . ' ' . $this->transEsc('Days')?> + </label> + <? endforeach; ?> + <? if (is_array($this->fundList) && !empty($this->fundList)): ?> + <label class="displayBlock" for="newitem_department"><?=$this->transEsc('Department')?>:</label> + <select id="newitem_department" name="department" size="10"> + <? foreach ($this->fundList as $fundId => $fund): ?> + <option value="<?=$this->escapeHtml($fundId)?>"><?=$this->transEsc($fund)?></option> + <? endforeach; ?> + </select> + <? endif; ?> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>"/> + </form> +</div> +<div class="clear"></div> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/newitemresults.phtml b/themes/bootstrap/templates/search/newitemresults.phtml new file mode 100644 index 00000000000..fc8546b7815 --- /dev/null +++ b/themes/bootstrap/templates/search/newitemresults.phtml @@ -0,0 +1,7 @@ +<? + // Set some overrides, then call the standard search results action: + $this->overrideTitle = $this->translate('New Items'); + $this->overrideSearchHeading = $this->transEsc('New Items'); + $this->overrideEmptyMessage = $this->transEsc('No new item information is currently available.'); + echo $this->render('search/results.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/pagination.phtml b/themes/bootstrap/templates/search/pagination.phtml new file mode 100644 index 00000000000..b1d44872e61 --- /dev/null +++ b/themes/bootstrap/templates/search/pagination.phtml @@ -0,0 +1,25 @@ +<? if ($this->pageCount): ?> + <div class="pagination pagination-centered"> + <ul> + <? if (isset($this->previous)): ?> + <li><a href="<?=$this->currentPath() . $this->results->getUrlQuery()->setPage(1)?>">[1]</a></li> + <li><a href="<?=$this->currentPath() . $this->results->getUrlQuery()->setPage($this->previous)?>">« <?=$this->transEsc('Prev')?></a></li> + <? endif; ?> + + <? if (count($this->pagesInRange) > 1): ?> + <? foreach ($this->pagesInRange as $page): ?> + <? if ($page != $this->current): ?> + <li><a href="<?=$this->currentPath() . $this->results->getUrlQuery()->setPage($page)?>"><?=$page?></a></li> + <? else: ?> + <li class="active"><span><?=$page?></span></li> + <? endif; ?> + <? endforeach; ?> + <? endif; ?> + + <? if (isset($this->next)): ?> + <li><a href="<?=$this->currentPath() . $this->results->getUrlQuery()->setPage($this->next)?>"><?=$this->transEsc('Next');?> »</a></li> + <li><a href="<?=$this->currentPath() . $this->results->getUrlQuery()->setPage($this->pageCount)?>">[<?=$this->pageCount?>]</a></li> + <? endif; ?> + </ul> + </div> +<? endif; ?> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/reserves.phtml b/themes/bootstrap/templates/search/reserves.phtml new file mode 100644 index 00000000000..8ef81babfc2 --- /dev/null +++ b/themes/bootstrap/templates/search/reserves.phtml @@ -0,0 +1,56 @@ +<? + // Set up page title: + $this->headTitle($this->translate('Reserves Search')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li class="active">' . $this->transEsc('Reserves') . '</li>'; +?> +<div class="<?=$this->layoutClass('mainbody')?>"> + <p class="lead"><?=$this->transEsc('Search For Items on Reserve')?></p> + <form method="get" action="" name="searchForm" class="form-horizontal"> + <? if (is_array($this->courseList)): ?> + <div class="control-group"> + <label class="control-label" for="reserves_by_course"><?=$this->transEsc('By Course')?>:</label> + <div class="controls"> + <select name="course" id="reserves_by_course"> + <option></option> + <? foreach ($this->courseList as $courseId => $courseName): ?> + <option value="<?=$this->escapeHtml($courseId)?>"><?=$this->escapeHtml($courseName)?></option> + <? endforeach; ?> + </select> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>"/> + </div> + </div> + <? endif; ?> + + <? if (is_array($this->instList)): ?> + <div class="control-group"> + <label class="control-label" for="reserves_by_inst"><?=$this->transEsc('By Instructor')?>:</label> + <div class="controls"> + <select name="inst" id="reserves_by_inst"> + <option></option> + <? foreach ($this->instList as $instId => $instName): ?> + <option value="<?=$this->escapeHtml($instId)?>"><?=$this->escapeHtml($instName)?></option> + <? endforeach; ?> + </select> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>"/> + </div> + </div> + <? endif; ?> + + <? if (is_array($this->deptList)): ?> + <div class="control-group"> + <label class="control-label" for="reserves_by_dept"><?=$this->transEsc('By Department')?>:</label> + <div class="controls"> + <select name="dept" id="reserves_by_dept"> + <option></option> + <? foreach ($this->deptList as $deptId => $deptName): ?> + <option value="<?=$this->escapeHtml($deptId)?>"><?=$this->escapeHtml($deptName)?></option> + <? endforeach; ?> + </select> + <input class="btn btn-primary" type="submit" name="submit" value="<?=$this->transEsc('Find')?>"/> + </div> + </div> + <? endif; ?> + </form> +</div> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/reservesresults.phtml b/themes/bootstrap/templates/search/reservesresults.phtml new file mode 100644 index 00000000000..55c40b494cf --- /dev/null +++ b/themes/bootstrap/templates/search/reservesresults.phtml @@ -0,0 +1,20 @@ +<? + // Set some overrides, then call the standard search results action: + $this->overrideTitle = $this->translate('Reserves Search Results'); + $this->overrideSearchHeading = $this->transEsc('Reserves'); + if (isset($this->instructor) || isset($this->course)) { + $this->overrideSearchHeading .= ' ('; + if (isset($this->instructor)) { + $this->overrideSearchHeading .= $this->transEsc('Instructor') . ': <strong>' . $this->escapeHtml($this->instructor) . '</strong>'; + if (isset($this->course)) { + $this->overrideSearchHeading .= ', '; + } + } + if (isset($this->course)) { + $this->overrideSearchHeading .= $this->transEsc('Course') . ': <strong>' . $this->escapeHtml($this->course) . '</strong>'; + } + $this->overrideSearchHeading .= ')'; + } + $this->overrideEmptyMessage = $this->transEsc('course_reserves_empty_list'); + echo $this->render('search/results.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/search/reservessearch.phtml b/themes/bootstrap/templates/search/reservessearch.phtml new file mode 100644 index 00000000000..1e9a072b0cc --- /dev/null +++ b/themes/bootstrap/templates/search/reservessearch.phtml @@ -0,0 +1,79 @@ +<? + // Set up page title: + $this->headTitle($this->translate('Reserves Search')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li class="active">' . $this->transEsc('Reserves') . '</li>'; + + // Convenience variables: + $reservesLookfor = $this->params->getDisplayQuery(); +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <h3><?=$this->transEsc('Search For Items on Reserve')?></h3> + <form method="get" action="" name="reservesSearchForm" class="search"> + <label for="reservesSearchForm_lookfor" class="offscreen"><?=$this->transEsc("Your search terms")?></label> + <input id="reservesSearchForm_lookfor" type="text" name="lookfor" size="40" value="<?=$this->escapeHtml($reservesLookfor)?>" <?=$this->searchOptions('SolrReserves')->autocompleteEnabled() ? ' class="autocomplete searcher:SolrReserves type:Reserves"' : ''?> /> + <input type="submit" name="submit" value="<?=$this->transEsc("Find")?>"/> + </form> + <script type="text/javascript">$("#reservesSearchForm_lookfor").focus()</script> + + <div class="resulthead"> + <div class="pull-left"> + <? if (($recordTotal = $this->results->getResultTotal()) > 0): ?> + <?=$this->transEsc("Showing")?> + <strong><?=$this->results->getStartRecord()?></strong> - <strong><?=$this->results->getEndRecord()?></strong> + <?=$this->transEsc('of')?> <strong><?=number_format($recordTotal)?></strong> + <?=$this->transEsc('for search')?>: <strong>'<?=$this->escapeHtml($reservesLookfor)?>'</strong>, + <? endif; ?> + <? if ($qtime = $this->results->getQuerySpeed()): ?> + <?=$this->transEsc('query time')?>: <?=$this->escapeHtml(round($qtime, 2))?>s + <? endif; ?> + </div> + + <div class="pull-right"> + <?=$this->render('search/controls/sort.phtml')?> + </div> + <div class="clearfix"></div> + </div> + + <? if ($recordTotal < 1): ?> + <p class="error"><?=$this->transEsc('nohit_prefix')?> - <strong><?=$this->escapeHtml($reservesLookfor)?></strong> - <?=$this->transEsc('nohit_suffix')?></p> + <? if (isset($this->parseError)): ?> + <p class="error"><?=$this->transEsc('nohit_parse_error')?></p> + <? endif; ?> + <? else: ?> + <table class="datagrid reserves"> + <tr> + <th class="department"><?=$this->transEsc('Department')?></th> + <th class="course"><?=$this->transEsc('Course')?></th> + <th class="instructor"><?=$this->transEsc('Instructor')?></th> + <th class="items"><?=$this->transEsc('Items')?></th> + </tr> + <? foreach ($this->results->getResults() as $record): ?> + <? + $url = $this->currentPath() . $this->escapeHtml( + '?inst=' . urlencode($record->getInstructorId()) + . '&course=' . urlencode($record->getCourseId()) + . '&dept=' . urlencode($record->getDepartmentId()) + ); + ?> + <tr> + <td class="department"><a href="<?=$url?>"><?=$this->escapeHtml($record->getDepartment())?></a></td> + <td class="course"><a href="<?=$url?>"><?=$this->escapeHtml($record->getCourse())?></a></td> + <td class="instructor"><a href="<?=$url?>"><?=$this->escapeHtml($record->getInstructor())?></a></td> + <td class="items"><?=$this->escapeHtml($record->getItemCount())?></td> + </tr> + <? endforeach; ?> + </table> + <?=$this->paginationControl($this->results->getPaginator(), 'Sliding', 'search/pagination.phtml', array('results' => $this->results))?> + <? endif; ?> +</div> + +<? /* Narrow Search Options */ ?> +<div class="<?=$this->layoutClass('sidebar')?>"> + <? foreach ($this->results->getRecommendations('side') as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> +</div> +<? /* End Narrow Search Options */ ?> diff --git a/themes/bootstrap/templates/search/results.phtml b/themes/bootstrap/templates/search/results.phtml new file mode 100644 index 00000000000..94cc9eb580b --- /dev/null +++ b/themes/bootstrap/templates/search/results.phtml @@ -0,0 +1,131 @@ +<? + // Set up page title: + $lookfor = $this->params->getDisplayQuery(); + if (isset($this->overrideTitle)) { + $this->headTitle($this->overrideTitle); + } else { + $this->headTitle($this->translate('Search Results') . (empty($lookfor) ? '' : " - {$lookfor}")); + } + + // Set up search box: + $this->layout()->searchbox = $this->context($this)->renderInContext( + 'search/searchbox.phtml', + array( + 'lookfor' => $lookfor, + 'searchIndex' => $this->params->getSearchHandler(), + 'searchType' => $this->params->getSearchType(), + 'searchId' => $this->results->getSearchId(), + 'searchClassId' => $this->params->getsearchClassId(), + 'checkboxFilters' => $this->params->getCheckboxFacets(), + 'filterList' => $this->params->getFilters(), + 'selectedShards' => $this->params->getSelectedShards() + ) + ); + + // Set up breadcrumbs: + if (isset($this->overrideTitle)) { + $this->layout()->breadcrumbs .= '<li class="active">' . $this->escapeHtml($this->overrideTitle) . '</li>'; + } else { + $this->layout()->breadcrumbs .= '<li class="active">' . $this->transEsc('Search') . ': ' . $this->escapeHtml($lookfor) . '</li>'; + } + + // Load Javascript dependencies into header: + $this->headScript()->appendFile("check_item_statuses.js"); + $this->headScript()->appendFile("check_save_statuses.js"); +?> + +<div class="<?=$this->layoutClass('mainbody')?>"> + <? if (($recordTotal = $this->results->getResultTotal()) > 0): // only display these at very top if we have results ?> + <? foreach ($this->results->getRecommendations('top') as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> + <? endif; ?> + <?=$this->flashmessages()?> + <div class="clearfix noprint"> + <div class="pull-left help-block"> + <? if ($recordTotal > 0): ?> + <?=$this->transEsc("Showing")?> + <strong><?=number_format($this->results->getStartRecord())?></strong> - <strong><?=number_format($this->results->getEndRecord())?></strong> + <? if (!isset($this->skipTotalCount)): ?> + <?=$this->transEsc('of')?> <strong><?=number_format($recordTotal)?></strong> + <? endif; ?> + <? if (isset($this->overrideSearchHeading)): ?> + <?=$this->overrideSearchHeading?> + <? elseif ($this->params->getSearchType() == 'basic'): ?> + <?=$this->transEsc('for search')?>: <strong>'<?=$this->escapeHtml($lookfor)?>'</strong>, + <? endif; ?> + <? if ($qtime = $this->results->getQuerySpeed()): ?> + <?=$this->transEsc('query time')?>: <?=$this->escapeHtml(round($qtime, 2))?>s + <? endif; ?> + <?=$this->search()->renderSpellingSuggestions('<strong>' . $this->transEsc('spell_suggest') . '</strong>:', $this->results, $this); ?> + <? else: ?> + <p class="lead"><?=$this->transEsc('nohit_heading')?></p> + <? endif; ?> + </div> + + <? if ($recordTotal > 0): ?> + <div class="pull-right"> + <?=$this->render('search/controls/limit.phtml')?> + <?=$this->render('search/controls/sort.phtml')?> + <br/> + <?=$this->render('search/controls/view.phtml')?> + </div> + <? endif; ?> + </div> + <? /* End Listing Options */ ?> + + <? if ($recordTotal < 1): ?> + <p> + <? if (isset($this->overrideEmptyMessage)): ?> + <?=$this->overrideEmptyMessage?> + <? else: ?> + <?=$this->transEsc('nohit_prefix')?> - <strong><?=$this->escapeHtml($lookfor)?></strong> - <?=$this->transEsc('nohit_suffix')?> + <? endif; ?> + </p> + <? if (isset($this->parseError)): ?> + <p class="alert-error"><?=$this->transEsc('nohit_parse_error')?></p> + <? endif; ?> + <?=$this->search()->renderSpellingSuggestions($this->transEsc('nohit_spelling') . ':', $this->results, $this); ?> + <? foreach ($this->results->getRecommendations('top') as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> + <? foreach ($this->results->getRecommendations('noresults') as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> + <? else: ?> + <form class="form-inline" method="post" name="bulkActionForm" action="<?=$this->url('cart-home')?>"> + <? if ($this->cart()->isActive()): ?> + <?=$this->context($this)->renderInContext('search/bulk-action-buttons.phtml', array('idPrefix' => ''))?> + <? endif; ?> + <?=$this->render('search/list-' . $this->params->getView() . '.phtml')?> + <? if ($this->cart()->isActive()): ?> + <?=$this->context($this)->renderInContext('search/bulk-action-buttons.phtml', array('idPrefix' => 'bottom_'))?> + <? endif; ?> + <?=$this->paginationControl($this->results->getPaginator(), 'Sliding', 'search/pagination.phtml', array('results' => $this->results))?> + </form> + + <div class="searchtools small text-center noprint"> + <strong><?=$this->transEsc('Search Tools')?>:</strong> + <i class="icon-bell"></i> <a href="<?=$this->results->getUrlQuery()->setViewParam('rss')?>"><?=$this->transEsc('Get RSS Feed')?></a> + — + <i class="icon-envelope"></i> <a href="<?=$this->url('search-email')?>" class="mailSearch" id="mailSearch<?=$this->escapeHtml($this->results->getSearchId())?>" title="<?=$this->transEsc('Email this Search')?>"><?=$this->transEsc('Email this Search')?></a> + — + <? if (is_numeric($this->results->getSearchId())): ?> + <? if ($this->results->isSavedSearch()): ?> + <i class="icon-minus-sign"></i> <a href="<?=$this->url('myresearch-savesearch')?>?delete=<?=urlencode($this->results->getSearchId())?>"><?=$this->transEsc('save_search_remove')?></a> + <? else: ?> + <i class="icon-plus-sign"></i> <a href="<?=$this->url('myresearch-savesearch')?>?save=<?=urlencode($this->results->getSearchId())?>"><?=$this->transEsc('save_search')?></a> + <? endif; ?> + <? endif; ?> + </div> + <? endif; ?> +</div> +<? /* End Main Listing */ ?> + +<? /* Narrow Search Options */ ?> +<div class="<?=$this->layoutClass('sidebar')?>"> + <? foreach ($this->results->getRecommendations('side') as $current): ?> + <?=$this->recommend($current)?> + <? endforeach; ?> +</div> +<? /* End Narrow Search Options */ ?> diff --git a/themes/bootstrap/templates/search/searchbox.phtml b/themes/bootstrap/templates/search/searchbox.phtml new file mode 100644 index 00000000000..69bcd4a2d0c --- /dev/null +++ b/themes/bootstrap/templates/search/searchbox.phtml @@ -0,0 +1,120 @@ +<? + // Set default value if necessary: + if (!isset($this->searchClassId)) { + $this->searchClassId = 'Solr'; + } + + // Load search actions and settings (if any): + $options = $this->searchOptions($this->searchClassId); + $handlers = $this->searchbox()->getHandlers( + $this->searchClassId, + isset($this->searchIndex) ? $this->searchIndex : null + ); + $handlerCount = count($handlers); + $basicSearch = $this->searchbox()->combinedHandlersActive() ? 'combined-searchbox' : $options->getSearchAction(); + $searchHome = $options->getSearchHomeAction(); + $advSearch = $options->getAdvancedSearchAction(); + $lastSort = $options->getLastSort(); + $lastLimit = $options->getLastLimit(); +?> +<? $searchTabs = $this->searchtabs($this->searchClassId, $this->lookfor, $this->searchIndex, $this->searchType); ?> +<? if (count($searchTabs) > 0): ?> + <ul class="nav nav-tabs"> + <? foreach ($searchTabs as $tab): ?> + <li<?=$tab['selected'] ? ' class="active"' : ''?>> + <a href="<?=$tab['selected'] ? '' : $this->escapeHtml($tab['url'])?>"><?=$this->transEsc($tab['label']); ?></a> + </li> + <? endforeach; ?> + </ul> +<? endif; ?> +<div class="navbar"> + <? if ($this->searchType == 'advanced'): ?> + <a class="btn btn-link small" href="<?=$this->url($advSearch)?>?edit=<?=$this->escapeHtml($this->searchId)?>"><?=$this->transEsc("Edit this Advanced Search")?></a> + <span class="help-inline">|</span> + <a class="btn btn-link small" href="<?=$this->url($advSearch)?>"><?=$this->transEsc("Start a new Advanced Search")?></a> + <span class="help-inline">|</span> + <a class="btn btn-link small" href="<?=$this->url($searchHome)?>"><?=$this->transEsc("Start a new Basic Search")?></a> + <div class="help-block"><?=$this->transEsc("Your search terms")?> : "<strong><?=$this->escapeHtml($this->lookfor)?></strong>"</div> + <? else: ?> + <form class="form-inline navbar-form block" method="get" action="<?=$this->url($basicSearch)?>" name="searchForm" id="searchForm" autocomplete="off"> + <input class="span5 search-query<? if($options->autocompleteEnabled()):?> autocomplete searcher:<?=$this->escapeHtml($this->searchClassId) ?><? endif ?>" id="searchForm_lookfor" type="text" name="lookfor" value="<?=$this->escapeHtml($this->lookfor)?>"/> + <? if ($handlerCount > 1): ?> + <select id="searchForm_type" name="type" data-native-menu="false"> + <? foreach ($handlers as $handler): ?> + <option value="<?=$this->escapeHtml($handler['value'])?>"<?=$handler['selected'] ? ' selected="selected"' : ''?>><?=$handler['indent'] ? '-- ' : ''?><?=$this->transEsc($handler['label'])?></option> + <? endforeach; ?> + </select> + <? elseif ($handlerCount == 1): ?> + <input type="hidden" name="type" value="<?=$this->escapeHtml($handlers[0]['value'])?>" /> + <? endif; ?> + <input type="submit" name="submit" class="btn" value="<?=$this->transEsc("Find")?>"/> + <? if ($advSearch): ?> + <a href="<?=$this->url($advSearch)?>" class="btn btn-link"><?=$this->transEsc("Advanced")?></a> + <? endif; ?> + + <? + /* Do we have any checkbox filters? */ + $hasCheckboxFilters = false; + if (isset($this->checkboxFilters) && count($this->checkboxFilters) > 0) { + foreach ($this->checkboxFilters as $current) { + if ($current['selected']) { + $hasCheckboxFilters = true; + break; + } + } + } + ?> + + <? $shards = $options->getShards(); if ($options->showShardCheckboxes() && !empty($shards)): ?> + <? + $selectedShards = isset($this->selectedShards) + ? $this->selectedShards : $options->getDefaultSelectedShards(); + ?> + <br /> + <? foreach ($shards as $shard => $val): ?> + <? $isSelected = empty($selectedShards) || in_array($shard, $selectedShards); ?> + <input type="checkbox" <?=$isSelected ? 'checked="checked" ' : ''?>name="shard[]" value='<?=$this->escapeHtml($shard)?>' /> <?=$this->transEsc($shard)?> + <? endforeach; ?> + <? endif; ?> + <? if ((isset($this->filterList) && is_array($this->filterList) && count($this->filterList) > 0) || $hasCheckboxFilters): ?> + <? $defaultFilterState = $options->getRetainFilterSetting() ? ' checked="checked"' : ''; ?> + <label class="checkbox"> + <input onChange="$('.applied-filter').click()" type="checkbox"<?=$defaultFilterState?> id="searchFormKeepFilters"/> + <?=$this->transEsc("basic_search_keep_filters")?> + </label> + <div class="hidden"> + <? if (isset($this->filterList) && is_array($this->filterList)): ?> + <? $i = 0; foreach ($this->filterList as $field => $data): ?> + <? foreach ($data as $value): ?> + <label class="checkbox"> + <input class="applied-filter" id="applied_filter_<?=++$i?>" type="checkbox"<?=$defaultFilterState?> name="filter[]" value="<?=$this->escapeHtml($field)?>:"<?=$this->escapeHtml($value)?>"" /> + <?=$this->escapeHtml($field)?>:"<?=$this->escapeHtml($value)?>" + </label> + <? endforeach; ?> + <? endforeach; ?> + <? endif; ?> + <? if ($hasCheckboxFilters): ?> + <? $i = 0; foreach ($checkboxFilters as $current): ?> + <? if ($current['selected']): ?> + <label class="checkbox"> + <input class="applied-filter" id="applied_checkbox_filter_<?=++$i?>" type="checkbox"<?=$defaultFilterState?> name="filter[]" value="<?=$this->escapeHtml($current['filter'])?>" /> + <?=$this->escapeHtml($current['filter'])?> + </label> + <? endif; ?> + <? endforeach; ?> + <? endif; ?> + </div> + <? endif; ?> + <? + /* Load hidden limit preference from Session */ + if (!empty($lastLimit)) { + echo '<input type="hidden" name="limit" value="' . $this->escapeHtml($lastLimit) . '" />'; + } + if (!empty($lastSort)) { + echo '<input type="hidden" name="sort" value="' . $this->escapeHtml($lastSort) . '" />'; + } + ?> + </form> + <script type="text/javascript">$("#searchForm_lookfor").focus()</script> + <? endif; ?> +</div> diff --git a/themes/bootstrap/templates/summon/advanced.phtml b/themes/bootstrap/templates/summon/advanced.phtml new file mode 100644 index 00000000000..9b346d8e1c0 --- /dev/null +++ b/themes/bootstrap/templates/summon/advanced.phtml @@ -0,0 +1,6 @@ +<? + // Load the Summon-specific advanced search controls and inject them into the + // standard advanced search layout: + $this->extraAdvancedControls = $this->render('search/advanced/summon.phtml'); + echo $this->render('search/advanced/layout.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/summon/home.phtml b/themes/bootstrap/templates/summon/home.phtml new file mode 100644 index 00000000000..d13d4348c1e --- /dev/null +++ b/themes/bootstrap/templates/summon/home.phtml @@ -0,0 +1 @@ +<?=$this->render('search/home.phtml');?> \ No newline at end of file diff --git a/themes/bootstrap/templates/summon/search.phtml b/themes/bootstrap/templates/summon/search.phtml new file mode 100644 index 00000000000..c1797c1cd4a --- /dev/null +++ b/themes/bootstrap/templates/summon/search.phtml @@ -0,0 +1,4 @@ +<? + // Load standard settings from the default search results screen: + echo $this->render('search/results.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/tag/home.phtml b/themes/bootstrap/templates/tag/home.phtml new file mode 100644 index 00000000000..c1797c1cd4a --- /dev/null +++ b/themes/bootstrap/templates/tag/home.phtml @@ -0,0 +1,4 @@ +<? + // Load standard settings from the default search results screen: + echo $this->render('search/results.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/upgrade/error.phtml b/themes/bootstrap/templates/upgrade/error.phtml new file mode 100644 index 00000000000..98d27db3cdf --- /dev/null +++ b/themes/bootstrap/templates/upgrade/error.phtml @@ -0,0 +1,10 @@ +<? + // Set page title. + $this->headTitle($this->translate('Upgrade VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="'.$this->url('upgrade-home').'">'.$this->transEsc('Upgrade').'</a> <span class="divider">></span></li> <li class="active">' . $this->transEsc('Upgrade VuFind') . '</li>'; +?> +<h2><?=$this->transEsc('Upgrade VuFind')?></2> +<?=$this->flashmessages()?> +<p><?=$this->transEsc('vufind_upgrade_fail') ?>. You can try <a href="<?=$this->url('upgrade-reset')?>">starting over</a>.</p> \ No newline at end of file diff --git a/themes/bootstrap/templates/upgrade/fixanonymoustags.phtml b/themes/bootstrap/templates/upgrade/fixanonymoustags.phtml new file mode 100644 index 00000000000..a8b72f184ed --- /dev/null +++ b/themes/bootstrap/templates/upgrade/fixanonymoustags.phtml @@ -0,0 +1,26 @@ +<? + // Set page title. + $this->headTitle($this->translate('Upgrade VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="'.$this->url('upgrade-home').'">'.$this->transEsc('Upgrade').'</a> <span class="divider">></span></li> <li class="active">' . $this->transEsc('Upgrade VuFind') . '</li>'; +?> +<h2><?=$this->transEsc('Upgrade VuFind')?></h2> +<?=$this->flashmessages()?> + +<p>Due to a bug in earlier versions of VuFind, you have <?=$this->anonymousTags?> tags +in your database that are not associated with a user account. It is +recommended that you associate these tags with a user account for +easier maintenance in the future. Please enter a username (preferably +an administrator) to associate with old anonymous tags.</p> + +<p>If you do not wish to fix the problem at this time, click the Skip button.</p> + +<p>See <a target="_jira" href="http://vufind.org/jira/browse/VUFIND-217">http://vufind.org/jira/browse/VUFIND-217</a> for more details.</p> + +<br /> + +<form method="post" action="<?=$this->url('upgrade-fixanonymoustags')?>"> + <?=$this->transEsc('Username') ?>: <input type="text" name="username" /> <input type="submit" name="submit" value="<?=$this->transEsc('Submit') ?>" /><br /><br /> + <input type="submit" name="skip" value="<?=$this->transEsc('skip_step') ?>." onclick="return confirm('<?=$this->transEsc('skip_confirm') ?>');"/> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/upgrade/fixduplicatetags.phtml b/themes/bootstrap/templates/upgrade/fixduplicatetags.phtml new file mode 100644 index 00000000000..ef891d5d078 --- /dev/null +++ b/themes/bootstrap/templates/upgrade/fixduplicatetags.phtml @@ -0,0 +1,23 @@ +<? + // Set page title. + $this->headTitle($this->translate('Upgrade VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="'.$this->url('upgrade-home').'">'.$this->transEsc('Upgrade').'</a> <span class="divider">></span></li> <li class="active">' . $this->transEsc('Upgrade VuFind') . '</li>'; +?> +<h2><?=$this->transEsc('Upgrade VuFind')?></h2> +<?=$this->flashmessages()?> + +<p>Due to a bug in earlier versions of VuFind, you have some duplicate tags +in your database. It is recommended that you fix these. Click Submit to proceed.</p> + +<p>If you do not wish to fix the problem at this time, click the Skip button.</p> + +<p>See <a target="_jira" href="http://vufind.org/jira/browse/VUFIND-805">http://vufind.org/jira/browse/VUFIND-805</a> for more details.</p> + +<br /> + +<form method="post" action="<?=$this->url('upgrade-fixduplicatetags')?>"> + <input type="submit" name="submit" value="<?=$this->transEsc('Submit') ?>" /><br /><br /> + <input type="submit" name="skip" value="<?=$this->transEsc('skip_step') ?>." onclick="return confirm('<?=$this->transEsc('skip_confirm') ?>');"/> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/upgrade/fixmetadata.phtml b/themes/bootstrap/templates/upgrade/fixmetadata.phtml new file mode 100644 index 00000000000..48e7a4861e7 --- /dev/null +++ b/themes/bootstrap/templates/upgrade/fixmetadata.phtml @@ -0,0 +1,19 @@ +<? + // Set page title. + $this->headTitle($this->translate('Upgrade VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="'.$this->url('upgrade-home').'">'.$this->transEsc('Upgrade').'</a> <span class="divider">></span></li> <li class="active">' . $this->transEsc('Upgrade VuFind') . '</li>'; +?> +<h2><?=$this->transEsc('Upgrade VuFind')?></h2> +<?=$this->flashmessages()?> + +<p>Some of the items in your resource table appear to be missing metadata. Adding this metadata may take some time, +but it will improve the user experience by allowing proper sorting of favorites and tagged records.</p> + +<br /> + +<form method="post" action="<?=$this->url('upgrade-fixmetadata')?>"> + <input type="submit" name="submit" value="<?=$this->transEsc('fix_metadata') ?>." /><br /><br /> + <input type="submit" name="skip" value="<?=$this->transEsc('skip_fix_metadata') ?>." onclick="return confirm('<?=$this->transEsc('skip_confirm') ?>');"/> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/upgrade/getdbcredentials.phtml b/themes/bootstrap/templates/upgrade/getdbcredentials.phtml new file mode 100644 index 00000000000..74055faa7b7 --- /dev/null +++ b/themes/bootstrap/templates/upgrade/getdbcredentials.phtml @@ -0,0 +1,23 @@ +<? + // Set page title. + $this->headTitle($this->translate('Upgrade VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="'.$this->url('upgrade-home').'">'.$this->transEsc('Upgrade').'</a> <span class="divider">></span></li> <li class="active">' . $this->transEsc('Upgrade VuFind') . '</li>'; +?> +<h2><?=$this->transEsc('Upgrade VuFind')?></h2> +<?=$this->flashmessages()?> + +<p>VuFind's database structure needs to be updated for the new version. Please enter a database username and password +with permission to alter and create tables.</p> + +<form method="post" action="<?=$this->url('upgrade-getdbcredentials')?>"> + <table> + <tbody> + <tr><td>MySQL Root User: </td><td><input type="text" name="dbrootuser" value="<?=$this->escapeHtml($this->dbrootuser)?>"/></td></tr> + <tr><td>MySQL Root Password: </td><td><input type="password" name="dbrootpass" value=""/></td></tr> + <tr><td></td><td><input type="submit" name="submit" value="<?=$this->transEsc('Submit') ?>" /></td></tr> + </tbody> + </table> + If you don't have the credentials or you wish to print the SQL out : Click here to <input type="submit" name="printsql" value="Skip" /> credentials. +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/upgrade/getdbencodingpreference.phtml b/themes/bootstrap/templates/upgrade/getdbencodingpreference.phtml new file mode 100644 index 00000000000..ff71ba01d0e --- /dev/null +++ b/themes/bootstrap/templates/upgrade/getdbencodingpreference.phtml @@ -0,0 +1,26 @@ +<? + // Set page title. + $this->headTitle($this->translate('Upgrade VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="'.$this->url('upgrade-home').'">'.$this->transEsc('Upgrade').'</a> <span class="divider">></span></li> <li class="active">' . $this->transEsc('Upgrade VuFind') . '</li>'; +?> +<h2><?=$this->transEsc('Upgrade VuFind')?></h2> +<?=$this->flashmessages()?> + +<p>Your current VuFind database is encoded in Latin-1 format. This may cause incorrect sorting and +display of records containing characters outside of the basic ASCII character set.</p> + +<p>It is <b>STRONGLY RECOMMENDED</b> that you convert your database to UTF-8. However, this will +prevent older versions of VuFind from reading the database correctly.</p> + +<p>If you need to maintain backward compatibility with 1.x, choose "Keep." You can return to this +upgrade tool later to perform UTF-8 conversion.</p> + +<p>If backward compatibility is not necessary, choose "Change" now. +(You should make a backup first if you have not already!)</p> + +<form method="post" action="<?=$this->url('upgrade-getdbencodingpreference')?>"> + <input type="submit" name="encodingaction" value="Change" /> encoding to UTF-8<br /> + <input type="submit" name="encodingaction" value="Keep" /> Latin-1 encoding +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/upgrade/getsourcedir.phtml b/themes/bootstrap/templates/upgrade/getsourcedir.phtml new file mode 100644 index 00000000000..c270f1bd41d --- /dev/null +++ b/themes/bootstrap/templates/upgrade/getsourcedir.phtml @@ -0,0 +1,19 @@ +<? + // Set page title. + $this->headTitle($this->translate('Upgrade VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="'.$this->url('upgrade-home').'">'.$this->transEsc('Upgrade').'</a> <span class="divider">></span></li> <li class="active">' . $this->transEsc('Upgrade VuFind') . '</li>'; +?> +<h2><?=$this->transEsc('Upgrade VuFind')?></h2> +<?=$this->flashmessages()?> +<p class="lead">Option 1: Upgrade from VuFind 1.x</p> +<p>Please enter the full path of the directory containing your previous version of VuFind (e.g. /usr/local/vufind):</p> +<form class="form-inline" method="post" action="<?=$this->url('upgrade-getsourcedir')?>"> + <input type="text" name="sourcedir" /> <input class="btn" type="submit" /> +</form> +<p class="lead">Option 2: Upgrade from VuFind 2.x</p> +<p>Please enter the version number you are upgrading from (e.g. 2.0.1):</p> +<form class="form-inline" method="post" action="<?=$this->url('upgrade-getsourceversion')?>"> + <input type="text" name="sourceversion" /> <input class="btn" type="submit" /> +</form> diff --git a/themes/bootstrap/templates/upgrade/home.phtml b/themes/bootstrap/templates/upgrade/home.phtml new file mode 100644 index 00000000000..594522b4e17 --- /dev/null +++ b/themes/bootstrap/templates/upgrade/home.phtml @@ -0,0 +1,27 @@ +<? + // Set page title. + $this->headTitle($this->translate('Upgrade VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li class="active">' . $this->transEsc('Upgrade VuFind') . '</li>'; +?> +<h2><?=$this->transEsc('Upgrade VuFind')?></h2> +<?=$this->flashmessages()?> +<p>Upgrade complete. You may still have some work to do:</p> + +<ol> + <? if ($oldVersion < 2): ?> + <li>If you have customized your SolrMarc import settings, your marc_local.properties file has been migrated, but you will need to move custom translation maps, index scripts, etc. by hand. Custom import files belong under <?=$this->escapeHtml($this->importDir)?> -- this will make future upgrades easier.</li> + <li>You should look over the configuration files in <?=$this->escapeHtml($this->configDir)?> and make sure settings look correct. The automatic update process sometimes re-enables disabled settings and removes comments.</li> + <li>If you have customized any of the YAML searchspecs files without using the *_local.yaml override mechanism, you will need to reapply those changes.</li> + <li>If you have customized code or templates in your previous version, you will need to adapt those changes to the new architecture.</li> + <? else: ?> + <li>You should look over the configuration files in <?=$this->escapeHtml($this->configDir)?> and make sure settings look correct. The automatic update process sometimes re-enables disabled settings and removes comments. Backups of your old configurations have been created for comparison purposes.</li> + <li>If you have customized code or templates in your previous version, you should test them to be sure they still work correctly; see the <a href="http://vufind.org/wiki/changelog">changelog</a> for notes on possible breaks in backward compatibility.</li> + <? endif; ?> + <li>You should reindex all of your content.</li> + <li>You may want to check for problems on the <a href="<?=$this->url('install-home')?>"><?=$this->transEsc('auto_configure_title')?></a> page.</li> +</ol> + +<p>For the latest notes on upgrading, see the <a href="http://vufind.org/wiki/vufind2:migration_notes">online documentation</a>.</p> +<p>For help, feel free to use the mailing lists on the <a href="http://vufind.org/support.php">support page</a>.</p> \ No newline at end of file diff --git a/themes/bootstrap/templates/upgrade/showsql.phtml b/themes/bootstrap/templates/upgrade/showsql.phtml new file mode 100644 index 00000000000..fa8ccedc7d5 --- /dev/null +++ b/themes/bootstrap/templates/upgrade/showsql.phtml @@ -0,0 +1,23 @@ +<? + // Set page title. + $this->headTitle($this->translate('Upgrade VuFind')); + + // Set up breadcrumbs: + $this->layout()->breadcrumbs = '<li><a href="'.$this->url('upgrade-home').'">'.$this->transEsc('Upgrade').'</a> <span class="divider">></span></li> <li class="active">' . $this->transEsc('Upgrade VuFind') . '</li>'; + + // Set up styles: + $this->headstyle()->appendStyle( + ".pre {\n" + . " white-space:pre-wrap; width:90%; overflow-y:visible; padding:8px; margin:1em 2em; background:#EEE; border:1px dashed #CCC;\n" + . "}\n" + ); +?> +<h2><?=$this->transEsc('Upgrade VuFind')?></h2> +<?=$this->flashmessages()?> +<p>These SQL statements can be used to manually upgrade your database:</p> + +<textarea class="pre" rows="20"><?=trim($this->sql) ?></textarea> + +<form method="post" action="<?=$this->url('upgrade-showsql')?>"> + <input class="btn" type="submit" name="continue" value="Next" /> +</form> \ No newline at end of file diff --git a/themes/bootstrap/templates/web/home.phtml b/themes/bootstrap/templates/web/home.phtml new file mode 100644 index 00000000000..d13d4348c1e --- /dev/null +++ b/themes/bootstrap/templates/web/home.phtml @@ -0,0 +1 @@ +<?=$this->render('search/home.phtml');?> \ No newline at end of file diff --git a/themes/bootstrap/templates/web/results.phtml b/themes/bootstrap/templates/web/results.phtml new file mode 100644 index 00000000000..dd801a58a86 --- /dev/null +++ b/themes/bootstrap/templates/web/results.phtml @@ -0,0 +1,5 @@ +<? + // Load standard settings from the default search results screen: + $this->hideCartControls = true; + echo $this->render('search/results.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/worldcat/advanced.phtml b/themes/bootstrap/templates/worldcat/advanced.phtml new file mode 100644 index 00000000000..6a613a7e608 --- /dev/null +++ b/themes/bootstrap/templates/worldcat/advanced.phtml @@ -0,0 +1,5 @@ +<? + // There are no WorldCat-specific advanced search controls, so just load the + // standard advanced search layout: + echo $this->render('search/advanced/layout.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/templates/worldcat/home.phtml b/themes/bootstrap/templates/worldcat/home.phtml new file mode 100644 index 00000000000..d13d4348c1e --- /dev/null +++ b/themes/bootstrap/templates/worldcat/home.phtml @@ -0,0 +1 @@ +<?=$this->render('search/home.phtml');?> \ No newline at end of file diff --git a/themes/bootstrap/templates/worldcat/search.phtml b/themes/bootstrap/templates/worldcat/search.phtml new file mode 100644 index 00000000000..c1797c1cd4a --- /dev/null +++ b/themes/bootstrap/templates/worldcat/search.phtml @@ -0,0 +1,4 @@ +<? + // Load standard settings from the default search results screen: + echo $this->render('search/results.phtml'); +?> \ No newline at end of file diff --git a/themes/bootstrap/theme.config.php b/themes/bootstrap/theme.config.php new file mode 100644 index 00000000000..a60a1dbd63f --- /dev/null +++ b/themes/bootstrap/theme.config.php @@ -0,0 +1,40 @@ +<?php +return array( + 'extends' => 'root', + 'css' => array( + 'bootstrap.min.css', + 'bootstrap-responsive.min.css', + 'font-awesome.css', + 'font-awesome-ie7.min.css', + 'slider.css', + 'screen.css', + 'print.css:print', + 'style.css' + ), + 'js' => array( + 'core/jquery.min.js', + 'core/bootstrap.js', + 'common.js', + 'jquery.validate.min.js', + 'lightbox.js' + ), + 'favicon' => 'vufind-favicon.ico', + 'helpers' => array( + 'factories' => array( + 'flashmessages' => function ($sm) { + $messenger = $sm->getServiceLocator()->get('ControllerPluginManager') + ->get('FlashMessenger'); + return new \VuFind\View\Helper\Bootstrap\Flashmessages($messenger); + }, + 'layoutclass' => function ($sm) { + $config = $sm->getServiceLocator()->get('VuFind\Config')->get('config'); + $left = !isset($config->Site->sidebarOnLeft) + ? false : $config->Site->sidebarOnLeft; + return new \VuFind\View\Helper\Bootstrap\LayoutClass($left); + }, + ), + 'invokables' => array( + 'search' => 'VuFind\View\Helper\Bootstrap\Search', + ) + ) +); -- GitLab